Project Name:
  • nxtactics
Version:
  • 0.1
Author:
Java Domain:
  • com.vxlisp
Description:
  • This is an implemenation of nexus tactics game rules.
Paths:
Libraries:
  • Name
    Lang
    Path
    javaniofile
    :java
    java.nio.file.*
    javafuture
    :java
    java.util.concurrent.CompletableFuture
    javafunction
    :java
    java.util.function.*
    javacollectors
    :java
    java.util.stream.Collectors
Commands:
  • Name
    Code
    Path
    Language
    Main
    Context
    Port
    Description
    doc
    :doc
    ../doc
    0
    Build documentation html
    webserver
    :webserver
    ..
    8081
    Run Simple Web Server
    srccpp
    :source
    ../cpp/src/main
    :cpp
    vx/core/main
    vx/translation/en/context-en
    0
    Build C++ Source Code
    testcpp
    :test
    ../cpp/src/test
    :cpp
    vx/translation/en/context-test
    0
    Build C++ Test Code
    srccsharp
    :source
    ../csharp/src/main
    :csharp
    vx/core/main
    vx/translation/en/context-en
    0
    Build C# Source Code
    testcsharp
    :test
    ../csharp/src/test
    :csharp
    vx/translation/en/context-test
    0
    Build C# Test Code
    srcjs
    :source
    ../js/src
    :js
    vx/core/main
    vx/translation/en/context-en
    0
    Build JavaScript Source Code
    testjs
    :test
    ../js/test
    :js
    vx/translation/en/context-test
    0
    Build JavaScript Test Code
    srcjava
    :source
    ../java/src/main/java
    :java
    nx/tactics/apptactics/main-nx
    nx/tactics/apptactics/context-nx
    0
    Build Java Source Code
    testjava
    :test
    ../java/src/test/java
    :java
    vx/translation/en/context-test
    0
    Build Java Test Code
    srckotlin
    :source
    ../kotlin/app/src/main/kotlin/app
    :kotlin
    vx/core/main
    vx/translation/en/context-en
    0
    Build Kotlin Source Code
    testkotlin
    :test
    ../kotlin/app/src/test/kotlin/app
    :kotlin
    vx/translation/en/context-test
    0
    Build Kotlin Test Code
    srcswift
    :source
    ../swift/src/main
    :swift
    vx/core/main
    vx/translation/en/context-en
    0
    Build Swift Source Code
    testswift
    :test
    ../swift/src/test
    :swift
    vx/translation/en/context-test
    0
    Build Swift Test Code
Packages:
  • vx/core
  • vx/data/db
  • vx/data/table
  • vx/data/tree
  • vx/event
  • vx/sample
  • vx/state
  • vx/type
  • vx/web/html
  • nx/crypto/cryptosheet
  • vx/ui/element
  • vx/collection
  • vx/data/textblock
  • vx/repl
  • nx/tactics/base
  • nx/tactics/books/advanced_rules
  • nx/tactics/books/age_of_sail
  • nx/tactics/books/age_of_steam
  • nx/tactics/books/ancients
  • nx/tactics/books/bestiary
  • nx/tactics/books/characters
  • nx/tactics/books/combat
  • nx/tactics/books/core_rules
  • nx/tactics/books/fantasy
  • nx/tactics/books/gear
  • nx/tactics/books/gettingstarted
  • nx/tactics/books/giant_monsters
  • nx/tactics/books/high_technology
  • nx/tactics/books/horror
  • nx/tactics/books/land_sea_and_air
  • nx/tactics/books/magic
  • nx/tactics/books/medieval
  • nx/tactics/books/modern
  • nx/tactics/books/modern_fantasy
  • nx/tactics/books/powers
  • nx/tactics/books/prehistory
  • nx/tactics/books/pulp_fiction
  • nx/tactics/books/science_fiction
  • nx/tactics/books/skills
  • nx/tactics/books/space_and_time
  • nx/tactics/books/superheroes
  • nx/tactics/books/world_wars
  • nx/tactics/decks/damage
  • nx/tactics/decks/fate
  • nx/tactics/decks/scenario
  • nx/tactics/decks/starter
  • nx/tactics/decks/tarot
  • vx/data/file
  • vx/data/xml
  • vx/test
  • vx/ui/ui
  • vx/web/htmldoc
  • nx/tactics/books/bookloader
  • nx/tactics/decks/deck
  • nx/tactics/ui/stylesheet
  • vx/data/csv
  • vx/translate
  • vx/translation/en
  • vx/translation/es
  • vx/ui/html/uihtml
  • vx/ui/svg/uisvg
  • vx/web/http
  • nx/tactics/ui/navigation
  • nx/tactics/ui/uitactics
  • vx/translation/all
  • nx/tactics/apptactics
Source Code:
  • (project nxtactics :version "0.1" :author "" :doc "This is an implemenation of nexus tactics game rules." :projects "../../vxlisp/core/vxlisp" // :projects "../../vxlisp/vxlispruntime/vxlisp" :javadomain "com.vxlisp" :libs (lib javaniofile :path "java.nio.file.*" :lang :java) (lib javafuture :path "java.util.concurrent.CompletableFuture" :lang :java) (lib javafunction :path "java.util.function.*" :lang :java) (lib javacollectors :path "java.util.stream.Collectors" :lang :java) :cmds (cmd doc :code :doc :path ../doc :doc "Build documentation html") (cmd webserver :code :webserver :path .. :port 8081 :doc "Run Simple Web Server") (cmd srccpp :code :source :lang :cpp :path ../cpp/src/main :main vx/core/main :context vx/translation/en/context-en :doc "Build C++ Source Code") (cmd testcpp :code :test :lang :cpp :path ../cpp/src/test :context vx/translation/en/context-test :doc "Build C++ Test Code") (cmd srccsharp :code :source :lang :csharp :path ../csharp/src/main :main vx/core/main :context vx/translation/en/context-en :doc "Build C# Source Code") (cmd testcsharp :code :test :lang :csharp :path ../csharp/src/test :context vx/translation/en/context-test :doc "Build C# Test Code") (cmd srcjs :code :source :lang :js :path ../js/src :main vx/core/main :context vx/translation/en/context-en :doc "Build JavaScript Source Code") (cmd testjs :code :test :lang :js :path ../js/test :context vx/translation/en/context-test :doc "Build JavaScript Test Code") (cmd srcjava :code :source :lang :java :path ../java/src/main/java :main nx/tactics/apptactics/main-nx :context nx/tactics/apptactics/context-nx :doc "Build Java Source Code") (cmd testjava :code :test :lang :java :path ../java/src/test/java :context vx/translation/en/context-test :doc "Build Java Test Code") (cmd srckotlin :code :source :lang :kotlin :path ../kotlin/app/src/main/kotlin/app :main vx/core/main :context vx/translation/en/context-en :doc "Build Kotlin Source Code") (cmd testkotlin :code :test :lang :kotlin :path ../kotlin/app/src/test/kotlin/app :context vx/translation/en/context-test :doc "Build Kotlin Test Code") (cmd srcswift :code :source :lang :swift :path ../swift/src/main :main vx/core/main :context vx/translation/en/context-en :doc "Build Swift Source Code") (cmd testswift :code :test :lang :swift :path ../swift/src/test :context vx/translation/en/context-test :doc "Build Swift Test Code") )
vx/core
Description:
  • Core vxlisp Library. Unfortunately large because of interdependencies.
Package Name:
  • vx/core
Libraries:
  • Name
    Path
    vx/test
    vx/test
    javafunction
    java.util.function.*
    javacollectors
    java.util.stream.Collectors
    javafuture
    java.util.concurrent.CompletableFuture
Types:
  • any, any-async<-func, any<-anylist, anylist, anymap, anytype, arg, arglist, argmap, boolean, booleanlist, collection, compilelanguages, connect, connectlist, connectmap, const, constdef, constlist, constmap, context, date, decimal, error, float, func, funcdef, funclist, funcmap, int, intlist, intmap, list, listtype, locale, map, maptype, mempool, msg, msgblock, msgblocklist, msglist, none, notype, number, numberlist, numbermap, package, packagemap, permission, permissionlist, permissionmap, project, security, session, setting, state, statelistener, statelistenermap, string, stringlist, stringlistlist, stringmap, struct, thenelse, thenelselist, translation, translationlist, translationmap, type, typedef, typelist, typemap, user, value
Constants:
  • false, global, infinity, mempool-active, msg-info, msg-warning, msg-error, msg-severe, neginfinity, newline, notanumber, nothing, quote, true
Functions:
  • ., +, +, +, +, +1, -, -, -, -, -1, *, *, *, *, /, =, =, ==, !, !=, !==, !-empty, !-empty, <, <, <=, <=, <-, <<-, >, >, >=, >=, allowfuncs<-security, allowtypenames<-typedef, allowtypes<-typedef, and, and, any<-any, any<-any-async, any<-any-context, any<-any-context-async, any<-any-key-value, any<-int, any<-func, any<-func-async, any<-int-any, any<-key-value, any<-key-value-async, any<-list, any<-list-start-reduce, any<-list-start-reduce-next, any<-map, any<-map-start-reduce, any<-none, any<-none-async, any<-reduce, any<-reduce-async, any<-reduce-next, any<-reduce-next-async, any<-struct, async, boolean<-any, boolean<-func, boolean<-none, boolean-permission<-func, boolean-write<-map-name-value, case, case, compare, contains, contains, context-main, copy, else, empty, extends<-any, extends<-typedef, first<-list, first<-list-any<-any, float<-string, fn, funcdef<-func, funcname<-funcdef, if, if, if, int<-func, int<-string, is-empty, is-empty, is-endswith, is-func, is-int, is-float, is-number, is-pass<-permission, last<-list, length<-list, let, let-async, list<-list, list<-list, list<-list-async, list<-list-intany, list<-map, list<-map, list<-map-async, list<-type, list-join<-list, list-join<-list, log, log, main, map<-list, map<-map, map<-map, mempool-addref, mempool-reserve, mempool-release, mempool-removeref, mempool-removerefchildren, msg<-error, msg<-error, msg<-error, msg<-warning, msgblock<-msgblock-msg, msgblock<-msgblock-msgblock, name<-typedef, native, native<-any, new, number<-func, or, or, package-global<-name, packagename<-typedef, path<-context-path, path<-setting-path, permission<-id-context, properties<-typedef, proplast<-typedef, resolve, resolve, resolve-async, resolve-first, resolve-list, security<-context, security<-user, session<-context, setting<-context, string-repeat, string<-any, string<-any-indent, string<-func, string<-string-find-replace, switch, then, traits<-typedef, type<-any, typedef<-any, typedef<-type, typename<-any, typename<-type, typename<-typedef, typenames<-typelist, user<-context
Source Code:
  • (package vx/core :libs (lib javafunction) (lib javacollectors) (lib javafuture) :doc "Core vxlisp Library. Unfortunately large because of interdependencies.") (type any :create (native :cpp "// :header vx_core::Type_any vx_type_from_any(vx_core::Type_any value) const;") :doc "Any Value for Variant Type") (type any-async<-func : func :allowfuncs [any<-func any<-func-async] :doc "A sync or async function that returns one value.") (type any<-anylist : list :allowfuncs [any<-any] :doc "List of any<-any") (type anylist : list :allowtypes [any] :doc "A list of any") (type anymap : map :allowtypes [any] :doc "A map of any") (type anytype : type :doc "Any Type that allows any Type as a Value") (type arg : struct :properties [name : string argtype : any fn-any : any<-func doc : string] :doc "A function argument") (type arglist : list :allowtypes [arg] :doc "A list of arg") (type argmap : map :allowtypes [arg] :doc "A map of arg") (type boolean :default false :allowvalues [true false] :create (native :cpp "// :header bool vx_p_boolean = false; bool vx_boolean() const;" :java "protected boolean vxboolean = false; @Override public boolean vx_boolean() {return vxboolean;}") :test (test-true true) (test-false false) (test-true (boolean true)) (test-false (boolean false)) :doc "Standard Boolean Type") (type booleanlist : list :allowtypes [boolean]) (type collection :allowtypes [list map]) (type compilelanguages :default :unknown :allowvalues [:unknown :cpp :csharp :java :js :kotlin :swift]) (type connect :doc "General connect trait") (type connectlist : list :allowtypes [connect] :doc "List of connect") (type connectmap : map :allowtypes [connect] :doc "Map of connect") (type const : const :doc "Original Constant Class.") (type constdef : struct :properties [pkgname : string name : string type : any] :doc "Const Definition Class for inspecting properties.") (type constlist : list :allowtypes [any] :doc "List of Const.") (type constmap : map :allowtypes [any] :doc "Map of Const.") (type context : struct :properties [code : string session : session setting : setting state : state] :doc "Context") (type date : string :doc "A simple UTC date.") (type decimal :traits [number] :default 0 :create (native :cpp "// :header std::string vx_p_decimal = “0.0â€; float vx_float() const; std::string vx_string() const;" :java "protected String vxdecimal = “0.0â€; @Override public float vx_float() { return Float.parseFloat(vxdecimal); } @Override public String vx_string() {return vxdecimal;} @Override public Type_decimal vx_new_from_string(final String sval) { Class_decimal output = new Class_decimal(); output.vxdecimal = sval; return output; }") :doc "A clean version of float like Java BigDecimal.") (type error :doc "Error Type") (type float :default 0.0 :traits [number] :create (native :cpp "// :header float vx_p_float = 0; float vx_float() const;" :java "protected float vxfloat = 0; @Override public float vx_float() {return vxfloat;}") :test (test 4.5 (float 4.5)) :doc "Standard Floating Point Number") (type func : func :create (native :cpp "// :header vx_core::Type_funcdef vx_funcdef() const;") :test (test 5 (let [funcvar : + := +] (funcvar 2 3))) :doc "Original Function Class.") (type funcdef : struct :properties [pkgname : string name : string idx : int type : any async : boolean] :create (native :cpp "// :header static vx_core::Type_funcdef vx_funcdef_new( std::string pkgname, std::string name, long idx, bool async, vx_core::Type_any typ );") :doc "Func Definition Class for inspecting properties.") (type funclist : list :allowtypes [func] :doc "List of Func.") (type funcmap : map :allowtypes [func] :doc "Map of Func.") (type int :default 0 :allowvalues [infinity neginfinity] :traits [number] :create (native :cpp "// :header long vx_p_int = 0; long vx_int() const;" :java "protected int vxint = 0; @Override public int vx_int() {return vxint;}") :test (test-true (is-int 4)) (test-true (is-int "4")) (test-true (is-int infinity)) (test-true (is-int neginfinity)) (test-true (is-int notanumber)) (test-false (is-int "a")) (test-false (is-int 5.5)) :doc "A simple integer.") (type intlist : list :allowtypes [int] :doc "A list of int.") (type intmap : map :allowtypes [int] :doc "A map of int.") (type list : list :allowtypes [any] :create (native :cpp "// :header vx_core::vx_Type_listany vx_p_list; vx_core::vx_Type_listany vx_list() const; vx_core::Type_any vx_get_any(vx_core::Type_int index) const; vx_core::Type_any vx_new_from_list(vx_core::vx_Type_listany listval) const;") :doc "A simple untyped list.") (type listtype : type :doc "A generic type that extends :list.") (type locale : struct :doc "Localization data.") (type map : map :allowtypes [any] :create (native :cpp "// :header std::vector<std::string> vx_p_keys; vx_core::vx_Type_mapany vx_p_map; vx_core::vx_Type_mapany vx_map() const; vx_core::Type_any vx_get_any(vx_core::Type_string key) const; vx_core::Type_any vx_new_from_map(vx_core::vx_Type_mapany mapval) const;") :doc "A simple untyped map.") (type maptype : type :doc "A generic type that extends :map.") (type mempool : struct :properties [valuepool : value] :create (native :java "private int vx_max = 20; private Map<String, Deque<Core.Type_any>> vx_maplistany = new ConcurrentHashMap<>(); @Override public <T extends Core.Type_any> T vx_restore(final T generic_any_1) { T output = null; String typename = Core.f_typename_from_any(generic_any_1).vx_string(); Deque<Core.Type_any> listany = this.vx_maplistany.get(typename); if (listany == null) { } else if (!listany.isEmpty()) { Core.Type_any any = listany.remove(); if (any != null) { output = Core.f_any_from_any(generic_any_1, any); } } return output; } @Override public void vx_recycle(final Core.Type_any addany) { String typename = Core.f_typename_from_any(addany).vx_string(); Deque<Core.Type_any> listany = this.vx_maplistany.get(typename); boolean isdestroy = true; int imax = this.vx_max; if (imax == 0) { } else if (listany == null) { isdestroy = false; listany = new ConcurrentLinkedDeque<Core.Type_any>(); listany.add(addany); this.vx_maplistany.put(typename, listany); } else { int ilen = listany.size(); if (ilen < imax) { listany.add(addany); } } if (isdestroy) { // destroy } } @Override public void vx_recyclelist(final List<Core.Type_any> addlistany) { for (Core.Type_any addany : addlistany) { this.vx_recycle(addany); } }") :doc "Memory Pool") (type msg : struct :properties [code : string :doc "Message Code" detail : any :doc "Message Detail" path : string :doc "Message Path" severity : int :doc "Message Severity" text : string :doc "Message Text"] :create (native :cpp "// :header std::exception err;" :java "public Exception err = null;") :doc "Message Type for error handling") (type msgblock : struct :properties [msgs : msglist msgblocks : msgblocklist] :create (native :java "public Type_msgblock vx_msgblock_from_copy_arrayval(final Core.Type_any copy, final Object... vals) { Core.Type_msgblock output = Core.e_msgblock; Core.Type_msgblock copymsgblock = copy.vx_msgblock(); if (copymsgblock != null) { output = copymsgblock; } return output; }") :doc "Block of Messages") (type msgblocklist : list :allowtypes [msgblock] :doc "List of Message Blocks") (type msglist : list :allowtypes [msg] :doc "List of Messages") (type none :doc "No Type. No type is returned at all. e.g. Void") (type notype :doc "No Type that allows no Types as a Value") (type number :default 0 :allowtypes [int float decimal] :doc "A generic number that could be int, float, or decimal.") (type numberlist : list :allowtypes [number] :doc "A list of number.") (type numbermap : map :allowtypes [number] :doc "A map of number.") (type package : struct :properties [pkgname : string constmap : constmap funcmap : funcmap typemap : typemap emptymap : map] :doc "A package that store types, consts and funcs.") (type packagemap : map :allowtypes [package]) (type permission : struct :properties [id : string] :doc "Permission") (type permissionlist : list :allowtypes [permission] :doc "List of Permission") (type permissionmap : map :allowtypes [permission] :doc "Map of Permission") (type project : struct :properties [packagemap : packagemap] :doc "A project.") (type security : struct :properties [allowfuncs : funclist permissions : permissionlist permissionmap : permissionmap] :doc "Security rules") (type session : struct :properties [user : user connectlist : connectlist connectmap : connectmap locale : locale translation : translation translationmap : translationmap] :doc "Session") (type setting : struct :properties [pathmap : stringmap] :doc "Settings") (type state : struct :properties [statelistenermap : statelistenermap] :doc "State. Note that this type is has mutable values.") (type statelistener : struct :properties [name : string value : any fn-boolean : boolean<-none]) (type statelistenermap : map :allowtypes [statelistener] :mutable :doc "Mutable map of statelisteners") (type string : string :default "" :create (native :cpp "// :header std::string vx_p_string = “â€; std::string vx_string() const;" :java "protected String vxstring = “â€; @Override public String vx_string() { return vxstring; }") :test (test "a" (string "a")) (test "ab" (string "a" "b")) :doc "A simple string.") (type stringlist : list :allowtypes [string] :doc "A list of string.") (type stringlistlist : list :allowtypes [stringlist] :doc "A list of stringlist.") (type stringmap : map :allowtypes [string] :doc "A map of string.") (type struct : struct :create (native :cpp "// :header vx_core::vx_Type_mapany vx_map() const; vx_core::Type_any vx_get_any(vx_core::Type_string key) const;") :doc "Struct is the type of all structures/objects with properties.") (type thenelse : struct :properties [code : string value : any values : list fn-cond : boolean<-func fn-any : any<-func]) (type thenelselist : list :allowtypes [thenelse]) (type translation : struct :properties [name : string wordmap : stringmap] :doc "i18 language translation.") (type translationlist : list :allowtypes [translation] :doc "i18 language translation list.") (type translationmap : map :allowtypes [translation] :doc "i18 language translation map.") (type type : type :doc "Original Type Class") (type typedef : struct :properties [pkgname : string name : string extends : string allowfuncs : funclist allowtypes : typelist allowvalues : anylist disallowfuncs : funclist disallowtypes : typelist disallowvalues : anylist properties : argmap proplast : arg traits : typelist] :create (native :cpp "// :header static vx_core::Type_typedef vx_typedef_new( std::string pkgname, std::string name, std::string extend, vx_core::Type_typelist traits, vx_core::Type_typelist allowtypes, vx_core::Type_typelist disallowtypes, vx_core::Type_funclist allowfuncs, vx_core::Type_funclist disallowfuncs, vx_core::Type_anylist allowvalues, vx_core::Type_anylist disallowvalues, vx_core::Type_argmap properties );") :doc "Type Definition Class for inspecting Type properties.") (type typelist : list :allowtypes [any] :doc "List of Types") (type typemap : map :allowtypes [any] :doc "Map of Any Type Class") (type user : struct :properties [security : security username : string token : string] :doc "User Type") (type value : struct :properties [next : any refs : int]) (const false : boolean :test (test-false false)) (const global : project :doc "Global variable for project data.") (const infinity : int (native :js "Infinity") :doc "Infinity. Returned during unusual calculations.") (const mempool-active : mempool :doc "Active Value Memory Pool") (const msg-info : int 0 :doc "Message is just information") (const msg-warning : int 1 :doc "Message is a Warning") (const msg-error : int 2 :doc "Message is an Error") (const msg-severe : int 3 :doc "Message is a Severe Error") (const neginfinity : int (native :js "-Infinity") :doc "Negative Infinity. Returned during unusual calculations.") (const newline : string "\n" :doc "New line constant") (const notanumber : int (native :js "NaN") :doc "Not a number. Returned during invalid calculations.") (const nothing : string "nothing" :doc "Nothing Value. Opposite of every other value. e.g. Nil, Null") (const quote : string `"` :doc "Quotation mark constant") (const true : boolean (native :cpp "true" :js "true" :java "true") :test (test-true true)) (func . : any [object : any method : string params : anylist :...] (native :js "object[method].apply(params)") :alias "dotmethod" :sideeffects "Depends on object" :doc "Not Recommened: Support for Object Oriented dot notation. e.g. (this.foo 'a') = this.foo('a')") (func + : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() + num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 + num2" :java "int result = num1.vx_int() + num2.vx_int(); output = Core.vx_new_int(result);") :alias "plus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math int plus") (func + : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) + vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 + num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() + float2.vx_float(); output = Core.vx_new_float(result);") :alias "plus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math number plus") (func + : int [nums : intlist :...] (any<-list-start-reduce nums 0 (fn : int [total : int num : int] (+ total num))) :alias "plus" :doc "Math int plus") (func + : number [nums : numberlist :...] (any<-list-start-reduce nums 0 (fn : number [total : number num : number] (+ total num))) :alias "plus" :doc "Math number plus") (func +1 : int [num : int] (+ num 1) :alias "plus1" :test (test 3 (+1 2)) (test -1 (+1 -2)) :doc "Math int plus 1") (func - : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() - num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 - num2" :java "int result = num1.vx_int() - num2.vx_int(); output = Core.vx_new_int(result);") :alias "minus" :test (test 1 (- 3 2)) (test 7 (- 5 -2)) :doc "Math int minus") (func - : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) - vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 - num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() - float2.vx_float(); output = Core.vx_new_float(result);") :alias "minus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math number minus") (func - : int [nums : intlist :...] (any<-list-start-reduce nums 0 (fn : int [total : int num : int] (- total num))) :alias "minus" :doc "Math integer minus") (func - : number [nums : numberlist :...] (any<-list-start-reduce nums 0 (fn : number [total : number num : number] (- total num)) ) :alias "minus" :doc "Math number minus") (func -1 : int [num : int] (- num 1) :alias "minus1" :test (test 1 (-1 2)) (test -3 (-1 -2)) :doc "Math int minus 1") (func * : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() * num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 * num2" :java "int result = num1.vx_int() * num2.vx_int(); output = Core.vx_new_int(result);") :alias "multiply" :test (test 6 (* 3 2)) (test -10 (* 5 -2)) :doc "Math int multiply") (func * : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) * vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 * num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() * float2.vx_float(); output = Core.vx_new_float(result);") :alias "multiply" :test (test 6.4 (* 3.2 2)) (test -10.2 (* 5.1 -2)) :doc "Math multipy") (func * : int [nums : intlist :...] (any<-list-start-reduce nums 1 (fn : int [total : int num : int] (* total num)) ) :alias "multiply" :test (test 24 (* 3 2 4)) (test -20 (* 5 -2 2)) :doc "Math multiply") (func * : number [nums : numberlist :...] (any<-list-start-reduce nums 1 (fn : number [total : number num : number] (* total num)) ) :alias "multiply" :test (test 24 (* 3 2 4)) (test -20 (* 5 -2 2)) :doc "Math multiply") (func / : number [num1 : number num2 : number] (native :cpp "float float1 = vx_core::vx_float_from_number(num1); float float2 = vx_core::vx_float_from_number(num2); if (float1 == 0) { } else if (float2 == 0) { output = vx_core::c_notanumber; } else { float result = float1 / float2; output = vx_core::vx_new_float(result); }" :js "num1 / num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); if (float1.vx_float() == 0) { } else if (float2.vx_float() == 0) { output = Core.c_notanumber; } else { float result = float1.vx_float() / float2.vx_float(); output = Core.vx_new_float(result); }") :alias "divide" :test (test 3 (/ 6 2)) (test -5 (/ 10 -2)) :doc "Math divide") (func = : boolean [val1 : any val2 : any] (native :cpp "bool isequal = false; if (val1 == val2) { isequal = true; } else { std::string str1 = vx_core::vx_string_from_any(val1); std::string str2 = vx_core::vx_string_from_any(val2); if (str1 == str2) { isequal = true; } } output = vx_core::vx_new_boolean(isequal);" :js "vx_core.vx_eq(val1, val2)" :java "boolean isequal = false; if (val1 == val2) { isequal = true; } else { Core.Type_string strval1 = Core.f_string_from_any(val1); Core.Type_string strval2 = Core.f_string_from_any(val2); if (strval1.vx_string().equals(strval2.vx_string())) { isequal = true; } } output = Core.vx_new_boolean(isequal);") :alias "eq" :test (test-true (= true true)) (test-true (= 2 2)) (test-true (= "a" "a")) (test-true (= (stringlist "a" "b" "c") (new stringlist "a" "b" "c"))) (test-true (= (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2"))) :doc "Boolean equal/equivalent") (func = : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values false (fn : boolean [reduce : boolean current : any next : any] (and reduce (= current next))) ) :alias "eq" :test (test-false (= 2 2 3)) :doc "Boolean equal/equivalent") (func == : boolean [val1 : any val2 : any] (native :cpp "bool isequal = vx_core::vx_eqeq(val1, val2); output = vx_core::vx_new_boolean(isequal);" :js "output = val1 == val2" :java "boolean isequal = Core.vx_eqeq(val1, val2); output = Core.vx_new_boolean(isequal);") :alias "eqeq" :test (test-true (== 0 0)) (test-true (== "" "")) :doc "Strict equality check. Note that all non-empty, non-constants will not be equal.") (func ! : boolean [val : boolean :doc "Thing to not"] (native :cpp "vx_core::vx_new_boolean(!val->vx_boolean());" :js "!val" :java "Core.vx_new_boolean(!val.vx_boolean());") :alias "not" :test (test-false false) (test-false (! true)) :doc "Boolean not") (func != : boolean [val1 : any val2 : any] (! (= val1 val2)) :alias "ne" :test (test-ne true false) (test-ne "a" "b") :doc "Returns true if the first arg is not equal to any of the other arg.") (func !== : boolean [val1 : any val2 : any] (! (== val1 val2)) :alias "neqeq" :doc "Returns true if the first arg is not strictly equal to any of the other arg.") (func !-empty : boolean [text : string] (! (is-empty text)) :alias "notempty" :doc "Returns true if text is not empty.") (func !-empty : boolean [val : any] (! (is-empty val)) :alias "notempty" :doc "Returns true if val is not empty.") (func < : boolean [val1 : any val2 : any] (switch (compare val1 val2) (case -1 true) (else false)) :alias "lt" :test (test-true (< 2 3)) :doc "Returns true if the first arg is less than all of the other args") (func < : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : any next : any] (and reduce (< current next)))) :alias "lt" :test (test-true (< 2 3)) (test-true (< "b" "d" "z")) :doc "Returns true if the first arg is less than all of the other args") (func <= : boolean [val1 : any val2 : any] (! (> val1 val2)) :alias "le" :test (test-true (<= 2 3)) :doc "Returns true if the first arg is less or equal than all of the other args") (func <= : boolean [args : anylist :...] (! (> args)) :alias "le" :test (test-true (<= "b" "d" "z")) :doc "Returns true if the first arg is less or equal than all of the other args") (func <- : any-1 [value : any-1 fnlist : any<-anylist :...] :alias chainfirst :test (test (* (+ (- 5 3) 3) 2) (<- 5 (- 3) (+ 3) (* 2))) :doc "This is a special function that applies a value as the first argument for the first function. The result is then used as the first argument on the next function, etc. Sometimes this improves readability.") (func <<- : any-1 [value : any-1 fnlist : any<-anylist :...] :alias chainlast :test (test (* (+ (- 3 5) 3) 2) (<<- 5 (- 3) (+ 3) (* 2))) :doc "This is a special function that applies a value as the last argument for the first function. The result is then used as the last argument on the next function, etc. Sometimes this improves readability.") (func > : boolean [val1 : any val2 : any] (switch (compare val1 val2) (case 1 true) (else false)) :alias "gt" :test (test-true (> 3 2)) :doc "Returns true if the first arg is greater than all of the other args") (func > : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : any next : any] (and reduce (> current next)))) :alias "gt" :test (test-true (> "z" "y" "b")) :doc "Returns true if the first arg is greater than all of the other args") (func >= : boolean [val1 : any val2 : any] (! (< val1 val2)) :alias "ge" :test (test-true (>= 3 2)) :doc "Returns true if val1 is greater or equal to val2") (func >= : boolean [args : anylist :...] (! (< args)) :alias "ge" :test (test-true (>= "z" "b" "b")) :doc "Returns true if the first arg is greater or equal than all of the other args") (func allowfuncs<-security : funclist [security : security] (:allowfuncs security) :doc "Returns allowfuncs from a given security.") (func allowtypenames<-typedef : stringlist [vtypedef : typedef] (typenames<-typelist (allowtypes<-typedef vtypedef)) :doc "Return allow name list from type") (func allowtypes<-typedef : typelist [vtypedef : typedef] (native :cpp "vtypedef->allowtypes();" :js "vtypedef['vx_value']['allowtypes']" :java "vtypedef.allowtypes();") :doc "Return allow type list from type") (func and : boolean [val1 : boolean val2 : boolean] (native :cpp "if (val1->vx_boolean() && val2->vx_boolean()) { output = vx_core::c_true; } else { output = vx_core::c_false; }" :js "if (val1 && val2) { output = true } else { output = false }" :java "if (val1.vx_boolean() && val2.vx_boolean()) { output = Core.c_true; } else { output = Core.c_false; }") :test (test-true (and true true)) (test-false (and true false)) :doc "Returns true if all values are true") (func and : boolean [values : booleanlist :...] (switch : boolean (length<-list values) (case 0 true) (case 1 (:1 values)) (else (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : boolean next : boolean] (and reduce (and current next))) ))) :test (test-true (and true true true)) (test-false (and true true false)) :doc "Returns true if all values are true") (func any<-any : any-1 [value : any-2] (native :cpp "output = vx_core::vx_any_from_any(generic_any_1, value);" :js "value" :java "@SuppressWarnings(“uncheckedâ€) output = (T)value;") :doc "Function Type taking any value any-2 and returning generic any-1") (func any<-any-async : any-1 [value : any-2] :async :doc "Function Type taking any value any-2 and returning generic any-1") (func any<-any-context : any-1 [value : any-2] (native :java "@SuppressWarnings(“uncheckedâ€) output = (T)value;") :context :doc "Function Type taking any value any-2 and returning generic any-1 using context") (func any<-any-context-async : any-1 [value : any-2] :async :context :doc "Generic Function taking any value any-2 and returning generic any-1") (func any<-any-key-value : any-1 [current : any-1 key : string value : any-2] :doc "Generic Function returning Generic any-1 from a any-1, a key, and a value.") (func any<-int : any-1 [value : int] :doc "Generic Function returning Generic any-1 from an int") (func any<-func : any-1 [] :doc "Generic Function returning Generic any-1 with any parameters") (func any<-func-async : any-1 [] :async :doc "Generic Function returning Generic any-1 with any parameters") (func any<-int-any : any-1 [num : int val : any-2] :doc "Generic Function returning Generic any-1 from an int and a value") (func any<-key-value : any-1 [key : string val : any-2] :doc "Generic Function returning Generic any-1 from a key and a value") (func any<-key-value-async : any-1 [key : string val : any-2] :async :doc "Generic Function returning Asynchronous Generic any-1 from a key and a value") (func any<-list : any-1 [values : list-1 index : int] (native :cpp "long intindex = index->vx_int(); vx_core::vx_Type_listany listvalue = values->vx_list(); long intsize = vx_core::vx_int_from_sizet(listvalue.size()); if (intindex <= intsize) { vx_core::Type_any value = listvalue[intindex - 1]; output = vx_core::vx_any_from_any(generic_any_1, value); }" :js "if (index <= values.length) { output = values[index - 1] }" :java "int intindex = index.vx_int(); int intsize = values.vx_list().size(); if (intindex <= intsize) { List<Core.Type_any> listvalue = values.vx_list(); Core.Type_any value = listvalue.get(intindex - 1); output = Core.f_any_from_any(generic_any_1, value); }") :test (test "b" (any<-list (list "a" "b" "c") 2)) (test "b" (:2 (stringlist "a" "b" "c"))) :doc "Returns nth value from a list or none if out of bounds") (func any<-list-start-reduce : any-1 [list : list-2 valstart : any-1 fn-reduce : any<-reduce] (native :cpp "vx_core::Type_any work = valstart; std::vector<vx_core::Type_any> listval = list->vx_list(); for (vx_core::Type_any item : listval) { work = fn_reduce->vx_any_from_reduce(work, item); }; output = vx_core::vx_any_from_any(generic_any_1, work);" :java :auto :js "output = valstart const fn = fn_reduce['vx_value'] if (fn) { for (const item of list) { output = fn(output, item) } }") :test (test 24 (any<-list-start-reduce : int (intlist 3 2 4) 1 (fn : int [total : int num : int] (* total num)))) :doc "Returns a val from a list reduce operation") (func any<-list-start-reduce-next : any-1 [list : list-2 valstart : any-1 fn-reduce-next : any<-reduce-next] (native :cpp "vx_core::Type_any result = vx_core::vx_any_from_list_result_next(generic_any_1, list, valstart, fn_reduce_next); output = vx_core::vx_any_from_any(generic_any_1, result);" :js "output = valstart const fn = fn_reduce_next['vx_value'] if (fn) { let current = vx_core.e_any let first = true for (const next of list) { if (first) { first = false } else { output = fn(output, current, next) } current = next } }" :java "output = valstart; final List<Core.Type_any> listval = list.vx_list(); Core.Type_any current = Core.e_any; boolean first = true; for (final Core.Type_any next : listval) { if (first) { first = false; } else { output = fn_reduce_next.vx_any_from_reduce_next(generic_any_1, output, current, next); } current = next; }") :doc "Returns a val from a list reduce operation") (func any<-map : any-1 [valuemap : map-1 key : string] (native :cpp "vx_core::Type_any val = valuemap->vx_get_any(key); output = vx_core::vx_any_from_any(generic_any_1, val);" :js "if (key.startsWith(':')) { key = key.substring(1) } const mapval = valuemap['vx_value'] let val = mapval[key] if (val != undefined) { output = val }" :java "Core.vx_any_from_map(generic_any_1, valuemap, key);") :test (test "v2" (any<-map (stringmap :a "v1" :b "v2" :c "v3") :b)) :doc "Returns value from a map or empty if not found") /* (func any<-map-else : any-1 [valuemap : map-1 key : string valueelse : any-1] (let : any-1 [value : any-1 := (any<-map valuemap key)] (if : any-1 (then (!-empty value) value) (else valueelse))) :test (test "v2" (any<-map-else : string (stringmap :a "v1" :c "v3") :b "v2")) :doc "Returns value from a map or valueelse if not found") */ (func any<-map-start-reduce : any-1 [map : map-1 start : any-1 fn-reduce : any<-any-key-value :: any-1 :: any-1] (native :cpp :auto :java :auto :js :auto) :test (test "xayb" (any<-map-start-reduce (stringmap :a "x" :b "y") "" (fn : string [current : string key : string value : any] (copy current value key)))) :doc "Returns a value by reducing each element of a map.") (func any<-none : any-1 [] :doc "Function Type returning Generic any-1 with no parameters") (func any<-none-async : any-1 :async [] :doc "Function Type returning Generic any-1 with no parameters") (func any<-reduce : any-1 [result : any-1 item : any-2]) (func any<-reduce-async : any-1 :async [result : any-1 item : any-2]) (func any<-reduce-next : any-1 [result : any-1 current : any-2 next : any-2]) (func any<-reduce-next-async : any-1 :async [result : any-1 current : any-2 next : any-2]) (func any<-struct : any-1 [vstruct : struct-2 key : string] (native :cpp "vx_core::Type_any val = vstruct->vx_get_any(key); output = vx_core::vx_any_from_any(generic_any_1, val);" :js "const subvalmap = vstruct['vx_value'] if (subvalmap != undefined) { if (key.startsWith(':')) { key = key.substring(1) } const val = subvalmap[key] if (val != undefined) { output = val } }" :java "Core.Type_any val = vstruct.vx_any(key); output = Core.f_any_from_any(generic_any_1, val);") :doc "Returns value from a struct") (func async : any-1 :async [value : any-1] (native :js "value" :java "output = Core.async_new_completed(value);") :doc "Returns an asynchonous version value. This exists mostly for type-casting.") (func boolean<-any : boolean [value : any-1] :doc "Function Type taking generic any-1 and returning boolean") (func boolean<-func : boolean [] :doc "Function Type returning boolean with any parameters") (func boolean<-none : boolean [] :doc "Function Type returning boolean with no parameters") (func boolean-permission<-func : boolean [func : func] (contains (allowfuncs<-security (security<-context)) func) :context :doc "Returns true if the given func has permission.") (func boolean-write<-map-name-value : boolean [valuemap : map-1 name : string value : any-1] (native :js :auto) :sideeffects "Alters a mutable map. Warning: vxlisp is immutable by design and this function will produce unexpected results." :doc "Returns true if it alters a mutable map false if it fails.") (func case : thenelse [values : list-1 fn-any : any<-func] (thenelse :code :casemany :values values :fn-any fn-any)) (func case : thenelse [value : any-1 fn-any : any<-func] (thenelse :code :case :value value :fn-any fn-any)) (func compare : int [val1 : any val2 : any] (native :cpp "long intresult = vx_core::vx_compare(val1, val2); output = vx_core::vx_new_int(intresult);" :js "if (val1 == val2) { output = 0 } else if (val1 < val2) { output = -1 } else { output = 1 }" :java "int intresult = 0; if ((val1 instanceof Core.Type_number) && (val2 instanceof Core.Type_number)) { Core.Type_number num1 = (Core.Type_number)val1; Core.Type_number num2 = (Core.Type_number)val2; float float1 = Core.t_float.vx_new(num1).vx_float(); float float2 = Core.t_float.vx_new(num2).vx_float(); if (float1 < float2) { intresult = -1; } else if (float1 > float2) { intresult = 1; } } else { String stringval1 = Core.f_string_from_any(val1).vx_string(); String stringval2 = Core.f_string_from_any(val2).vx_string(); int compare = stringval1.compareTo(stringval2); if (compare > 0) { intresult = 1; } else if (compare < 0) { intresult = -1; } } output = Core.vx_new_int(intresult);") :test (test 1 (compare 3 2)) (test 1 (compare "z" "a")) :doc "Returns 0 if vals are equal, 1 if val1 > val2, -1 if val1 < val2") (func contains : boolean [text : string find : string] (native :cpp "bool check = vx_boolean_from_string_find(text->vx_string(), find->vx_string()); output = vx_core::vx_new_boolean(check);" :js "vx_core.vx_boolean_from_string_find(text, find)" :java "boolean check = vx_boolean_from_string_find(text.vx_string(), find.vx_string()); output = Core.vx_new_boolean(check);") :test (test-true (contains "abcde" "cd")) (test-false (contains "abcde" "dc")) :doc "Returns true if the given list contains the given value.") (func contains : boolean [values : list-2 :doc "Any list" find : any :doc "Any value"] (native :cpp "bool booleanresult = false; vx_core::vx_Type_listany listvalues = values->vx_list(); for (vx_core::Type_any item : listvalues) { vx_core::Type_boolean iseq = vx_core::f_eq(item, find); if (iseq->vx_boolean()) { booleanresult = true; break; } } output = vx_core::vx_new_boolean(booleanresult);" :js "values.includes(find)" :java "boolean booleanresult = false; List<Core.Type_any> listvalues = values.vx_list(); for (Core.Type_any item : listvalues) { Core.Type_boolean iseq = Core.f_eq(item, find); if (iseq.vx_boolean()) { booleanresult = true; break; } } output = Core.vx_new_boolean(booleanresult);") :test (test-true (contains (stringlist "1" "2" "3") "2")) (test-true (contains (intlist 1 2 3) 2)) (test-false (contains (list 1 "2" 3) 2)) :doc "Returns true if the given list contains the given value.") (func context-main : context [args : anylist :...] (context) :doc "Returns the default context for app main execution. Arguments come from the command line.") (func copy : any-1 [value : any values : anylist :...] (native :cpp "T* output = vx_core::vx_copy(generic_any_1, value, values->vx_list());" :js "vx_core.f_new(value, ...values)" :java "@SuppressWarnings(“uncheckedâ€) Core.Type_any[] arrayany = Core.arrayany_from_anylist(values); Object[] arrayobj = (Core.Type_any[])arrayany; T output = (T)(value.vx_copy(arrayobj));") :bigospace :n :bigotime :n :test (test (stringmap :a "1" :b "2") (copy (stringmap :a "1") :b "2")) :doc "Returns a copy of a given value with the given values added or updated.") (func else : thenelse [fn-any : any<-func] (thenelse :code :else :fn-any fn-any)) (func empty : any-1 [type : any-1] (native :cpp "T* output = vx_core::vx_any_from_any(type, type->vx_empty());" :js "vx_core.vx_empty(type)" :java "@SuppressWarnings(“uncheckedâ€) T output = (T)(type.vx_empty());") :test (test "" (empty string)) (test (list) (empty list)) (test (map) (empty map)) :doc "Returns the empty value for a given type. Can be called using (empty type) or simply (type)") (func extends<-any : string [val : any-1] (extends<-typedef (typedef<-any val))) (func extends<-typedef : string [vtypedef : typedef] (:extends vtypedef) :doc "Get the basetype of a given type") (func first<-list : any-1 [values : list-1] (any<-list values 1) :doc "Returns first value" :test (test "b" (first<-list (stringlist "b" "c")))) (func first<-list-any<-any : any-1 [values : list-1 fn-any<-any : any<-any] (native :cpp "std::vector<vx_core::Type_any> listvalue = values->vx_list(); for (vx_core::Type_any value : listvalue) { if (value != vx_core::c_nothing) { vx_core::Type_any any = fn_any_from_any->vx_any_from_any(value); output = vx_core::vx_any_from_any(generic_any_1, any); break; } }" :js "output = " nothing " const fn = fn_any_from_any['vx_value'] if (fn) { for (let index=0;index < values.length;index++) { output = fn(generic, values[index]) if (output != " nothing ") { break } } }" :java "List<Core.Type_any> listvalue = values.vx_list(); for (Core.Type_any value : listvalue) { if (value != Core.c_nothing) { output = fn_any_from_any.vx_any_from_any(generic_any_1, value); break; } }") :doc "Returns first value that is not nothing" :test (test "b" (first<-list-any<-any : string (list nothing "b" "c") resolve))) (func float<-string : float [text : string] (native :cpp "float num = vx_core::vx_float_from_string(text->vx_string()); output = vx_core::vx_new_float(num);" :js "vx_core.vx_float_from_string(text);" :java "float num = Core.vx_float_from_string(text.vx_string()); output = Core.vx_new_float(num);") :test (test (float 2.3) (float<-string "2.3")) :doc "Returns float from a given string.") (func fn : any-1 [params : arglist fn-any : any<-func] :doc "Shell for lambda function calls") (func funcdef<-func : funcdef [val : func] (native :cpp "val->vx_funcdef();" :java "val.vx_funcdef();")) (func funcname<-funcdef : string [funcdef : funcdef] (string (:pkgname funcdef) "/" (:name funcdef)) :doc "Get the name of a given funcdef") (func if : any-1 [clause : boolean then : any-1] (native :cpp "if (clause->vx_boolean()) { output = then; }" :js "if (clause) { output = then }" :java "if (clause.vx_boolean()) { output = then; }") :test (test "a" (if (= 2 2) "a")) (test "" (if : string (= 1 2) "a")) :doc "Logical If function") (func if : any-1 [clause : boolean thenval : any-1 elseval : any-1] (native :cpp "if (clause->vx_boolean()) { output = thenval; } else { output = elseval; }" :js "if (clause) { output = thenval } else { output = elseval }" :java "if (clause.vx_boolean()) { output = thenval; } else { output = elseval; }") :test (test "a" (if (= 2 2) "a" "b")) (test "b" (if (= 1 2) "a" "b")) :doc "Logical If function") (func if : any-1 [thenelselist : thenelselist :...] (native :cpp "vx_core::Type_any any = vx_core::vx_if_thenelselist(generic_any_1, thenelselist); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "let fn_any = null for (const thenelseval of thenelselist) { const thenelse = thenelseval['vx_value'] const code = thenelse['code'] switch (code) { case ':then': const fn_cond = thenelse['fn-cond'] const fn = fn_cond['vx_value'] const cond = fn() if (cond == true) { fn_any = thenelse['fn-any'] } break case ':else': fn_any = thenelse['fn-any'] break } if (fn_any != null) { const fn = fn_any['vx_value'] output = fn() break } }" :java "Core.Func_any_from_func fn_any = Core.Class_list.vx_any_first_from_list_fn(Core.t_any_from_func, thenelselist, (any) -> { Core.Func_any_from_func fnany = null; if (any instanceof Core.Type_thenelse) { Core.Type_thenelse thenelse = (Core.Type_thenelse)any; Core.Type_string code = thenelse.code(); switch (code.vx_string()) { case “:thenâ€: Core.Func_boolean_from_func fn_cond = thenelse.fn_cond(); Core.Type_boolean cond = fn_cond.vx_boolean_from_func(); if (cond.vx_boolean() == true) { fnany = thenelse.fn_any(); } break; case “:elseâ€: fnany = thenelse.fn_any(); break; } } return fnany; }); if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :doc "Logical If function" :test (test-true (if (then (= 2 3) false) (then (!= 3 3) false) (else (! false))))) (func int<-func : int [] :doc "Function Type returning int with any parameters") (func int<-string : int [val : string] (switch : int val (case "notanumber" notanumber) (case "infinity" infinity) (case "neginfinity" neginfinity) (else (native :cpp "// :capture val vx_core::Type_int intresult = vx_core::e_int; try { std::string sval = val->vx_string(); long ival = std::stoll(sval); intresult = vx_core::vx_new_int(ival); } catch (std::exception ex) { intresult = vx_core::c_notanumber; } return intresult;" :js "parseInt(val)" :java "int intresult = 0; String strval = val.vx_string(); try { float floatresult = Float.parseFloat(strval); intresult = (int)floatresult; return Core.vx_new_int(intresult); } catch (Exception ex) { return Core.c_notanumber; }" ) ) ) :test (test 4 (int<-string "4")) (test 5 (int<-string "5.4")) (test 5 (int<-string "5.9")) (test notanumber (int<-string "notanumber")) (test infinity (int<-string "infinity")) (test neginfinity (int<-string "neginfinity")) :doc "Function Type converting string to int") (func is-empty : boolean [text : string] (native :cpp "if (text->vx_p_iref == -2) { output = vx_core::c_true; }" :js "if (text.length == 0) { output = vx_core.c_true }" :java "if (text.vx_string().length() == 0) { output = Core.c_true; }") :doc "Returns true if text is empty.") (func is-empty : boolean [value : any] (native :cpp "if (value == value->vx_empty()) { output = vx_core::c_true; }" :js "const type = vx_core.f_type_from_any(value) if (value == vx_core.f_empty(type)) { output = vx_core.c_true } else { output = vx_core.c_false }" :java "if (value == value.vx_empty()) { output = Core.c_true; } else { output = Core.c_false; }") :test (test-true (is-empty "")) (test-true (is-empty (list))) (test-true (is-empty (map))) :doc "Returns true if an value is empty") (func is-endswith : boolean [text : string find : string] (native :cpp "std::string stext = text->vx_string(); std::string sfind = find->vx_string(); if (vx_core::vx_boolean_from_string_ends(stext, sfind)) { output = vx_core::c_true; }" :js "if (text.endsWith(find)) { output = vx_core.c_true }" :java "String stext = text.vx_string(); String sfind = find.vx_string(); if (stext.endsWith(sfind)) { output = Core.c_true; }") :doc "Returns true if text ends with find.") (func is-func : boolean [val : any] (native :cpp "vx_core::Type_string extend = " (extends<-any val) "; std::string sextend = extend->vx_string(); vx_core::vx_release(extend); if (sextend == “:funcâ€) { output = vx_core::c_true; }" :js "const extend = " (extends<-any val) " if (extend == ':func') { output = vx_core.c_true }" :java "if (val instanceof Core.Type_func) { output = Core.c_true; }") :doc "Returns true if val is a function.") (func is-int : boolean [value : any] (native :cpp "bool result = vx_core::vx_is_int(value); output = vx_core::vx_new_boolean(result);" :js "vx_core.vx_is_int(value)" :java "boolean result = Core.vx_is_int(value); output = Core.vx_new_boolean(result);") :test (test-true (is-int 2)) (test-true (is-int "2")) (test-true (is-int infinity)) (test-true (is-int "infinity")) :doc "Returns true if the value is an integer.") (func is-float : boolean [value : any] (native :cpp "bool result = vx_core::vx_is_float(value); output = vx_core::vx_new_boolean(result);" :js "vx_core.vx_is_float(value)" :java "boolean result = Core.vx_is_float(value); output = Core.vx_new_boolean(result);") :doc "Returns true if the value is a float.") (func is-number : boolean [value : any] (switch : boolean (typename<-any value) (case (list "vx/core/decimal" "vx/core/float" "vx/core/int" "vx/core/number") true) (else false)) :test (test-true (is-number 5)) (test-true (is-number 5.5)) (test-false (is-number "a")) :doc "Return true if val is a number") (func is-pass<-permission : boolean [permission : permission] (let : boolean [id : string := (:id permission) lookup : permission := (permission<-id-context id)] (= lookup permission)) :context :doc "Returns true if permission passes.") (func last<-list : any-1 [values : list-1] (let [len : int := (length<-list values)] (any<-list values len)) :test (test "c" (last<-list (stringlist "b" "c"))) :doc "Returns last value") (func length<-list : int [values : list-1] (native :cpp "long len = vx_core::vx_int_from_sizet(values->vx_list().size()); if (len > 0) { output = vx_core::vx_new_int(len); }" :js "values.length" :java "int intresult = values.vx_list().size(); output = Core.vx_new_int(intresult);") :test (test 3 (length<-list (stringlist "a" "b" "c"))) :doc "Returns the currently used size/length of a list") (func let : any-1 [args : arglist fn-any : any<-func :: any-1] (native :cpp "vx_core::Type_any any = fn_any->vx_any_from_func(); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "const fn = fn_any['vx_value'] if (fn) { output = fn() }" :java "fn_any.vx_any_from_func(generic_any_1);") :test (test 7 (let [v1 : int := 2 v2 : int := (+ v1 3)] (+ v1 v2)))) (func let-async : any-1 :async [args : arglist fn-any-async : any<-func-async] (native :cpp "fn_any_async->vx_any_from_func_async(generic_any_1);" :js "const fn = fn_any_async['vx_value'] if (fn) { output = await fn() }" :java "fn_any_async.vx_any_from_func_async(generic_any_1);") :doc "Same as normal let but returns async values.") (func list<-list : list-1 [values : list-2] (list<-list : list-1 values (fn : any [value : any] value)) :test (test (stringlist "10" "20") (list<-list : stringlist (anylist "10" "20"))) :doc "Return a list with allowed values from another list") (func list<-list : list-1 [values : list-2 fn-any<-any : any<-any] (native :cpp "vx_core::vx_Type_listany list_value = values->vx_list(); vx_core::vx_Type_listany list_result = vx_core::vx_listany_from_listany_fn(list_value, [fn_any_from_any](vx_core::Type_any val) { return fn_any_from_any->vx_any_from_any(val); }); vx_core::Type_any anylist = generic_list_1->vx_new(list_result); output = vx_core::vx_any_from_any(generic_list_1, anylist);" :js "const fn = fn_any_from_any['vx_value'] if (fn) { output = values.map(fn) output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<Core.Type_any> list_result = Core.arraylist_from_arraylist_fn(list_value, (val) -> { return fn_any_from_any.vx_any_from_any(generic_list_1, val); }); output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result));") :doc "Returns a list of processed items from another list") (func list<-list-async : list-1 :async [values : list-2 fn-any<-any-async : any<-any-async] (native :cpp "vx_core::vx_Type_listany list_value = values->vx_list(); vx_core::vx_Type_listasync list_async_result = vx_core::vx_listasync_from_listany_fn(list_value, [fn_any_from_any_async](vx_core::Type_any val) { return fn_any_from_any_async->vx_any_from_any_async(vx_core::vx_type(val), val); }); output = vx_core::vx_async_new_from_listasync(generic_list_1, list_async_result);" :js "const fn = fn_any_from_any_async['vx_value'] if (fn) { const listfuture = values.map(fn) const future = Promise.all(listfuture) output = await future output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<CompletableFuture<Core.Type_any>> list_async_result = Core.arraylist_from_arraylist_fn(list_value, (val) -> { return fn_any_from_any_async.vx_any_from_any_async(generic_list_1, val); }); CompletableFuture<List<Core.Type_any>> async_list_result = Core.async_arraylist_from_arraylist_async(list_async_result); output = Core.async_from_async_fn(async_list_result, (list_result) -> { X work = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result)); return work; });") :doc "Returns an asynchronous list of the processed asynchronous items from another list") (func list<-list-intany : list-1 [values : list-2 fn-any<-int-any : any<-int-any] (native :cpp :auto :java :auto :js :auto) :test (test (stringlist "a1" "b2") (list<-list-intany : stringlist (stringlist "a" "b") (fn : stringlist [index : int value : string] (string value index)))) :doc "Returns a list of processed items from another list") (func list<-map : list-1 [valuemap : map-2] (list<-map : list-1 valuemap (fn : any [key : string value : any] value)) :test (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap :x "a1" :y "b2"))) :doc "Returns a list of allowed values from a map.") (func list<-map : list-1 [valuemap : map-2 fn-any<-key-value : any<-key-value] (native :cpp :auto :js "vx_core.vx_list_from_map_fn(generic_list_1, valuemap, fn_any_from_key_value)" :java "Map<String, Core.Type_any> map_value = valuemap.vx_map(); List<Core.Type_any> listresult = Core.arraylist_from_linkedhashmap_fn(map_value, (key, val) -> { Core.Type_string valkey = Core.vx_new_string(key); return fn_any_from_key_value.vx_any_from_key_value(Core.t_any, valkey, val); }); output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(listresult));") :test (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap "a" "1" "b" "2") (fn : string [key : string val : string] (string key val)))) :doc "Returns a list from a map by applying a function to each key value.") (func list<-map-async : list-1 :async [valuemap : map-2 fn-any<-key-value-async : any<-key-value-async]) (func list<-type : any [type : any] (native :js "output = [] output['vx_type'] = type") :doc "Create an empty list from a type. Used internally for default lists") (func list-join<-list : list-1 [values : list-2] (list-join<-list : list-1 values (fn : any [value : any] value)) :test (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")))) :doc "Returns a list by joining the valid values in each value list") (func list-join<-list : list-1 [values : list-2 fn-any<-any : any<-any] (native :cpp "vx_core::Type_any list = vx_core::vx_list_join_from_list_fn(generic_list_1, values, fn_any_from_any); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "const fn = fn_any_from_any['vx_value'] if (fn) { const listoflist = values.map(fn) output = listoflist.flat() output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<Core.Type_any> list_result = new ArrayList<>(); for (Core.Type_any val : list_value) { Core.Type_any listoflist = fn_any_from_any.vx_any_from_any(generic_list_1, val); if (listoflist instanceof Core.Type_list) { Core.Type_list vallist = (Core.Type_list)listoflist; List<Core.Type_any> listval = vallist.vx_list(); list_result.addAll(listval); } } output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result));") :test (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")) (fn : stringlist [values : stringlist] values))) :doc "Returns a flattened list of processed items from another list") (func log : any [value : any] (native :cpp "vx_core::vx_log(value); output = value;" :js "const text = vx_core.f_string_from_any(value) console.log(text) output = value" :java "Core.Type_string stringtext = Core.f_string_from_any(value); String text = stringtext.vx_string(); System.out.println(text); output = value;") :doc "Writes a value to the console.") (func log : any-1 [text : string value : any-1] (native :cpp "vx_core::vx_log(text); vx_core::vx_log(value); output = value;" :js "console.log(text) const svalue = vx_core.f_string_from_any(value) console.log(svalue) output = value" :java "Core.vx_log(text); Core.vx_log(value); output = value;") :doc "Writes a string and a value to the console.") (func main : string [args : anylist :...] (string args) :doc "The default function for app main execution. Arguments come from the command line.") (func map<-list : map-1 [vallist : list-2 fn-any<-any : any<-any :: string] (native :cpp "vx_core::vx_Type_listany listany = vallist->vx_list(); vx_core::vx_Type_mapany mapany = vx_core::vx_map_from_list(listany, fn_any_from_any); output = vx_core::vx_new_map(generic_map_1, mapany);" :js "const valmap = {} vallist.map(value => { const fn = fn_any_from_any['vx_value'] if (fn) { const key = fn(value) valmap[key] = value } }) output = { vx_type: generic_map_1, vx_value: valmap }" :java "List<Core.Type_any> listval = vallist.vx_list(); Map<String, Core.Type_any> mapresult = Core.vx_map_from_list_fn(listval, (val) -> { return fn_any_from_any.vx_any_from_any(Core.t_string, val); }); output = Core.f_any_from_any(generic_map_1, output.vx_new_from_map(mapresult));") :test (test (stringmap "keya" "a" "keyb" "b") (map<-list : stringmap (stringlist "a" "b") (fn : string [val : string] (string "key" val)))) :doc "Returns a map from a list by applying a function to generate a key for each value.") (func map<-map : map-1 [valuemap : map-2] (map<-map : map-1 valuemap (fn : any [key : string value : any] value)) :test (test (stringmap :a "1") (map<-map : stringmap (anymap :a "1"))) :doc "Return a map with allowed values from another map") (func map<-map : map-1 [valuemap : map-2 fn-any<-key-value : any<-key-value] (native :cpp "vx_core::Type_any map = vx_core::vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value); output = vx_core::vx_any_from_any(generic_map_1, map);" :js "vx_core.vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value)" :java "Core.vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value);") :test (test (stringmap :a "a1" :b "b2") (map<-map : stringmap (stringmap :a "1" :b "2") (fn : string [key : string val : string] (string key val)))) :doc "Returns a map from a map by applying a function to each key value.") (func mempool-addref : none [values : anylist :...] (native :js "for (const value of values) { const value = values[i] if (value.refs) { value.refs += 1 } }") :doc "Add Value Reference") (func mempool-reserve : value [] (native :js "mempool = " mempool-active " output = mempool.valuepool if (output == null) { output = { refs: 0 } } else { const next = output.next if (next == null) { mempool.valuepool = null } else { mempool.valuepool = next output.next = null } }") :doc "Returns a recycled Value or creates a new one.") (func mempool-release : none [value : value] (native :js "const mempool = " mempool-active " value.length = 0 for (const key in value) { delete value[key] } next = mempool.valuepool value.next = next mempool.valuepool = value") :doc "Recycles a Value and adds it to the valuepool.") (func mempool-removeref : none [values : anylist :...] (native :js "for (const value of values) { const value = values[i] if (value.refs) { value.refs -= 1 if (value.refs == 0) { vx_core.f_mempool_removerefchildren(value) vx_core.f_mempool_recyclevalue(value) } } }") :doc "Remove Value Reference") (func mempool-removerefchildren : none [values : anylist :...] (native :js "for (const value of values) { const extend = " (extends<-any value) " switch (extend) { case ':list': vx_core.f_mempool_removeref(...value['vx_value']) break case ':map': case ':struct': vx_core.f_mempool_removeref(...Object.entities(value['vx_value'])) break } }") :doc "Remove Value Child References") (func msg<-error : msg [error : string] (msg :severity msg-error :text error) :doc "Returns a msg from error string") (func msg<-error : msg [code : string detail : any] (msg :code code :detail detail :severity msg-error) :doc "Returns a msg from error code and detail") (func msg<-error : msg [path : string code : string detail : any] (msg :code code :path path :severity msg-error :detail detail) :doc "Returns a msg from error path code and detail") (func msg<-warning : msg [warning : string] (msg :severity msg-warning :text warning) :doc "Returns a msg from a warning string") (func msgblock<-msgblock-msg : msgblock [origblock : msgblock addmsg : msg] (copy origblock addmsg) :doc "Return a new Msgblock with the added msg") (func msgblock<-msgblock-msgblock : msgblock [origblock : msgblock addblock : msgblock] (msgblock origblock addblock) :doc "Return a new Msgblock with the added block") (func name<-typedef : string [vtypedef : typedef] (:name vtypedef) :doc "Returns the name from a typedef.") (func native : any-1 [clauses : anylist :...] :doc "Native Function Call") (func native<-any : any [value : any-1] (native :js "output = value switch (typeof value) { case 'boolean': case 'number': case 'string': break default: const extend = " (extends<-any value) " switch (extend) { case ':list': output = [...value] break case ':func': case ':map': case ':struct': output = value['vx_value'] break } break }") :doc "Returns native value of value object") (func new : any-1 [type : any-1 values : anylist :...] (native :cpp "T* output = vx_core::vx_new(type, values->vx_list());" :js "vx_core.vx_new(type, values)" :java "Core.Type_any[] arrayany = Core.arrayany_from_anylist(values); Object[] arrayobj = (Core.Type_any[])arrayany; T output = (T)(type.vx_new(arrayobj));") :doc "Create a new Value of Type A" :test (test true (new boolean true)) (test 4 (new int 4)) (test 5.4 (new float 5.4)) (test "a" (new string "a")) (test (stringlist "a" "b" "c") (new stringlist "a" "b" "c")) (test (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2"))) (func number<-func : number [] :doc "Function Type returning number with any parameters") (func or : boolean [val1 : boolean val2 : boolean] (native :cpp "if (val1->vx_boolean() || val2->vx_boolean()) { output = vx_core::c_true; } else { output = vx_core::c_false; }" :js "if (val1 || val2) { output = true } else { output = false }" :java "if (val1.vx_boolean() || val2.vx_boolean()) { output = Core.c_true; } else { output = Core.c_false; }") :doc "Returns true if any value is true" :test (test-true (or true true)) (test-true (or true false)) (test-false (or false false))) (func or : boolean [values : booleanlist :...] (any<-list-start-reduce-next : boolean values false (fn : boolean [reduce : boolean current : boolean next : boolean] (or reduce (or current next)))) :doc "Returns true if any value is true" :test (test-true (or false true false)) (test-false (or false false false))) (func package-global<-name : package [name : string] (any<-map (:packagemap global) name) :doc "Returns a package from global with the given name.") (func packagename<-typedef : string [vtypedef : typedef] (:pkgname vtypedef) :doc "Returns the package name from a typedef.") (func path<-context-path : string [path : string] (path<-setting-path (setting<-context) path) :context :doc "Returns a path from a context") (func path<-setting-path : string [session : setting path : string] :doc "Returns a path from a setting") (func permission<-id-context : permission [id : string] (let [user : user := (user<-context) security : security := (:security user) permissionmap : permissionmap := (:permissionmap security)] (:id permissionmap)) :context :doc "Return a permission from context by id") (func properties<-typedef : argmap [vtypedef : typedef] (:properties vtypedef) :doc "Return property map from typedef") (func proplast<-typedef : arg [vtypedef : typedef] (:proplast vtypedef) :doc "Return last property from typedef") (func resolve : any-1 [value : any-1] value :test (test "a" (resolve "a"))) (func resolve : any-1 [fn-any : any<-func] (native :cpp "if (fn_any) { vx_core::Type_any any = fn_any->vx_any_from_func(); output = vx_core::vx_any_from_any(generic_any_1, any); }" :js "const typedef = " (typedef<-any fn-any) " const extend = vx_core.f_extends_from_typedef(typedef) switch (extend) { case ':func': const fn = fn_any['vx_value'] if (fn) { output = fn() } break default: output = fn_any break }" :java "if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :test (test 4 (resolve (fn : int [] (+ 1 3))))) (func resolve-async : any-1 :async [fn-any : any<-func-async] (native :cpp "if (fn_any) { output = fn_any->vx_any_from_func_async(generic_any_1); }" :js "const typedef = " (typedef<-any fn-any) " const extend = vx_core.f_extends_from_typedef(typedef) switch (extend) { case ':func': const fn = fn_any['vx_value'] if (fn) { output = await fn() } break default: output = fn_any break }" :java "if (fn_any != null) { output = fn_any.vx_any_from_func_async(generic_any_1); }") :test (test 4 (resolve : int (fn : int [] (+ 1 3))))) (func resolve-first : any-1 [clauses : list-1 :...] (first<-list-any<-any clauses resolve) :doc "Returns the first value that is not nothing") (func resolve-list : list-1 [clauses : list-1] (list<-list clauses resolve)) (func security<-context : security (security<-user (user<-context)) :context :doc "Return security from the given context.") (func security<-user : security [user : user] (:security user) :doc "Return security from the given user.") (func session<-context : session (:session context) :context :doc "Returns session from a context") (func setting<-context : setting (:setting context) :context :doc "Returns setting from a context") (func string-repeat : string [text : string repeat : int] (native :cpp "std::string stringtext = vx_core::vx_string_from_string_repeat(text->vx_string(), repeat->vx_int()); output = vx_core::vx_new_string(stringtext);" :js "text.repeat(repeat)" :java "String stringtext = text.vx_string(); int intrepeat = repeat.vx_int(); String stringresult = stringtext.repeat(intrepeat); output = Core.vx_new_string(stringresult);") :test (test "abab" (string-repeat "ab" 2))) (func string<-any : string [value : any] (string<-any-indent value 0 true) :test (test "true" (string<-any true)) (test "4" (string<-any 4)) (test "5.4" (string<-any 5.4)) (test "\"a\"" (string<-any "a")) (test "(stringlist \"a\" \"b\" \"c\")" (string<-any (stringlist "a" "b" "c"))) (test "(stringmap :a \"1\" :b \"2\")" (string<-any (stringmap :a "1" :b "2"))) :doc "Return a string representation of a value") (func string<-any-indent : string [value : any indent : int linefeed : boolean] (native :cpp "std::string soutput = vx_core::vx_string_from_any_indent(value, indent->vx_int(), linefeed->vx_boolean(), false); output = vx_core::vx_new_string(soutput);" :js "output = vx_core.vx_string_from_any_indent(value, indent, linefeed)" :java :auto) :doc "Return a string representation of a value") (func string<-func : string [] :doc "Function Type returning string with any parameters") (func string<-string-find-replace : string [text : string find : string replace : string] (native :cpp :auto :java :auto :js :auto) :test (test "a!b!c" (string<-string-find-replace "axybxyc" "xy" "!")) :doc "Returns a string with all instances of find replaced by replace.") (func switch : any-1 [val : any-2 thenelselist : thenelselist :...] (native :cpp "vx_core::Type_any any = vx_core::vx_switch(generic_any_1, val, thenelselist); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "let fn_any = null if (thenelselist.length > 0) { for (let valthenelse of thenelselist) { const thenelse = valthenelse['vx_value'] const code = thenelse['code'] switch (code) { case ':case': const value = thenelse['value'] if (value == val) { fn_any = thenelse['fn-any'] } else if (typeof value == 'number') { // special handling of notanumber if (isNaN(val) && isNaN(value)) { fn_any = thenelse['fn-any'] } } break case ':casemany': const values = thenelse['values'] if (values.includes(val)) { fn_any = thenelse['fn-any'] } break case ':else': fn_any = thenelse['fn-any'] break } if (fn_any != null) { break } } if (fn_any != null) { const fn = fn_any['vx_value'] if (fn) { output = fn() } } }" :java "Core.Func_any_from_func fn_any = null; List<Core.Type_thenelse> listthenelse = thenelselist.vx_listthenelse(); for (Core.Type_thenelse thenelse : listthenelse) { Core.Type_string code = thenelse.code(); switch (code.vx_string()) { case “:caseâ€: Core.Type_any value = thenelse.value(); Core.Type_boolean iseq = Core.f_eq(val, value); if (iseq.vx_boolean()) { fn_any = thenelse.fn_any(); } break; case “:casemanyâ€: Core.Type_list values = thenelse.values(); Core.Type_boolean iscontain = Core.f_contains_1(values, val); if (iscontain.vx_boolean()) { fn_any = thenelse.fn_any(); } break; case “:elseâ€: fn_any = thenelse.fn_any(); break; } if (fn_any != null) { break; } } if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :test (test 1 (switch : int "d" (case (list "b" "c" "d") 1) (else 2))) :doc "Returns a value based on a logical switch") (func then : thenelse [fn-cond : boolean<-func fn-any : any<-func] (thenelse :code :then :fn-cond fn-cond :fn-any fn-any) :doc "Returns a thenelse struct from a given condition function and value function") (func traits<-typedef : typelist [vtypedef : typedef] (native :cpp "vtypedef->traits();" :js "vtypedef['vx_value']['traits']" :java "vtypedef.traits();") :doc "Return trait list from type") (func type<-any : any [value : any-1] (native :cpp "value->vx_type();" :js "switch (typeof value) { case 'boolean': output = " boolean " break case 'number': switch (value) { case " infinity ": case " neginfinity ": case " notanumber ": output = " int " break default: const strval = '' + value if (strval.indexOf('.') < 0) { output = " int " } else { output = " float " } break } break case 'string': output = " string " break case 'function': output = " func " break default: output = value['vx_type'] if (output == vx_core.t_type) { output = value } break }" :java "output = value.vx_type();") :test (test boolean (type<-any false)) (test int (type<-any 5)) (test string (type<-any "a")) :doc "Gets the Type of a given Value") (func typedef<-any : typedef [val : any] (typedef<-type (type<-any val)) :doc "Gets the typedef of a given value") (func typedef<-type : typedef [val : any] (native :cpp "val->vx_typedef();" :js "output = val" :java "val.vx_typedef();") :doc "Gets the typedef of a given type") (func typename<-any : string [value : any-2] (typename<-type (type<-any value)) :test (test "vx/core/boolean" (typename<-any false)) (test "vx/core/int" (typename<-any 5)) (test "vx/core/string" (typename<-any "a")) :doc "Gets the typename of a given value") (func typename<-type : string [type : any] (typename<-typedef (typedef<-type type)) :doc "Get the name of a given type") (func typename<-typedef : string [vtypedef : typedef] (string (:pkgname vtypedef) "/" (:name vtypedef)) :doc "Get the name of a given type") (func typenames<-typelist : stringlist [typelist : typelist] (list<-list : stringlist typelist (fn : string [type : any] (typename<-type type))) :doc "Get the names from a type list") (func user<-context : user (:user (session<-context)) :context :doc "Returns the current user from context.")
vx/core / any
Description:
  • Any Value for Variant Type
Type Name:
  • any
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type any :create (native :cpp "// :header vx_core::Type_any vx_type_from_any(vx_core::Type_any value) const;") :doc "Any Value for Variant Type")
vx/core / any-async<-func
Description:
  • A sync or async function that returns one value.
Type Name:
  • any-async<-func
Extends:
  • :func
Default:
Allowed Functions:
  • any<-func
  • any<-func-async
Usage/Test Cases:
Source Code:
  • (type any-async<-func : func :allowfuncs [any<-func any<-func-async] :doc "A sync or async function that returns one value.")
vx/core / any<-anylist
Description:
  • List of any<-any
Type Name:
  • any<-anylist
Extends:
  • :list
Default:
Allowed Functions:
  • any<-any
Usage/Test Cases:
Source Code:
  • (type any<-anylist : list :allowfuncs [any<-any] :doc "List of any<-any")
vx/core / anylist
Description:
  • A list of any
Type Name:
  • anylist
Extends:
  • :list
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type anylist : list :allowtypes [any] :doc "A list of any")
vx/core / anymap
Description:
  • A map of any
Type Name:
  • anymap
Extends:
  • :map
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type anymap : map :allowtypes [any] :doc "A map of any")
vx/core / anytype
Description:
  • Any Type that allows any Type as a Value
Type Name:
  • anytype
Extends:
  • :type
Default:
Usage/Test Cases:
Source Code:
  • (type anytype : type :doc "Any Type that allows any Type as a Value")
vx/core / arg
Description:
  • A function argument
Type Name:
  • arg
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    argtype
    vx/core/any
    false
    false
    fn-any
    vx/core/any<-func
    false
    false
    doc
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type arg : struct :properties [name : string argtype : any fn-any : any<-func doc : string] :doc "A function argument")
vx/core / arglist
Description:
  • A list of arg
Type Name:
  • arglist
Extends:
  • :list
Default:
Allowed Types:
  • arg
Usage/Test Cases:
Source Code:
  • (type arglist : list :allowtypes [arg] :doc "A list of arg")
vx/core / argmap
Description:
  • A map of arg
Type Name:
  • argmap
Extends:
  • :map
Default:
Allowed Types:
  • arg
Usage/Test Cases:
Source Code:
  • (type argmap : map :allowtypes [arg] :doc "A map of arg")
vx/core / boolean
Description:
  • Standard Boolean Type
Type Name:
  • boolean
Extends:
Default:
  • false
Usage/Test Cases:
  • (test-true true)
  • (test-false false)
  • (test-true (boolean true))
  • (test-false (boolean false))
Source Code:
  • (type boolean :default false :allowvalues [true false] :create (native :cpp "// :header bool vx_p_boolean = false; bool vx_boolean() const;" :java "protected boolean vxboolean = false; @Override public boolean vx_boolean() {return vxboolean;}") :test (test-true true) (test-false false) (test-true (boolean true)) (test-false (boolean false)) :doc "Standard Boolean Type")
vx/core / booleanlist
Description:
Type Name:
  • booleanlist
Extends:
  • :list
Default:
Allowed Types:
  • boolean
Usage/Test Cases:
Source Code:
  • (type booleanlist : list :allowtypes [boolean])
vx/core / collection
Description:
Type Name:
  • collection
Extends:
Default:
Allowed Types:
  • list
  • map
Usage/Test Cases:
Source Code:
  • (type collection :allowtypes [list map])
vx/core / compilelanguages
Description:
Type Name:
  • compilelanguages
Extends:
Default:
  • :unknown
Usage/Test Cases:
Source Code:
  • (type compilelanguages :default :unknown :allowvalues [:unknown :cpp :csharp :java :js :kotlin :swift])
vx/core / connect
Description:
  • General connect trait
Type Name:
  • connect
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type connect :doc "General connect trait")
vx/core / connectlist
Description:
  • List of connect
Type Name:
  • connectlist
Extends:
  • :list
Default:
Allowed Types:
  • connect
Usage/Test Cases:
Source Code:
  • (type connectlist : list :allowtypes [connect] :doc "List of connect")
vx/core / connectmap
Description:
  • Map of connect
Type Name:
  • connectmap
Extends:
  • :map
Default:
Allowed Types:
  • connect
Usage/Test Cases:
Source Code:
  • (type connectmap : map :allowtypes [connect] :doc "Map of connect")
vx/core / const
Description:
  • Original Constant Class.
Type Name:
  • const
Extends:
  • :const
Default:
Usage/Test Cases:
Source Code:
  • (type const : const :doc "Original Constant Class.")
vx/core / constdef
Description:
  • Const Definition Class for inspecting properties.
Type Name:
  • constdef
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pkgname
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    type
    vx/core/any
    false
    false
Usage/Test Cases:
Source Code:
  • (type constdef : struct :properties [pkgname : string name : string type : any] :doc "Const Definition Class for inspecting properties.")
vx/core / constlist
Description:
  • List of Const.
Type Name:
  • constlist
Extends:
  • :list
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type constlist : list :allowtypes [any] :doc "List of Const.")
vx/core / constmap
Description:
  • Map of Const.
Type Name:
  • constmap
Extends:
  • :map
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type constmap : map :allowtypes [any] :doc "Map of Const.")
vx/core / context
Description:
  • Context
Type Name:
  • context
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    code
    vx/core/string
    false
    false
    session
    vx/core/session
    false
    false
    setting
    vx/core/setting
    false
    false
    state
    vx/core/state
    false
    false
Usage/Test Cases:
Source Code:
  • (type context : struct :properties [code : string session : session setting : setting state : state] :doc "Context")
vx/core / date
Description:
  • A simple UTC date.
Type Name:
  • date
Extends:
  • :string
Default:
Usage/Test Cases:
Source Code:
  • (type date : string :doc "A simple UTC date.")
vx/core / decimal
Description:
  • A clean version of float like Java BigDecimal.
Type Name:
  • decimal
Extends:
Default:
  • 0
Usage/Test Cases:
Source Code:
  • (type decimal :traits [number] :default 0 :create (native :cpp "// :header std::string vx_p_decimal = “0.0â€; float vx_float() const; std::string vx_string() const;" :java "protected String vxdecimal = “0.0â€; @Override public float vx_float() { return Float.parseFloat(vxdecimal); } @Override public String vx_string() {return vxdecimal;} @Override public Type_decimal vx_new_from_string(final String sval) { Class_decimal output = new Class_decimal(); output.vxdecimal = sval; return output; }") :doc "A clean version of float like Java BigDecimal.")
vx/core / error
Description:
  • Error Type
Type Name:
  • error
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type error :doc "Error Type")
vx/core / float
Description:
  • Standard Floating Point Number
Type Name:
  • float
Extends:
Default:
  • 0.0
Usage/Test Cases:
  • (test 4.5 (float 4.5))
Source Code:
  • (type float :default 0.0 :traits [number] :create (native :cpp "// :header float vx_p_float = 0; float vx_float() const;" :java "protected float vxfloat = 0; @Override public float vx_float() {return vxfloat;}") :test (test 4.5 (float 4.5)) :doc "Standard Floating Point Number")
vx/core / func
Description:
  • Original Function Class.
Type Name:
  • func
Extends:
  • :func
Default:
Usage/Test Cases:
  • (test 5 (let [funcvar : + := +] (funcvar 2 3)))
Source Code:
  • (type func : func :create (native :cpp "// :header vx_core::Type_funcdef vx_funcdef() const;") :test (test 5 (let [funcvar : + := +] (funcvar 2 3))) :doc "Original Function Class.")
vx/core / funcdef
Description:
  • Func Definition Class for inspecting properties.
Type Name:
  • funcdef
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pkgname
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    idx
    vx/core/int
    false
    false
    type
    vx/core/any
    false
    false
    async
    vx/core/boolean
    false
    false
Usage/Test Cases:
Source Code:
  • (type funcdef : struct :properties [pkgname : string name : string idx : int type : any async : boolean] :create (native :cpp "// :header static vx_core::Type_funcdef vx_funcdef_new( std::string pkgname, std::string name, long idx, bool async, vx_core::Type_any typ );") :doc "Func Definition Class for inspecting properties.")
vx/core / funclist
Description:
  • List of Func.
Type Name:
  • funclist
Extends:
  • :list
Default:
Allowed Types:
  • func
Usage/Test Cases:
Source Code:
  • (type funclist : list :allowtypes [func] :doc "List of Func.")
vx/core / funcmap
Description:
  • Map of Func.
Type Name:
  • funcmap
Extends:
  • :map
Default:
Allowed Types:
  • func
Usage/Test Cases:
Source Code:
  • (type funcmap : map :allowtypes [func] :doc "Map of Func.")
vx/core / int
Description:
  • A simple integer.
Type Name:
  • int
Extends:
Default:
  • 0
Usage/Test Cases:
  • (test-true (is-int 4))
  • (test-true (is-int "4"))
  • (test-true (is-int infinity))
  • (test-true (is-int neginfinity))
  • (test-true (is-int notanumber))
  • (test-false (is-int "a"))
  • (test-false (is-int 5.5))
Source Code:
  • (type int :default 0 :allowvalues [infinity neginfinity] :traits [number] :create (native :cpp "// :header long vx_p_int = 0; long vx_int() const;" :java "protected int vxint = 0; @Override public int vx_int() {return vxint;}") :test (test-true (is-int 4)) (test-true (is-int "4")) (test-true (is-int infinity)) (test-true (is-int neginfinity)) (test-true (is-int notanumber)) (test-false (is-int "a")) (test-false (is-int 5.5)) :doc "A simple integer.")
vx/core / intlist
Description:
  • A list of int.
Type Name:
  • intlist
Extends:
  • :list
Default:
Allowed Types:
  • int
Usage/Test Cases:
Source Code:
  • (type intlist : list :allowtypes [int] :doc "A list of int.")
vx/core / intmap
Description:
  • A map of int.
Type Name:
  • intmap
Extends:
  • :map
Default:
Allowed Types:
  • int
Usage/Test Cases:
Source Code:
  • (type intmap : map :allowtypes [int] :doc "A map of int.")
vx/core / list
Description:
  • A simple untyped list.
Type Name:
  • list
Extends:
  • :list
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type list : list :allowtypes [any] :create (native :cpp "// :header vx_core::vx_Type_listany vx_p_list; vx_core::vx_Type_listany vx_list() const; vx_core::Type_any vx_get_any(vx_core::Type_int index) const; vx_core::Type_any vx_new_from_list(vx_core::vx_Type_listany listval) const;") :doc "A simple untyped list.")
vx/core / listtype
Description:
  • A generic type that extends :list.
Type Name:
  • listtype
Extends:
  • :type
Default:
Usage/Test Cases:
Source Code:
  • (type listtype : type :doc "A generic type that extends :list.")
vx/core / locale
Description:
  • Localization data.
Type Name:
  • locale
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type locale : struct :doc "Localization data.")
vx/core / map
Description:
  • A simple untyped map.
Type Name:
  • map
Extends:
  • :map
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type map : map :allowtypes [any] :create (native :cpp "// :header std::vector<std::string> vx_p_keys; vx_core::vx_Type_mapany vx_p_map; vx_core::vx_Type_mapany vx_map() const; vx_core::Type_any vx_get_any(vx_core::Type_string key) const; vx_core::Type_any vx_new_from_map(vx_core::vx_Type_mapany mapval) const;") :doc "A simple untyped map.")
vx/core / maptype
Description:
  • A generic type that extends :map.
Type Name:
  • maptype
Extends:
  • :type
Default:
Usage/Test Cases:
Source Code:
  • (type maptype : type :doc "A generic type that extends :map.")
vx/core / mempool
Description:
  • Memory Pool
Type Name:
  • mempool
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    valuepool
    vx/core/value
    false
    false
Usage/Test Cases:
Source Code:
  • (type mempool : struct :properties [valuepool : value] :create (native :java "private int vx_max = 20; private Map<String, Deque<Core.Type_any>> vx_maplistany = new ConcurrentHashMap<>(); @Override public <T extends Core.Type_any> T vx_restore(final T generic_any_1) { T output = null; String typename = Core.f_typename_from_any(generic_any_1).vx_string(); Deque<Core.Type_any> listany = this.vx_maplistany.get(typename); if (listany == null) { } else if (!listany.isEmpty()) { Core.Type_any any = listany.remove(); if (any != null) { output = Core.f_any_from_any(generic_any_1, any); } } return output; } @Override public void vx_recycle(final Core.Type_any addany) { String typename = Core.f_typename_from_any(addany).vx_string(); Deque<Core.Type_any> listany = this.vx_maplistany.get(typename); boolean isdestroy = true; int imax = this.vx_max; if (imax == 0) { } else if (listany == null) { isdestroy = false; listany = new ConcurrentLinkedDeque<Core.Type_any>(); listany.add(addany); this.vx_maplistany.put(typename, listany); } else { int ilen = listany.size(); if (ilen < imax) { listany.add(addany); } } if (isdestroy) { // destroy } } @Override public void vx_recyclelist(final List<Core.Type_any> addlistany) { for (Core.Type_any addany : addlistany) { this.vx_recycle(addany); } }") :doc "Memory Pool")
vx/core / msg
Description:
  • Message Type for error handling
Type Name:
  • msg
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    code
    vx/core/string
    Message Code
    false
    false
    detail
    vx/core/any
    Message Detail
    false
    false
    path
    vx/core/string
    Message Path
    false
    false
    severity
    vx/core/int
    Message Severity
    false
    false
    text
    vx/core/string
    Message Text
    false
    false
Usage/Test Cases:
Source Code:
  • (type msg : struct :properties [code : string :doc "Message Code" detail : any :doc "Message Detail" path : string :doc "Message Path" severity : int :doc "Message Severity" text : string :doc "Message Text"] :create (native :cpp "// :header std::exception err;" :java "public Exception err = null;") :doc "Message Type for error handling")
vx/core / msgblock
Description:
  • Block of Messages
Type Name:
  • msgblock
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    msgs
    vx/core/msglist
    false
    false
    msgblocks
    vx/core/msgblocklist
    false
    false
Usage/Test Cases:
Source Code:
  • (type msgblock : struct :properties [msgs : msglist msgblocks : msgblocklist] :create (native :java "public Type_msgblock vx_msgblock_from_copy_arrayval(final Core.Type_any copy, final Object... vals) { Core.Type_msgblock output = Core.e_msgblock; Core.Type_msgblock copymsgblock = copy.vx_msgblock(); if (copymsgblock != null) { output = copymsgblock; } return output; }") :doc "Block of Messages")
vx/core / msgblocklist
Description:
  • List of Message Blocks
Type Name:
  • msgblocklist
Extends:
  • :list
Default:
Allowed Types:
  • msgblock
Usage/Test Cases:
Source Code:
  • (type msgblocklist : list :allowtypes [msgblock] :doc "List of Message Blocks")
vx/core / msglist
Description:
  • List of Messages
Type Name:
  • msglist
Extends:
  • :list
Default:
Allowed Types:
  • msg
Usage/Test Cases:
Source Code:
  • (type msglist : list :allowtypes [msg] :doc "List of Messages")
vx/core / none
Description:
  • No Type. No type is returned at all. e.g. Void
Type Name:
  • none
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type none :doc "No Type. No type is returned at all. e.g. Void")
vx/core / notype
Description:
  • No Type that allows no Types as a Value
Type Name:
  • notype
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type notype :doc "No Type that allows no Types as a Value")
vx/core / number
Description:
  • A generic number that could be int, float, or decimal.
Type Name:
  • number
Extends:
Default:
  • 0
Allowed Types:
  • int
  • float
  • decimal
Usage/Test Cases:
Source Code:
  • (type number :default 0 :allowtypes [int float decimal] :doc "A generic number that could be int, float, or decimal.")
vx/core / numberlist
Description:
  • A list of number.
Type Name:
  • numberlist
Extends:
  • :list
Default:
Allowed Types:
  • number
Usage/Test Cases:
Source Code:
  • (type numberlist : list :allowtypes [number] :doc "A list of number.")
vx/core / numbermap
Description:
  • A map of number.
Type Name:
  • numbermap
Extends:
  • :map
Default:
Allowed Types:
  • number
Usage/Test Cases:
Source Code:
  • (type numbermap : map :allowtypes [number] :doc "A map of number.")
vx/core / package
Description:
  • A package that store types, consts and funcs.
Type Name:
  • package
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pkgname
    vx/core/string
    false
    false
    constmap
    vx/core/constmap
    false
    false
    funcmap
    vx/core/funcmap
    false
    false
    typemap
    vx/core/typemap
    false
    false
    emptymap
    vx/core/map
    false
    false
Usage/Test Cases:
Source Code:
  • (type package : struct :properties [pkgname : string constmap : constmap funcmap : funcmap typemap : typemap emptymap : map] :doc "A package that store types, consts and funcs.")
vx/core / packagemap
Description:
Type Name:
  • packagemap
Extends:
  • :map
Default:
Allowed Types:
  • package
Usage/Test Cases:
Source Code:
  • (type packagemap : map :allowtypes [package])
vx/core / permission
Description:
  • Permission
Type Name:
  • permission
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type permission : struct :properties [id : string] :doc "Permission")
vx/core / permissionlist
Description:
  • List of Permission
Type Name:
  • permissionlist
Extends:
  • :list
Default:
Allowed Types:
  • permission
Usage/Test Cases:
Source Code:
  • (type permissionlist : list :allowtypes [permission] :doc "List of Permission")
vx/core / permissionmap
Description:
  • Map of Permission
Type Name:
  • permissionmap
Extends:
  • :map
Default:
Allowed Types:
  • permission
Usage/Test Cases:
Source Code:
  • (type permissionmap : map :allowtypes [permission] :doc "Map of Permission")
vx/core / project
Description:
  • A project.
Type Name:
  • project
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    packagemap
    vx/core/packagemap
    false
    false
Usage/Test Cases:
Source Code:
  • (type project : struct :properties [packagemap : packagemap] :doc "A project.")
vx/core / security
Description:
  • Security rules
Type Name:
  • security
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    allowfuncs
    vx/core/funclist
    false
    false
    permissions
    vx/core/permissionlist
    false
    false
    permissionmap
    vx/core/permissionmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type security : struct :properties [allowfuncs : funclist permissions : permissionlist permissionmap : permissionmap] :doc "Security rules")
vx/core / session
Description:
  • Session
Type Name:
  • session
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    user
    vx/core/user
    false
    false
    connectlist
    vx/core/connectlist
    false
    false
    connectmap
    vx/core/connectmap
    false
    false
    locale
    vx/core/locale
    false
    false
    translation
    vx/core/translation
    false
    false
    translationmap
    vx/core/translationmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type session : struct :properties [user : user connectlist : connectlist connectmap : connectmap locale : locale translation : translation translationmap : translationmap] :doc "Session")
vx/core / setting
Description:
  • Settings
Type Name:
  • setting
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pathmap
    vx/core/stringmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type setting : struct :properties [pathmap : stringmap] :doc "Settings")
vx/core / state
Description:
  • State. Note that this type is has mutable values.
Type Name:
  • state
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    statelistenermap
    vx/core/statelistenermap
    false
    false
Usage/Test Cases:
Source Code:
  • (type state : struct :properties [statelistenermap : statelistenermap] :doc "State. Note that this type is has mutable values.")
vx/core / statelistener
Description:
Type Name:
  • statelistener
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    value
    vx/core/any
    false
    false
    fn-boolean
    vx/core/boolean<-none
    false
    false
Usage/Test Cases:
Source Code:
  • (type statelistener : struct :properties [name : string value : any fn-boolean : boolean<-none])
vx/core / statelistenermap
Description:
  • Mutable map of statelisteners
Type Name:
  • statelistenermap
Extends:
  • :map
Default:
Allowed Types:
  • statelistener
Usage/Test Cases:
Source Code:
  • (type statelistenermap : map :allowtypes [statelistener] :mutable :doc "Mutable map of statelisteners")
vx/core / string
Description:
  • A simple string.
Type Name:
  • string
Extends:
  • :string
Default:
Usage/Test Cases:
  • (test "a" (string "a"))
  • (test "ab" (string "a" "b"))
Source Code:
  • (type string : string :default "" :create (native :cpp "// :header std::string vx_p_string = “â€; std::string vx_string() const;" :java "protected String vxstring = “â€; @Override public String vx_string() { return vxstring; }") :test (test "a" (string "a")) (test "ab" (string "a" "b")) :doc "A simple string.")
vx/core / stringlist
Description:
  • A list of string.
Type Name:
  • stringlist
Extends:
  • :list
Default:
Allowed Types:
  • string
Usage/Test Cases:
Source Code:
  • (type stringlist : list :allowtypes [string] :doc "A list of string.")
vx/core / stringlistlist
Description:
  • A list of stringlist.
Type Name:
  • stringlistlist
Extends:
  • :list
Default:
Allowed Types:
  • stringlist
Usage/Test Cases:
Source Code:
  • (type stringlistlist : list :allowtypes [stringlist] :doc "A list of stringlist.")
vx/core / stringmap
Description:
  • A map of string.
Type Name:
  • stringmap
Extends:
  • :map
Default:
Allowed Types:
  • string
Usage/Test Cases:
Source Code:
  • (type stringmap : map :allowtypes [string] :doc "A map of string.")
vx/core / struct
Description:
  • Struct is the type of all structures/objects with properties.
Type Name:
  • struct
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type struct : struct :create (native :cpp "// :header vx_core::vx_Type_mapany vx_map() const; vx_core::Type_any vx_get_any(vx_core::Type_string key) const;") :doc "Struct is the type of all structures/objects with properties.")
vx/core / thenelse
Description:
Type Name:
  • thenelse
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    code
    vx/core/string
    false
    false
    value
    vx/core/any
    false
    false
    values
    vx/core/list
    false
    false
    fn-cond
    vx/core/boolean<-func
    false
    false
    fn-any
    vx/core/any<-func
    false
    false
Usage/Test Cases:
Source Code:
  • (type thenelse : struct :properties [code : string value : any values : list fn-cond : boolean<-func fn-any : any<-func])
vx/core / thenelselist
Description:
Type Name:
  • thenelselist
Extends:
  • :list
Default:
Allowed Types:
  • thenelse
Usage/Test Cases:
Source Code:
  • (type thenelselist : list :allowtypes [thenelse])
vx/core / translation
Description:
  • i18 language translation.
Type Name:
  • translation
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    wordmap
    vx/core/stringmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type translation : struct :properties [name : string wordmap : stringmap] :doc "i18 language translation.")
vx/core / translationlist
Description:
  • i18 language translation list.
Type Name:
  • translationlist
Extends:
  • :list
Default:
Allowed Types:
  • translation
Usage/Test Cases:
Source Code:
  • (type translationlist : list :allowtypes [translation] :doc "i18 language translation list.")
vx/core / translationmap
Description:
  • i18 language translation map.
Type Name:
  • translationmap
Extends:
  • :map
Default:
Allowed Types:
  • translation
Usage/Test Cases:
Source Code:
  • (type translationmap : map :allowtypes [translation] :doc "i18 language translation map.")
vx/core / type
Description:
  • Original Type Class
Type Name:
  • type
Extends:
  • :type
Default:
Usage/Test Cases:
Source Code:
  • (type type : type :doc "Original Type Class")
vx/core / typedef
Description:
  • Type Definition Class for inspecting Type properties.
Type Name:
  • typedef
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pkgname
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    extends
    vx/core/string
    false
    false
    allowfuncs
    vx/core/funclist
    false
    false
    allowtypes
    vx/core/typelist
    false
    false
    allowvalues
    vx/core/anylist
    false
    false
    disallowfuncs
    vx/core/funclist
    false
    false
    disallowtypes
    vx/core/typelist
    false
    false
    disallowvalues
    vx/core/anylist
    false
    false
    properties
    vx/core/argmap
    false
    false
    proplast
    vx/core/arg
    false
    false
    traits
    vx/core/typelist
    false
    false
Usage/Test Cases:
Source Code:
  • (type typedef : struct :properties [pkgname : string name : string extends : string allowfuncs : funclist allowtypes : typelist allowvalues : anylist disallowfuncs : funclist disallowtypes : typelist disallowvalues : anylist properties : argmap proplast : arg traits : typelist] :create (native :cpp "// :header static vx_core::Type_typedef vx_typedef_new( std::string pkgname, std::string name, std::string extend, vx_core::Type_typelist traits, vx_core::Type_typelist allowtypes, vx_core::Type_typelist disallowtypes, vx_core::Type_funclist allowfuncs, vx_core::Type_funclist disallowfuncs, vx_core::Type_anylist allowvalues, vx_core::Type_anylist disallowvalues, vx_core::Type_argmap properties );") :doc "Type Definition Class for inspecting Type properties.")
vx/core / typelist
Description:
  • List of Types
Type Name:
  • typelist
Extends:
  • :list
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type typelist : list :allowtypes [any] :doc "List of Types")
vx/core / typemap
Description:
  • Map of Any Type Class
Type Name:
  • typemap
Extends:
  • :map
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type typemap : map :allowtypes [any] :doc "Map of Any Type Class")
vx/core / user
Description:
  • User Type
Type Name:
  • user
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    security
    vx/core/security
    false
    false
    username
    vx/core/string
    false
    false
    token
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type user : struct :properties [security : security username : string token : string] :doc "User Type")
vx/core / value
Description:
Type Name:
  • value
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    next
    vx/core/any
    false
    false
    refs
    vx/core/int
    false
    false
Usage/Test Cases:
Source Code:
  • (type value : struct :properties [next : any refs : int])
vx/core / false
Description:
Constant Name:
  • false
Type:
  • vx/core/boolean
Usage/Test Cases:
  • (test-false false)
Source Code:
  • (const false : boolean :test (test-false false))
vx/core / global
Description:
  • Global variable for project data.
Constant Name:
  • global
Type:
  • vx/core/project
Usage/Test Cases:
Source Code:
  • (const global : project :doc "Global variable for project data.")
vx/core / infinity
Description:
  • Infinity. Returned during unusual calculations.
Constant Name:
  • infinity
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const infinity : int (native :js "Infinity") :doc "Infinity. Returned during unusual calculations.")
vx/core / mempool-active
Description:
  • Active Value Memory Pool
Constant Name:
  • mempool-active
Type:
  • vx/core/mempool
Usage/Test Cases:
Source Code:
  • (const mempool-active : mempool :doc "Active Value Memory Pool")
vx/core / msg-info
Description:
  • Message is just information
Constant Name:
  • msg-info
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const msg-info : int 0 :doc "Message is just information")
vx/core / msg-warning
Description:
  • Message is a Warning
Constant Name:
  • msg-warning
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const msg-warning : int 1 :doc "Message is a Warning")
vx/core / msg-error
Description:
  • Message is an Error
Constant Name:
  • msg-error
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const msg-error : int 2 :doc "Message is an Error")
vx/core / msg-severe
Description:
  • Message is a Severe Error
Constant Name:
  • msg-severe
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const msg-severe : int 3 :doc "Message is a Severe Error")
vx/core / neginfinity
Description:
  • Negative Infinity. Returned during unusual calculations.
Constant Name:
  • neginfinity
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const neginfinity : int (native :js "-Infinity") :doc "Negative Infinity. Returned during unusual calculations.")
vx/core / newline
Description:
  • New line constant
Constant Name:
  • newline
Type:
  • vx/core/string
Usage/Test Cases:
Source Code:
  • (const newline : string "\n" :doc "New line constant")
vx/core / notanumber
Description:
  • Not a number. Returned during invalid calculations.
Constant Name:
  • notanumber
Type:
  • vx/core/int
Usage/Test Cases:
Source Code:
  • (const notanumber : int (native :js "NaN") :doc "Not a number. Returned during invalid calculations.")
vx/core / nothing
Description:
  • Nothing Value. Opposite of every other value. e.g. Nil, Null
Constant Name:
  • nothing
Type:
  • vx/core/string
Usage/Test Cases:
Source Code:
  • (const nothing : string "nothing" :doc "Nothing Value. Opposite of every other value. e.g. Nil, Null")
vx/core / quote
Description:
  • Quotation mark constant
Constant Name:
  • quote
Type:
  • vx/core/string
Usage/Test Cases:
Source Code:
  • (const quote : string `"` :doc "Quotation mark constant")
vx/core / true
Description:
Constant Name:
  • true
Type:
  • vx/core/boolean
Usage/Test Cases:
  • (test-true true)
Source Code:
  • (const true : boolean (native :cpp "true" :js "true" :java "true") :test (test-true true))
vx/core / .
Description:
  • Not Recommened: Support for Object Oriented dot notation. e.g. (this.foo 'a') = this.foo('a')
Function Name:
  • . (alias: dotmethod)
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    object
    vx/core/any
    method
    vx/core/string
    params
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func . : any [object : any method : string params : anylist :...] (native :js "object[method].apply(params)") :alias "dotmethod" :sideeffects "Depends on object" :doc "Not Recommened: Support for Object Oriented dot notation. e.g. (this.foo 'a') = this.foo('a')")
vx/core / +
Description:
  • Math int plus
Function Name:
  • + (alias: plus)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/int
    num2
    vx/core/int
Usage/Test Cases:
  • (test 5 (+ 2 3))
  • (test 3 (+ 5 -2))
Source Code:
  • (func + : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() + num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 + num2" :java "int result = num1.vx_int() + num2.vx_int(); output = Core.vx_new_int(result);") :alias "plus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math int plus")
vx/core / +
Description:
  • Math number plus
Function Name:
  • + (alias: plus)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/number
    num2
    vx/core/number
Usage/Test Cases:
  • (test 5 (+ 2 3))
  • (test 3 (+ 5 -2))
Source Code:
  • (func + : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) + vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 + num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() + float2.vx_float(); output = Core.vx_new_float(result);") :alias "plus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math number plus")
vx/core / +
Description:
  • Math int plus
Function Name:
  • + (alias: plus)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/intlist
Usage/Test Cases:
Source Code:
  • (func + : int [nums : intlist :...] (any<-list-start-reduce nums 0 (fn : int [total : int num : int] (+ total num))) :alias "plus" :doc "Math int plus")
vx/core / +
Description:
  • Math number plus
Function Name:
  • + (alias: plus)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/numberlist
Usage/Test Cases:
Source Code:
  • (func + : number [nums : numberlist :...] (any<-list-start-reduce nums 0 (fn : number [total : number num : number] (+ total num))) :alias "plus" :doc "Math number plus")
vx/core / +1
Description:
  • Math int plus 1
Function Name:
  • +1 (alias: plus1)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
  • (test 3 (+1 2))
  • (test -1 (+1 -2))
Source Code:
  • (func +1 : int [num : int] (+ num 1) :alias "plus1" :test (test 3 (+1 2)) (test -1 (+1 -2)) :doc "Math int plus 1")
vx/core / -
Description:
  • Math int minus
Function Name:
  • - (alias: minus)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/int
    num2
    vx/core/int
Usage/Test Cases:
  • (test 1 (- 3 2))
  • (test 7 (- 5 -2))
Source Code:
  • (func - : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() - num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 - num2" :java "int result = num1.vx_int() - num2.vx_int(); output = Core.vx_new_int(result);") :alias "minus" :test (test 1 (- 3 2)) (test 7 (- 5 -2)) :doc "Math int minus")
vx/core / -
Description:
  • Math number minus
Function Name:
  • - (alias: minus)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/number
    num2
    vx/core/number
Usage/Test Cases:
  • (test 5 (+ 2 3))
  • (test 3 (+ 5 -2))
Source Code:
  • (func - : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) - vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 - num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() - float2.vx_float(); output = Core.vx_new_float(result);") :alias "minus" :test (test 5 (+ 2 3)) (test 3 (+ 5 -2)) :doc "Math number minus")
vx/core / -
Description:
  • Math integer minus
Function Name:
  • - (alias: minus)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/intlist
Usage/Test Cases:
Source Code:
  • (func - : int [nums : intlist :...] (any<-list-start-reduce nums 0 (fn : int [total : int num : int] (- total num))) :alias "minus" :doc "Math integer minus")
vx/core / -
Description:
  • Math number minus
Function Name:
  • - (alias: minus)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/numberlist
Usage/Test Cases:
Source Code:
  • (func - : number [nums : numberlist :...] (any<-list-start-reduce nums 0 (fn : number [total : number num : number] (- total num)) ) :alias "minus" :doc "Math number minus")
vx/core / -1
Description:
  • Math int minus 1
Function Name:
  • -1 (alias: minus1)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
  • (test 1 (-1 2))
  • (test -3 (-1 -2))
Source Code:
  • (func -1 : int [num : int] (- num 1) :alias "minus1" :test (test 1 (-1 2)) (test -3 (-1 -2)) :doc "Math int minus 1")
vx/core / *
Description:
  • Math int multiply
Function Name:
  • * (alias: multiply)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/int
    num2
    vx/core/int
Usage/Test Cases:
  • (test 6 (* 3 2))
  • (test -10 (* 5 -2))
Source Code:
  • (func * : int [num1 : int num2 : int] (native :cpp "long result = num1->vx_int() * num2->vx_int(); output = vx_core::vx_new_int(result);" :js "num1 * num2" :java "int result = num1.vx_int() * num2.vx_int(); output = Core.vx_new_int(result);") :alias "multiply" :test (test 6 (* 3 2)) (test -10 (* 5 -2)) :doc "Math int multiply")
vx/core / *
Description:
  • Math multipy
Function Name:
  • * (alias: multiply)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/number
    num2
    vx/core/number
Usage/Test Cases:
  • (test 6.4 (* 3.2 2))
  • (test -10.2 (* 5.1 -2))
Source Code:
  • (func * : number [num1 : number num2 : number] (native :cpp "float result = vx_core::vx_float_from_number(num1) * vx_core::vx_float_from_number(num2); output = vx_core::vx_new_float(result);" :js "num1 * num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); float result = float1.vx_float() * float2.vx_float(); output = Core.vx_new_float(result);") :alias "multiply" :test (test 6.4 (* 3.2 2)) (test -10.2 (* 5.1 -2)) :doc "Math multipy")
vx/core / *
Description:
  • Math multiply
Function Name:
  • * (alias: multiply)
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/intlist
Usage/Test Cases:
  • (test 24 (* 3 2 4))
  • (test -20 (* 5 -2 2))
Source Code:
  • (func * : int [nums : intlist :...] (any<-list-start-reduce nums 1 (fn : int [total : int num : int] (* total num)) ) :alias "multiply" :test (test 24 (* 3 2 4)) (test -20 (* 5 -2 2)) :doc "Math multiply")
vx/core / *
Description:
  • Math multiply
Function Name:
  • * (alias: multiply)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/core/numberlist
Usage/Test Cases:
  • (test 24 (* 3 2 4))
  • (test -20 (* 5 -2 2))
Source Code:
  • (func * : number [nums : numberlist :...] (any<-list-start-reduce nums 1 (fn : number [total : number num : number] (* total num)) ) :alias "multiply" :test (test 24 (* 3 2 4)) (test -20 (* 5 -2 2)) :doc "Math multiply")
vx/core / /
Description:
  • Math divide
Function Name:
  • / (alias: divide)
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
    num1
    vx/core/number
    num2
    vx/core/number
Usage/Test Cases:
  • (test 3 (/ 6 2))
  • (test -5 (/ 10 -2))
Source Code:
  • (func / : number [num1 : number num2 : number] (native :cpp "float float1 = vx_core::vx_float_from_number(num1); float float2 = vx_core::vx_float_from_number(num2); if (float1 == 0) { } else if (float2 == 0) { output = vx_core::c_notanumber; } else { float result = float1 / float2; output = vx_core::vx_new_float(result); }" :js "num1 / num2" :java "Core.Type_float float1 = Core.t_float.vx_new(num1); Core.Type_float float2 = Core.t_float.vx_new(num2); if (float1.vx_float() == 0) { } else if (float2.vx_float() == 0) { output = Core.c_notanumber; } else { float result = float1.vx_float() / float2.vx_float(); output = Core.vx_new_float(result); }") :alias "divide" :test (test 3 (/ 6 2)) (test -5 (/ 10 -2)) :doc "Math divide")
vx/core / =
Description:
  • Boolean equal/equivalent
Function Name:
  • = (alias: eq)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (= true true))
  • (test-true (= 2 2))
  • (test-true (= "a" "a"))
  • (test-true (= (stringlist "a" "b" "c") (new stringlist "a" "b" "c")))
  • (test-true (= (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2")))
Source Code:
  • (func = : boolean [val1 : any val2 : any] (native :cpp "bool isequal = false; if (val1 == val2) { isequal = true; } else { std::string str1 = vx_core::vx_string_from_any(val1); std::string str2 = vx_core::vx_string_from_any(val2); if (str1 == str2) { isequal = true; } } output = vx_core::vx_new_boolean(isequal);" :js "vx_core.vx_eq(val1, val2)" :java "boolean isequal = false; if (val1 == val2) { isequal = true; } else { Core.Type_string strval1 = Core.f_string_from_any(val1); Core.Type_string strval2 = Core.f_string_from_any(val2); if (strval1.vx_string().equals(strval2.vx_string())) { isequal = true; } } output = Core.vx_new_boolean(isequal);") :alias "eq" :test (test-true (= true true)) (test-true (= 2 2)) (test-true (= "a" "a")) (test-true (= (stringlist "a" "b" "c") (new stringlist "a" "b" "c"))) (test-true (= (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2"))) :doc "Boolean equal/equivalent")
vx/core / =
Description:
  • Boolean equal/equivalent
Function Name:
  • = (alias: eq)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
  • (test-false (= 2 2 3))
Source Code:
  • (func = : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values false (fn : boolean [reduce : boolean current : any next : any] (and reduce (= current next))) ) :alias "eq" :test (test-false (= 2 2 3)) :doc "Boolean equal/equivalent")
vx/core / ==
Description:
  • Strict equality check. Note that all non-empty, non-constants will not be equal.
Function Name:
  • == (alias: eqeq)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (== 0 0))
  • (test-true (== "" ""))
Source Code:
  • (func == : boolean [val1 : any val2 : any] (native :cpp "bool isequal = vx_core::vx_eqeq(val1, val2); output = vx_core::vx_new_boolean(isequal);" :js "output = val1 == val2" :java "boolean isequal = Core.vx_eqeq(val1, val2); output = Core.vx_new_boolean(isequal);") :alias "eqeq" :test (test-true (== 0 0)) (test-true (== "" "")) :doc "Strict equality check. Note that all non-empty, non-constants will not be equal.")
vx/core / !
Description:
  • Boolean not
Function Name:
  • ! (alias: not)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/boolean
    Thing to not
Usage/Test Cases:
  • (test-false false)
  • (test-false (! true))
Source Code:
  • (func ! : boolean [val : boolean :doc "Thing to not"] (native :cpp "vx_core::vx_new_boolean(!val->vx_boolean());" :js "!val" :java "Core.vx_new_boolean(!val.vx_boolean());") :alias "not" :test (test-false false) (test-false (! true)) :doc "Boolean not")
vx/core / !=
Description:
  • Returns true if the first arg is not equal to any of the other arg.
Function Name:
  • != (alias: ne)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-ne true false)
  • (test-ne "a" "b")
Source Code:
  • (func != : boolean [val1 : any val2 : any] (! (= val1 val2)) :alias "ne" :test (test-ne true false) (test-ne "a" "b") :doc "Returns true if the first arg is not equal to any of the other arg.")
vx/core / !==
Description:
  • Returns true if the first arg is not strictly equal to any of the other arg.
Function Name:
  • !== (alias: neqeq)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func !== : boolean [val1 : any val2 : any] (! (== val1 val2)) :alias "neqeq" :doc "Returns true if the first arg is not strictly equal to any of the other arg.")
vx/core / !-empty
Description:
  • Returns true if text is not empty.
Function Name:
  • !-empty (alias: notempty)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func !-empty : boolean [text : string] (! (is-empty text)) :alias "notempty" :doc "Returns true if text is not empty.")
vx/core / !-empty
Description:
  • Returns true if val is not empty.
Function Name:
  • !-empty (alias: notempty)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func !-empty : boolean [val : any] (! (is-empty val)) :alias "notempty" :doc "Returns true if val is not empty.")
vx/core / <
Description:
  • Returns true if the first arg is less than all of the other args
Function Name:
  • < (alias: lt)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (< 2 3))
Source Code:
  • (func < : boolean [val1 : any val2 : any] (switch (compare val1 val2) (case -1 true) (else false)) :alias "lt" :test (test-true (< 2 3)) :doc "Returns true if the first arg is less than all of the other args")
vx/core / <
Description:
  • Returns true if the first arg is less than all of the other args
Function Name:
  • < (alias: lt)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
  • (test-true (< 2 3))
  • (test-true (< "b" "d" "z"))
Source Code:
  • (func < : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : any next : any] (and reduce (< current next)))) :alias "lt" :test (test-true (< 2 3)) (test-true (< "b" "d" "z")) :doc "Returns true if the first arg is less than all of the other args")
vx/core / <=
Description:
  • Returns true if the first arg is less or equal than all of the other args
Function Name:
  • <= (alias: le)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (<= 2 3))
Source Code:
  • (func <= : boolean [val1 : any val2 : any] (! (> val1 val2)) :alias "le" :test (test-true (<= 2 3)) :doc "Returns true if the first arg is less or equal than all of the other args")
vx/core / <=
Description:
  • Returns true if the first arg is less or equal than all of the other args
Function Name:
  • <= (alias: le)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
  • (test-true (<= "b" "d" "z"))
Source Code:
  • (func <= : boolean [args : anylist :...] (! (> args)) :alias "le" :test (test-true (<= "b" "d" "z")) :doc "Returns true if the first arg is less or equal than all of the other args")
vx/core / <-
Description:
  • This is a special function that applies a value as the first argument for the first function. The result is then used as the first argument on the next function, etc. Sometimes this improves readability.
Function Name:
  • <- (alias: chainfirst)
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
    fnlist
    vx/core/any<-anylist
Usage/Test Cases:
  • (test (* (+ (- 5 3) 3) 2) (<- 5 (- 3) (+ 3) (* 2)))
Source Code:
  • (func <- : any-1 [value : any-1 fnlist : any<-anylist :...] :alias chainfirst :test (test (* (+ (- 5 3) 3) 2) (<- 5 (- 3) (+ 3) (* 2))) :doc "This is a special function that applies a value as the first argument for the first function. The result is then used as the first argument on the next function, etc. Sometimes this improves readability.")
vx/core / <<-
Description:
  • This is a special function that applies a value as the last argument for the first function. The result is then used as the last argument on the next function, etc. Sometimes this improves readability.
Function Name:
  • <<- (alias: chainlast)
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
    fnlist
    vx/core/any<-anylist
Usage/Test Cases:
  • (test (* (+ (- 3 5) 3) 2) (<<- 5 (- 3) (+ 3) (* 2)))
Source Code:
  • (func <<- : any-1 [value : any-1 fnlist : any<-anylist :...] :alias chainlast :test (test (* (+ (- 3 5) 3) 2) (<<- 5 (- 3) (+ 3) (* 2))) :doc "This is a special function that applies a value as the last argument for the first function. The result is then used as the last argument on the next function, etc. Sometimes this improves readability.")
vx/core / >
Description:
  • Returns true if the first arg is greater than all of the other args
Function Name:
  • > (alias: gt)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (> 3 2))
Source Code:
  • (func > : boolean [val1 : any val2 : any] (switch (compare val1 val2) (case 1 true) (else false)) :alias "gt" :test (test-true (> 3 2)) :doc "Returns true if the first arg is greater than all of the other args")
vx/core / >
Description:
  • Returns true if the first arg is greater than all of the other args
Function Name:
  • > (alias: gt)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
  • (test-true (> "z" "y" "b"))
Source Code:
  • (func > : boolean [values : anylist :...] (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : any next : any] (and reduce (> current next)))) :alias "gt" :test (test-true (> "z" "y" "b")) :doc "Returns true if the first arg is greater than all of the other args")
vx/core / >=
Description:
  • Returns true if val1 is greater or equal to val2
Function Name:
  • >= (alias: ge)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test-true (>= 3 2))
Source Code:
  • (func >= : boolean [val1 : any val2 : any] (! (< val1 val2)) :alias "ge" :test (test-true (>= 3 2)) :doc "Returns true if val1 is greater or equal to val2")
vx/core / >=
Description:
  • Returns true if the first arg is greater or equal than all of the other args
Function Name:
  • >= (alias: ge)
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
  • (test-true (>= "z" "b" "b"))
Source Code:
  • (func >= : boolean [args : anylist :...] (! (< args)) :alias "ge" :test (test-true (>= "z" "b" "b")) :doc "Returns true if the first arg is greater or equal than all of the other args")
vx/core / allowfuncs<-security
Description:
  • Returns allowfuncs from a given security.
Function Name:
  • allowfuncs<-security
Return Type:
  • vx/core/funclist
Arguments:
  • Name
    Type
    Generic
    Description
    security
    vx/core/security
Usage/Test Cases:
Source Code:
  • (func allowfuncs<-security : funclist [security : security] (:allowfuncs security) :doc "Returns allowfuncs from a given security.")
vx/core / allowtypenames<-typedef
Description:
  • Return allow name list from type
Function Name:
  • allowtypenames<-typedef
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func allowtypenames<-typedef : stringlist [vtypedef : typedef] (typenames<-typelist (allowtypes<-typedef vtypedef)) :doc "Return allow name list from type")
vx/core / allowtypes<-typedef
Description:
  • Return allow type list from type
Function Name:
  • allowtypes<-typedef
Return Type:
  • vx/core/typelist
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func allowtypes<-typedef : typelist [vtypedef : typedef] (native :cpp "vtypedef->allowtypes();" :js "vtypedef['vx_value']['allowtypes']" :java "vtypedef.allowtypes();") :doc "Return allow type list from type")
vx/core / and
Description:
  • Returns true if all values are true
Function Name:
  • and
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/boolean
    val2
    vx/core/boolean
Usage/Test Cases:
  • (test-true (and true true))
  • (test-false (and true false))
Source Code:
  • (func and : boolean [val1 : boolean val2 : boolean] (native :cpp "if (val1->vx_boolean() && val2->vx_boolean()) { output = vx_core::c_true; } else { output = vx_core::c_false; }" :js "if (val1 && val2) { output = true } else { output = false }" :java "if (val1.vx_boolean() && val2.vx_boolean()) { output = Core.c_true; } else { output = Core.c_false; }") :test (test-true (and true true)) (test-false (and true false)) :doc "Returns true if all values are true")
vx/core / and
Description:
  • Returns true if all values are true
Function Name:
  • and
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/booleanlist
Usage/Test Cases:
  • (test-true (and true true true))
  • (test-false (and true true false))
Source Code:
  • (func and : boolean [values : booleanlist :...] (switch : boolean (length<-list values) (case 0 true) (case 1 (:1 values)) (else (any<-list-start-reduce-next : boolean values true (fn : boolean [reduce : boolean current : boolean next : boolean] (and reduce (and current next))) ))) :test (test-true (and true true true)) (test-false (and true true false)) :doc "Returns true if all values are true")
vx/core / any<-any
Description:
  • Function Type taking any value any-2 and returning generic any-1
Function Name:
  • any<-any
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-any : any-1 [value : any-2] (native :cpp "output = vx_core::vx_any_from_any(generic_any_1, value);" :js "value" :java "@SuppressWarnings(“uncheckedâ€) output = (T)value;") :doc "Function Type taking any value any-2 and returning generic any-1")
vx/core / any<-any-async
Description:
  • Function Type taking any value any-2 and returning generic any-1
Function Name:
  • any<-any-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-any-async : any-1 [value : any-2] :async :doc "Function Type taking any value any-2 and returning generic any-1")
vx/core / any<-any-context
Description:
  • Function Type taking any value any-2 and returning generic any-1 using context
Function Name:
  • any<-any-context
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-any-context : any-1 [value : any-2] (native :java "@SuppressWarnings(“uncheckedâ€) output = (T)value;") :context :doc "Function Type taking any value any-2 and returning generic any-1 using context")
vx/core / any<-any-context-async
Description:
  • Generic Function taking any value any-2 and returning generic any-1
Function Name:
  • any<-any-context-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-any-context-async : any-1 [value : any-2] :async :context :doc "Generic Function taking any value any-2 and returning generic any-1")
vx/core / any<-any-key-value
Description:
  • Generic Function returning Generic any-1 from a any-1, a key, and a value.
Function Name:
  • any<-any-key-value
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    current
    vx/core/any-1
    key
    vx/core/string
    value
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-any-key-value : any-1 [current : any-1 key : string value : any-2] :doc "Generic Function returning Generic any-1 from a any-1, a key, and a value.")
vx/core / any<-int
Description:
  • Generic Function returning Generic any-1 from an int
Function Name:
  • any<-int
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func any<-int : any-1 [value : int] :doc "Generic Function returning Generic any-1 from an int")
vx/core / any<-func
Description:
  • Generic Function returning Generic any-1 with any parameters
Function Name:
  • any<-func
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func any<-func : any-1 [] :doc "Generic Function returning Generic any-1 with any parameters")
vx/core / any<-func-async
Description:
  • Generic Function returning Generic any-1 with any parameters
Function Name:
  • any<-func-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func any<-func-async : any-1 [] :async :doc "Generic Function returning Generic any-1 with any parameters")
vx/core / any<-int-any
Description:
  • Generic Function returning Generic any-1 from an int and a value
Function Name:
  • any<-int-any
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
    val
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-int-any : any-1 [num : int val : any-2] :doc "Generic Function returning Generic any-1 from an int and a value")
vx/core / any<-key-value
Description:
  • Generic Function returning Generic any-1 from a key and a value
Function Name:
  • any<-key-value
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    key
    vx/core/string
    val
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-key-value : any-1 [key : string val : any-2] :doc "Generic Function returning Generic any-1 from a key and a value")
vx/core / any<-key-value-async
Description:
  • Generic Function returning Asynchronous Generic any-1 from a key and a value
Function Name:
  • any<-key-value-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    key
    vx/core/string
    val
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-key-value-async : any-1 [key : string val : any-2] :async :doc "Generic Function returning Asynchronous Generic any-1 from a key and a value")
vx/core / any<-list
Description:
  • Returns nth value from a list or none if out of bounds
Function Name:
  • any<-list
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    index
    vx/core/int
Usage/Test Cases:
  • (test "b" (any<-list (list "a" "b" "c") 2))
  • (test "b" (:2 (stringlist "a" "b" "c")))
Source Code:
  • (func any<-list : any-1 [values : list-1 index : int] (native :cpp "long intindex = index->vx_int(); vx_core::vx_Type_listany listvalue = values->vx_list(); long intsize = vx_core::vx_int_from_sizet(listvalue.size()); if (intindex <= intsize) { vx_core::Type_any value = listvalue[intindex - 1]; output = vx_core::vx_any_from_any(generic_any_1, value); }" :js "if (index <= values.length) { output = values[index - 1] }" :java "int intindex = index.vx_int(); int intsize = values.vx_list().size(); if (intindex <= intsize) { List<Core.Type_any> listvalue = values.vx_list(); Core.Type_any value = listvalue.get(intindex - 1); output = Core.f_any_from_any(generic_any_1, value); }") :test (test "b" (any<-list (list "a" "b" "c") 2)) (test "b" (:2 (stringlist "a" "b" "c"))) :doc "Returns nth value from a list or none if out of bounds")
vx/core / any<-list-start-reduce
Description:
  • Returns a val from a list reduce operation
Function Name:
  • any<-list-start-reduce
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    list
    vx/core/list-2
    valstart
    vx/core/any-1
    fn-reduce
    vx/core/any<-reduce
Usage/Test Cases:
  • (test 24 (any<-list-start-reduce : int (intlist 3 2 4) 1 (fn : int [total : int num : int] (* total num))))
Source Code:
  • (func any<-list-start-reduce : any-1 [list : list-2 valstart : any-1 fn-reduce : any<-reduce] (native :cpp "vx_core::Type_any work = valstart; std::vector<vx_core::Type_any> listval = list->vx_list(); for (vx_core::Type_any item : listval) { work = fn_reduce->vx_any_from_reduce(work, item); }; output = vx_core::vx_any_from_any(generic_any_1, work);" :java :auto :js "output = valstart const fn = fn_reduce['vx_value'] if (fn) { for (const item of list) { output = fn(output, item) } }") :test (test 24 (any<-list-start-reduce : int (intlist 3 2 4) 1 (fn : int [total : int num : int] (* total num)))) :doc "Returns a val from a list reduce operation")
vx/core / any<-list-start-reduce-next
Description:
  • Returns a val from a list reduce operation
Function Name:
  • any<-list-start-reduce-next
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    list
    vx/core/list-2
    valstart
    vx/core/any-1
    fn-reduce-next
    vx/core/any<-reduce-next
Usage/Test Cases:
Source Code:
  • (func any<-list-start-reduce-next : any-1 [list : list-2 valstart : any-1 fn-reduce-next : any<-reduce-next] (native :cpp "vx_core::Type_any result = vx_core::vx_any_from_list_result_next(generic_any_1, list, valstart, fn_reduce_next); output = vx_core::vx_any_from_any(generic_any_1, result);" :js "output = valstart const fn = fn_reduce_next['vx_value'] if (fn) { let current = vx_core.e_any let first = true for (const next of list) { if (first) { first = false } else { output = fn(output, current, next) } current = next } }" :java "output = valstart; final List<Core.Type_any> listval = list.vx_list(); Core.Type_any current = Core.e_any; boolean first = true; for (final Core.Type_any next : listval) { if (first) { first = false; } else { output = fn_reduce_next.vx_any_from_reduce_next(generic_any_1, output, current, next); } current = next; }") :doc "Returns a val from a list reduce operation")
vx/core / any<-map
Description:
  • Returns value from a map or empty if not found
Function Name:
  • any<-map
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-1
    key
    vx/core/string
Usage/Test Cases:
  • (test "v2" (any<-map (stringmap :a "v1" :b "v2" :c "v3") :b))
Source Code:
  • (func any<-map : any-1 [valuemap : map-1 key : string] (native :cpp "vx_core::Type_any val = valuemap->vx_get_any(key); output = vx_core::vx_any_from_any(generic_any_1, val);" :js "if (key.startsWith(':')) { key = key.substring(1) } const mapval = valuemap['vx_value'] let val = mapval[key] if (val != undefined) { output = val }" :java "Core.vx_any_from_map(generic_any_1, valuemap, key);") :test (test "v2" (any<-map (stringmap :a "v1" :b "v2" :c "v3") :b)) :doc "Returns value from a map or empty if not found")
vx/core / any<-map-start-reduce
Description:
  • Returns a value by reducing each element of a map.
Function Name:
  • any<-map-start-reduce
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    map
    vx/core/map-1
    start
    vx/core/any-1
    fn-reduce
    vx/core/any<-any-key-value
Usage/Test Cases:
  • (test "xayb" (any<-map-start-reduce (stringmap :a "x" :b "y") "" (fn : string [current : string key : string value : any] (copy current value key))))
Source Code:
  • (func any<-map-start-reduce : any-1 [map : map-1 start : any-1 fn-reduce : any<-any-key-value :: any-1 :: any-1] (native :cpp :auto :java :auto :js :auto) :test (test "xayb" (any<-map-start-reduce (stringmap :a "x" :b "y") "" (fn : string [current : string key : string value : any] (copy current value key)))) :doc "Returns a value by reducing each element of a map.")
vx/core / any<-none
Description:
  • Function Type returning Generic any-1 with no parameters
Function Name:
  • any<-none
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func any<-none : any-1 [] :doc "Function Type returning Generic any-1 with no parameters")
vx/core / any<-none-async
Description:
  • Function Type returning Generic any-1 with no parameters
Function Name:
  • any<-none-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func any<-none-async : any-1 :async [] :doc "Function Type returning Generic any-1 with no parameters")
vx/core / any<-reduce
Description:
Function Name:
  • any<-reduce
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    result
    vx/core/any-1
    item
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-reduce : any-1 [result : any-1 item : any-2])
vx/core / any<-reduce-async
Description:
Function Name:
  • any<-reduce-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    result
    vx/core/any-1
    item
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-reduce-async : any-1 :async [result : any-1 item : any-2])
vx/core / any<-reduce-next
Description:
Function Name:
  • any<-reduce-next
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    result
    vx/core/any-1
    current
    vx/core/any-2
    next
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-reduce-next : any-1 [result : any-1 current : any-2 next : any-2])
vx/core / any<-reduce-next-async
Description:
Function Name:
  • any<-reduce-next-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    result
    vx/core/any-1
    current
    vx/core/any-2
    next
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func any<-reduce-next-async : any-1 :async [result : any-1 current : any-2 next : any-2])
vx/core / any<-struct
Description:
  • Returns value from a struct
Function Name:
  • any<-struct
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    vstruct
    vx/core/struct-2
    key
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func any<-struct : any-1 [vstruct : struct-2 key : string] (native :cpp "vx_core::Type_any val = vstruct->vx_get_any(key); output = vx_core::vx_any_from_any(generic_any_1, val);" :js "const subvalmap = vstruct['vx_value'] if (subvalmap != undefined) { if (key.startsWith(':')) { key = key.substring(1) } const val = subvalmap[key] if (val != undefined) { output = val } }" :java "Core.Type_any val = vstruct.vx_any(key); output = Core.f_any_from_any(generic_any_1, val);") :doc "Returns value from a struct")
vx/core / async
Description:
  • Returns an asynchonous version value. This exists mostly for type-casting.
Function Name:
  • async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func async : any-1 :async [value : any-1] (native :js "value" :java "output = Core.async_new_completed(value);") :doc "Returns an asynchonous version value. This exists mostly for type-casting.")
vx/core / boolean<-any
Description:
  • Function Type taking generic any-1 and returning boolean
Function Name:
  • boolean<-any
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func boolean<-any : boolean [value : any-1] :doc "Function Type taking generic any-1 and returning boolean")
vx/core / boolean<-func
Description:
  • Function Type returning boolean with any parameters
Function Name:
  • boolean<-func
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func boolean<-func : boolean [] :doc "Function Type returning boolean with any parameters")
vx/core / boolean<-none
Description:
  • Function Type returning boolean with no parameters
Function Name:
  • boolean<-none
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func boolean<-none : boolean [] :doc "Function Type returning boolean with no parameters")
vx/core / boolean-permission<-func
Description:
  • Returns true if the given func has permission.
Function Name:
  • boolean-permission<-func
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    func
    vx/core/func
Usage/Test Cases:
Source Code:
  • (func boolean-permission<-func : boolean [func : func] (contains (allowfuncs<-security (security<-context)) func) :context :doc "Returns true if the given func has permission.")
vx/core / boolean-write<-map-name-value
Description:
  • Returns true if it alters a mutable map false if it fails.
Function Name:
  • boolean-write<-map-name-value
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-1
    name
    vx/core/string
    value
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func boolean-write<-map-name-value : boolean [valuemap : map-1 name : string value : any-1] (native :js :auto) :sideeffects "Alters a mutable map. Warning: vxlisp is immutable by design and this function will produce unexpected results." :doc "Returns true if it alters a mutable map false if it fails.")
vx/core / case
Description:
Function Name:
  • case
Return Type:
  • vx/core/thenelse
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    fn-any
    vx/core/any<-func
Usage/Test Cases:
Source Code:
  • (func case : thenelse [values : list-1 fn-any : any<-func] (thenelse :code :casemany :values values :fn-any fn-any))
vx/core / case
Description:
Function Name:
  • case
Return Type:
  • vx/core/thenelse
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
    fn-any
    vx/core/any<-func
Usage/Test Cases:
Source Code:
  • (func case : thenelse [value : any-1 fn-any : any<-func] (thenelse :code :case :value value :fn-any fn-any))
vx/core / compare
Description:
  • Returns 0 if vals are equal, 1 if val1 > val2, -1 if val1 < val2
Function Name:
  • compare
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/any
    val2
    vx/core/any
Usage/Test Cases:
  • (test 1 (compare 3 2))
  • (test 1 (compare "z" "a"))
Source Code:
  • (func compare : int [val1 : any val2 : any] (native :cpp "long intresult = vx_core::vx_compare(val1, val2); output = vx_core::vx_new_int(intresult);" :js "if (val1 == val2) { output = 0 } else if (val1 < val2) { output = -1 } else { output = 1 }" :java "int intresult = 0; if ((val1 instanceof Core.Type_number) && (val2 instanceof Core.Type_number)) { Core.Type_number num1 = (Core.Type_number)val1; Core.Type_number num2 = (Core.Type_number)val2; float float1 = Core.t_float.vx_new(num1).vx_float(); float float2 = Core.t_float.vx_new(num2).vx_float(); if (float1 < float2) { intresult = -1; } else if (float1 > float2) { intresult = 1; } } else { String stringval1 = Core.f_string_from_any(val1).vx_string(); String stringval2 = Core.f_string_from_any(val2).vx_string(); int compare = stringval1.compareTo(stringval2); if (compare > 0) { intresult = 1; } else if (compare < 0) { intresult = -1; } } output = Core.vx_new_int(intresult);") :test (test 1 (compare 3 2)) (test 1 (compare "z" "a")) :doc "Returns 0 if vals are equal, 1 if val1 > val2, -1 if val1 < val2")
vx/core / contains
Description:
  • Returns true if the given list contains the given value.
Function Name:
  • contains
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    find
    vx/core/string
Usage/Test Cases:
  • (test-true (contains "abcde" "cd"))
  • (test-false (contains "abcde" "dc"))
Source Code:
  • (func contains : boolean [text : string find : string] (native :cpp "bool check = vx_boolean_from_string_find(text->vx_string(), find->vx_string()); output = vx_core::vx_new_boolean(check);" :js "vx_core.vx_boolean_from_string_find(text, find)" :java "boolean check = vx_boolean_from_string_find(text.vx_string(), find.vx_string()); output = Core.vx_new_boolean(check);") :test (test-true (contains "abcde" "cd")) (test-false (contains "abcde" "dc")) :doc "Returns true if the given list contains the given value.")
vx/core / contains
Description:
  • Returns true if the given list contains the given value.
Function Name:
  • contains
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
    Any list
    find
    vx/core/any
    Any value
Usage/Test Cases:
  • (test-true (contains (stringlist "1" "2" "3") "2"))
  • (test-true (contains (intlist 1 2 3) 2))
  • (test-false (contains (list 1 "2" 3) 2))
Source Code:
  • (func contains : boolean [values : list-2 :doc "Any list" find : any :doc "Any value"] (native :cpp "bool booleanresult = false; vx_core::vx_Type_listany listvalues = values->vx_list(); for (vx_core::Type_any item : listvalues) { vx_core::Type_boolean iseq = vx_core::f_eq(item, find); if (iseq->vx_boolean()) { booleanresult = true; break; } } output = vx_core::vx_new_boolean(booleanresult);" :js "values.includes(find)" :java "boolean booleanresult = false; List<Core.Type_any> listvalues = values.vx_list(); for (Core.Type_any item : listvalues) { Core.Type_boolean iseq = Core.f_eq(item, find); if (iseq.vx_boolean()) { booleanresult = true; break; } } output = Core.vx_new_boolean(booleanresult);") :test (test-true (contains (stringlist "1" "2" "3") "2")) (test-true (contains (intlist 1 2 3) 2)) (test-false (contains (list 1 "2" 3) 2)) :doc "Returns true if the given list contains the given value.")
vx/core / context-main
Description:
  • Returns the default context for app main execution. Arguments come from the command line.
Function Name:
  • context-main
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-main : context [args : anylist :...] (context) :doc "Returns the default context for app main execution. Arguments come from the command line.")
vx/core / copy
Description:
  • Returns a copy of a given value with the given values added or updated.
Function Name:
  • copy
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
    values
    vx/core/anylist
Usage/Test Cases:
  • (test (stringmap :a "1" :b "2") (copy (stringmap :a "1") :b "2"))
Source Code:
  • (func copy : any-1 [value : any values : anylist :...] (native :cpp "T* output = vx_core::vx_copy(generic_any_1, value, values->vx_list());" :js "vx_core.f_new(value, ...values)" :java "@SuppressWarnings(“uncheckedâ€) Core.Type_any[] arrayany = Core.arrayany_from_anylist(values); Object[] arrayobj = (Core.Type_any[])arrayany; T output = (T)(value.vx_copy(arrayobj));") :bigospace :n :bigotime :n :test (test (stringmap :a "1" :b "2") (copy (stringmap :a "1") :b "2")) :doc "Returns a copy of a given value with the given values added or updated.")
vx/core / else
Description:
Function Name:
  • else
Return Type:
  • vx/core/thenelse
Arguments:
  • Name
    Type
    Generic
    Description
    fn-any
    vx/core/any<-func
Usage/Test Cases:
Source Code:
  • (func else : thenelse [fn-any : any<-func] (thenelse :code :else :fn-any fn-any))
vx/core / empty
Description:
  • Returns the empty value for a given type. Can be called using (empty type) or simply (type)
Function Name:
  • empty
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any-1
Usage/Test Cases:
  • (test "" (empty string))
  • (test (list) (empty list))
  • (test (map) (empty map))
Source Code:
  • (func empty : any-1 [type : any-1] (native :cpp "T* output = vx_core::vx_any_from_any(type, type->vx_empty());" :js "vx_core.vx_empty(type)" :java "@SuppressWarnings(“uncheckedâ€) T output = (T)(type.vx_empty());") :test (test "" (empty string)) (test (list) (empty list)) (test (map) (empty map)) :doc "Returns the empty value for a given type. Can be called using (empty type) or simply (type)")
vx/core / extends<-any
Description:
Function Name:
  • extends<-any
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func extends<-any : string [val : any-1] (extends<-typedef (typedef<-any val)))
vx/core / extends<-typedef
Description:
  • Get the basetype of a given type
Function Name:
  • extends<-typedef
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func extends<-typedef : string [vtypedef : typedef] (:extends vtypedef) :doc "Get the basetype of a given type")
vx/core / first<-list
Description:
  • Returns first value
Function Name:
  • first<-list
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
Usage/Test Cases:
  • (test "b" (first<-list (stringlist "b" "c")))
Source Code:
  • (func first<-list : any-1 [values : list-1] (any<-list values 1) :doc "Returns first value" :test (test "b" (first<-list (stringlist "b" "c"))))
vx/core / first<-list-any<-any
Description:
  • Returns first value that is not nothing
Function Name:
  • first<-list-any<-any
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    fn-any<-any
    vx/core/any<-any
Usage/Test Cases:
  • (test "b" (first<-list-any<-any : string (list nothing "b" "c") resolve))
Source Code:
  • (func first<-list-any<-any : any-1 [values : list-1 fn-any<-any : any<-any] (native :cpp "std::vector<vx_core::Type_any> listvalue = values->vx_list(); for (vx_core::Type_any value : listvalue) { if (value != vx_core::c_nothing) { vx_core::Type_any any = fn_any_from_any->vx_any_from_any(value); output = vx_core::vx_any_from_any(generic_any_1, any); break; } }" :js "output = " nothing " const fn = fn_any_from_any['vx_value'] if (fn) { for (let index=0;index < values.length;index++) { output = fn(generic, values[index]) if (output != " nothing ") { break } } }" :java "List<Core.Type_any> listvalue = values.vx_list(); for (Core.Type_any value : listvalue) { if (value != Core.c_nothing) { output = fn_any_from_any.vx_any_from_any(generic_any_1, value); break; } }") :doc "Returns first value that is not nothing" :test (test "b" (first<-list-any<-any : string (list nothing "b" "c") resolve)))
vx/core / float<-string
Description:
  • Returns float from a given string.
Function Name:
  • float<-string
Return Type:
  • vx/core/float
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test (float 2.3) (float<-string "2.3"))
Source Code:
  • (func float<-string : float [text : string] (native :cpp "float num = vx_core::vx_float_from_string(text->vx_string()); output = vx_core::vx_new_float(num);" :js "vx_core.vx_float_from_string(text);" :java "float num = Core.vx_float_from_string(text.vx_string()); output = Core.vx_new_float(num);") :test (test (float 2.3) (float<-string "2.3")) :doc "Returns float from a given string.")
vx/core / fn
Description:
  • Shell for lambda function calls
Function Name:
  • fn
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    params
    vx/core/arglist
    fn-any
    vx/core/any<-func
Usage/Test Cases:
Source Code:
  • (func fn : any-1 [params : arglist fn-any : any<-func] :doc "Shell for lambda function calls")
vx/core / funcdef<-func
Description:
Function Name:
  • funcdef<-func
Return Type:
  • vx/core/funcdef
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/func
Usage/Test Cases:
Source Code:
  • (func funcdef<-func : funcdef [val : func] (native :cpp "val->vx_funcdef();" :java "val.vx_funcdef();"))
vx/core / funcname<-funcdef
Description:
  • Get the name of a given funcdef
Function Name:
  • funcname<-funcdef
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    funcdef
    vx/core/funcdef
Usage/Test Cases:
Source Code:
  • (func funcname<-funcdef : string [funcdef : funcdef] (string (:pkgname funcdef) "/" (:name funcdef)) :doc "Get the name of a given funcdef")
vx/core / if
Description:
  • Logical If function
Function Name:
  • if
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    clause
    vx/core/boolean
    then
    vx/core/any-1
Usage/Test Cases:
  • (test "a" (if (= 2 2) "a"))
  • (test "" (if : string (= 1 2) "a"))
Source Code:
  • (func if : any-1 [clause : boolean then : any-1] (native :cpp "if (clause->vx_boolean()) { output = then; }" :js "if (clause) { output = then }" :java "if (clause.vx_boolean()) { output = then; }") :test (test "a" (if (= 2 2) "a")) (test "" (if : string (= 1 2) "a")) :doc "Logical If function")
vx/core / if
Description:
  • Logical If function
Function Name:
  • if
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    clause
    vx/core/boolean
    thenval
    vx/core/any-1
    elseval
    vx/core/any-1
Usage/Test Cases:
  • (test "a" (if (= 2 2) "a" "b"))
  • (test "b" (if (= 1 2) "a" "b"))
Source Code:
  • (func if : any-1 [clause : boolean thenval : any-1 elseval : any-1] (native :cpp "if (clause->vx_boolean()) { output = thenval; } else { output = elseval; }" :js "if (clause) { output = thenval } else { output = elseval }" :java "if (clause.vx_boolean()) { output = thenval; } else { output = elseval; }") :test (test "a" (if (= 2 2) "a" "b")) (test "b" (if (= 1 2) "a" "b")) :doc "Logical If function")
vx/core / if
Description:
  • Logical If function
Function Name:
  • if
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    thenelselist
    vx/core/thenelselist
Usage/Test Cases:
  • (test-true (if (then (= 2 3) false) (then (!= 3 3) false) (else (! false))))
Source Code:
  • (func if : any-1 [thenelselist : thenelselist :...] (native :cpp "vx_core::Type_any any = vx_core::vx_if_thenelselist(generic_any_1, thenelselist); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "let fn_any = null for (const thenelseval of thenelselist) { const thenelse = thenelseval['vx_value'] const code = thenelse['code'] switch (code) { case ':then': const fn_cond = thenelse['fn-cond'] const fn = fn_cond['vx_value'] const cond = fn() if (cond == true) { fn_any = thenelse['fn-any'] } break case ':else': fn_any = thenelse['fn-any'] break } if (fn_any != null) { const fn = fn_any['vx_value'] output = fn() break } }" :java "Core.Func_any_from_func fn_any = Core.Class_list.vx_any_first_from_list_fn(Core.t_any_from_func, thenelselist, (any) -> { Core.Func_any_from_func fnany = null; if (any instanceof Core.Type_thenelse) { Core.Type_thenelse thenelse = (Core.Type_thenelse)any; Core.Type_string code = thenelse.code(); switch (code.vx_string()) { case “:thenâ€: Core.Func_boolean_from_func fn_cond = thenelse.fn_cond(); Core.Type_boolean cond = fn_cond.vx_boolean_from_func(); if (cond.vx_boolean() == true) { fnany = thenelse.fn_any(); } break; case “:elseâ€: fnany = thenelse.fn_any(); break; } } return fnany; }); if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :doc "Logical If function" :test (test-true (if (then (= 2 3) false) (then (!= 3 3) false) (else (! false)))))
vx/core / int<-func
Description:
  • Function Type returning int with any parameters
Function Name:
  • int<-func
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func int<-func : int [] :doc "Function Type returning int with any parameters")
vx/core / int<-string
Description:
  • Function Type converting string to int
Function Name:
  • int<-string
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/string
Usage/Test Cases:
  • (test 4 (int<-string "4"))
  • (test 5 (int<-string "5.4"))
  • (test 5 (int<-string "5.9"))
  • (test notanumber (int<-string "notanumber"))
  • (test infinity (int<-string "infinity"))
  • (test neginfinity (int<-string "neginfinity"))
Source Code:
  • (func int<-string : int [val : string] (switch : int val (case "notanumber" notanumber) (case "infinity" infinity) (case "neginfinity" neginfinity) (else (native :cpp "// :capture val vx_core::Type_int intresult = vx_core::e_int; try { std::string sval = val->vx_string(); long ival = std::stoll(sval); intresult = vx_core::vx_new_int(ival); } catch (std::exception ex) { intresult = vx_core::c_notanumber; } return intresult;" :js "parseInt(val)" :java "int intresult = 0; String strval = val.vx_string(); try { float floatresult = Float.parseFloat(strval); intresult = (int)floatresult; return Core.vx_new_int(intresult); } catch (Exception ex) { return Core.c_notanumber; }" ) ) ) :test (test 4 (int<-string "4")) (test 5 (int<-string "5.4")) (test 5 (int<-string "5.9")) (test notanumber (int<-string "notanumber")) (test infinity (int<-string "infinity")) (test neginfinity (int<-string "neginfinity")) :doc "Function Type converting string to int")
vx/core / is-empty
Description:
  • Returns true if text is empty.
Function Name:
  • is-empty
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func is-empty : boolean [text : string] (native :cpp "if (text->vx_p_iref == -2) { output = vx_core::c_true; }" :js "if (text.length == 0) { output = vx_core.c_true }" :java "if (text.vx_string().length() == 0) { output = Core.c_true; }") :doc "Returns true if text is empty.")
vx/core / is-empty
Description:
  • Returns true if an value is empty
Function Name:
  • is-empty
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
  • (test-true (is-empty ""))
  • (test-true (is-empty (list)))
  • (test-true (is-empty (map)))
Source Code:
  • (func is-empty : boolean [value : any] (native :cpp "if (value == value->vx_empty()) { output = vx_core::c_true; }" :js "const type = vx_core.f_type_from_any(value) if (value == vx_core.f_empty(type)) { output = vx_core.c_true } else { output = vx_core.c_false }" :java "if (value == value.vx_empty()) { output = Core.c_true; } else { output = Core.c_false; }") :test (test-true (is-empty "")) (test-true (is-empty (list))) (test-true (is-empty (map))) :doc "Returns true if an value is empty")
vx/core / is-endswith
Description:
  • Returns true if text ends with find.
Function Name:
  • is-endswith
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    find
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func is-endswith : boolean [text : string find : string] (native :cpp "std::string stext = text->vx_string(); std::string sfind = find->vx_string(); if (vx_core::vx_boolean_from_string_ends(stext, sfind)) { output = vx_core::c_true; }" :js "if (text.endsWith(find)) { output = vx_core.c_true }" :java "String stext = text.vx_string(); String sfind = find.vx_string(); if (stext.endsWith(sfind)) { output = Core.c_true; }") :doc "Returns true if text ends with find.")
vx/core / is-func
Description:
  • Returns true if val is a function.
Function Name:
  • is-func
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func is-func : boolean [val : any] (native :cpp "vx_core::Type_string extend = " (extends<-any val) "; std::string sextend = extend->vx_string(); vx_core::vx_release(extend); if (sextend == “:funcâ€) { output = vx_core::c_true; }" :js "const extend = " (extends<-any val) " if (extend == ':func') { output = vx_core.c_true }" :java "if (val instanceof Core.Type_func) { output = Core.c_true; }") :doc "Returns true if val is a function.")
vx/core / is-int
Description:
  • Returns true if the value is an integer.
Function Name:
  • is-int
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
  • (test-true (is-int 2))
  • (test-true (is-int "2"))
  • (test-true (is-int infinity))
  • (test-true (is-int "infinity"))
Source Code:
  • (func is-int : boolean [value : any] (native :cpp "bool result = vx_core::vx_is_int(value); output = vx_core::vx_new_boolean(result);" :js "vx_core.vx_is_int(value)" :java "boolean result = Core.vx_is_int(value); output = Core.vx_new_boolean(result);") :test (test-true (is-int 2)) (test-true (is-int "2")) (test-true (is-int infinity)) (test-true (is-int "infinity")) :doc "Returns true if the value is an integer.")
vx/core / is-float
Description:
  • Returns true if the value is a float.
Function Name:
  • is-float
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func is-float : boolean [value : any] (native :cpp "bool result = vx_core::vx_is_float(value); output = vx_core::vx_new_boolean(result);" :js "vx_core.vx_is_float(value)" :java "boolean result = Core.vx_is_float(value); output = Core.vx_new_boolean(result);") :doc "Returns true if the value is a float.")
vx/core / is-number
Description:
  • Return true if val is a number
Function Name:
  • is-number
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
  • (test-true (is-number 5))
  • (test-true (is-number 5.5))
  • (test-false (is-number "a"))
Source Code:
  • (func is-number : boolean [value : any] (switch : boolean (typename<-any value) (case (list "vx/core/decimal" "vx/core/float" "vx/core/int" "vx/core/number") true) (else false)) :test (test-true (is-number 5)) (test-true (is-number 5.5)) (test-false (is-number "a")) :doc "Return true if val is a number")
vx/core / is-pass<-permission
Description:
  • Returns true if permission passes.
Function Name:
  • is-pass<-permission
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    permission
    vx/core/permission
Usage/Test Cases:
Source Code:
  • (func is-pass<-permission : boolean [permission : permission] (let : boolean [id : string := (:id permission) lookup : permission := (permission<-id-context id)] (= lookup permission)) :context :doc "Returns true if permission passes.")
vx/core / last<-list
Description:
  • Returns last value
Function Name:
  • last<-list
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
Usage/Test Cases:
  • (test "c" (last<-list (stringlist "b" "c")))
Source Code:
  • (func last<-list : any-1 [values : list-1] (let [len : int := (length<-list values)] (any<-list values len)) :test (test "c" (last<-list (stringlist "b" "c"))) :doc "Returns last value")
vx/core / length<-list
Description:
  • Returns the currently used size/length of a list
Function Name:
  • length<-list
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
Usage/Test Cases:
  • (test 3 (length<-list (stringlist "a" "b" "c")))
Source Code:
  • (func length<-list : int [values : list-1] (native :cpp "long len = vx_core::vx_int_from_sizet(values->vx_list().size()); if (len > 0) { output = vx_core::vx_new_int(len); }" :js "values.length" :java "int intresult = values.vx_list().size(); output = Core.vx_new_int(intresult);") :test (test 3 (length<-list (stringlist "a" "b" "c"))) :doc "Returns the currently used size/length of a list")
vx/core / let
Description:
Function Name:
  • let
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/arglist
    fn-any
    vx/core/any<-func
Usage/Test Cases:
  • (test 7 (let [v1 : int := 2 v2 : int := (+ v1 3)] (+ v1 v2)))
Source Code:
  • (func let : any-1 [args : arglist fn-any : any<-func :: any-1] (native :cpp "vx_core::Type_any any = fn_any->vx_any_from_func(); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "const fn = fn_any['vx_value'] if (fn) { output = fn() }" :java "fn_any.vx_any_from_func(generic_any_1);") :test (test 7 (let [v1 : int := 2 v2 : int := (+ v1 3)] (+ v1 v2))))
vx/core / let-async
Description:
  • Same as normal let but returns async values.
Function Name:
  • let-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/arglist
    fn-any-async
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func let-async : any-1 :async [args : arglist fn-any-async : any<-func-async] (native :cpp "fn_any_async->vx_any_from_func_async(generic_any_1);" :js "const fn = fn_any_async['vx_value'] if (fn) { output = await fn() }" :java "fn_any_async.vx_any_from_func_async(generic_any_1);") :doc "Same as normal let but returns async values.")
vx/core / list<-list
Description:
  • Return a list with allowed values from another list
Function Name:
  • list<-list
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
Usage/Test Cases:
  • (test (stringlist "10" "20") (list<-list : stringlist (anylist "10" "20")))
Source Code:
  • (func list<-list : list-1 [values : list-2] (list<-list : list-1 values (fn : any [value : any] value)) :test (test (stringlist "10" "20") (list<-list : stringlist (anylist "10" "20"))) :doc "Return a list with allowed values from another list")
vx/core / list<-list
Description:
  • Returns a list of processed items from another list
Function Name:
  • list<-list
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
    fn-any<-any
    vx/core/any<-any
Usage/Test Cases:
Source Code:
  • (func list<-list : list-1 [values : list-2 fn-any<-any : any<-any] (native :cpp "vx_core::vx_Type_listany list_value = values->vx_list(); vx_core::vx_Type_listany list_result = vx_core::vx_listany_from_listany_fn(list_value, [fn_any_from_any](vx_core::Type_any val) { return fn_any_from_any->vx_any_from_any(val); }); vx_core::Type_any anylist = generic_list_1->vx_new(list_result); output = vx_core::vx_any_from_any(generic_list_1, anylist);" :js "const fn = fn_any_from_any['vx_value'] if (fn) { output = values.map(fn) output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<Core.Type_any> list_result = Core.arraylist_from_arraylist_fn(list_value, (val) -> { return fn_any_from_any.vx_any_from_any(generic_list_1, val); }); output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result));") :doc "Returns a list of processed items from another list")
vx/core / list<-list-async
Description:
  • Returns an asynchronous list of the processed asynchronous items from another list
Function Name:
  • list<-list-async
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
    fn-any<-any-async
    vx/core/any<-any-async
Usage/Test Cases:
Source Code:
  • (func list<-list-async : list-1 :async [values : list-2 fn-any<-any-async : any<-any-async] (native :cpp "vx_core::vx_Type_listany list_value = values->vx_list(); vx_core::vx_Type_listasync list_async_result = vx_core::vx_listasync_from_listany_fn(list_value, [fn_any_from_any_async](vx_core::Type_any val) { return fn_any_from_any_async->vx_any_from_any_async(vx_core::vx_type(val), val); }); output = vx_core::vx_async_new_from_listasync(generic_list_1, list_async_result);" :js "const fn = fn_any_from_any_async['vx_value'] if (fn) { const listfuture = values.map(fn) const future = Promise.all(listfuture) output = await future output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<CompletableFuture<Core.Type_any>> list_async_result = Core.arraylist_from_arraylist_fn(list_value, (val) -> { return fn_any_from_any_async.vx_any_from_any_async(generic_list_1, val); }); CompletableFuture<List<Core.Type_any>> async_list_result = Core.async_arraylist_from_arraylist_async(list_async_result); output = Core.async_from_async_fn(async_list_result, (list_result) -> { X work = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result)); return work; });") :doc "Returns an asynchronous list of the processed asynchronous items from another list")
vx/core / list<-list-intany
Description:
  • Returns a list of processed items from another list
Function Name:
  • list<-list-intany
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
    fn-any<-int-any
    vx/core/any<-int-any
Usage/Test Cases:
  • (test (stringlist "a1" "b2") (list<-list-intany : stringlist (stringlist "a" "b") (fn : stringlist [index : int value : string] (string value index))))
Source Code:
  • (func list<-list-intany : list-1 [values : list-2 fn-any<-int-any : any<-int-any] (native :cpp :auto :java :auto :js :auto) :test (test (stringlist "a1" "b2") (list<-list-intany : stringlist (stringlist "a" "b") (fn : stringlist [index : int value : string] (string value index)))) :doc "Returns a list of processed items from another list")
vx/core / list<-map
Description:
  • Returns a list of allowed values from a map.
Function Name:
  • list<-map
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-2
Usage/Test Cases:
  • (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap :x "a1" :y "b2")))
Source Code:
  • (func list<-map : list-1 [valuemap : map-2] (list<-map : list-1 valuemap (fn : any [key : string value : any] value)) :test (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap :x "a1" :y "b2"))) :doc "Returns a list of allowed values from a map.")
vx/core / list<-map
Description:
  • Returns a list from a map by applying a function to each key value.
Function Name:
  • list<-map
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-2
    fn-any<-key-value
    vx/core/any<-key-value
Usage/Test Cases:
  • (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap "a" "1" "b" "2") (fn : string [key : string val : string] (string key val))))
Source Code:
  • (func list<-map : list-1 [valuemap : map-2 fn-any<-key-value : any<-key-value] (native :cpp :auto :js "vx_core.vx_list_from_map_fn(generic_list_1, valuemap, fn_any_from_key_value)" :java "Map<String, Core.Type_any> map_value = valuemap.vx_map(); List<Core.Type_any> listresult = Core.arraylist_from_linkedhashmap_fn(map_value, (key, val) -> { Core.Type_string valkey = Core.vx_new_string(key); return fn_any_from_key_value.vx_any_from_key_value(Core.t_any, valkey, val); }); output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(listresult));") :test (test (stringlist "a1" "b2") (list<-map : stringlist (stringmap "a" "1" "b" "2") (fn : string [key : string val : string] (string key val)))) :doc "Returns a list from a map by applying a function to each key value.")
vx/core / list<-map-async
Description:
Function Name:
  • list<-map-async
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-2
    fn-any<-key-value-async
    vx/core/any<-key-value-async
Usage/Test Cases:
Source Code:
  • (func list<-map-async : list-1 :async [valuemap : map-2 fn-any<-key-value-async : any<-key-value-async])
vx/core / list<-type
Description:
  • Create an empty list from a type. Used internally for default lists
Function Name:
  • list<-type
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func list<-type : any [type : any] (native :js "output = [] output['vx_type'] = type") :doc "Create an empty list from a type. Used internally for default lists")
vx/core / list-join<-list
Description:
  • Returns a list by joining the valid values in each value list
Function Name:
  • list-join<-list
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
Usage/Test Cases:
  • (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d"))))
Source Code:
  • (func list-join<-list : list-1 [values : list-2] (list-join<-list : list-1 values (fn : any [value : any] value)) :test (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")))) :doc "Returns a list by joining the valid values in each value list")
vx/core / list-join<-list
Description:
  • Returns a flattened list of processed items from another list
Function Name:
  • list-join<-list
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-2
    fn-any<-any
    vx/core/any<-any
Usage/Test Cases:
  • (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")) (fn : stringlist [values : stringlist] values)))
Source Code:
  • (func list-join<-list : list-1 [values : list-2 fn-any<-any : any<-any] (native :cpp "vx_core::Type_any list = vx_core::vx_list_join_from_list_fn(generic_list_1, values, fn_any_from_any); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "const fn = fn_any_from_any['vx_value'] if (fn) { const listoflist = values.map(fn) output = listoflist.flat() output['vx_type'] = generic_list_1 }" :java "List<Core.Type_any> list_value = values.vx_list(); List<Core.Type_any> list_result = new ArrayList<>(); for (Core.Type_any val : list_value) { Core.Type_any listoflist = fn_any_from_any.vx_any_from_any(generic_list_1, val); if (listoflist instanceof Core.Type_list) { Core.Type_list vallist = (Core.Type_list)listoflist; List<Core.Type_any> listval = vallist.vx_list(); list_result.addAll(listval); } } output = Core.f_any_from_any(generic_list_1, generic_list_1.vx_new(list_result));") :test (test (stringlist "a" "b" "c" "d") (list-join<-list : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")) (fn : stringlist [values : stringlist] values))) :doc "Returns a flattened list of processed items from another list")
vx/core / log
Description:
  • Writes a value to the console.
Function Name:
  • log
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func log : any [value : any] (native :cpp "vx_core::vx_log(value); output = value;" :js "const text = vx_core.f_string_from_any(value) console.log(text) output = value" :java "Core.Type_string stringtext = Core.f_string_from_any(value); String text = stringtext.vx_string(); System.out.println(text); output = value;") :doc "Writes a value to the console.")
vx/core / log
Description:
  • Writes a string and a value to the console.
Function Name:
  • log
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    value
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func log : any-1 [text : string value : any-1] (native :cpp "vx_core::vx_log(text); vx_core::vx_log(value); output = value;" :js "console.log(text) const svalue = vx_core.f_string_from_any(value) console.log(svalue) output = value" :java "Core.vx_log(text); Core.vx_log(value); output = value;") :doc "Writes a string and a value to the console.")
vx/core / main
Description:
  • The default function for app main execution. Arguments come from the command line.
Function Name:
  • main
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func main : string [args : anylist :...] (string args) :doc "The default function for app main execution. Arguments come from the command line.")
vx/core / map<-list
Description:
  • Returns a map from a list by applying a function to generate a key for each value.
Function Name:
  • map<-list
Return Type:
  • vx/core/map-1
Arguments:
  • Name
    Type
    Generic
    Description
    vallist
    vx/core/list-2
    fn-any<-any
    vx/core/any<-any
Usage/Test Cases:
  • (test (stringmap "keya" "a" "keyb" "b") (map<-list : stringmap (stringlist "a" "b") (fn : string [val : string] (string "key" val))))
Source Code:
  • (func map<-list : map-1 [vallist : list-2 fn-any<-any : any<-any :: string] (native :cpp "vx_core::vx_Type_listany listany = vallist->vx_list(); vx_core::vx_Type_mapany mapany = vx_core::vx_map_from_list(listany, fn_any_from_any); output = vx_core::vx_new_map(generic_map_1, mapany);" :js "const valmap = {} vallist.map(value => { const fn = fn_any_from_any['vx_value'] if (fn) { const key = fn(value) valmap[key] = value } }) output = { vx_type: generic_map_1, vx_value: valmap }" :java "List<Core.Type_any> listval = vallist.vx_list(); Map<String, Core.Type_any> mapresult = Core.vx_map_from_list_fn(listval, (val) -> { return fn_any_from_any.vx_any_from_any(Core.t_string, val); }); output = Core.f_any_from_any(generic_map_1, output.vx_new_from_map(mapresult));") :test (test (stringmap "keya" "a" "keyb" "b") (map<-list : stringmap (stringlist "a" "b") (fn : string [val : string] (string "key" val)))) :doc "Returns a map from a list by applying a function to generate a key for each value.")
vx/core / map<-map
Description:
  • Return a map with allowed values from another map
Function Name:
  • map<-map
Return Type:
  • vx/core/map-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-2
Usage/Test Cases:
  • (test (stringmap :a "1") (map<-map : stringmap (anymap :a "1")))
Source Code:
  • (func map<-map : map-1 [valuemap : map-2] (map<-map : map-1 valuemap (fn : any [key : string value : any] value)) :test (test (stringmap :a "1") (map<-map : stringmap (anymap :a "1"))) :doc "Return a map with allowed values from another map")
vx/core / map<-map
Description:
  • Returns a map from a map by applying a function to each key value.
Function Name:
  • map<-map
Return Type:
  • vx/core/map-1
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/core/map-2
    fn-any<-key-value
    vx/core/any<-key-value
Usage/Test Cases:
  • (test (stringmap :a "a1" :b "b2") (map<-map : stringmap (stringmap :a "1" :b "2") (fn : string [key : string val : string] (string key val))))
Source Code:
  • (func map<-map : map-1 [valuemap : map-2 fn-any<-key-value : any<-key-value] (native :cpp "vx_core::Type_any map = vx_core::vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value); output = vx_core::vx_any_from_any(generic_map_1, map);" :js "vx_core.vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value)" :java "Core.vx_map_from_map_fn(generic_map_1, valuemap, fn_any_from_key_value);") :test (test (stringmap :a "a1" :b "b2") (map<-map : stringmap (stringmap :a "1" :b "2") (fn : string [key : string val : string] (string key val)))) :doc "Returns a map from a map by applying a function to each key value.")
vx/core / mempool-addref
Description:
  • Add Value Reference
Function Name:
  • mempool-addref
Return Type:
  • vx/core/none
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func mempool-addref : none [values : anylist :...] (native :js "for (const value of values) { const value = values[i] if (value.refs) { value.refs += 1 } }") :doc "Add Value Reference")
vx/core / mempool-reserve
Description:
  • Returns a recycled Value or creates a new one.
Function Name:
  • mempool-reserve
Return Type:
  • vx/core/value
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func mempool-reserve : value [] (native :js "mempool = " mempool-active " output = mempool.valuepool if (output == null) { output = { refs: 0 } } else { const next = output.next if (next == null) { mempool.valuepool = null } else { mempool.valuepool = next output.next = null } }") :doc "Returns a recycled Value or creates a new one.")
vx/core / mempool-release
Description:
  • Recycles a Value and adds it to the valuepool.
Function Name:
  • mempool-release
Return Type:
  • vx/core/none
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/value
Usage/Test Cases:
Source Code:
  • (func mempool-release : none [value : value] (native :js "const mempool = " mempool-active " value.length = 0 for (const key in value) { delete value[key] } next = mempool.valuepool value.next = next mempool.valuepool = value") :doc "Recycles a Value and adds it to the valuepool.")
vx/core / mempool-removeref
Description:
  • Remove Value Reference
Function Name:
  • mempool-removeref
Return Type:
  • vx/core/none
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func mempool-removeref : none [values : anylist :...] (native :js "for (const value of values) { const value = values[i] if (value.refs) { value.refs -= 1 if (value.refs == 0) { vx_core.f_mempool_removerefchildren(value) vx_core.f_mempool_recyclevalue(value) } } }") :doc "Remove Value Reference")
vx/core / mempool-removerefchildren
Description:
  • Remove Value Child References
Function Name:
  • mempool-removerefchildren
Return Type:
  • vx/core/none
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func mempool-removerefchildren : none [values : anylist :...] (native :js "for (const value of values) { const extend = " (extends<-any value) " switch (extend) { case ':list': vx_core.f_mempool_removeref(...value['vx_value']) break case ':map': case ':struct': vx_core.f_mempool_removeref(...Object.entities(value['vx_value'])) break } }") :doc "Remove Value Child References")
vx/core / msg<-error
Description:
  • Returns a msg from error string
Function Name:
  • msg<-error
Return Type:
  • vx/core/msg
Arguments:
  • Name
    Type
    Generic
    Description
    error
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func msg<-error : msg [error : string] (msg :severity msg-error :text error) :doc "Returns a msg from error string")
vx/core / msg<-error
Description:
  • Returns a msg from error code and detail
Function Name:
  • msg<-error
Return Type:
  • vx/core/msg
Arguments:
  • Name
    Type
    Generic
    Description
    code
    vx/core/string
    detail
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func msg<-error : msg [code : string detail : any] (msg :code code :detail detail :severity msg-error) :doc "Returns a msg from error code and detail")
vx/core / msg<-error
Description:
  • Returns a msg from error path code and detail
Function Name:
  • msg<-error
Return Type:
  • vx/core/msg
Arguments:
  • Name
    Type
    Generic
    Description
    path
    vx/core/string
    code
    vx/core/string
    detail
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func msg<-error : msg [path : string code : string detail : any] (msg :code code :path path :severity msg-error :detail detail) :doc "Returns a msg from error path code and detail")
vx/core / msg<-warning
Description:
  • Returns a msg from a warning string
Function Name:
  • msg<-warning
Return Type:
  • vx/core/msg
Arguments:
  • Name
    Type
    Generic
    Description
    warning
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func msg<-warning : msg [warning : string] (msg :severity msg-warning :text warning) :doc "Returns a msg from a warning string")
vx/core / msgblock<-msgblock-msg
Description:
  • Return a new Msgblock with the added msg
Function Name:
  • msgblock<-msgblock-msg
Return Type:
  • vx/core/msgblock
Arguments:
  • Name
    Type
    Generic
    Description
    origblock
    vx/core/msgblock
    addmsg
    vx/core/msg
Usage/Test Cases:
Source Code:
  • (func msgblock<-msgblock-msg : msgblock [origblock : msgblock addmsg : msg] (copy origblock addmsg) :doc "Return a new Msgblock with the added msg")
vx/core / msgblock<-msgblock-msgblock
Description:
  • Return a new Msgblock with the added block
Function Name:
  • msgblock<-msgblock-msgblock
Return Type:
  • vx/core/msgblock
Arguments:
  • Name
    Type
    Generic
    Description
    origblock
    vx/core/msgblock
    addblock
    vx/core/msgblock
Usage/Test Cases:
Source Code:
  • (func msgblock<-msgblock-msgblock : msgblock [origblock : msgblock addblock : msgblock] (msgblock origblock addblock) :doc "Return a new Msgblock with the added block")
vx/core / name<-typedef
Description:
  • Returns the name from a typedef.
Function Name:
  • name<-typedef
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func name<-typedef : string [vtypedef : typedef] (:name vtypedef) :doc "Returns the name from a typedef.")
vx/core / native
Description:
  • Native Function Call
Function Name:
  • native
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    clauses
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func native : any-1 [clauses : anylist :...] :doc "Native Function Call")
vx/core / native<-any
Description:
  • Returns native value of value object
Function Name:
  • native<-any
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
Usage/Test Cases:
Source Code:
  • (func native<-any : any [value : any-1] (native :js "output = value switch (typeof value) { case 'boolean': case 'number': case 'string': break default: const extend = " (extends<-any value) " switch (extend) { case ':list': output = [...value] break case ':func': case ':map': case ':struct': output = value['vx_value'] break } break }") :doc "Returns native value of value object")
vx/core / new
Description:
  • Create a new Value of Type A
Function Name:
  • new
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any-1
    values
    vx/core/anylist
Usage/Test Cases:
  • (test true (new boolean true))
  • (test 4 (new int 4))
  • (test 5.4 (new float 5.4))
  • (test "a" (new string "a"))
  • (test (stringlist "a" "b" "c") (new stringlist "a" "b" "c"))
  • (test (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2"))
Source Code:
  • (func new : any-1 [type : any-1 values : anylist :...] (native :cpp "T* output = vx_core::vx_new(type, values->vx_list());" :js "vx_core.vx_new(type, values)" :java "Core.Type_any[] arrayany = Core.arrayany_from_anylist(values); Object[] arrayobj = (Core.Type_any[])arrayany; T output = (T)(type.vx_new(arrayobj));") :doc "Create a new Value of Type A" :test (test true (new boolean true)) (test 4 (new int 4)) (test 5.4 (new float 5.4)) (test "a" (new string "a")) (test (stringlist "a" "b" "c") (new stringlist "a" "b" "c")) (test (stringmap :a "1" :b "2") (new stringmap :a "1" :b "2")))
vx/core / number<-func
Description:
  • Function Type returning number with any parameters
Function Name:
  • number<-func
Return Type:
  • vx/core/number
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func number<-func : number [] :doc "Function Type returning number with any parameters")
vx/core / or
Description:
  • Returns true if any value is true
Function Name:
  • or
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val1
    vx/core/boolean
    val2
    vx/core/boolean
Usage/Test Cases:
  • (test-true (or true true))
  • (test-true (or true false))
  • (test-false (or false false))
Source Code:
  • (func or : boolean [val1 : boolean val2 : boolean] (native :cpp "if (val1->vx_boolean() || val2->vx_boolean()) { output = vx_core::c_true; } else { output = vx_core::c_false; }" :js "if (val1 || val2) { output = true } else { output = false }" :java "if (val1.vx_boolean() || val2.vx_boolean()) { output = Core.c_true; } else { output = Core.c_false; }") :doc "Returns true if any value is true" :test (test-true (or true true)) (test-true (or true false)) (test-false (or false false)))
vx/core / or
Description:
  • Returns true if any value is true
Function Name:
  • or
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/booleanlist
Usage/Test Cases:
  • (test-true (or false true false))
  • (test-false (or false false false))
Source Code:
  • (func or : boolean [values : booleanlist :...] (any<-list-start-reduce-next : boolean values false (fn : boolean [reduce : boolean current : boolean next : boolean] (or reduce (or current next)))) :doc "Returns true if any value is true" :test (test-true (or false true false)) (test-false (or false false false)))
vx/core / package-global<-name
Description:
  • Returns a package from global with the given name.
Function Name:
  • package-global<-name
Return Type:
  • vx/core/package
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func package-global<-name : package [name : string] (any<-map (:packagemap global) name) :doc "Returns a package from global with the given name.")
vx/core / packagename<-typedef
Description:
  • Returns the package name from a typedef.
Function Name:
  • packagename<-typedef
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func packagename<-typedef : string [vtypedef : typedef] (:pkgname vtypedef) :doc "Returns the package name from a typedef.")
vx/core / path<-context-path
Description:
  • Returns a path from a context
Function Name:
  • path<-context-path
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    path
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func path<-context-path : string [path : string] (path<-setting-path (setting<-context) path) :context :doc "Returns a path from a context")
vx/core / path<-setting-path
Description:
  • Returns a path from a setting
Function Name:
  • path<-setting-path
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    session
    vx/core/setting
    path
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func path<-setting-path : string [session : setting path : string] :doc "Returns a path from a setting")
vx/core / permission<-id-context
Description:
  • Return a permission from context by id
Function Name:
  • permission<-id-context
Return Type:
  • vx/core/permission
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func permission<-id-context : permission [id : string] (let [user : user := (user<-context) security : security := (:security user) permissionmap : permissionmap := (:permissionmap security)] (:id permissionmap)) :context :doc "Return a permission from context by id")
vx/core / properties<-typedef
Description:
  • Return property map from typedef
Function Name:
  • properties<-typedef
Return Type:
  • vx/core/argmap
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func properties<-typedef : argmap [vtypedef : typedef] (:properties vtypedef) :doc "Return property map from typedef")
vx/core / proplast<-typedef
Description:
  • Return last property from typedef
Function Name:
  • proplast<-typedef
Return Type:
  • vx/core/arg
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func proplast<-typedef : arg [vtypedef : typedef] (:proplast vtypedef) :doc "Return last property from typedef")
vx/core / resolve
Description:
Function Name:
  • resolve
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
Usage/Test Cases:
  • (test "a" (resolve "a"))
Source Code:
  • (func resolve : any-1 [value : any-1] value :test (test "a" (resolve "a")))
vx/core / resolve
Description:
Function Name:
  • resolve
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    fn-any
    vx/core/any<-func
Usage/Test Cases:
  • (test 4 (resolve (fn : int [] (+ 1 3))))
Source Code:
  • (func resolve : any-1 [fn-any : any<-func] (native :cpp "if (fn_any) { vx_core::Type_any any = fn_any->vx_any_from_func(); output = vx_core::vx_any_from_any(generic_any_1, any); }" :js "const typedef = " (typedef<-any fn-any) " const extend = vx_core.f_extends_from_typedef(typedef) switch (extend) { case ':func': const fn = fn_any['vx_value'] if (fn) { output = fn() } break default: output = fn_any break }" :java "if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :test (test 4 (resolve (fn : int [] (+ 1 3)))))
vx/core / resolve-async
Description:
Function Name:
  • resolve-async
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    fn-any
    vx/core/any<-func-async
Usage/Test Cases:
  • (test 4 (resolve : int (fn : int [] (+ 1 3))))
Source Code:
  • (func resolve-async : any-1 :async [fn-any : any<-func-async] (native :cpp "if (fn_any) { output = fn_any->vx_any_from_func_async(generic_any_1); }" :js "const typedef = " (typedef<-any fn-any) " const extend = vx_core.f_extends_from_typedef(typedef) switch (extend) { case ':func': const fn = fn_any['vx_value'] if (fn) { output = await fn() } break default: output = fn_any break }" :java "if (fn_any != null) { output = fn_any.vx_any_from_func_async(generic_any_1); }") :test (test 4 (resolve : int (fn : int [] (+ 1 3)))))
vx/core / resolve-first
Description:
  • Returns the first value that is not nothing
Function Name:
  • resolve-first
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    clauses
    vx/core/list-1
Usage/Test Cases:
Source Code:
  • (func resolve-first : any-1 [clauses : list-1 :...] (first<-list-any<-any clauses resolve) :doc "Returns the first value that is not nothing")
vx/core / resolve-list
Description:
Function Name:
  • resolve-list
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    clauses
    vx/core/list-1
Usage/Test Cases:
Source Code:
  • (func resolve-list : list-1 [clauses : list-1] (list<-list clauses resolve))
vx/core / security<-context
Description:
  • Return security from the given context.
Function Name:
  • security<-context
Return Type:
  • vx/core/security
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func security<-context : security (security<-user (user<-context)) :context :doc "Return security from the given context.")
vx/core / security<-user
Description:
  • Return security from the given user.
Function Name:
  • security<-user
Return Type:
  • vx/core/security
Arguments:
  • Name
    Type
    Generic
    Description
    user
    vx/core/user
Usage/Test Cases:
Source Code:
  • (func security<-user : security [user : user] (:security user) :doc "Return security from the given user.")
vx/core / session<-context
Description:
  • Returns session from a context
Function Name:
  • session<-context
Return Type:
  • vx/core/session
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func session<-context : session (:session context) :context :doc "Returns session from a context")
vx/core / setting<-context
Description:
  • Returns setting from a context
Function Name:
  • setting<-context
Return Type:
  • vx/core/setting
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func setting<-context : setting (:setting context) :context :doc "Returns setting from a context")
vx/core / string-repeat
Description:
Function Name:
  • string-repeat
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    repeat
    vx/core/int
Usage/Test Cases:
  • (test "abab" (string-repeat "ab" 2))
Source Code:
  • (func string-repeat : string [text : string repeat : int] (native :cpp "std::string stringtext = vx_core::vx_string_from_string_repeat(text->vx_string(), repeat->vx_int()); output = vx_core::vx_new_string(stringtext);" :js "text.repeat(repeat)" :java "String stringtext = text.vx_string(); int intrepeat = repeat.vx_int(); String stringresult = stringtext.repeat(intrepeat); output = Core.vx_new_string(stringresult);") :test (test "abab" (string-repeat "ab" 2)))
vx/core / string<-any
Description:
  • Return a string representation of a value
Function Name:
  • string<-any
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
  • (test "true" (string<-any true))
  • (test "4" (string<-any 4))
  • (test "5.4" (string<-any 5.4))
  • (test "\"a\"" (string<-any "a"))
  • (test "(stringlist \"a\" \"b\" \"c\")" (string<-any (stringlist "a" "b" "c")))
  • (test "(stringmap :a \"1\" :b \"2\")" (string<-any (stringmap :a "1" :b "2")))
Source Code:
  • (func string<-any : string [value : any] (string<-any-indent value 0 true) :test (test "true" (string<-any true)) (test "4" (string<-any 4)) (test "5.4" (string<-any 5.4)) (test "\"a\"" (string<-any "a")) (test "(stringlist \"a\" \"b\" \"c\")" (string<-any (stringlist "a" "b" "c"))) (test "(stringmap :a \"1\" :b \"2\")" (string<-any (stringmap :a "1" :b "2"))) :doc "Return a string representation of a value")
vx/core / string<-any-indent
Description:
  • Return a string representation of a value
Function Name:
  • string<-any-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
    indent
    vx/core/int
    linefeed
    vx/core/boolean
Usage/Test Cases:
Source Code:
  • (func string<-any-indent : string [value : any indent : int linefeed : boolean] (native :cpp "std::string soutput = vx_core::vx_string_from_any_indent(value, indent->vx_int(), linefeed->vx_boolean(), false); output = vx_core::vx_new_string(soutput);" :js "output = vx_core.vx_string_from_any_indent(value, indent, linefeed)" :java :auto) :doc "Return a string representation of a value")
vx/core / string<-func
Description:
  • Function Type returning string with any parameters
Function Name:
  • string<-func
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func string<-func : string [] :doc "Function Type returning string with any parameters")
vx/core / string<-string-find-replace
Description:
  • Returns a string with all instances of find replaced by replace.
Function Name:
  • string<-string-find-replace
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    find
    vx/core/string
    replace
    vx/core/string
Usage/Test Cases:
  • (test "a!b!c" (string<-string-find-replace "axybxyc" "xy" "!"))
Source Code:
  • (func string<-string-find-replace : string [text : string find : string replace : string] (native :cpp :auto :java :auto :js :auto) :test (test "a!b!c" (string<-string-find-replace "axybxyc" "xy" "!")) :doc "Returns a string with all instances of find replaced by replace.")
vx/core / switch
Description:
  • Returns a value based on a logical switch
Function Name:
  • switch
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any-2
    thenelselist
    vx/core/thenelselist
Usage/Test Cases:
  • (test 1 (switch : int "d" (case (list "b" "c" "d") 1) (else 2)))
Source Code:
  • (func switch : any-1 [val : any-2 thenelselist : thenelselist :...] (native :cpp "vx_core::Type_any any = vx_core::vx_switch(generic_any_1, val, thenelselist); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "let fn_any = null if (thenelselist.length > 0) { for (let valthenelse of thenelselist) { const thenelse = valthenelse['vx_value'] const code = thenelse['code'] switch (code) { case ':case': const value = thenelse['value'] if (value == val) { fn_any = thenelse['fn-any'] } else if (typeof value == 'number') { // special handling of notanumber if (isNaN(val) && isNaN(value)) { fn_any = thenelse['fn-any'] } } break case ':casemany': const values = thenelse['values'] if (values.includes(val)) { fn_any = thenelse['fn-any'] } break case ':else': fn_any = thenelse['fn-any'] break } if (fn_any != null) { break } } if (fn_any != null) { const fn = fn_any['vx_value'] if (fn) { output = fn() } } }" :java "Core.Func_any_from_func fn_any = null; List<Core.Type_thenelse> listthenelse = thenelselist.vx_listthenelse(); for (Core.Type_thenelse thenelse : listthenelse) { Core.Type_string code = thenelse.code(); switch (code.vx_string()) { case “:caseâ€: Core.Type_any value = thenelse.value(); Core.Type_boolean iseq = Core.f_eq(val, value); if (iseq.vx_boolean()) { fn_any = thenelse.fn_any(); } break; case “:casemanyâ€: Core.Type_list values = thenelse.values(); Core.Type_boolean iscontain = Core.f_contains_1(values, val); if (iscontain.vx_boolean()) { fn_any = thenelse.fn_any(); } break; case “:elseâ€: fn_any = thenelse.fn_any(); break; } if (fn_any != null) { break; } } if (fn_any != null) { output = fn_any.vx_any_from_func(generic_any_1); }") :test (test 1 (switch : int "d" (case (list "b" "c" "d") 1) (else 2))) :doc "Returns a value based on a logical switch")
vx/core / then
Description:
  • Returns a thenelse struct from a given condition function and value function
Function Name:
  • then
Return Type:
  • vx/core/thenelse
Arguments:
  • Name
    Type
    Generic
    Description
    fn-cond
    vx/core/boolean<-func
    fn-any
    vx/core/any<-func
Usage/Test Cases:
Source Code:
  • (func then : thenelse [fn-cond : boolean<-func fn-any : any<-func] (thenelse :code :then :fn-cond fn-cond :fn-any fn-any) :doc "Returns a thenelse struct from a given condition function and value function")
vx/core / traits<-typedef
Description:
  • Return trait list from type
Function Name:
  • traits<-typedef
Return Type:
  • vx/core/typelist
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func traits<-typedef : typelist [vtypedef : typedef] (native :cpp "vtypedef->traits();" :js "vtypedef['vx_value']['traits']" :java "vtypedef.traits();") :doc "Return trait list from type")
vx/core / type<-any
Description:
  • Gets the Type of a given Value
Function Name:
  • type<-any
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-1
Usage/Test Cases:
  • (test boolean (type<-any false))
  • (test int (type<-any 5))
  • (test string (type<-any "a"))
Source Code:
  • (func type<-any : any [value : any-1] (native :cpp "value->vx_type();" :js "switch (typeof value) { case 'boolean': output = " boolean " break case 'number': switch (value) { case " infinity ": case " neginfinity ": case " notanumber ": output = " int " break default: const strval = '' + value if (strval.indexOf('.') < 0) { output = " int " } else { output = " float " } break } break case 'string': output = " string " break case 'function': output = " func " break default: output = value['vx_type'] if (output == vx_core.t_type) { output = value } break }" :java "output = value.vx_type();") :test (test boolean (type<-any false)) (test int (type<-any 5)) (test string (type<-any "a")) :doc "Gets the Type of a given Value")
vx/core / typedef<-any
Description:
  • Gets the typedef of a given value
Function Name:
  • typedef<-any
Return Type:
  • vx/core/typedef
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func typedef<-any : typedef [val : any] (typedef<-type (type<-any val)) :doc "Gets the typedef of a given value")
vx/core / typedef<-type
Description:
  • Gets the typedef of a given type
Function Name:
  • typedef<-type
Return Type:
  • vx/core/typedef
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func typedef<-type : typedef [val : any] (native :cpp "val->vx_typedef();" :js "output = val" :java "val.vx_typedef();") :doc "Gets the typedef of a given type")
vx/core / typename<-any
Description:
  • Gets the typename of a given value
Function Name:
  • typename<-any
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any-2
Usage/Test Cases:
  • (test "vx/core/boolean" (typename<-any false))
  • (test "vx/core/int" (typename<-any 5))
  • (test "vx/core/string" (typename<-any "a"))
Source Code:
  • (func typename<-any : string [value : any-2] (typename<-type (type<-any value)) :test (test "vx/core/boolean" (typename<-any false)) (test "vx/core/int" (typename<-any 5)) (test "vx/core/string" (typename<-any "a")) :doc "Gets the typename of a given value")
vx/core / typename<-type
Description:
  • Get the name of a given type
Function Name:
  • typename<-type
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func typename<-type : string [type : any] (typename<-typedef (typedef<-type type)) :doc "Get the name of a given type")
vx/core / typename<-typedef
Description:
  • Get the name of a given type
Function Name:
  • typename<-typedef
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func typename<-typedef : string [vtypedef : typedef] (string (:pkgname vtypedef) "/" (:name vtypedef)) :doc "Get the name of a given type")
vx/core / typenames<-typelist
Description:
  • Get the names from a type list
Function Name:
  • typenames<-typelist
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    typelist
    vx/core/typelist
Usage/Test Cases:
Source Code:
  • (func typenames<-typelist : stringlist [typelist : typelist] (list<-list : stringlist typelist (fn : string [type : any] (typename<-type type))) :doc "Get the names from a type list")
vx/core / user<-context
Description:
  • Returns the current user from context.
Function Name:
  • user<-context
Return Type:
  • vx/core/user
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func user<-context : user (:user (session<-context)) :context :doc "Returns the current user from context.")
vx/data/db
Description:
  • Database handler
Package Name:
  • vx/data/db
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • db, dbcell, dbcellmap, dbfield, dbfieldmap, dbid, dblink, dblinklist, dbnode, dbnote, dbtable, dbvalue
Constants:
Functions:
Source Code:
  • (package vx/data/db :doc "Database handler") (type db : struct :properties [dbid : string] :doc "Database trait") (type dbcell : struct :properties [dbcellid : string dbcellmap : dbcellmap dbfieldmap : dbfieldmap dbparent : dbcell dbtable : dbtable] :doc "Database Cell trait") (type dbcellmap : map :allowtypes [dbcell] :doc "Database Cell Map") (type dbfield : struct :properties [dbfieldid : string type : any value : any] :doc "Database Field trait") (type dbfieldmap : map :allowtypes [dbfield] :doc "Database Field Map") (type dbid : string :doc "Database id") (type dblink : struct :properties [fromid : dbid toid : dbid] :doc "Database link") (type dblinklist : list :allowtypes [dblink] :doc "Database link") (type dbnode : struct :properties [dbid : dbid links : dblinklist] :doc "Database node") (type dbnote : struct :properties [dbid : dbid valid : dbid noteid : dbid valueid : dbid value : string] :doc "Database Value") (type dbtable : struct :properties [dbtableid : string db : db dbcellmap : dbcellmap dbfieldmap : dbfieldmap] :doc "Database Table trait") (type dbvalue : struct :properties [dbid : dbid fromid : dbid toid : dbid noteid : dbid valid : dbid valtext : string] :doc "Database Value")
vx/data/db / db
Description:
  • Database trait
Type Name:
  • db
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbid
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type db : struct :properties [dbid : string] :doc "Database trait")
vx/data/db / dbcell
Description:
  • Database Cell trait
Type Name:
  • dbcell
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbcellid
    vx/core/string
    false
    false
    dbcellmap
    vx/data/db/dbcellmap
    false
    false
    dbfieldmap
    vx/data/db/dbfieldmap
    false
    false
    dbparent
    vx/data/db/dbcell
    false
    false
    dbtable
    vx/data/db/dbtable
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbcell : struct :properties [dbcellid : string dbcellmap : dbcellmap dbfieldmap : dbfieldmap dbparent : dbcell dbtable : dbtable] :doc "Database Cell trait")
vx/data/db / dbcellmap
Description:
  • Database Cell Map
Type Name:
  • dbcellmap
Extends:
  • :map
Default:
Allowed Types:
  • dbcell
Usage/Test Cases:
Source Code:
  • (type dbcellmap : map :allowtypes [dbcell] :doc "Database Cell Map")
vx/data/db / dbfield
Description:
  • Database Field trait
Type Name:
  • dbfield
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbfieldid
    vx/core/string
    false
    false
    type
    vx/core/any
    false
    false
    value
    vx/core/any
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbfield : struct :properties [dbfieldid : string type : any value : any] :doc "Database Field trait")
vx/data/db / dbfieldmap
Description:
  • Database Field Map
Type Name:
  • dbfieldmap
Extends:
  • :map
Default:
Allowed Types:
  • dbfield
Usage/Test Cases:
Source Code:
  • (type dbfieldmap : map :allowtypes [dbfield] :doc "Database Field Map")
vx/data/db / dbid
Description:
  • Database id
Type Name:
  • dbid
Extends:
  • :string
Default:
Usage/Test Cases:
Source Code:
  • (type dbid : string :doc "Database id")
vx/data/db / dbnode
Description:
  • Database node
Type Name:
  • dbnode
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbid
    vx/data/db/dbid
    false
    false
    links
    vx/data/db/dblinklist
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbnode : struct :properties [dbid : dbid links : dblinklist] :doc "Database node")
vx/data/db / dbnote
Description:
  • Database Value
Type Name:
  • dbnote
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbid
    vx/data/db/dbid
    false
    false
    valid
    vx/data/db/dbid
    false
    false
    noteid
    vx/data/db/dbid
    false
    false
    valueid
    vx/data/db/dbid
    false
    false
    value
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbnote : struct :properties [dbid : dbid valid : dbid noteid : dbid valueid : dbid value : string] :doc "Database Value")
vx/data/db / dbtable
Description:
  • Database Table trait
Type Name:
  • dbtable
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbtableid
    vx/core/string
    false
    false
    db
    vx/data/db/db
    false
    false
    dbcellmap
    vx/data/db/dbcellmap
    false
    false
    dbfieldmap
    vx/data/db/dbfieldmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbtable : struct :properties [dbtableid : string db : db dbcellmap : dbcellmap dbfieldmap : dbfieldmap] :doc "Database Table trait")
vx/data/db / dbvalue
Description:
  • Database Value
Type Name:
  • dbvalue
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    dbid
    vx/data/db/dbid
    false
    false
    fromid
    vx/data/db/dbid
    false
    false
    toid
    vx/data/db/dbid
    false
    false
    noteid
    vx/data/db/dbid
    false
    false
    valid
    vx/data/db/dbid
    false
    false
    valtext
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type dbvalue : struct :properties [dbid : dbid fromid : dbid toid : dbid noteid : dbid valid : dbid valtext : string] :doc "Database Value")
vx/data/table
Description:
  • General data table
Package Name:
  • vx/data/table
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • cell, celllist, cellmap, field, fieldlist, fieldmap, filter, row, rowlist, rowmap, sort, table
Constants:
Functions:
Source Code:
  • (package vx/data/table :doc "General data table") (type cell : struct :properties [id : string value : any]) (type celllist : list :allowtypes [cell]) (type cellmap : map :allowtypes [cell]) (type field : struct :properties [id : string name : string fldtype : any]) (type fieldlist : list :allowtypes [field]) (type fieldmap : list :allowtypes [field]) (type filter : struct :properties [id : string name : string idlist : stringlist]) (type row : struct :properties [id : string cellmap : cellmap cellsort : sort]) (type rowlist : list :allowtypes [row]) (type rowmap : map :allowtypes [row]) (type sort : struct :properties [id : string name : string idlist : stringlist]) (type table : struct :properties [id : string name : string fieldmap : fieldmap fieldsort : sort rowmap : rowmap rowfilter : filter rowsort : sort])
vx/data/table / cell
Description:
Type Name:
  • cell
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    value
    vx/core/any
    false
    false
Usage/Test Cases:
Source Code:
  • (type cell : struct :properties [id : string value : any])
vx/data/table / celllist
Description:
Type Name:
  • celllist
Extends:
  • :list
Default:
Allowed Types:
  • cell
Usage/Test Cases:
Source Code:
  • (type celllist : list :allowtypes [cell])
vx/data/table / cellmap
Description:
Type Name:
  • cellmap
Extends:
  • :map
Default:
Allowed Types:
  • cell
Usage/Test Cases:
Source Code:
  • (type cellmap : map :allowtypes [cell])
vx/data/table / field
Description:
Type Name:
  • field
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    fldtype
    vx/core/any
    false
    false
Usage/Test Cases:
Source Code:
  • (type field : struct :properties [id : string name : string fldtype : any])
vx/data/table / fieldlist
Description:
Type Name:
  • fieldlist
Extends:
  • :list
Default:
Allowed Types:
  • field
Usage/Test Cases:
Source Code:
  • (type fieldlist : list :allowtypes [field])
vx/data/table / fieldmap
Description:
Type Name:
  • fieldmap
Extends:
  • :list
Default:
Allowed Types:
  • field
Usage/Test Cases:
Source Code:
  • (type fieldmap : list :allowtypes [field])
vx/data/table / filter
Description:
Type Name:
  • filter
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    idlist
    vx/core/stringlist
    false
    false
Usage/Test Cases:
Source Code:
  • (type filter : struct :properties [id : string name : string idlist : stringlist])
vx/data/table / row
Description:
Type Name:
  • row
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    cellmap
    vx/data/table/cellmap
    false
    false
    cellsort
    vx/data/table/sort
    false
    false
Usage/Test Cases:
Source Code:
  • (type row : struct :properties [id : string cellmap : cellmap cellsort : sort])
vx/data/table / rowlist
Description:
Type Name:
  • rowlist
Extends:
  • :list
Default:
Allowed Types:
  • row
Usage/Test Cases:
Source Code:
  • (type rowlist : list :allowtypes [row])
vx/data/table / rowmap
Description:
Type Name:
  • rowmap
Extends:
  • :map
Default:
Allowed Types:
  • row
Usage/Test Cases:
Source Code:
  • (type rowmap : map :allowtypes [row])
vx/data/table / sort
Description:
Type Name:
  • sort
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    idlist
    vx/core/stringlist
    false
    false
Usage/Test Cases:
Source Code:
  • (type sort : struct :properties [id : string name : string idlist : stringlist])
vx/data/table / table
Description:
Type Name:
  • table
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    fieldmap
    vx/data/table/fieldmap
    false
    false
    fieldsort
    vx/data/table/sort
    false
    false
    rowmap
    vx/data/table/rowmap
    false
    false
    rowfilter
    vx/data/table/filter
    false
    false
    rowsort
    vx/data/table/sort
    false
    false
Usage/Test Cases:
Source Code:
  • (type table : struct :properties [id : string name : string fieldmap : fieldmap fieldsort : sort rowmap : rowmap rowfilter : filter rowsort : sort])
vx/data/tree
Description:
  • General data tree
Package Name:
  • vx/data/tree
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • branch, brancharrow, branchlist, leaf, leaflist, tree
Constants:
  • brancharrow-up, brancharrow-down, brancharrow-updown
Functions:
Source Code:
  • (package vx/data/tree :doc "General data tree") (type branch : struct :properties [id : string brancharrow : brancharrow branchlist : branchlist leaflist : leaflist parentbranch : branch tree : tree]) (type brancharrow) (type branchlist : list :allowtypes [branch]) (type leaf : struct :properties [id : string name : string value : any]) (type leaflist : list :allowtypes [leaf]) (type tree : struct :properties [id : string name : string branch : branch]) (const brancharrow-up : brancharrow) (const brancharrow-down : brancharrow) (const brancharrow-updown : brancharrow)
vx/data/tree / branch
Description:
Type Name:
  • branch
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    brancharrow
    vx/data/tree/brancharrow
    false
    false
    branchlist
    vx/data/tree/branchlist
    false
    false
    leaflist
    vx/data/tree/leaflist
    false
    false
    parentbranch
    vx/data/tree/branch
    false
    false
    tree
    vx/data/tree/tree
    false
    false
Usage/Test Cases:
Source Code:
  • (type branch : struct :properties [id : string brancharrow : brancharrow branchlist : branchlist leaflist : leaflist parentbranch : branch tree : tree])
vx/data/tree / brancharrow
Description:
Type Name:
  • brancharrow
Extends:
Default:
Usage/Test Cases:
Source Code:
  • (type brancharrow)
vx/data/tree / branchlist
Description:
Type Name:
  • branchlist
Extends:
  • :list
Default:
Allowed Types:
  • branch
Usage/Test Cases:
Source Code:
  • (type branchlist : list :allowtypes [branch])
vx/data/tree / leaf
Description:
Type Name:
  • leaf
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    value
    vx/core/any
    false
    false
Usage/Test Cases:
Source Code:
  • (type leaf : struct :properties [id : string name : string value : any])
vx/data/tree / leaflist
Description:
Type Name:
  • leaflist
Extends:
  • :list
Default:
Allowed Types:
  • leaf
Usage/Test Cases:
Source Code:
  • (type leaflist : list :allowtypes [leaf])
vx/data/tree / tree
Description:
Type Name:
  • tree
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    branch
    vx/data/tree/branch
    false
    false
Usage/Test Cases:
Source Code:
  • (type tree : struct :properties [id : string name : string branch : branch])
vx/data/tree / brancharrow-up
Description:
Constant Name:
  • brancharrow-up
Type:
  • vx/data/tree/brancharrow
Usage/Test Cases:
Source Code:
  • (const brancharrow-up : brancharrow)
vx/data/tree / brancharrow-down
Description:
Constant Name:
  • brancharrow-down
Type:
  • vx/data/tree/brancharrow
Usage/Test Cases:
Source Code:
  • (const brancharrow-down : brancharrow)
vx/data/tree / brancharrow-updown
Description:
Constant Name:
  • brancharrow-updown
Type:
  • vx/data/tree/brancharrow
Usage/Test Cases:
Source Code:
  • (const brancharrow-updown : brancharrow)
vx/event
Description:
  • Event Handling
Package Name:
  • vx/event
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • event, eventlist, eventmap
Constants:
  • event-change, event-click, event-move, event-select
Functions:
  • any-from<-event, event<-event, event<-event-async, eventmap<-eventlist
Source Code:
  • (package vx/event :doc "Event Handling") (type event : struct :properties [name : string from : string to : string datamap : anymap event<-event : event<-event event<-event-async : event<-event-async] :doc "Generic Event") (type eventlist : list :allowtypes [event] :doc "Map of event") (type eventmap : map :allowtypes [event] :doc "Map of event") (const event-change : event (event :name "change") :doc "Change Event") (const event-click : event (event :name "click") :doc "Click Event") (const event-move : event (event :name "move") :doc "Move Event") (const event-select : event (event :name "move") :doc "Move Event") (func any-from<-event : any-1 [event : event] (let : any-1 [value : any := (:from event)] (any<-any : any-1 value)) :doc "") (func event<-event : event [event : event] event :context :sideeffects "Triggering an event will cause some kind of change" :doc "Template for triggering ui events") (func event<-event-async : event [event : event] :async :context :sideeffects "Triggering an event will cause some kind of change" :doc "Template for triggering ui asynchronous events") (func eventmap<-eventlist : eventmap [eventlist : eventlist] (map<-list : eventmap eventlist (fn : string [event : event] (:name event))) :doc "Returns an eventmap from an eventlist")
vx/event / event
Description:
  • Generic Event
Type Name:
  • event
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    from
    vx/core/string
    false
    false
    to
    vx/core/string
    false
    false
    datamap
    vx/core/anymap
    false
    false
    event<-event
    vx/event/event<-event
    false
    false
    event<-event-async
    vx/event/event<-event-async
    false
    false
Usage/Test Cases:
Source Code:
  • (type event : struct :properties [name : string from : string to : string datamap : anymap event<-event : event<-event event<-event-async : event<-event-async] :doc "Generic Event")
vx/event / eventlist
Description:
  • Map of event
Type Name:
  • eventlist
Extends:
  • :list
Default:
Allowed Types:
  • event
Usage/Test Cases:
Source Code:
  • (type eventlist : list :allowtypes [event] :doc "Map of event")
vx/event / eventmap
Description:
  • Map of event
Type Name:
  • eventmap
Extends:
  • :map
Default:
Allowed Types:
  • event
Usage/Test Cases:
Source Code:
  • (type eventmap : map :allowtypes [event] :doc "Map of event")
vx/event / event-change
Description:
  • Change Event
Constant Name:
  • event-change
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-change : event (event :name "change") :doc "Change Event")
vx/event / event-click
Description:
  • Click Event
Constant Name:
  • event-click
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-click : event (event :name "click") :doc "Click Event")
vx/event / event-move
Description:
  • Move Event
Constant Name:
  • event-move
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-move : event (event :name "move") :doc "Move Event")
vx/event / event-select
Description:
  • Move Event
Constant Name:
  • event-select
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-select : event (event :name "move") :doc "Move Event")
vx/event / any-from<-event
Description:
Function Name:
  • any-from<-event
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func any-from<-event : any-1 [event : event] (let : any-1 [value : any := (:from event)] (any<-any : any-1 value)) :doc "")
vx/event / event<-event
Description:
  • Template for triggering ui events
Function Name:
  • event<-event
Return Type:
  • vx/event/event
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func event<-event : event [event : event] event :context :sideeffects "Triggering an event will cause some kind of change" :doc "Template for triggering ui events")
vx/event / event<-event-async
Description:
  • Template for triggering ui asynchronous events
Function Name:
  • event<-event-async
Return Type:
  • vx/event/event
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func event<-event-async : event [event : event] :async :context :sideeffects "Triggering an event will cause some kind of change" :doc "Template for triggering ui asynchronous events")
vx/event / eventmap<-eventlist
Description:
  • Returns an eventmap from an eventlist
Function Name:
  • eventmap<-eventlist
Return Type:
  • vx/event/eventmap
Arguments:
  • Name
    Type
    Generic
    Description
    eventlist
    vx/event/eventlist
Usage/Test Cases:
Source Code:
  • (func eventmap<-eventlist : eventmap [eventlist : eventlist] (map<-list : eventmap eventlist (fn : string [event : event] (:name event))) :doc "Returns an eventmap from an eventlist")
vx/sample
Description:
  • Sample VxLisp Code
Package Name:
  • vx/sample
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • mytype
Constants:
  • myconst
Functions:
  • main, myfunc
Source Code:
  • (package vx/sample :doc "Sample VxLisp Code") (type mytype : struct :properties [mynum : int :doc "mynum" mystr : string :doc "mystr"]) (const myconst : int 4 :doc "My Constant" :test (test myconst myconst)) (func main : none [] (myfunc 2)) (func myfunc : int [myarg : int :doc "My Arg"] (+ myconst myarg) :doc "My Function" :test (test 5 (myfunc 1)))
vx/sample / mytype
Description:
Type Name:
  • mytype
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    mynum
    vx/core/int
    mynum
    false
    false
    mystr
    vx/core/string
    mystr
    false
    false
Usage/Test Cases:
Source Code:
  • (type mytype : struct :properties [mynum : int :doc "mynum" mystr : string :doc "mystr"])
vx/sample / myconst
Description:
  • My Constant
Constant Name:
  • myconst
Type:
  • vx/core/int
Usage/Test Cases:
  • (test myconst myconst)
Source Code:
  • (const myconst : int 4 :doc "My Constant" :test (test myconst myconst))
vx/sample / main
Description:
Function Name:
  • main
Return Type:
  • vx/core/none
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func main : none [] (myfunc 2))
vx/sample / myfunc
Description:
  • My Function
Function Name:
  • myfunc
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    myarg
    vx/core/int
    My Arg
Usage/Test Cases:
  • (test 5 (myfunc 1))
Source Code:
  • (func myfunc : int [myarg : int :doc "My Arg"] (+ myconst myarg) :doc "My Function" :test (test 5 (myfunc 1)))
vx/state
Description:
  • State handler
Package Name:
  • vx/state
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • valuemap
Constants:
Functions:
  • any-readstate<-mapname-name, any-readstate<-name, boolean-writestate<-mapname-name-value, boolean-writestate<-name-value, boolean-writestate<-statelistener, change, register, state<-context, statelistener-readstate<-name, statelistenermap-readstate, value-readstate<-name, valuemap-readstate<-mapname
Source Code:
  • (package vx/state :doc "State handler") (type valuemap : map :allowtypes [any]) (func any-readstate<-mapname-name : any-1 [mapname : string name : string] (let : any-1 [submap : valuemap := (valuemap-readstate<-mapname mapname)] (any<-map : any-1 submap name)) :context :doc "Returns the named state value") (func any-readstate<-name : any-1 [name : string] (any<-any : any-1 (value-readstate<-name name)) :context :doc "Returns the named state value") (func boolean-writestate<-mapname-name-value : boolean [mapname : string name : string value : any] (let : boolean [valmap : valuemap := (any-readstate<-name : valuemap mapname)] (if : boolean (then (is-empty valmap) (let : boolean [valmap2 : valuemap := (valuemap name value) listener : statelistener := (statelistener :name mapname :value valmap2)] (boolean-writestate<-statelistener listener))) (else (boolean-write<-map-name-value valmap name value)))) :context :sideeffects "Changes State" :doc "Returns the named state value and changes it to the new value") (func boolean-writestate<-name-value : boolean [name : string value : any] (let : boolean [listenercur : statelistener := (statelistener-readstate<-name name) listenerchg : statelistener := (copy listenercur :name name :value value)] (boolean-writestate<-statelistener listenerchg)) :context :sideeffects "Changes State" :doc "Returns the named state value and changes it to the new value") (func boolean-writestate<-statelistener : boolean [statelistener : statelistener] (let : boolean [statelistenermap : statelistenermap := (statelistenermap-readstate) name : string := (:name statelistener)] (boolean-write<-map-name-value statelistenermap name statelistener)) :context :sideeffects "Changes State" :doc "Writes statelistener into state") (func change : boolean [valuemap : valuemap] :doc "Changes the current state") (func register : boolean [listener : statelistener]) (func state<-context : state (:state context) :context :doc "Returns the full current state") (func statelistener-readstate<-name : statelistener [name : string] (let : statelistener [statelistenermap : statelistenermap := (statelistenermap-readstate)] (any<-map : statelistener statelistenermap name)) :context :doc "Returns the named statelistener") (func statelistenermap-readstate : statelistenermap (let : statelistenermap [state : state := (state<-context)] (:statelistenermap state)) :context :doc "Returns the current state valuemap") (func value-readstate<-name : any [name : string] (let : any [statelistener : statelistener := (statelistener-readstate<-name name)] (:value statelistener)) :context :doc "Returns the named state value") (func valuemap-readstate<-mapname : valuemap [mapname : string] (let : valuemap [value : any := (value-readstate<-name mapname) valmap : valuemap := (any<-any : valuemap value)] valmap) :context :doc "Returns the current state valuemap")
vx/state / valuemap
Description:
Type Name:
  • valuemap
Extends:
  • :map
Default:
Allowed Types:
  • any
Usage/Test Cases:
Source Code:
  • (type valuemap : map :allowtypes [any])
vx/state / any-readstate<-mapname-name
Description:
  • Returns the named state value
Function Name:
  • any-readstate<-mapname-name
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    mapname
    vx/core/string
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func any-readstate<-mapname-name : any-1 [mapname : string name : string] (let : any-1 [submap : valuemap := (valuemap-readstate<-mapname mapname)] (any<-map : any-1 submap name)) :context :doc "Returns the named state value")
vx/state / any-readstate<-name
Description:
  • Returns the named state value
Function Name:
  • any-readstate<-name
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func any-readstate<-name : any-1 [name : string] (any<-any : any-1 (value-readstate<-name name)) :context :doc "Returns the named state value")
vx/state / boolean-writestate<-mapname-name-value
Description:
  • Returns the named state value and changes it to the new value
Function Name:
  • boolean-writestate<-mapname-name-value
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    mapname
    vx/core/string
    name
    vx/core/string
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func boolean-writestate<-mapname-name-value : boolean [mapname : string name : string value : any] (let : boolean [valmap : valuemap := (any-readstate<-name : valuemap mapname)] (if : boolean (then (is-empty valmap) (let : boolean [valmap2 : valuemap := (valuemap name value) listener : statelistener := (statelistener :name mapname :value valmap2)] (boolean-writestate<-statelistener listener))) (else (boolean-write<-map-name-value valmap name value)))) :context :sideeffects "Changes State" :doc "Returns the named state value and changes it to the new value")
vx/state / boolean-writestate<-name-value
Description:
  • Returns the named state value and changes it to the new value
Function Name:
  • boolean-writestate<-name-value
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func boolean-writestate<-name-value : boolean [name : string value : any] (let : boolean [listenercur : statelistener := (statelistener-readstate<-name name) listenerchg : statelistener := (copy listenercur :name name :value value)] (boolean-writestate<-statelistener listenerchg)) :context :sideeffects "Changes State" :doc "Returns the named state value and changes it to the new value")
vx/state / boolean-writestate<-statelistener
Description:
  • Writes statelistener into state
Function Name:
  • boolean-writestate<-statelistener
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    statelistener
    vx/core/statelistener
Usage/Test Cases:
Source Code:
  • (func boolean-writestate<-statelistener : boolean [statelistener : statelistener] (let : boolean [statelistenermap : statelistenermap := (statelistenermap-readstate) name : string := (:name statelistener)] (boolean-write<-map-name-value statelistenermap name statelistener)) :context :sideeffects "Changes State" :doc "Writes statelistener into state")
vx/state / change
Description:
  • Changes the current state
Function Name:
  • change
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    valuemap
    vx/state/valuemap
Usage/Test Cases:
Source Code:
  • (func change : boolean [valuemap : valuemap] :doc "Changes the current state")
vx/state / register
Description:
Function Name:
  • register
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    listener
    vx/core/statelistener
Usage/Test Cases:
Source Code:
  • (func register : boolean [listener : statelistener])
vx/state / state<-context
Description:
  • Returns the full current state
Function Name:
  • state<-context
Return Type:
  • vx/core/state
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func state<-context : state (:state context) :context :doc "Returns the full current state")
vx/state / statelistener-readstate<-name
Description:
  • Returns the named statelistener
Function Name:
  • statelistener-readstate<-name
Return Type:
  • vx/core/statelistener
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func statelistener-readstate<-name : statelistener [name : string] (let : statelistener [statelistenermap : statelistenermap := (statelistenermap-readstate)] (any<-map : statelistener statelistenermap name)) :context :doc "Returns the named statelistener")
vx/state / statelistenermap-readstate
Description:
  • Returns the current state valuemap
Function Name:
  • statelistenermap-readstate
Return Type:
  • vx/core/statelistenermap
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func statelistenermap-readstate : statelistenermap (let : statelistenermap [state : state := (state<-context)] (:statelistenermap state)) :context :doc "Returns the current state valuemap")
vx/state / value-readstate<-name
Description:
  • Returns the named state value
Function Name:
  • value-readstate<-name
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func value-readstate<-name : any [name : string] (let : any [statelistener : statelistener := (statelistener-readstate<-name name)] (:value statelistener)) :context :doc "Returns the named state value")
vx/state / valuemap-readstate<-mapname
Description:
  • Returns the current state valuemap
Function Name:
  • valuemap-readstate<-mapname
Return Type:
  • vx/state/valuemap
Arguments:
  • Name
    Type
    Generic
    Description
    mapname
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func valuemap-readstate<-mapname : valuemap [mapname : string] (let : valuemap [value : any := (value-readstate<-name mapname) valmap : valuemap := (any<-any : valuemap value)] valmap) :context :doc "Returns the current state valuemap")
vx/type
Description:
  • Type handling tools.
Package Name:
  • vx/type
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
Constants:
Functions:
  • allowtypenames<-type, allowtypes<-type, any<-int, boolean<-string-ends, boolean<-string-starts, int<-string-find, int<-string-findkeyword, int<-string-findlast, is-boolean, is-decimal, is-none, is-string, is-type, is-type<-any-typelist, length<-string, string<-int, string<-string-end, string<-string-start, string<-string-start-end, string<-stringlist-join, string-lowercase, string-outdent, string-trim, string-uppercase, stringlist<-string-split, traitnames<-any, traits<-any, traits<-typedef
Source Code:
  • (package vx/type :doc "Type handling tools.") (func allowtypenames<-type : stringlist [type : any] (typenames<-typelist (allowtypes<-type type)) :doc "Get the name of a given type") (func allowtypes<-type : typelist [type : any] (:allowtypes (typedef<-type type)) :doc "Returns the allowed types from a given type") (func any<-int : any-1 [val : int] :doc "Generic function returns any from an int.") (func boolean<-string-ends : boolean [text : string ends : string] (native :cpp "bool check = vx_core::vx_boolean_from_string_ends(text->vx_string(), ends->vx_string()); output = vx_core::vx_new_boolean(check);" :js "vx_core.vx_boolean_from_string_ends(text, ends)" :java "boolean check = Core.vx_boolean_from_string_ends(text.vx_string(), ends.vx_string()); output = Core.vx_new_boolean(check);") :test (test-true (boolean<-string-ends "abcd" "cd")) :doc "Returns true if string starts with find.") (func boolean<-string-starts : boolean [text : string starts : string] (native :cpp "bool check = vx_core::vx_boolean_from_string_starts(text->vx_string(), starts->vx_string()); output = vx_core::vx_new_boolean(check);" :java "boolean check = Core.vx_boolean_from_string_starts(text.vx_string(), starts.vx_string()); output = Core.vx_new_boolean(check);" :js :auto) :test (test-true (boolean<-string-starts "abcd" "ab")) :doc "Returns true if string starts with find.") (func int<-string-find : int [text : string find : string] (native :cpp :auto :java :auto :js :auto) :test (test 3 (int<-string-find "abcdcdg" "cd")) :doc "Returns integer position of find string in text string.") (func int<-string-findkeyword : int [text : string find : string] (native :cpp :auto :js :auto :java :auto) :test (test 3 (int<-string-findkeyword "ab\tcdefg" ":whitespace")) (test 5 (int<-string-findkeyword " \t\n\rab" ":nonwhitespace")) :doc "Returns integer position of find string in text string. Note: the find terms :whitespace and :nonwhitespace have special meaning.") (func int<-string-findlast : int [text : string findlast : string] (native :cpp :auto :java :auto :js :auto) :test (test 5 (int<-string-findlast "abcdcdg" "cd")) :doc "Returns integer position of find string in text string.") (func is-boolean : boolean [value : any] (= "boolean" (typename<-any value))) (func is-decimal : boolean [value : any] (= "decimal" (typename<-any value))) (func is-none : boolean [value : any] (= value none)) (func is-string : boolean [value : any] (= "vx/core/string" (typename<-any value)) :test (test-true (is-string "")) (test-true (is-string "a")) (test-false (is-string 5)) (test-false (is-string (list)))) (func is-type : boolean [val : any type : any] (or (= (typename<-type type) (typename<-any val)) (contains (allowtypenames<-type type) (typename<-any val)) (contains (traitnames<-any val) (typename<-type type))) :test (test-true (is-type false boolean)) (test-true (is-type "a" string)) (test-true (is-type 5.5 number)) (test-true (is-type 4 int))) (func is-type<-any-typelist : boolean [val : any typelist : typelist] (any<-list-start-reduce : boolean typelist false (fn : boolean [result : boolean type : any] (or result (is-type val type)))) :test (test-true (is-type<-any-typelist false (typelist int boolean))) (test-true (is-type<-any-typelist "a" (typelist number string))) (test-true (is-type<-any-typelist 5.5 (typelist string number))) (test-true (is-type<-any-typelist 4 (typelist string int))) :doc "Returns true if val is any type in typelist.") (func length<-string : int [text : string] (native :cpp "long len = text->vx_string().length(); output = vx_core::vx_new_int(len);" :js "text.length" :java "int len = text.vx_string().length(); output = Core.vx_new_int(len);") :test (test 4 (length<-string "abcd")) (test 0 (length<-string "")) :doc "Returns length of a string.") (func string<-int : string [val : int] (switch val : string (case infinity "infinity") (case neginfinity "neginfinity") (case notanumber "notanumber") (else (string val))) :test (test "4" (string<-int 4)) (test "51" (string<-int 51)) (test "notanumber" (string<-int notanumber)) (test "infinity" (string<-int infinity)) (test "neginfinity" (string<-int neginfinity)) :doc "Function Type converting int to string") (func string<-string-end : string [text : string endpos : int] (string<-string-start-end text 1 endpos) :test (test "abc" (string<-string-end "abcd" 3)) (test "ab" (string<-string-end "abcd" 2)) :doc "Returns a substring between 0 end position.") (func string<-string-start : string [text : string startpos : int] (string<-string-start-end text startpos (length<-string text)) :test (test "abcd" (string<-string-start "abcd" 1)) (test "bcd" (string<-string-start "abcd" 2)) :doc "Returns a substring between start string end.") (func string<-string-start-end : string [text : string start : int end : int] (native :cpp "std::string str = vx_core::vx_string_from_string_start_end(text->vx_string(), start->vx_int(), end->vx_int()); output = vx_core::vx_new_string(str);" :js "vx_core.vx_string_from_string_start_end(text, start, end)" :java "String stext = Core.vx_string_from_string_start_end(text.vx_string(), start.vx_int(), end.vx_int()); output = Core.vx_new_string(stext);") :test (test "abc" (string<-string-start-end "abcd" 1 3)) (test "bc" (string<-string-start-end "abcd" 2 3)) (test "" (string<-string-start-end "abcd" 5 6)) (test "bcd" (string<-string-start-end "abcd" 2 5)) (test "bc" (string<-string-start-end "abcd" 2 -1)) :doc "Returns a substring between start and end positions.") (func string<-stringlist-join : string [vals : stringlist delim : string] (native :cpp "output = vx_type::vx_string_from_stringlist_join(vals, delim);" :java :auto :js "vals.join(delim)") :test (test "a$b$c" (string<-stringlist-join (stringlist "a" "b" "c") "$")) :doc "Returns a string by joining a stringlist by the delimiter") (func string-lowercase : string [text : string] (native :cpp :auto :java :auto :js :auto) :test (test "abc" (string-lowercase "AbC")) :doc "Returns lowercase version of string") (func string-outdent : string [text : string] (let : string [pos : int := (int<-string-findkeyword text :nonwhitespace)] (if : string (then (= 0 pos) text) (else (let : string [indent : string := (string<-string-end text (-1 pos)) rest : string := (string<-string-start text pos) linepos : int := (int<-string-find indent "\n") outdent : string := (if : string (= 0 linepos) "" "\n")] (string<-string-find-replace rest indent outdent))))) :test (test "ab" (string-outdent "ab")) (test "a\nb" (string-outdent "\n a\n b")) :doc "Returns a string replacing leading whitespace on all lines based on first line.") (func string-trim : string [text : string] (native :cpp :auto :js :auto :java :auto) :test (test "ab" (string-trim " \t\nab\n\t ")) :doc "Trims whitespace from the front and back of text") (func string-uppercase : string [text : string] (native :cpp :auto :java :auto :js :auto) :test (test "ABC" (string-uppercase "aBc")) :doc "Returns uppercase version of string") (func stringlist<-string-split : stringlist [text : string delim : string] (native :cpp "vx_type::vx_stringlist_from_string_split(text, delim);" :java :auto :js "vx_type.vx_stringlist_from_string_split(text, delim)") :test (test (stringlist "a" "b" "c") (stringlist<-string-split "a$b$c" "$")) :doc "Returns a stringlist by splitting a string by the delimiter") (func traitnames<-any : stringlist [val : any] (typenames<-typelist (traits<-any val)) :doc "Get the trait names of a given type") (func traits<-any : typelist [val : any] (traits<-typedef (typedef<-any val)) :doc "Get the traits of a given value") (func traits<-typedef : typelist [vtypedef : typedef] (:traits vtypedef) :doc "Get the traits of a given typedef")
vx/type / allowtypenames<-type
Description:
  • Get the name of a given type
Function Name:
  • allowtypenames<-type
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func allowtypenames<-type : stringlist [type : any] (typenames<-typelist (allowtypes<-type type)) :doc "Get the name of a given type")
vx/type / allowtypes<-type
Description:
  • Returns the allowed types from a given type
Function Name:
  • allowtypes<-type
Return Type:
  • vx/core/typelist
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func allowtypes<-type : typelist [type : any] (:allowtypes (typedef<-type type)) :doc "Returns the allowed types from a given type")
vx/type / any<-int
Description:
  • Generic function returns any from an int.
Function Name:
  • any<-int
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func any<-int : any-1 [val : int] :doc "Generic function returns any from an int.")
vx/type / boolean<-string-ends
Description:
  • Returns true if string starts with find.
Function Name:
  • boolean<-string-ends
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    ends
    vx/core/string
Usage/Test Cases:
  • (test-true (boolean<-string-ends "abcd" "cd"))
Source Code:
  • (func boolean<-string-ends : boolean [text : string ends : string] (native :cpp "bool check = vx_core::vx_boolean_from_string_ends(text->vx_string(), ends->vx_string()); output = vx_core::vx_new_boolean(check);" :js "vx_core.vx_boolean_from_string_ends(text, ends)" :java "boolean check = Core.vx_boolean_from_string_ends(text.vx_string(), ends.vx_string()); output = Core.vx_new_boolean(check);") :test (test-true (boolean<-string-ends "abcd" "cd")) :doc "Returns true if string starts with find.")
vx/type / boolean<-string-starts
Description:
  • Returns true if string starts with find.
Function Name:
  • boolean<-string-starts
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    starts
    vx/core/string
Usage/Test Cases:
  • (test-true (boolean<-string-starts "abcd" "ab"))
Source Code:
  • (func boolean<-string-starts : boolean [text : string starts : string] (native :cpp "bool check = vx_core::vx_boolean_from_string_starts(text->vx_string(), starts->vx_string()); output = vx_core::vx_new_boolean(check);" :java "boolean check = Core.vx_boolean_from_string_starts(text.vx_string(), starts.vx_string()); output = Core.vx_new_boolean(check);" :js :auto) :test (test-true (boolean<-string-starts "abcd" "ab")) :doc "Returns true if string starts with find.")
vx/type / int<-string-find
Description:
  • Returns integer position of find string in text string.
Function Name:
  • int<-string-find
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    find
    vx/core/string
Usage/Test Cases:
  • (test 3 (int<-string-find "abcdcdg" "cd"))
Source Code:
  • (func int<-string-find : int [text : string find : string] (native :cpp :auto :java :auto :js :auto) :test (test 3 (int<-string-find "abcdcdg" "cd")) :doc "Returns integer position of find string in text string.")
vx/type / int<-string-findkeyword
Description:
  • Returns integer position of find string in text string. Note: the find terms :whitespace and :nonwhitespace have special meaning.
Function Name:
  • int<-string-findkeyword
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    find
    vx/core/string
Usage/Test Cases:
  • (test 3 (int<-string-findkeyword "ab\tcdefg" ":whitespace"))
  • (test 5 (int<-string-findkeyword " \t\n\rab" ":nonwhitespace"))
Source Code:
  • (func int<-string-findkeyword : int [text : string find : string] (native :cpp :auto :js :auto :java :auto) :test (test 3 (int<-string-findkeyword "ab\tcdefg" ":whitespace")) (test 5 (int<-string-findkeyword " \t\n\rab" ":nonwhitespace")) :doc "Returns integer position of find string in text string. Note: the find terms :whitespace and :nonwhitespace have special meaning.")
vx/type / int<-string-findlast
Description:
  • Returns integer position of find string in text string.
Function Name:
  • int<-string-findlast
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    findlast
    vx/core/string
Usage/Test Cases:
  • (test 5 (int<-string-findlast "abcdcdg" "cd"))
Source Code:
  • (func int<-string-findlast : int [text : string findlast : string] (native :cpp :auto :java :auto :js :auto) :test (test 5 (int<-string-findlast "abcdcdg" "cd")) :doc "Returns integer position of find string in text string.")
vx/type / is-boolean
Description:
Function Name:
  • is-boolean
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func is-boolean : boolean [value : any] (= "boolean" (typename<-any value)))
vx/type / is-decimal
Description:
Function Name:
  • is-decimal
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func is-decimal : boolean [value : any] (= "decimal" (typename<-any value)))
vx/type / is-none
Description:
Function Name:
  • is-none
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func is-none : boolean [value : any] (= value none))
vx/type / is-string
Description:
Function Name:
  • is-string
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
  • (test-true (is-string ""))
  • (test-true (is-string "a"))
  • (test-false (is-string 5))
  • (test-false (is-string (list)))
Source Code:
  • (func is-string : boolean [value : any] (= "vx/core/string" (typename<-any value)) :test (test-true (is-string "")) (test-true (is-string "a")) (test-false (is-string 5)) (test-false (is-string (list))))
vx/type / is-type
Description:
Function Name:
  • is-type
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
    type
    vx/core/any
Usage/Test Cases:
  • (test-true (is-type false boolean))
  • (test-true (is-type "a" string))
  • (test-true (is-type 5.5 number))
  • (test-true (is-type 4 int))
Source Code:
  • (func is-type : boolean [val : any type : any] (or (= (typename<-type type) (typename<-any val)) (contains (allowtypenames<-type type) (typename<-any val)) (contains (traitnames<-any val) (typename<-type type))) :test (test-true (is-type false boolean)) (test-true (is-type "a" string)) (test-true (is-type 5.5 number)) (test-true (is-type 4 int)))
vx/type / is-type<-any-typelist
Description:
  • Returns true if val is any type in typelist.
Function Name:
  • is-type<-any-typelist
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
    typelist
    vx/core/typelist
Usage/Test Cases:
  • (test-true (is-type<-any-typelist false (typelist int boolean)))
  • (test-true (is-type<-any-typelist "a" (typelist number string)))
  • (test-true (is-type<-any-typelist 5.5 (typelist string number)))
  • (test-true (is-type<-any-typelist 4 (typelist string int)))
Source Code:
  • (func is-type<-any-typelist : boolean [val : any typelist : typelist] (any<-list-start-reduce : boolean typelist false (fn : boolean [result : boolean type : any] (or result (is-type val type)))) :test (test-true (is-type<-any-typelist false (typelist int boolean))) (test-true (is-type<-any-typelist "a" (typelist number string))) (test-true (is-type<-any-typelist 5.5 (typelist string number))) (test-true (is-type<-any-typelist 4 (typelist string int))) :doc "Returns true if val is any type in typelist.")
vx/type / length<-string
Description:
  • Returns length of a string.
Function Name:
  • length<-string
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test 4 (length<-string "abcd"))
  • (test 0 (length<-string ""))
Source Code:
  • (func length<-string : int [text : string] (native :cpp "long len = text->vx_string().length(); output = vx_core::vx_new_int(len);" :js "text.length" :java "int len = text.vx_string().length(); output = Core.vx_new_int(len);") :test (test 4 (length<-string "abcd")) (test 0 (length<-string "")) :doc "Returns length of a string.")
vx/type / string<-int
Description:
  • Function Type converting int to string
Function Name:
  • string<-int
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/int
Usage/Test Cases:
  • (test "4" (string<-int 4))
  • (test "51" (string<-int 51))
  • (test "notanumber" (string<-int notanumber))
  • (test "infinity" (string<-int infinity))
  • (test "neginfinity" (string<-int neginfinity))
Source Code:
  • (func string<-int : string [val : int] (switch val : string (case infinity "infinity") (case neginfinity "neginfinity") (case notanumber "notanumber") (else (string val))) :test (test "4" (string<-int 4)) (test "51" (string<-int 51)) (test "notanumber" (string<-int notanumber)) (test "infinity" (string<-int infinity)) (test "neginfinity" (string<-int neginfinity)) :doc "Function Type converting int to string")
vx/type / string<-string-end
Description:
  • Returns a substring between 0 end position.
Function Name:
  • string<-string-end
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    endpos
    vx/core/int
Usage/Test Cases:
  • (test "abc" (string<-string-end "abcd" 3))
  • (test "ab" (string<-string-end "abcd" 2))
Source Code:
  • (func string<-string-end : string [text : string endpos : int] (string<-string-start-end text 1 endpos) :test (test "abc" (string<-string-end "abcd" 3)) (test "ab" (string<-string-end "abcd" 2)) :doc "Returns a substring between 0 end position.")
vx/type / string<-string-start
Description:
  • Returns a substring between start string end.
Function Name:
  • string<-string-start
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    startpos
    vx/core/int
Usage/Test Cases:
  • (test "abcd" (string<-string-start "abcd" 1))
  • (test "bcd" (string<-string-start "abcd" 2))
Source Code:
  • (func string<-string-start : string [text : string startpos : int] (string<-string-start-end text startpos (length<-string text)) :test (test "abcd" (string<-string-start "abcd" 1)) (test "bcd" (string<-string-start "abcd" 2)) :doc "Returns a substring between start string end.")
vx/type / string<-string-start-end
Description:
  • Returns a substring between start and end positions.
Function Name:
  • string<-string-start-end
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    start
    vx/core/int
    end
    vx/core/int
Usage/Test Cases:
  • (test "abc" (string<-string-start-end "abcd" 1 3))
  • (test "bc" (string<-string-start-end "abcd" 2 3))
  • (test "" (string<-string-start-end "abcd" 5 6))
  • (test "bcd" (string<-string-start-end "abcd" 2 5))
  • (test "bc" (string<-string-start-end "abcd" 2 -1))
Source Code:
  • (func string<-string-start-end : string [text : string start : int end : int] (native :cpp "std::string str = vx_core::vx_string_from_string_start_end(text->vx_string(), start->vx_int(), end->vx_int()); output = vx_core::vx_new_string(str);" :js "vx_core.vx_string_from_string_start_end(text, start, end)" :java "String stext = Core.vx_string_from_string_start_end(text.vx_string(), start.vx_int(), end.vx_int()); output = Core.vx_new_string(stext);") :test (test "abc" (string<-string-start-end "abcd" 1 3)) (test "bc" (string<-string-start-end "abcd" 2 3)) (test "" (string<-string-start-end "abcd" 5 6)) (test "bcd" (string<-string-start-end "abcd" 2 5)) (test "bc" (string<-string-start-end "abcd" 2 -1)) :doc "Returns a substring between start and end positions.")
vx/type / string<-stringlist-join
Description:
  • Returns a string by joining a stringlist by the delimiter
Function Name:
  • string<-stringlist-join
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    vals
    vx/core/stringlist
    delim
    vx/core/string
Usage/Test Cases:
  • (test "a$b$c" (string<-stringlist-join (stringlist "a" "b" "c") "$"))
Source Code:
  • (func string<-stringlist-join : string [vals : stringlist delim : string] (native :cpp "output = vx_type::vx_string_from_stringlist_join(vals, delim);" :java :auto :js "vals.join(delim)") :test (test "a$b$c" (string<-stringlist-join (stringlist "a" "b" "c") "$")) :doc "Returns a string by joining a stringlist by the delimiter")
vx/type / string-lowercase
Description:
  • Returns lowercase version of string
Function Name:
  • string-lowercase
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test "abc" (string-lowercase "AbC"))
Source Code:
  • (func string-lowercase : string [text : string] (native :cpp :auto :java :auto :js :auto) :test (test "abc" (string-lowercase "AbC")) :doc "Returns lowercase version of string")
vx/type / string-outdent
Description:
  • Returns a string replacing leading whitespace on all lines based on first line.
Function Name:
  • string-outdent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test "ab" (string-outdent "ab"))
  • (test "a\nb" (string-outdent "\n a\n b"))
Source Code:
  • (func string-outdent : string [text : string] (let : string [pos : int := (int<-string-findkeyword text :nonwhitespace)] (if : string (then (= 0 pos) text) (else (let : string [indent : string := (string<-string-end text (-1 pos)) rest : string := (string<-string-start text pos) linepos : int := (int<-string-find indent "\n") outdent : string := (if : string (= 0 linepos) "" "\n")] (string<-string-find-replace rest indent outdent))))) :test (test "ab" (string-outdent "ab")) (test "a\nb" (string-outdent "\n a\n b")) :doc "Returns a string replacing leading whitespace on all lines based on first line.")
vx/type / string-trim
Description:
  • Trims whitespace from the front and back of text
Function Name:
  • string-trim
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test "ab" (string-trim " \t\nab\n\t "))
Source Code:
  • (func string-trim : string [text : string] (native :cpp :auto :js :auto :java :auto) :test (test "ab" (string-trim " \t\nab\n\t ")) :doc "Trims whitespace from the front and back of text")
vx/type / string-uppercase
Description:
  • Returns uppercase version of string
Function Name:
  • string-uppercase
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test "ABC" (string-uppercase "aBc"))
Source Code:
  • (func string-uppercase : string [text : string] (native :cpp :auto :java :auto :js :auto) :test (test "ABC" (string-uppercase "aBc")) :doc "Returns uppercase version of string")
vx/type / stringlist<-string-split
Description:
  • Returns a stringlist by splitting a string by the delimiter
Function Name:
  • stringlist<-string-split
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delim
    vx/core/string
Usage/Test Cases:
  • (test (stringlist "a" "b" "c") (stringlist<-string-split "a$b$c" "$"))
Source Code:
  • (func stringlist<-string-split : stringlist [text : string delim : string] (native :cpp "vx_type::vx_stringlist_from_string_split(text, delim);" :java :auto :js "vx_type.vx_stringlist_from_string_split(text, delim)") :test (test (stringlist "a" "b" "c") (stringlist<-string-split "a$b$c" "$")) :doc "Returns a stringlist by splitting a string by the delimiter")
vx/type / traitnames<-any
Description:
  • Get the trait names of a given type
Function Name:
  • traitnames<-any
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func traitnames<-any : stringlist [val : any] (typenames<-typelist (traits<-any val)) :doc "Get the trait names of a given type")
vx/type / traits<-any
Description:
  • Get the traits of a given value
Function Name:
  • traits<-any
Return Type:
  • vx/core/typelist
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func traits<-any : typelist [val : any] (traits<-typedef (typedef<-any val)) :doc "Get the traits of a given value")
vx/type / traits<-typedef
Description:
  • Get the traits of a given typedef
Function Name:
  • traits<-typedef
Return Type:
  • vx/core/typelist
Arguments:
  • Name
    Type
    Generic
    Description
    vtypedef
    vx/core/typedef
Usage/Test Cases:
Source Code:
  • (func traits<-typedef : typelist [vtypedef : typedef] (:traits vtypedef) :doc "Get the traits of a given typedef")
vx/web/html
Description:
  • Html handler
Package Name:
  • vx/web/html
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    event
    vx/event
    type
    vx/type
Types:
  • body, details, div, divchild, divchildlist, divlist, footer, h1, h2, h3, head, headchild, headchildlist, html, img, meta, node, nodelist, p, propmap, style, stylelist, stylemap, stylesheet, table, tbody, td, tdlist, thead, title, tr, trlist
Constants:
Functions:
  • htmlstring<-string, string-indent, string<-div-indent, string<-body-indent, string<-details-indent, string<-footer-indent, string<-h1-indent, string<-h2-indent, string<-h3-indent, string<-head-indent, string<-html, string<-img-indent, string<-indent, string<-meta-indent, string<-node-indent, string<-nodelist-tag-prop-indent, string<-nodelist-indent, string<-p-indent, string<-propname-val, string<-propstyle, string<-propstyle-stylelist, string<-propstylelist, string<-propstyleunique, string<-style-indent, string<-stylelist-indent, string<-stylepropmap-indent, string<-stylesheet-indent, string<-table-indent, string<-tbody-indent, string<-td-indent, string<-thead-indent, string<-title-indent, string<-tr-indent, string<-uri, styles<-stylesheet, style<-stylesheet-name, stylemap<-stylelist, stylemap<-stylesheet, stylesheet-loadmap, uri<-string
Source Code:
  • (package vx/web/html :libs (lib event :path vx/event) (lib type :path vx/type) :doc "Html handler") (type body : struct :properties [nodes : divchildlist :... :default] :doc "Body Tag") (type details : struct :properties [summary : divchildlist nodes : divchildlist] :traits [node divchild] :doc "Details Tag") (type div : struct :properties [nodes : divchildlist :... :default] :traits [node divchild] :doc "Div Tag") (type divchild : struct :doc "Div Child Trait") (type divchildlist : list :allowtypes [divchild] :doc "List of divchild") (type divlist : list :allowtypes [div] :doc "List of div") (type footer : struct :properties [nodes : divchildlist :... :default] :doc "Body Tag") (type h1 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 1 Tag") (type h2 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 2 Tag") (type h3 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 3 Tag") (type head : struct :properties [nodes : headchildlist :... :default] :doc "Head Tag") (type headchild : struct :doc "Head Child Trait") (type headchildlist : list :allowtypes [headchild] :doc "List of headchild") (type html : struct :properties [lang : string head : head body : body footer : footer] :doc "Html Tag") (type img : struct :properties [src : string :default] :traits [node divchild] :doc "Image Tag") (type meta : struct :properties [charset : string name : string content : string] :traits [node headchild] :doc "Meta Tag") (type node : struct :properties [id : string eventmap : event/eventmap style : style style-unique : style stylelist : stylelist] :doc "Common Html Node Trait") (type nodelist : list :allowtypes [node] :doc "List of node") (type p : struct :properties [text : string :default] :traits [node divchild] :doc "Paragraph Tag") (type propmap : map :allowtypes [string] :doc "Map of props") (type style : struct :properties [name : string props : propmap stylelist : stylelist] :doc "Programmable Cascading Style") (type stylelist : list :allowtypes [style] :doc "List of style") (type stylemap : map :allowtypes [style] :doc "Map of style") (type stylesheet : struct :properties [name : string styles : stylelist stylemap : stylemap] :traits [node headchild] :doc "Programmable Cascading Style Sheet CSS type") (type table : struct :properties [tbody : tbody thead : thead] :traits [node divchild] :doc "<table> Tag") (type tbody : struct :properties [nodes : trlist :default :...] :traits [node] :doc "<tbody> Tag") (type td : struct :properties [nodes : divchildlist :default :...] :traits [node] :doc "<tr> Tag") (type tdlist : list :allowtypes [td] :doc "List of td") (type thead : struct :properties [nodes : trlist :default :...] :traits [node] :doc "<thead> Tag") (type title : struct :properties [text : string] :traits [node headchild] :doc "Title Tag") (type tr : struct :properties [nodes : tdlist :default :...] :traits [node] :doc "<tr> Tag") (type trlist : list :allowtypes [tr] :doc "List of tr") (func htmlstring<-string : string [text : string] (native :cpp "std::string str = text->vx_string(); str = vx_core::vx_string_from_string_find_replace(str, “&â€, “&amp;â€); str = vx_core::vx_string_from_string_find_replace(str, “'â€, “\'â€); str = vx_core::vx_string_from_string_find_replace(str, “>â€, “&gt;â€); str = vx_core::vx_string_from_string_find_replace(str, “<â€, “&lt;â€); output = vx_core::vx_new_string(str);" :js "const str = Ҡ+ text output = str .replace(/&/g, “&amp;â€) .replace(/'/g, “\'â€) .replace(/>/g, “&gt;â€) .replace(/</g, “&lt;â€)" :java "String str = text.vx_string(); str = str .replaceAll(“&â€, “&amp;â€) .replaceAll(“'â€, “\'â€) .replaceAll(“>â€, “&gt;â€) .replaceAll(“<â€, “&lt;â€); output = Core.vx_new_string(str);") :doc "Convert text to HTML string") (func string-indent : string [indent : int] (string-repeat " " indent)) (func string<-div-indent : string [div : div indent : int] (let [nodes : divchildlist := (:nodes div) sid : string := (string<-propname-val "id" (:id div)) sclass : string := (string<-propstyle-stylelist (:style div) (:stylelist div)) sstyle : string := (string<-propstyleunique (:style-unique div))] (string<-nodelist-tag-prop-indent nodes "div" (string sid sclass sstyle) indent)) :test (test "<div></div>" (string<-div-indent (div) 0)) (test "<div id=\"myid\"></div>" (string<-div-indent (div :id "myid") 0)) :doc "Returns string from div") (func string<-body-indent : string [body : body indent : int] (let [nodes : divchildlist := (:nodes body)] (string<-nodelist-tag-prop-indent nodes "body" "" indent)) :test (test "<body></body>" (string<-body-indent (body) 0)) (test "<body>\n <div></div>\n</body>" (string<-body-indent (body (div)) 0)) :doc "Returns string from body") (func string<-details-indent : string [details : details indent : int] (let [sindent : string := (string<-indent indent) summary : divchildlist := (:summary details) nodes : divchildlist := (:nodes details) ssummary : string := (string<-nodelist-indent summary (+ indent 2)) snodes : string := (string<-nodelist-indent nodes (+ indent 1))] (string sindent "<details>" sindent " <summary>" ssummary sindent " </summary>" snodes sindent "</details>")) :doc "Returns string from details") (func string<-footer-indent : string [footer : footer indent : int] (let [nodes : divchildlist := (:nodes footer)] (string<-nodelist-tag-prop-indent nodes "footer" "" indent)) :doc "Returns string from footer") (func string<-h1-indent : string [h1 : h1 indent : int] (let [sindent : string := (string<-indent indent) text : string := (:text h1) sid : string := (string<-propname-val "id" (:id h1))] (string sindent "<h1" sid ">" text "</h1>")) :doc "Returns string from h1") (func string<-h2-indent : string [h2 : h2 indent : int] (let [text : string := (:text h2) sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id h2))] (string sindent "<h2" sid ">" text "</h2>")) :doc "Returns string from h2") (func string<-h3-indent : string [h3 : h3 indent : int] (let [text : string := (:text h3) sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id h3))] (string sindent "<h3" sid ">" text "</h3>")) :doc "Returns string from h3") (func string<-head-indent : string [head : head indent : int] (let [nodes : headchildlist := (:nodes head)] (string<-nodelist-tag-prop-indent nodes "head" "" indent)) :test (test "<head></head>" (string<-head-indent (head) 0)) :doc "Returns string from head") (func string<-html : string [html : html] (let [lang : string := (string<-propname-val "lang" (:lang html)) head : head := (:head html) body : body := (:body html) footer : footer := (:footer html) shead : string := (string<-head-indent head 1) sbody : string := (string<-body-indent body 1) sfooter : string := (string<-footer-indent footer 1)] (string "<!DOCTYPE html>" newline "<html" lang ">" shead sbody sfooter newline "</html>")) :test (test "<!DOCTYPE html>\n<html>\n <head></head>\n <body></body>\n <footer></footer>\n</html>" (string<-html (html :head (head) :body (body)))) :doc "Returns string from html") (func string<-img-indent : string [img : img indent : int] (let [sindent : string := (string<-indent indent) ssrc : string := (string<-propname-val "src" (:src img)) sid : string := (string<-propname-val "id" (:id img)) sclass : string := (string<-propstyle-stylelist (:style img) (:stylelist img)) sstyle : string := (string<-propstyleunique (:style-unique img))] (string sindent "<img" sid sclass sstyle ssrc " />")) :test (test "<img src=\"test.svg\" />" (string<-img-indent (img :src "test.svg") 0)) (test "<img id=\"myid\" src=\"test.svg\" />" (string<-img-indent (img :id "myid" :src "test.svg") 0)) :doc "Returns string from img") (func string<-indent : string [indent : int] (if (= indent 0) "" (string newline (string-indent indent))) :doc "Returns a string to do indentation for a given indent count.") (func string<-meta-indent : string [meta : meta indent : int] (let [sindent : string := (string<-indent indent) charset : string := (:charset meta) name : string := (:name meta) content : string := (:content meta) scharset : string := (if : string (then (!= "" charset) (string<-propname-val "charset" charset))) sname : string := (if : string (then (!= "" name) (string<-propname-val "name" name))) scontext : string := (if : string (then (!= "" content) (string<-propname-val "content" content)))] (string sindent "<meta" scharset sname scontext " />")) :test (test "<meta charset=\"utf-8\" />" (string<-meta-indent (meta :charset "utf-8") 0)) :doc "Returns string from head") (func string<-node-indent : string [node : any-1 indent : int] (switch (type<-any node) (case body (string<-body-indent (any<-any node) indent)) (case details (string<-details-indent (any<-any node) indent)) (case div (string<-div-indent (any<-any node) indent)) (case h1 (string<-h1-indent (any<-any node) indent)) (case h2 (string<-h2-indent (any<-any node) indent)) (case h3 (string<-h3-indent (any<-any node) indent)) (case head (string<-head-indent (any<-any node) indent)) (case footer (string<-footer-indent (any<-any node) indent)) (case img (string<-img-indent (any<-any node) indent)) (case meta (string<-meta-indent (any<-any node) indent)) (case p (string<-p-indent (any<-any node) indent)) (case stylesheet (string<-stylesheet-indent (any<-any node) indent)) (case table (string<-table-indent (any<-any node) indent)) (case title (string<-title-indent (any<-any node) indent)) (case tbody (string<-tbody-indent (any<-any node) indent)) (case thead (string<-thead-indent (any<-any node) indent)) (case td (string<-td-indent (any<-any node) indent)) (case tr (string<-tr-indent (any<-any node) indent))) :doc "Returns a string from any node") (func string<-nodelist-tag-prop-indent : string [nodes : list-1 tag : string prop : string indent : int] (let [text : string := (string<-nodelist-indent nodes (+1 indent)) sindent : string := (string<-indent indent) eindent : string := (if (then (is-empty text) "") (then (is-empty sindent) newline) (else sindent))] (string sindent "<" tag prop ">" text eindent "</" tag ">")) :doc "Returns string from generic nodelist") (func string<-nodelist-indent : string [nodelist : list-1 indent : int] (let [textlist : stringlist := (list<-list nodelist (fn : string [node : node] (string<-node-indent node indent) ))] (string<-stringlist-join textlist "")) :doc "Returns a string from any node") (func string<-p-indent : string [p : p indent : int] (let [sindent : string := (string<-indent indent) text : string := (htmlstring<-string (:text p)) sid : string := (string<-propname-val "id" (:id p)) sclass : string := (string<-propstyle-stylelist (:style p) (:stylelist p)) sstyle : string := (string<-propstyleunique (:style-unique p))] (string sindent "<p" sid sclass sstyle ">" text "</p>")) :test (test "<p>data</p>" (string<-p-indent (p :text "data") 0)) (test "<p id=\"myid\">data</p>" (string<-p-indent (p :id "myid" :text "data") 0)) :doc "Returns string from p") (func string<-propname-val : string [key : string val : string] (if (!-empty val) (string " " key "=" quote val quote)) :doc "Returns ' key=\"val\"' if val is not blank.") (func string<-propstyle : string [style : style] (if : string (then (!-empty style) (string " class=" quote (string<-string-start (:name style) 2) quote))) :doc "Returns ' class=\"style.name\"' if style is not empty.") (func string<-propstyle-stylelist : string [style : style stylelist : stylelist] (if : string (then (!-empty style) (string<-propstyle style)) (then (!-empty stylelist) (string<-propstylelist stylelist))) :doc "Returns ' class=\"style.name\"' if style is not empty.") (func string<-propstylelist : string [stylelist : stylelist] (if : string (then (!-empty stylelist) (let : string [namelist : stringlist := (list<-list : stringlist stylelist (fn : style [item : style] (string<-string-start (:name item) 2))) joined : string := (string<-stringlist-join namelist " ")] (if : string (!= "" joined) (string " class=" quote joined quote))))) :doc "Returns ' class=\"style1.name style2.name\"' if stylelist is not empty.") (func string<-propstyleunique : string [style : style] (if : string (then (!-empty style) (let : string [props : propmap := (:props style) text : string := (string<-stylepropmap-indent props 0)] (if : string (then (!-empty text) (string " style=" quote text quote)))))) :doc "Returns ' style=\"{style.propmap}\"' if style is not empty.") (func string<-style-indent : string [style : style indent : int] (let : string [sindent : string := (string<-indent indent) name : string := (:name style) propmap : propmap := (:props style) sublist : stylelist := (:stylelist style) stext : string := (string<-stylepropmap-indent propmap (+1 indent)) subtext : string := (string<-stylelist-indent sublist (+1 indent))] (string sindent name " {" stext subtext sindent "}")) :doc "Returns indent'name {key: val;}' for each style.") (func string<-stylelist-indent : string [stylelist : stylelist indent : int] (let : string [sstyles : stringlist := (list<-list : stringlist stylelist (fn : string [substyle : style] (string<-style-indent substyle indent)))] (string<-stringlist-join sstyles newline)) :doc "Return a string from a stylelist") (func string<-stylepropmap-indent : string [propmap : propmap indent : int] (let : string [sindent : string := (string<-indent indent) sprops : stringlist := (list<-map : stringlist propmap (fn : string [key : string val : string] (string sindent key ": " val ";")))] (string<-stringlist-join sprops "")) :doc "Returns indent'key: val;' for each prop.") (func string<-stylesheet-indent : string [stylesheet : stylesheet indent : int] (let [styles : stylelist := (:styles stylesheet) sstyles : string := (string<-stylelist-indent styles (+1 indent)) sindent : string := (string<-indent indent) eindent : string := (if (!-empty sstyles) sindent)] (string sindent "<style>" sstyles eindent "</style>")) :doc "Returns string representation of given stylesheet.") (func string<-table-indent : string [table : table indent : int] (let [sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id table)) thead : thead := (:thead table) tbody : tbody := (:tbody table) shead : string := (string<-thead-indent thead (+1 indent)) sbody : string := (string<-tbody-indent tbody (+1 indent))] (string sindent "<table" sid ">" shead sbody sindent "</table>") ) :doc "Returns string from table") (func string<-tbody-indent : string [tbody : tbody indent : int] (let [nodes : trlist := (:nodes tbody)] (string<-nodelist-tag-prop-indent nodes "tbody" "" indent)) :doc "Returns string from tbody") (func string<-td-indent : string [td : td indent : int] (let [nodes : divchildlist := (:nodes td)] (string<-nodelist-tag-prop-indent nodes "td" "" indent)) :doc "Returns string from td") (func string<-thead-indent : string [thead : thead indent : int] (let [nodes : trlist := (:nodes thead)] (string<-nodelist-tag-prop-indent nodes "thead" "" indent)) :doc "Returns string from thead") (func string<-title-indent : string [title : title indent : int] (let [sindent : string := (string<-indent indent) text : string := (:text title)] (string sindent "<title>" text "</title>")) :doc "Returns string from h2") (func string<-tr-indent : string [tr : tr indent : int] (let [nodes : tdlist := (:nodes tr)] (string<-nodelist-tag-prop-indent nodes "tr" "" indent)) :doc "Returns string from tr") (func string<-uri : string [uri : string] (native :js "decodeURI(uri)") :doc "Decode a URI string") (func styles<-stylesheet : stylelist [stylesheet : stylesheet] (:styles stylesheet) :doc "Return style from stylesheet.stylemap") (func style<-stylesheet-name : style [stylesheet : stylesheet name : string] (any<-map (stylemap<-stylesheet stylesheet) name) :doc "Return style from stylesheet.stylemap") (func stylemap<-stylelist : stylemap [stylelist : stylelist] (map<-list : stylemap stylelist (fn : string [style : style] (:name style))) :doc "Returns a stylemap from a given stylelist") (func stylemap<-stylesheet : stylemap [stylesheet : stylesheet] (:stylemap stylesheet) :doc "Return stylemap from stylesheet") (func stylesheet-loadmap : stylesheet [stylesheet : stylesheet] (copy stylesheet :stylemap (stylemap<-stylelist (:styles stylesheet))) :doc "Decode a URI string") (func uri<-string : string [text : string] (native :js "encodeURI(text)") :doc "Encode a URI string")
vx/web/html / body
Description:
  • Body Tag
Type Name:
  • body
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/divchildlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type body : struct :properties [nodes : divchildlist :... :default] :doc "Body Tag")
vx/web/html / details
Description:
  • Details Tag
Type Name:
  • details
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    summary
    vx/web/html/divchildlist
    false
    false
    nodes
    vx/web/html/divchildlist
    false
    false
Usage/Test Cases:
Source Code:
  • (type details : struct :properties [summary : divchildlist nodes : divchildlist] :traits [node divchild] :doc "Details Tag")
vx/web/html / div
Description:
  • Div Tag
Type Name:
  • div
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/divchildlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type div : struct :properties [nodes : divchildlist :... :default] :traits [node divchild] :doc "Div Tag")
vx/web/html / divchild
Description:
  • Div Child Trait
Type Name:
  • divchild
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type divchild : struct :doc "Div Child Trait")
vx/web/html / divchildlist
Description:
  • List of divchild
Type Name:
  • divchildlist
Extends:
  • :list
Default:
Allowed Types:
  • divchild
Usage/Test Cases:
Source Code:
  • (type divchildlist : list :allowtypes [divchild] :doc "List of divchild")
vx/web/html / divlist
Description:
  • List of div
Type Name:
  • divlist
Extends:
  • :list
Default:
Allowed Types:
  • div
Usage/Test Cases:
Source Code:
  • (type divlist : list :allowtypes [div] :doc "List of div")
vx/web/html / footer
Description:
  • Body Tag
Type Name:
  • footer
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/divchildlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type footer : struct :properties [nodes : divchildlist :... :default] :doc "Body Tag")
vx/web/html / h1
Description:
  • Header 1 Tag
Type Name:
  • h1
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    text
    vx/core/string
    false
    true
Usage/Test Cases:
Source Code:
  • (type h1 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 1 Tag")
vx/web/html / h2
Description:
  • Header 2 Tag
Type Name:
  • h2
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    text
    vx/core/string
    false
    true
Usage/Test Cases:
Source Code:
  • (type h2 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 2 Tag")
vx/web/html / h3
Description:
  • Header 3 Tag
Type Name:
  • h3
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    text
    vx/core/string
    false
    true
Usage/Test Cases:
Source Code:
  • (type h3 : struct :properties [text : string :default] :traits [node divchild] :doc "Header 3 Tag")
vx/web/html / head
Description:
  • Head Tag
Type Name:
  • head
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/headchildlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type head : struct :properties [nodes : headchildlist :... :default] :doc "Head Tag")
vx/web/html / headchild
Description:
  • Head Child Trait
Type Name:
  • headchild
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type headchild : struct :doc "Head Child Trait")
vx/web/html / headchildlist
Description:
  • List of headchild
Type Name:
  • headchildlist
Extends:
  • :list
Default:
Allowed Types:
  • headchild
Usage/Test Cases:
Source Code:
  • (type headchildlist : list :allowtypes [headchild] :doc "List of headchild")
vx/web/html / html
Description:
  • Html Tag
Type Name:
  • html
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    lang
    vx/core/string
    false
    false
    head
    vx/web/html/head
    false
    false
    body
    vx/web/html/body
    false
    false
    footer
    vx/web/html/footer
    false
    false
Usage/Test Cases:
Source Code:
  • (type html : struct :properties [lang : string head : head body : body footer : footer] :doc "Html Tag")
vx/web/html / img
Description:
  • Image Tag
Type Name:
  • img
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    src
    vx/core/string
    false
    true
Usage/Test Cases:
Source Code:
  • (type img : struct :properties [src : string :default] :traits [node divchild] :doc "Image Tag")
vx/web/html / meta
Description:
  • Meta Tag
Type Name:
  • meta
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    charset
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    content
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type meta : struct :properties [charset : string name : string content : string] :traits [node headchild] :doc "Meta Tag")
vx/web/html / node
Description:
  • Common Html Node Trait
Type Name:
  • node
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    eventmap
    vx/event/eventmap
    false
    false
    style
    vx/web/html/style
    false
    false
    style-unique
    vx/web/html/style
    false
    false
    stylelist
    vx/web/html/stylelist
    false
    false
Usage/Test Cases:
Source Code:
  • (type node : struct :properties [id : string eventmap : event/eventmap style : style style-unique : style stylelist : stylelist] :doc "Common Html Node Trait")
vx/web/html / nodelist
Description:
  • List of node
Type Name:
  • nodelist
Extends:
  • :list
Default:
Allowed Types:
  • node
Usage/Test Cases:
Source Code:
  • (type nodelist : list :allowtypes [node] :doc "List of node")
vx/web/html / p
Description:
  • Paragraph Tag
Type Name:
  • p
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    text
    vx/core/string
    false
    true
Usage/Test Cases:
Source Code:
  • (type p : struct :properties [text : string :default] :traits [node divchild] :doc "Paragraph Tag")
vx/web/html / propmap
Description:
  • Map of props
Type Name:
  • propmap
Extends:
  • :map
Default:
Allowed Types:
  • string
Usage/Test Cases:
Source Code:
  • (type propmap : map :allowtypes [string] :doc "Map of props")
vx/web/html / style
Description:
  • Programmable Cascading Style
Type Name:
  • style
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    props
    vx/web/html/propmap
    false
    false
    stylelist
    vx/web/html/stylelist
    false
    false
Usage/Test Cases:
Source Code:
  • (type style : struct :properties [name : string props : propmap stylelist : stylelist] :doc "Programmable Cascading Style")
vx/web/html / stylelist
Description:
  • List of style
Type Name:
  • stylelist
Extends:
  • :list
Default:
Allowed Types:
  • style
Usage/Test Cases:
Source Code:
  • (type stylelist : list :allowtypes [style] :doc "List of style")
vx/web/html / stylemap
Description:
  • Map of style
Type Name:
  • stylemap
Extends:
  • :map
Default:
Allowed Types:
  • style
Usage/Test Cases:
Source Code:
  • (type stylemap : map :allowtypes [style] :doc "Map of style")
vx/web/html / stylesheet
Description:
  • Programmable Cascading Style Sheet CSS type
Type Name:
  • stylesheet
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    styles
    vx/web/html/stylelist
    false
    false
    stylemap
    vx/web/html/stylemap
    false
    false
Usage/Test Cases:
Source Code:
  • (type stylesheet : struct :properties [name : string styles : stylelist stylemap : stylemap] :traits [node headchild] :doc "Programmable Cascading Style Sheet CSS type")
vx/web/html / table
Description:
  • <table> Tag
Type Name:
  • table
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    tbody
    vx/web/html/tbody
    false
    false
    thead
    vx/web/html/thead
    false
    false
Usage/Test Cases:
Source Code:
  • (type table : struct :properties [tbody : tbody thead : thead] :traits [node divchild] :doc "<table> Tag")
vx/web/html / tbody
Description:
  • <tbody> Tag
Type Name:
  • tbody
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/trlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type tbody : struct :properties [nodes : trlist :default :...] :traits [node] :doc "<tbody> Tag")
vx/web/html / td
Description:
  • <tr> Tag
Type Name:
  • td
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/divchildlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type td : struct :properties [nodes : divchildlist :default :...] :traits [node] :doc "<tr> Tag")
vx/web/html / tdlist
Description:
  • List of td
Type Name:
  • tdlist
Extends:
  • :list
Default:
Allowed Types:
  • td
Usage/Test Cases:
Source Code:
  • (type tdlist : list :allowtypes [td] :doc "List of td")
vx/web/html / thead
Description:
  • <thead> Tag
Type Name:
  • thead
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/trlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type thead : struct :properties [nodes : trlist :default :...] :traits [node] :doc "<thead> Tag")
vx/web/html / title
Description:
  • Title Tag
Type Name:
  • title
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    text
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type title : struct :properties [text : string] :traits [node headchild] :doc "Title Tag")
vx/web/html / tr
Description:
  • <tr> Tag
Type Name:
  • tr
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    nodes
    vx/web/html/tdlist
    true
    true
Usage/Test Cases:
Source Code:
  • (type tr : struct :properties [nodes : tdlist :default :...] :traits [node] :doc "<tr> Tag")
vx/web/html / trlist
Description:
  • List of tr
Type Name:
  • trlist
Extends:
  • :list
Default:
Allowed Types:
  • tr
Usage/Test Cases:
Source Code:
  • (type trlist : list :allowtypes [tr] :doc "List of tr")
vx/web/html / htmlstring<-string
Description:
  • Convert text to HTML string
Function Name:
  • htmlstring<-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func htmlstring<-string : string [text : string] (native :cpp "std::string str = text->vx_string(); str = vx_core::vx_string_from_string_find_replace(str, “&â€, “&amp;â€); str = vx_core::vx_string_from_string_find_replace(str, “'â€, “\'â€); str = vx_core::vx_string_from_string_find_replace(str, “>â€, “&gt;â€); str = vx_core::vx_string_from_string_find_replace(str, “<â€, “&lt;â€); output = vx_core::vx_new_string(str);" :js "const str = Ҡ+ text output = str .replace(/&/g, “&amp;â€) .replace(/'/g, “\'â€) .replace(/>/g, “&gt;â€) .replace(/</g, “&lt;â€)" :java "String str = text.vx_string(); str = str .replaceAll(“&â€, “&amp;â€) .replaceAll(“'â€, “\'â€) .replaceAll(“>â€, “&gt;â€) .replaceAll(“<â€, “&lt;â€); output = Core.vx_new_string(str);") :doc "Convert text to HTML string")
vx/web/html / string-indent
Description:
Function Name:
  • string-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string-indent : string [indent : int] (string-repeat " " indent))
vx/web/html / string<-div-indent
Description:
  • Returns string from div
Function Name:
  • string<-div-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    div
    vx/web/html/div
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<div></div>" (string<-div-indent (div) 0))
  • (test "<div id=\"myid\"></div>" (string<-div-indent (div :id "myid") 0))
Source Code:
  • (func string<-div-indent : string [div : div indent : int] (let [nodes : divchildlist := (:nodes div) sid : string := (string<-propname-val "id" (:id div)) sclass : string := (string<-propstyle-stylelist (:style div) (:stylelist div)) sstyle : string := (string<-propstyleunique (:style-unique div))] (string<-nodelist-tag-prop-indent nodes "div" (string sid sclass sstyle) indent)) :test (test "<div></div>" (string<-div-indent (div) 0)) (test "<div id=\"myid\"></div>" (string<-div-indent (div :id "myid") 0)) :doc "Returns string from div")
vx/web/html / string<-body-indent
Description:
  • Returns string from body
Function Name:
  • string<-body-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    body
    vx/web/html/body
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<body></body>" (string<-body-indent (body) 0))
  • (test "<body>\n <div></div>\n</body>" (string<-body-indent (body (div)) 0))
Source Code:
  • (func string<-body-indent : string [body : body indent : int] (let [nodes : divchildlist := (:nodes body)] (string<-nodelist-tag-prop-indent nodes "body" "" indent)) :test (test "<body></body>" (string<-body-indent (body) 0)) (test "<body>\n <div></div>\n</body>" (string<-body-indent (body (div)) 0)) :doc "Returns string from body")
vx/web/html / string<-details-indent
Description:
  • Returns string from details
Function Name:
  • string<-details-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    details
    vx/web/html/details
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-details-indent : string [details : details indent : int] (let [sindent : string := (string<-indent indent) summary : divchildlist := (:summary details) nodes : divchildlist := (:nodes details) ssummary : string := (string<-nodelist-indent summary (+ indent 2)) snodes : string := (string<-nodelist-indent nodes (+ indent 1))] (string sindent "<details>" sindent " <summary>" ssummary sindent " </summary>" snodes sindent "</details>")) :doc "Returns string from details")
vx/web/html / string<-h1-indent
Description:
  • Returns string from h1
Function Name:
  • string<-h1-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    h1
    vx/web/html/h1
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-h1-indent : string [h1 : h1 indent : int] (let [sindent : string := (string<-indent indent) text : string := (:text h1) sid : string := (string<-propname-val "id" (:id h1))] (string sindent "<h1" sid ">" text "</h1>")) :doc "Returns string from h1")
vx/web/html / string<-h2-indent
Description:
  • Returns string from h2
Function Name:
  • string<-h2-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    h2
    vx/web/html/h2
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-h2-indent : string [h2 : h2 indent : int] (let [text : string := (:text h2) sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id h2))] (string sindent "<h2" sid ">" text "</h2>")) :doc "Returns string from h2")
vx/web/html / string<-h3-indent
Description:
  • Returns string from h3
Function Name:
  • string<-h3-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    h3
    vx/web/html/h3
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-h3-indent : string [h3 : h3 indent : int] (let [text : string := (:text h3) sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id h3))] (string sindent "<h3" sid ">" text "</h3>")) :doc "Returns string from h3")
vx/web/html / string<-head-indent
Description:
  • Returns string from head
Function Name:
  • string<-head-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    head
    vx/web/html/head
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<head></head>" (string<-head-indent (head) 0))
Source Code:
  • (func string<-head-indent : string [head : head indent : int] (let [nodes : headchildlist := (:nodes head)] (string<-nodelist-tag-prop-indent nodes "head" "" indent)) :test (test "<head></head>" (string<-head-indent (head) 0)) :doc "Returns string from head")
vx/web/html / string<-html
Description:
  • Returns string from html
Function Name:
  • string<-html
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    html
    vx/web/html/html
Usage/Test Cases:
  • (test "<!DOCTYPE html>\n<html>\n <head></head>\n <body></body>\n <footer></footer>\n</html>" (string<-html (html :head (head) :body (body))))
Source Code:
  • (func string<-html : string [html : html] (let [lang : string := (string<-propname-val "lang" (:lang html)) head : head := (:head html) body : body := (:body html) footer : footer := (:footer html) shead : string := (string<-head-indent head 1) sbody : string := (string<-body-indent body 1) sfooter : string := (string<-footer-indent footer 1)] (string "<!DOCTYPE html>" newline "<html" lang ">" shead sbody sfooter newline "</html>")) :test (test "<!DOCTYPE html>\n<html>\n <head></head>\n <body></body>\n <footer></footer>\n</html>" (string<-html (html :head (head) :body (body)))) :doc "Returns string from html")
vx/web/html / string<-img-indent
Description:
  • Returns string from img
Function Name:
  • string<-img-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    img
    vx/web/html/img
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<img src=\"test.svg\" />" (string<-img-indent (img :src "test.svg") 0))
  • (test "<img id=\"myid\" src=\"test.svg\" />" (string<-img-indent (img :id "myid" :src "test.svg") 0))
Source Code:
  • (func string<-img-indent : string [img : img indent : int] (let [sindent : string := (string<-indent indent) ssrc : string := (string<-propname-val "src" (:src img)) sid : string := (string<-propname-val "id" (:id img)) sclass : string := (string<-propstyle-stylelist (:style img) (:stylelist img)) sstyle : string := (string<-propstyleunique (:style-unique img))] (string sindent "<img" sid sclass sstyle ssrc " />")) :test (test "<img src=\"test.svg\" />" (string<-img-indent (img :src "test.svg") 0)) (test "<img id=\"myid\" src=\"test.svg\" />" (string<-img-indent (img :id "myid" :src "test.svg") 0)) :doc "Returns string from img")
vx/web/html / string<-indent
Description:
  • Returns a string to do indentation for a given indent count.
Function Name:
  • string<-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-indent : string [indent : int] (if (= indent 0) "" (string newline (string-indent indent))) :doc "Returns a string to do indentation for a given indent count.")
vx/web/html / string<-meta-indent
Description:
  • Returns string from head
Function Name:
  • string<-meta-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    meta
    vx/web/html/meta
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<meta charset=\"utf-8\" />" (string<-meta-indent (meta :charset "utf-8") 0))
Source Code:
  • (func string<-meta-indent : string [meta : meta indent : int] (let [sindent : string := (string<-indent indent) charset : string := (:charset meta) name : string := (:name meta) content : string := (:content meta) scharset : string := (if : string (then (!= "" charset) (string<-propname-val "charset" charset))) sname : string := (if : string (then (!= "" name) (string<-propname-val "name" name))) scontext : string := (if : string (then (!= "" content) (string<-propname-val "content" content)))] (string sindent "<meta" scharset sname scontext " />")) :test (test "<meta charset=\"utf-8\" />" (string<-meta-indent (meta :charset "utf-8") 0)) :doc "Returns string from head")
vx/web/html / string<-node-indent
Description:
  • Returns a string from any node
Function Name:
  • string<-node-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    node
    vx/core/any-1
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-node-indent : string [node : any-1 indent : int] (switch (type<-any node) (case body (string<-body-indent (any<-any node) indent)) (case details (string<-details-indent (any<-any node) indent)) (case div (string<-div-indent (any<-any node) indent)) (case h1 (string<-h1-indent (any<-any node) indent)) (case h2 (string<-h2-indent (any<-any node) indent)) (case h3 (string<-h3-indent (any<-any node) indent)) (case head (string<-head-indent (any<-any node) indent)) (case footer (string<-footer-indent (any<-any node) indent)) (case img (string<-img-indent (any<-any node) indent)) (case meta (string<-meta-indent (any<-any node) indent)) (case p (string<-p-indent (any<-any node) indent)) (case stylesheet (string<-stylesheet-indent (any<-any node) indent)) (case table (string<-table-indent (any<-any node) indent)) (case title (string<-title-indent (any<-any node) indent)) (case tbody (string<-tbody-indent (any<-any node) indent)) (case thead (string<-thead-indent (any<-any node) indent)) (case td (string<-td-indent (any<-any node) indent)) (case tr (string<-tr-indent (any<-any node) indent))) :doc "Returns a string from any node")
vx/web/html / string<-nodelist-tag-prop-indent
Description:
  • Returns string from generic nodelist
Function Name:
  • string<-nodelist-tag-prop-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    nodes
    vx/core/list-1
    tag
    vx/core/string
    prop
    vx/core/string
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-nodelist-tag-prop-indent : string [nodes : list-1 tag : string prop : string indent : int] (let [text : string := (string<-nodelist-indent nodes (+1 indent)) sindent : string := (string<-indent indent) eindent : string := (if (then (is-empty text) "") (then (is-empty sindent) newline) (else sindent))] (string sindent "<" tag prop ">" text eindent "</" tag ">")) :doc "Returns string from generic nodelist")
vx/web/html / string<-nodelist-indent
Description:
  • Returns a string from any node
Function Name:
  • string<-nodelist-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    nodelist
    vx/core/list-1
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-nodelist-indent : string [nodelist : list-1 indent : int] (let [textlist : stringlist := (list<-list nodelist (fn : string [node : node] (string<-node-indent node indent) ))] (string<-stringlist-join textlist "")) :doc "Returns a string from any node")
vx/web/html / string<-p-indent
Description:
  • Returns string from p
Function Name:
  • string<-p-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    p
    vx/web/html/p
    indent
    vx/core/int
Usage/Test Cases:
  • (test "<p>data</p>" (string<-p-indent (p :text "data") 0))
  • (test "<p id=\"myid\">data</p>" (string<-p-indent (p :id "myid" :text "data") 0))
Source Code:
  • (func string<-p-indent : string [p : p indent : int] (let [sindent : string := (string<-indent indent) text : string := (htmlstring<-string (:text p)) sid : string := (string<-propname-val "id" (:id p)) sclass : string := (string<-propstyle-stylelist (:style p) (:stylelist p)) sstyle : string := (string<-propstyleunique (:style-unique p))] (string sindent "<p" sid sclass sstyle ">" text "</p>")) :test (test "<p>data</p>" (string<-p-indent (p :text "data") 0)) (test "<p id=\"myid\">data</p>" (string<-p-indent (p :id "myid" :text "data") 0)) :doc "Returns string from p")
vx/web/html / string<-propname-val
Description:
  • Returns ' key=\"val\"' if val is not blank.
Function Name:
  • string<-propname-val
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    key
    vx/core/string
    val
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string<-propname-val : string [key : string val : string] (if (!-empty val) (string " " key "=" quote val quote)) :doc "Returns ' key=\"val\"' if val is not blank.")
vx/web/html / string<-propstyle
Description:
  • Returns ' class=\"style.name\"' if style is not empty.
Function Name:
  • string<-propstyle
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    style
    vx/web/html/style
Usage/Test Cases:
Source Code:
  • (func string<-propstyle : string [style : style] (if : string (then (!-empty style) (string " class=" quote (string<-string-start (:name style) 2) quote))) :doc "Returns ' class=\"style.name\"' if style is not empty.")
vx/web/html / string<-propstyle-stylelist
Description:
  • Returns ' class=\"style.name\"' if style is not empty.
Function Name:
  • string<-propstyle-stylelist
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    style
    vx/web/html/style
    stylelist
    vx/web/html/stylelist
Usage/Test Cases:
Source Code:
  • (func string<-propstyle-stylelist : string [style : style stylelist : stylelist] (if : string (then (!-empty style) (string<-propstyle style)) (then (!-empty stylelist) (string<-propstylelist stylelist))) :doc "Returns ' class=\"style.name\"' if style is not empty.")
vx/web/html / string<-propstylelist
Description:
  • Returns ' class=\"style1.name style2.name\"' if stylelist is not empty.
Function Name:
  • string<-propstylelist
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    stylelist
    vx/web/html/stylelist
Usage/Test Cases:
Source Code:
  • (func string<-propstylelist : string [stylelist : stylelist] (if : string (then (!-empty stylelist) (let : string [namelist : stringlist := (list<-list : stringlist stylelist (fn : style [item : style] (string<-string-start (:name item) 2))) joined : string := (string<-stringlist-join namelist " ")] (if : string (!= "" joined) (string " class=" quote joined quote))))) :doc "Returns ' class=\"style1.name style2.name\"' if stylelist is not empty.")
vx/web/html / string<-propstyleunique
Description:
  • Returns ' style=\"{style.propmap}\"' if style is not empty.
Function Name:
  • string<-propstyleunique
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    style
    vx/web/html/style
Usage/Test Cases:
Source Code:
  • (func string<-propstyleunique : string [style : style] (if : string (then (!-empty style) (let : string [props : propmap := (:props style) text : string := (string<-stylepropmap-indent props 0)] (if : string (then (!-empty text) (string " style=" quote text quote)))))) :doc "Returns ' style=\"{style.propmap}\"' if style is not empty.")
vx/web/html / string<-style-indent
Description:
  • Returns indent'name {key: val;}' for each style.
Function Name:
  • string<-style-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    style
    vx/web/html/style
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-style-indent : string [style : style indent : int] (let : string [sindent : string := (string<-indent indent) name : string := (:name style) propmap : propmap := (:props style) sublist : stylelist := (:stylelist style) stext : string := (string<-stylepropmap-indent propmap (+1 indent)) subtext : string := (string<-stylelist-indent sublist (+1 indent))] (string sindent name " {" stext subtext sindent "}")) :doc "Returns indent'name {key: val;}' for each style.")
vx/web/html / string<-stylelist-indent
Description:
  • Return a string from a stylelist
Function Name:
  • string<-stylelist-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    stylelist
    vx/web/html/stylelist
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-stylelist-indent : string [stylelist : stylelist indent : int] (let : string [sstyles : stringlist := (list<-list : stringlist stylelist (fn : string [substyle : style] (string<-style-indent substyle indent)))] (string<-stringlist-join sstyles newline)) :doc "Return a string from a stylelist")
vx/web/html / string<-stylepropmap-indent
Description:
  • Returns indent'key: val;' for each prop.
Function Name:
  • string<-stylepropmap-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    propmap
    vx/web/html/propmap
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-stylepropmap-indent : string [propmap : propmap indent : int] (let : string [sindent : string := (string<-indent indent) sprops : stringlist := (list<-map : stringlist propmap (fn : string [key : string val : string] (string sindent key ": " val ";")))] (string<-stringlist-join sprops "")) :doc "Returns indent'key: val;' for each prop.")
vx/web/html / string<-stylesheet-indent
Description:
  • Returns string representation of given stylesheet.
Function Name:
  • string<-stylesheet-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-stylesheet-indent : string [stylesheet : stylesheet indent : int] (let [styles : stylelist := (:styles stylesheet) sstyles : string := (string<-stylelist-indent styles (+1 indent)) sindent : string := (string<-indent indent) eindent : string := (if (!-empty sstyles) sindent)] (string sindent "<style>" sstyles eindent "</style>")) :doc "Returns string representation of given stylesheet.")
vx/web/html / string<-table-indent
Description:
  • Returns string from table
Function Name:
  • string<-table-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    table
    vx/web/html/table
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-table-indent : string [table : table indent : int] (let [sindent : string := (string<-indent indent) sid : string := (string<-propname-val "id" (:id table)) thead : thead := (:thead table) tbody : tbody := (:tbody table) shead : string := (string<-thead-indent thead (+1 indent)) sbody : string := (string<-tbody-indent tbody (+1 indent))] (string sindent "<table" sid ">" shead sbody sindent "</table>") ) :doc "Returns string from table")
vx/web/html / string<-tbody-indent
Description:
  • Returns string from tbody
Function Name:
  • string<-tbody-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    tbody
    vx/web/html/tbody
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-tbody-indent : string [tbody : tbody indent : int] (let [nodes : trlist := (:nodes tbody)] (string<-nodelist-tag-prop-indent nodes "tbody" "" indent)) :doc "Returns string from tbody")
vx/web/html / string<-td-indent
Description:
  • Returns string from td
Function Name:
  • string<-td-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    td
    vx/web/html/td
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-td-indent : string [td : td indent : int] (let [nodes : divchildlist := (:nodes td)] (string<-nodelist-tag-prop-indent nodes "td" "" indent)) :doc "Returns string from td")
vx/web/html / string<-thead-indent
Description:
  • Returns string from thead
Function Name:
  • string<-thead-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    thead
    vx/web/html/thead
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-thead-indent : string [thead : thead indent : int] (let [nodes : trlist := (:nodes thead)] (string<-nodelist-tag-prop-indent nodes "thead" "" indent)) :doc "Returns string from thead")
vx/web/html / string<-title-indent
Description:
  • Returns string from h2
Function Name:
  • string<-title-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    title
    vx/web/html/title
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-title-indent : string [title : title indent : int] (let [sindent : string := (string<-indent indent) text : string := (:text title)] (string sindent "<title>" text "</title>")) :doc "Returns string from h2")
vx/web/html / string<-tr-indent
Description:
  • Returns string from tr
Function Name:
  • string<-tr-indent
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    tr
    vx/web/html/tr
    indent
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func string<-tr-indent : string [tr : tr indent : int] (let [nodes : tdlist := (:nodes tr)] (string<-nodelist-tag-prop-indent nodes "tr" "" indent)) :doc "Returns string from tr")
vx/web/html / string<-uri
Description:
  • Decode a URI string
Function Name:
  • string<-uri
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    uri
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string<-uri : string [uri : string] (native :js "decodeURI(uri)") :doc "Decode a URI string")
vx/web/html / styles<-stylesheet
Description:
  • Return style from stylesheet.stylemap
Function Name:
  • styles<-stylesheet
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (func styles<-stylesheet : stylelist [stylesheet : stylesheet] (:styles stylesheet) :doc "Return style from stylesheet.stylemap")
vx/web/html / style<-stylesheet-name
Description:
  • Return style from stylesheet.stylemap
Function Name:
  • style<-stylesheet-name
Return Type:
  • vx/web/html/style
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func style<-stylesheet-name : style [stylesheet : stylesheet name : string] (any<-map (stylemap<-stylesheet stylesheet) name) :doc "Return style from stylesheet.stylemap")
vx/web/html / stylemap<-stylelist
Description:
  • Returns a stylemap from a given stylelist
Function Name:
  • stylemap<-stylelist
Return Type:
  • vx/web/html/stylemap
Arguments:
  • Name
    Type
    Generic
    Description
    stylelist
    vx/web/html/stylelist
Usage/Test Cases:
Source Code:
  • (func stylemap<-stylelist : stylemap [stylelist : stylelist] (map<-list : stylemap stylelist (fn : string [style : style] (:name style))) :doc "Returns a stylemap from a given stylelist")
vx/web/html / stylemap<-stylesheet
Description:
  • Return stylemap from stylesheet
Function Name:
  • stylemap<-stylesheet
Return Type:
  • vx/web/html/stylemap
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (func stylemap<-stylesheet : stylemap [stylesheet : stylesheet] (:stylemap stylesheet) :doc "Return stylemap from stylesheet")
vx/web/html / stylesheet-loadmap
Description:
  • Decode a URI string
Function Name:
  • stylesheet-loadmap
Return Type:
  • vx/web/html/stylesheet
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (func stylesheet-loadmap : stylesheet [stylesheet : stylesheet] (copy stylesheet :stylemap (stylemap<-stylelist (:styles stylesheet))) :doc "Decode a URI string")
vx/web/html / uri<-string
Description:
  • Encode a URI string
Function Name:
  • uri<-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uri<-string : string [text : string] (native :js "encodeURI(text)") :doc "Encode a URI string")
nx/crypto/cryptosheet
Description:
Package Name:
  • nx/crypto/cryptosheet
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
Constants:
Functions:
Source Code:
  • (package nx/crypto/cryptosheet)
vx/ui/element
Description:
Package Name:
  • vx/ui/element
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
Types:
  • element, orientation, point, pointlist, style
Constants:
Functions:
Source Code:
  • (package vx/ui/element) (type element : struct :properties [name : string style : style]) (type orientation : struct :properties [rotate-x : float rotate-y : float rotate-z : float]) (type point : struct :properties [x : float y : float z : float]) (type pointlist : list :allowtypes [point]) (type style : struct :properties [name : string pointlist : pointlist orientation : orientation])
vx/ui/element / element
Description:
Type Name:
  • element
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    style
    vx/ui/element/style
    false
    false
Usage/Test Cases:
Source Code:
  • (type element : struct :properties [name : string style : style])
vx/ui/element / orientation
Description:
Type Name:
  • orientation
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    rotate-x
    vx/core/float
    false
    false
    rotate-y
    vx/core/float
    false
    false
    rotate-z
    vx/core/float
    false
    false
Usage/Test Cases:
Source Code:
  • (type orientation : struct :properties [rotate-x : float rotate-y : float rotate-z : float])
vx/ui/element / point
Description:
Type Name:
  • point
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    x
    vx/core/float
    false
    false
    y
    vx/core/float
    false
    false
    z
    vx/core/float
    false
    false
Usage/Test Cases:
Source Code:
  • (type point : struct :properties [x : float y : float z : float])
vx/ui/element / pointlist
Description:
Type Name:
  • pointlist
Extends:
  • :list
Default:
Allowed Types:
  • point
Usage/Test Cases:
Source Code:
  • (type pointlist : list :allowtypes [point])
vx/ui/element / style
Description:
Type Name:
  • style
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    pointlist
    vx/ui/element/pointlist
    false
    false
    orientation
    vx/ui/element/orientation
    false
    false
Usage/Test Cases:
Source Code:
  • (type style : struct :properties [name : string pointlist : pointlist orientation : orientation])
vx/collection
Description:
  • Collection Package
Package Name:
  • vx/collection
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    type
    vx/type
Types:
Constants:
Functions:
  • any<-for-until-loop, any<-for-until-loop-max, any<-for-while-loop, any<-for-while-loop-max, int<-map-key, int<-stringlist-find, is-list, is-map, list<-for-end-loop, list<-for-while-loop, list<-for-while-loop-max, list<-list-end, list<-list-filter, list<-list-filtertypes, list<-list-start, list<-list-start-end, stringlist<-map
Source Code:
  • (package vx/collection :libs (lib type :path vx/type) :doc "Collection Package") (func any<-for-until-loop : any-1 [start : any-1 fn-until : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1] (any<-for-until-loop-max start fn-until fn-loop 10000) :test (test 8 (any<-for-until-loop 1 (fn : boolean [current : int] (> current 6)) (fn : int [current : int] (+ current current)))) :doc "Returns a value using an until loop. Maximum 10000 times.") (func any<-for-until-loop-max : any-1 [start : any-1 fn-until : boolean<-any fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_any_from_for_until_loop_max(generic_any_1, start, fn_until, fn_loop, max); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "vx_collection.vx_any_from_for_until_loop_max(generic_any_1, start, fn_until, fn_loop, max)" :java :auto) :doc `Returns a value using a until loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue count += 1 output = (fn-loop output) continue = (fn-until output)))`) (func any<-for-while-loop : any-1 [start : any-1 fn-while : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1] (any<-for-while-loop-max start fn-while fn-loop 1000) :test (test 8 (any<-for-while-loop 1 (fn : boolean [current : int] (< current 5)) (fn : int [current : int] (+ current current)))) :doc "Returns a value using a while loop. Maximum 1000 times.") (func any<-for-while-loop-max : any-1 [start : any-1 fn-while : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_any_from_for_while_loop_max(generic_any_1, start, fn_while, fn_loop, max); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "vx_collection.vx_any_from_for_while_loop_max(generic_any_1, start, fn_while, fn_loop, max)" :java :auto) :doc "Returns a value using a while loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue continue = (fn-while output) (if continue count += 1 output = (fn-loop output))))") (func int<-map-key : int [map : map-1 key : string] (let : int [keys : stringlist := (stringlist<-map map)] (int<-stringlist-find keys key)) :test (test 2 (int<-map-key (stringmap :a "x" :b "y") "b")) :doc "Returns the position of key in any map.") (func int<-stringlist-find : int [stringlist : stringlist find : string] (let : int [poslist : intlist := (list<-list-intany : intlist stringlist (fn : int [pos : int value : string] (if : int (= find value) pos 0))) gt0list : intlist := (list<-list-filter poslist (fn : int [item : int] item))] (first<-list : int gt0list)) :test (test 2 (int<-stringlist-find (stringlist "a" "b") "b")) :doc "Returns the position (first position is 1) of find text in a stringlist.") (func is-list : boolean [val : any :doc "Any value"] (= ":list" (extends<-any val)) :test (test-true (is-list (empty stringlist))) :doc "Returns true if the given value is a list.") (func is-map : boolean [val : any :doc "Any value"] (= ":map" (extends<-any val)) :test (test-true (is-map (empty stringmap))) :doc "Returns true if the given value is a map.") (func list<-for-end-loop : list-1 [start : int end : int fn-loop : any<-int :: any-1] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_for_end_loop(generic_list_1, start, end, fn_loop); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_for_end_loop(generic_list_1, start, end, fn_loop)" :java :auto) :test (test (intlist 4 9) (list<-for-end-loop : intlist 2 3 (fn [current : int] (* current current)))) :doc `Returns a list of any-1 by iterating i from for to next where each item is (loop i). This is similar to a for next loop in other languages. output : list-1 := (empty list-1) (if start <= end (for i=start to end val : any-1 := (fn-loop i) output += val) (else (for i=start to end; i-- val : any-1 := (fn-loop i) output += val) ))`) (func list<-for-while-loop : list-1 [start : any-1 fn-while : boolean<-any fn-loop : any<-any :: any-1 :: any-1] (list<-for-while-loop-max start fn-while fn-loop 1000) /* :test (test (intlist 1 2) (list<-for-while-loop : intlist 1 (fn : boolean [current : int] (< current 3)) (fn [current : int] (+1 current)))) */ :doc "Returns a list of any-1 using a while loop. Max: 1000") (func list<-for-while-loop-max : list-1 [start : any-1 fn-while : boolean<-any fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_for_while_loop_max(generic_list_1, start, fn_while, fn_loop, max); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_for_while_loop_max(generic_list_1, start, fn_while, fn_loop, max)" :java :auto) :doc `Returns a list of any-1 using a while loop. 1. output : list-1 := (empty list-1) 2. value : any-1 := start. 3. value : any-1 := (fn-loop value). 4. check : boolean := (fn-while value). 5. if (= check true) output := (copy output value), Go to 3 (Maximum max times). 6. else end.`) (func list<-list-end : list-1 [values : list-1 end : int] (list<-list-start-end values 1 end) :test (test (stringlist "a" "b" "c") (list<-list-end (stringlist "a" "b" "c" "d") 3)) :doc "Returns a sub list from positions 0 to end.") (func list<-list-filter : list-1 [vallist : list-2 fn-filter : any<-any] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_list_filter(generic_list_1, vallist, fn_filter); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_list_filter(generic_list_1, vallist, fn_filter)" :java :auto) :test (test (stringlist "a1" "b1" "c1" "d1") (list<-list-filter : stringlist (list "a" 4 "b" (list) "c" (map) "d") (fn : string [val : any] (if (then (is-string val) (string val "1")))))) :doc "Filter List to only include non-empty values") (func list<-list-filtertypes : list-1 [vallist : list-2 filtertypes : typelist :...] (list<-list-filter vallist (fn : any [val : any] (if (is-type<-any-typelist val filtertypes) val))) :test (test (list "a" 1 "b" "c") (list<-list-filtertypes : list (list "a" 1 "b" "c" 4.5) string int)) :doc "Filter List to only include matching types") (func list<-list-start : list-1 [values : list-1 start : int] (list<-list-start-end values start (length<-list values)) :test (test (stringlist "b" "c" "d") (list<-list-start (stringlist "a" "b" "c" "d") 2)) :doc "Returns a sub list from start to list end.") (func list<-list-start-end : list-1 [values : list-1 start : int end : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_list_from_list_start_end(generic_list_1, values, start, end); output = vx_core::vx_any_from_any(generic_list_1, any);" :js "vx_collection.vx_list_from_list_start_end(generic_list_1, values, start, end)" :java :auto) :test (test (stringlist "b" "c") (list<-list-start-end (stringlist "a" "b" "c" "d") 2 3)) :doc "Returns a list from another list") (func stringlist<-map : stringlist [map : map-1] (list<-map : stringlist map (fn : string [key : string value : any] key)) :test (test (stringlist "a" "b") (stringlist<-map (intmap :a 1 :b 2))) :doc "Returns a stringlist of keys from any map.")
vx/collection / any<-for-until-loop
Description:
  • Returns a value using an until loop. Maximum 10000 times.
Function Name:
  • any<-for-until-loop
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-until
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
Usage/Test Cases:
  • (test 8 (any<-for-until-loop 1 (fn : boolean [current : int] (> current 6)) (fn : int [current : int] (+ current current))))
Source Code:
  • (func any<-for-until-loop : any-1 [start : any-1 fn-until : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1] (any<-for-until-loop-max start fn-until fn-loop 10000) :test (test 8 (any<-for-until-loop 1 (fn : boolean [current : int] (> current 6)) (fn : int [current : int] (+ current current)))) :doc "Returns a value using an until loop. Maximum 10000 times.")
vx/collection / any<-for-until-loop-max
Description:
  • Returns a value using a until loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue count += 1 output = (fn-loop output) continue = (fn-until output)))
Function Name:
  • any<-for-until-loop-max
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-until
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
    max
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func any<-for-until-loop-max : any-1 [start : any-1 fn-until : boolean<-any fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_any_from_for_until_loop_max(generic_any_1, start, fn_until, fn_loop, max); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "vx_collection.vx_any_from_for_until_loop_max(generic_any_1, start, fn_until, fn_loop, max)" :java :auto) :doc `Returns a value using a until loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue count += 1 output = (fn-loop output) continue = (fn-until output)))`)
vx/collection / any<-for-while-loop
Description:
  • Returns a value using a while loop. Maximum 1000 times.
Function Name:
  • any<-for-while-loop
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-while
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
Usage/Test Cases:
  • (test 8 (any<-for-while-loop 1 (fn : boolean [current : int] (< current 5)) (fn : int [current : int] (+ current current))))
Source Code:
  • (func any<-for-while-loop : any-1 [start : any-1 fn-while : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1] (any<-for-while-loop-max start fn-while fn-loop 1000) :test (test 8 (any<-for-while-loop 1 (fn : boolean [current : int] (< current 5)) (fn : int [current : int] (+ current current)))) :doc "Returns a value using a while loop. Maximum 1000 times.")
vx/collection / any<-for-while-loop-max
Description:
  • Returns a value using a while loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue continue = (fn-while output) (if continue count += 1 output = (fn-loop output))))
Function Name:
  • any<-for-while-loop-max
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-while
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
    max
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func any<-for-while-loop-max : any-1 [start : any-1 fn-while : boolean<-any :: any-1 fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_any_from_for_while_loop_max(generic_any_1, start, fn_while, fn_loop, max); output = vx_core::vx_any_from_any(generic_any_1, any);" :js "vx_collection.vx_any_from_for_while_loop_max(generic_any_1, start, fn_while, fn_loop, max)" :java :auto) :doc "Returns a value using a while loop. output : any-1 := start count : int := 0 (while continue continue : boolean := (count <= max) (if continue continue = (fn-while output) (if continue count += 1 output = (fn-loop output))))")
vx/collection / int<-map-key
Description:
  • Returns the position of key in any map.
Function Name:
  • int<-map-key
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    map
    vx/core/map-1
    key
    vx/core/string
Usage/Test Cases:
  • (test 2 (int<-map-key (stringmap :a "x" :b "y") "b"))
Source Code:
  • (func int<-map-key : int [map : map-1 key : string] (let : int [keys : stringlist := (stringlist<-map map)] (int<-stringlist-find keys key)) :test (test 2 (int<-map-key (stringmap :a "x" :b "y") "b")) :doc "Returns the position of key in any map.")
vx/collection / int<-stringlist-find
Description:
  • Returns the position (first position is 1) of find text in a stringlist.
Function Name:
  • int<-stringlist-find
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    stringlist
    vx/core/stringlist
    find
    vx/core/string
Usage/Test Cases:
  • (test 2 (int<-stringlist-find (stringlist "a" "b") "b"))
Source Code:
  • (func int<-stringlist-find : int [stringlist : stringlist find : string] (let : int [poslist : intlist := (list<-list-intany : intlist stringlist (fn : int [pos : int value : string] (if : int (= find value) pos 0))) gt0list : intlist := (list<-list-filter poslist (fn : int [item : int] item))] (first<-list : int gt0list)) :test (test 2 (int<-stringlist-find (stringlist "a" "b") "b")) :doc "Returns the position (first position is 1) of find text in a stringlist.")
vx/collection / is-list
Description:
  • Returns true if the given value is a list.
Function Name:
  • is-list
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
    Any value
Usage/Test Cases:
  • (test-true (is-list (empty stringlist)))
Source Code:
  • (func is-list : boolean [val : any :doc "Any value"] (= ":list" (extends<-any val)) :test (test-true (is-list (empty stringlist))) :doc "Returns true if the given value is a list.")
vx/collection / is-map
Description:
  • Returns true if the given value is a map.
Function Name:
  • is-map
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    val
    vx/core/any
    Any value
Usage/Test Cases:
  • (test-true (is-map (empty stringmap)))
Source Code:
  • (func is-map : boolean [val : any :doc "Any value"] (= ":map" (extends<-any val)) :test (test-true (is-map (empty stringmap))) :doc "Returns true if the given value is a map.")
vx/collection / list<-for-end-loop
Description:
  • Returns a list of any-1 by iterating i from for to next where each item is (loop i). This is similar to a for next loop in other languages. output : list-1 := (empty list-1) (if start <= end (for i=start to end val : any-1 := (fn-loop i) output += val) (else (for i=start to end; i-- val : any-1 := (fn-loop i) output += val) ))
Function Name:
  • list<-for-end-loop
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/int
    end
    vx/core/int
    fn-loop
    vx/core/any<-int
Usage/Test Cases:
  • (test (intlist 4 9) (list<-for-end-loop : intlist 2 3 (fn [current : int] (* current current))))
Source Code:
  • (func list<-for-end-loop : list-1 [start : int end : int fn-loop : any<-int :: any-1] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_for_end_loop(generic_list_1, start, end, fn_loop); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_for_end_loop(generic_list_1, start, end, fn_loop)" :java :auto) :test (test (intlist 4 9) (list<-for-end-loop : intlist 2 3 (fn [current : int] (* current current)))) :doc `Returns a list of any-1 by iterating i from for to next where each item is (loop i). This is similar to a for next loop in other languages. output : list-1 := (empty list-1) (if start <= end (for i=start to end val : any-1 := (fn-loop i) output += val) (else (for i=start to end; i-- val : any-1 := (fn-loop i) output += val) ))`)
vx/collection / list<-for-while-loop
Description:
  • Returns a list of any-1 using a while loop. Max: 1000
Function Name:
  • list<-for-while-loop
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-while
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
Usage/Test Cases:
Source Code:
  • (func list<-for-while-loop : list-1 [start : any-1 fn-while : boolean<-any fn-loop : any<-any :: any-1 :: any-1] (list<-for-while-loop-max start fn-while fn-loop 1000) /* :test (test (intlist 1 2) (list<-for-while-loop : intlist 1 (fn : boolean [current : int] (< current 3)) (fn [current : int] (+1 current)))) */ :doc "Returns a list of any-1 using a while loop. Max: 1000")
vx/collection / list<-for-while-loop-max
Description:
  • Returns a list of any-1 using a while loop. 1. output : list-1 := (empty list-1) 2. value : any-1 := start. 3. value : any-1 := (fn-loop value). 4. check : boolean := (fn-while value). 5. if (= check true) output := (copy output value), Go to 3 (Maximum max times). 6. else end.
Function Name:
  • list<-for-while-loop-max
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    start
    vx/core/any-1
    fn-while
    vx/core/boolean<-any
    fn-loop
    vx/core/any<-any
    max
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func list<-for-while-loop-max : list-1 [start : any-1 fn-while : boolean<-any fn-loop : any<-any :: any-1 :: any-1 max : int] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_for_while_loop_max(generic_list_1, start, fn_while, fn_loop, max); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_for_while_loop_max(generic_list_1, start, fn_while, fn_loop, max)" :java :auto) :doc `Returns a list of any-1 using a while loop. 1. output : list-1 := (empty list-1) 2. value : any-1 := start. 3. value : any-1 := (fn-loop value). 4. check : boolean := (fn-while value). 5. if (= check true) output := (copy output value), Go to 3 (Maximum max times). 6. else end.`)
vx/collection / list<-list-end
Description:
  • Returns a sub list from positions 0 to end.
Function Name:
  • list<-list-end
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    end
    vx/core/int
Usage/Test Cases:
  • (test (stringlist "a" "b" "c") (list<-list-end (stringlist "a" "b" "c" "d") 3))
Source Code:
  • (func list<-list-end : list-1 [values : list-1 end : int] (list<-list-start-end values 1 end) :test (test (stringlist "a" "b" "c") (list<-list-end (stringlist "a" "b" "c" "d") 3)) :doc "Returns a sub list from positions 0 to end.")
vx/collection / list<-list-filter
Description:
  • Filter List to only include non-empty values
Function Name:
  • list<-list-filter
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    vallist
    vx/core/list-2
    fn-filter
    vx/core/any<-any
Usage/Test Cases:
  • (test (stringlist "a1" "b1" "c1" "d1") (list<-list-filter : stringlist (list "a" 4 "b" (list) "c" (map) "d") (fn : string [val : any] (if (then (is-string val) (string val "1"))))))
Source Code:
  • (func list<-list-filter : list-1 [vallist : list-2 fn-filter : any<-any] (native :cpp "vx_core::Type_any list = vx_collection::vx_list_from_list_filter(generic_list_1, vallist, fn_filter); output = vx_core::vx_any_from_any(generic_list_1, list);" :js "vx_collection.vx_list_from_list_filter(generic_list_1, vallist, fn_filter)" :java :auto) :test (test (stringlist "a1" "b1" "c1" "d1") (list<-list-filter : stringlist (list "a" 4 "b" (list) "c" (map) "d") (fn : string [val : any] (if (then (is-string val) (string val "1")))))) :doc "Filter List to only include non-empty values")
vx/collection / list<-list-filtertypes
Description:
  • Filter List to only include matching types
Function Name:
  • list<-list-filtertypes
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    vallist
    vx/core/list-2
    filtertypes
    vx/core/typelist
Usage/Test Cases:
  • (test (list "a" 1 "b" "c") (list<-list-filtertypes : list (list "a" 1 "b" "c" 4.5) string int))
Source Code:
  • (func list<-list-filtertypes : list-1 [vallist : list-2 filtertypes : typelist :...] (list<-list-filter vallist (fn : any [val : any] (if (is-type<-any-typelist val filtertypes) val))) :test (test (list "a" 1 "b" "c") (list<-list-filtertypes : list (list "a" 1 "b" "c" 4.5) string int)) :doc "Filter List to only include matching types")
vx/collection / list<-list-start
Description:
  • Returns a sub list from start to list end.
Function Name:
  • list<-list-start
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    start
    vx/core/int
Usage/Test Cases:
  • (test (stringlist "b" "c" "d") (list<-list-start (stringlist "a" "b" "c" "d") 2))
Source Code:
  • (func list<-list-start : list-1 [values : list-1 start : int] (list<-list-start-end values start (length<-list values)) :test (test (stringlist "b" "c" "d") (list<-list-start (stringlist "a" "b" "c" "d") 2)) :doc "Returns a sub list from start to list end.")
vx/collection / list<-list-start-end
Description:
  • Returns a list from another list
Function Name:
  • list<-list-start-end
Return Type:
  • vx/core/list-1
Arguments:
  • Name
    Type
    Generic
    Description
    values
    vx/core/list-1
    start
    vx/core/int
    end
    vx/core/int
Usage/Test Cases:
  • (test (stringlist "b" "c") (list<-list-start-end (stringlist "a" "b" "c" "d") 2 3))
Source Code:
  • (func list<-list-start-end : list-1 [values : list-1 start : int end : int] (native :cpp "vx_core::Type_any any = vx_collection::vx_list_from_list_start_end(generic_list_1, values, start, end); output = vx_core::vx_any_from_any(generic_list_1, any);" :js "vx_collection.vx_list_from_list_start_end(generic_list_1, values, start, end)" :java :auto) :test (test (stringlist "b" "c") (list<-list-start-end (stringlist "a" "b" "c" "d") 2 3)) :doc "Returns a list from another list")
vx/collection / stringlist<-map
Description:
  • Returns a stringlist of keys from any map.
Function Name:
  • stringlist<-map
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    map
    vx/core/map-1
Usage/Test Cases:
  • (test (stringlist "a" "b") (stringlist<-map (intmap :a 1 :b 2)))
Source Code:
  • (func stringlist<-map : stringlist [map : map-1] (list<-map : stringlist map (fn : string [key : string value : any] key)) :test (test (stringlist "a" "b") (stringlist<-map (intmap :a 1 :b 2))) :doc "Returns a stringlist of keys from any map.")
vx/data/textblock
Description:
  • Text parser
Package Name:
  • vx/data/textblock
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    collection
    vx/collection
    type
    vx/type
Types:
  • delim, delimlist, textblock, textblocklist
Constants:
  • delimbracketangle, delimbracketcurly, delimbracketsquare, delimclose, delimclosing, delimcomma, delimcomment, delimcommentblock, delimline, delimnonwhitespace, delimparen, delimquote, delimquoteblock, delimspace, delimtest1, delimlisttest1, delimtest2, delimlisttest2, delimtest3, delimlisttest3, delimtext, delimwhitespace
Functions:
  • children<-textblock, delim-first<-delim-delim, delim-first<-string-delimlist, delim-pos<-string-delim, delimlist-pos<-string-delimlist, is-close, is-single, stringlist<-textblocklist, text<-textblock, textblock<-close-textblock, textblock<-empty-textblock, textblock<-open-textblock, textblock<-single-textblock, textblock<-string-delim, textblock<-textblock-delim, textblock-addchild<-textblock-find-child, textblock-delimnotfound, textblock-findparent<-textblock, textblock-init, textblock-parse, textblock-parse<-string-delim, textblock-parse-one, textblock-replace<-textblock-find-replace, textblock-startleft<-string-delim-offset, textblock-startright<-string-delim-offset, textblocklist<-textblocklist-remove
Source Code:
  • (package vx/data/textblock :libs (lib collection :path vx/collection) (lib type :path vx/type) :doc "Text parser") (type delim : struct :properties [name : string starttext : string endtext : string pos : int delimlist : delimlist] :doc "A delimiter type supporting start and end delimiters and positions.") (type delimlist : list :allowtypes [delim] :test (test (new delimlist delimcomma delimwhitespace) (delimlist delimcomma delimwhitespace)) :doc "A list of delim.") (type textblock : struct :properties [name : string text : string startpos : int endpos : int curpos : int line : int column : int delim : delim close : delim parent : textblock children : textblocklist] :doc "A textblock is a tree of text used for parsing by delimter.") (type textblocklist : list :allowtypes [textblock] :doc "A list of textblock.") (const delimbracketangle : delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :doc "Angle Bracket Delimiter") (const delimbracketcurly : delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :doc "Curly Bracket Delimiter") (const delimbracketsquare : delim (delim :name "delimbracketsquare" :starttext "[" :endtext "]") :doc "Square Bracket Delimiter") (const delimclose : delim (delim :name "delimclose") :doc "A placeholder delimiter used to mark the close of whatever is the current delimiter.") (const delimclosing : delim (delim :name "delimclosing") :doc "A placeholder delimiter used to mark the closing of whatever is the current delimiter.") (const delimcomma : delim (delim :name "delimcomma" :starttext ",") :doc "Comma Delimiter") (const delimcomment : delim (delim :name "delimcomment" :starttext "//" :endtext "\n") :doc "Comment Delimiter") (const delimcommentblock : delim (delim :name "delimcommentblock" :starttext "/*" :endtext "*/") :doc "Block Comment Delimiter") (const delimline : delim (delim :name "delimline" :starttext "\n") :doc "New Line Delimiter") (const delimnonwhitespace : delim (delim :name "delimnonwhitespace" :starttext ":nonwhitespace" :endtext ":whitespace") :doc "Placeholder for delimited non-whitespace") (const delimparen : delim (delim :name "delimparen" :starttext "(" :endtext ")") :doc "Parenthesis Delimiter") (const delimquote : delim (delim :name "delimquote" :starttext quote :endtext quote) :doc "Quote Delimiter") (const delimquoteblock : delim (delim :name "delimquoteblock" :starttext "`" :endtext "`") :doc "Block Quote Delimiter") (const delimspace : delim (delim :name "delimspace" :starttext " " :endtext " ") :doc "Space Delimiter") (const delimtest1 : delim (delim :delimlist delimlisttest1) :doc "A delimiter used for test suite") (const delimlisttest1 : delimlist (delimlist delimtest2) :doc "A delimiter used for test suite") (const delimtest2 : delim (copy delimbracketangle :delimlist delimlisttest2) :doc "A delimiter used for test suite") (const delimlisttest2 : delimlist (delimlist delimcomma delimtest3) :doc "A delimiter used for test suite") (const delimtest3 : delim (copy delimbracketcurly :delimlist delimlisttest3) :doc "A delimiter used for test suite") (const delimlisttest3 : delimlist (delimlist delimcomma delimwhitespace) :doc "A delimiter used for test suite") (const delimtext : delim (delim :name "delimtext") :doc "Placeholder for delimited text") (const delimwhitespace : delim (delim :name "delimwhitespace" :starttext ":whitespace") :doc "Placeholder for delimited whitespace") (func children<-textblock : textblocklist [textblock : textblock] (:children textblock) :doc "Returns the child textblocks from a given textblock.") (func delim-first<-delim-delim : delim [delim1 : delim delim2 : delim] (let : delim [pos1 : int := (:pos delim1) pos2 : int := (:pos delim2)] (if : delim (then (= 0 pos2) delim1) (then (= 0 pos1) delim2) (then (is-empty delim2) delim1) (then (is-empty delim1) delim2) (then (< pos2 pos1) delim2) (else delim1))) :test (test (copy delimcomma :pos 1) (delim-first<-delim-delim (copy delimspace :pos 2) (copy delimcomma :pos 1))) (test (empty delim) (delim-first<-delim-delim (delim :pos 0) (empty delim))) :doc "Returns non-empty delim with lowest, non-negative startpos found in string.") (func delim-first<-string-delimlist : delim [text : string delimlist : delimlist] (if : delim (then (is-empty delimlist) (empty delim)) (else (let : delim [resolvedlist : delimlist := (delimlist-pos<-string-delimlist text delimlist)] (any<-list-start-reduce : delim resolvedlist (empty delim) delim-first<-delim-delim)))) :test (test (copy delimcomma :pos 2) (delim-first<-string-delimlist "a, b" (delimlist delimspace delimcomma))) :doc "Returns delim with lowest startpos found in string.") (func delim-pos<-string-delim : delim [text : string delim : delim] (let : delim [find : string := (:starttext delim) pos : int := (typ/int<-string-findkeyword text find)] (if : delim (then (= pos 0) delim) (else (copy delim :pos pos)))) :test (test (copy delimcomma :pos 2) (delim-pos<-string-delim "a,b" delimcomma)) :doc "Return a delim with istart updated to position of first starttext.") (func delimlist-pos<-string-delimlist : delimlist [text : string delimlist : delimlist] (list<-list : delimlist delimlist (fn : delim [delim : delim] (delim-pos<-string-delim text delim))) :test (test (delimlist (copy delimspace :pos 3) (copy delimcomma :pos 2)) (delimlist-pos<-string-delimlist "a, b" (delimlist delimspace delimcomma))) :doc "Returns a delimlist with each delim updated to position of first starttext.") (func is-close : boolean [delimarg : delim] (= (:name delimarg) (:name delimclose)) :doc "Return true if the given delim is a close delim.") (func is-single : boolean [delimarg : delim] (and (!= "" (:starttext delimarg)) (= "" (:endtext delimarg))) :doc "Return true if the given delim is a single text delim.") (func stringlist<-textblocklist : stringlist [textblocklist : textblocklist] (list<-list : stringlist textblocklist text<-textblock) :test (test (stringlist "a" "b") (stringlist<-textblocklist (textblocklist (textblock :text "a") (textblock :text "b")))) :doc "Returns a stringlist from each (:text textblock).") (func text<-textblock : string [block : textblock] (:text block) :test (test "a" (text<-textblock (textblock :text "a"))) :doc "Returns the text from a given textblock.") (func textblock<-close-textblock : textblock [close : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) pos : int := (:pos close) textclose : string := (:starttext close) lenclose : int := (length<-string textclose) posminus : int := (-1 pos) startleft : int := startpos startclose : int := (+ startpos posminus) endclose : int := (switch : int textclose (case :whitespace (int<-string-findkeyword text :nonwhitespace)) (else (+ (-1 startclose) lenclose))) endleft : int := (if : int (= 1 pos) startclose (-1 startclose)) startright : int := (+1 endclose) endright : int := (if : int (< endpos startright) startright endpos) textleft : string := (typ/string<-string-end text posminus) textright : string := (typ/string<-string-start text (+ pos lenclose)) find : textblock := (textblock-findparent<-textblock parent) closefind : delim := (:close find) textfind : string := (:text find) startfind : int := (:startpos find) delimfind : delim := (:delim find) delimright : delim := (delim :delimlist (:delimlist delimfind)) lenfind : int := (- (+1 endclose) startfind) textreplace : string := (string<-string-end textfind lenfind) replace : textblock := (copy find :text textreplace :endpos endclose :delim (copy delimfind :delimlist (empty delimlist)) :close delimclosing) parentchg : textblock := (textblock-replace<-textblock-find-replace parent find replace)] (textblock :text textleft :startpos startleft :endpos endleft :parent (copy textblockarg :text textright :startpos startright :endpos endright :delim delimright :close closefind :parent parentchg))) :test (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock<-close-textblock (copy delimclose :starttext "}" :pos 2) (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))) (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock<-close-textblock (copy delimclose :starttext ">" :pos 1) (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) :doc "Returns a textblock after a close delim found.") (func textblock<-empty-textblock : textblock [empty : delim textblockarg : textblock] :doc "Returns a textblock after an empty delim found.") (func textblock<-open-textblock : textblock [open : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) delima : delim := (:delim textblockarg) pos : int := (:pos open) textopen : string := (:starttext open) textclose : string := (:endtext open) delimlistl : delimlist := (:delimlist open) lenopen : int := (length<-string textopen) posminus : int := (-1 pos) startleft : int := (if : int (= pos 1) (-1 startpos) startpos) endleft : int := (if : int (= pos 1) (-1 startpos) (+ (-1 startleft) posminus)) startright : int := (+ startpos posminus lenopen) startopen : int := (+ startpos posminus) textleft : string := (typ/string<-string-end text posminus) textpar : string := (typ/string<-string-start text pos) textright : string := (typ/string<-string-start text (+ pos lenopen)) close : delim := (copy delimclose :starttext textclose) tbleft : textblock := (if : textblock (then (= "" textleft) (empty textblock)) (else (textblock :text textleft :startpos startleft :endpos endleft))) tbpar1 : textblock := (copy textblockarg :text textpar :startpos startopen :delim (copy open :pos 0 :delimlist (:delimlist delima)) :parent parent) tbfind : textblock := (if : textblock (then (= "" textleft) (empty textblock)) (else (textblock-findparent<-textblock parent))) tbparent : textblock := (if : textblock (then (is-empty tbfind) tbpar1) (else (textblock-addchild<-textblock-find-child tbpar1 tbfind tbleft)))] (textblock :text textright :startpos startright :endpos endpos :delim (delim :delimlist delimlistl) :close close :parent tbparent)) :test (test (textblock :text "c}" :startpos 4 :endpos 5 :close (copy delimclose :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (copy delimbracketcurly :pos 0) :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2))))) (textblock<-open-textblock (copy delimbracketcurly :pos 3) (textblock :text "ab{c}" :startpos 1 :endpos 5 :delim delimbracketcurly :parent (textblock :text "ab{c}" :startpos 1 :endpos 5)))) (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock<-open-textblock (copy delimtest2 :pos 1) (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock<-open-textblock (copy delimtest3 :pos 1) (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))) :doc "Returns a textblock after a close delim found.") (func textblock<-single-textblock : textblock [single : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) pos : int := (:pos single) origsingle : string := (:starttext single) textsingle : string := (switch : string origsingle (case :whitespace (let : string [text2 : string := (typ/string<-string-start text pos) pos2 : int := (typ/int<-string-findkeyword text2 :nonwhitespace) pos3 : int := (if : int (then (= 0 pos2) (length<-string text2)) (then (= pos2 pos) pos2) (else (-1 pos2)))] (typ/string<-string-start-end text pos pos3))) (else origsingle)) delimlistl : delimlist := (:delimlist single) lensingle : int := (length<-string textsingle) posminus : int := (-1 pos) startleft : int := startpos startsingle : int := (+ startpos posminus) endsingle : int := (switch : int textsingle (case :whitespace (int<-string-findkeyword text :nonwhitespace)) (else (+ (-1 startsingle) lensingle))) endleft : int := (if : int (= startsingle startpos) startsingle (-1 startsingle)) startright : int := (+1 endsingle) textleft : string := (typ/string<-string-end text posminus) textpar : string := (typ/string<-string-start text pos) textright : string := (typ/string<-string-start text (+ pos lensingle))] (textblock :text textleft :startpos startleft :endpos endleft :delim (delim :delimlist delimlistl) :parent (textblock :text textsingle :startpos startsingle :endpos endsingle :delim (copy single :pos 0 :delimlist (empty delimlist)) :parent (copy textblockarg :text textright :startpos startright :endpos endpos)))) :test (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock<-single-textblock (copy delimcomma :pos 2) (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock<-single-textblock (copy delimcomma :pos 1) (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock<-single-textblock (copy delimwhitespace :pos 2) (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) :doc "Returns a textblock after a single value delim found.") (func textblock<-string-delim : textblock [text : string delim : delim] (textblock :text text :delim delim :startpos 0 :endpos (length<-string text)) :test (test (textblock :text "a" :startpos 0 :endpos 1 :delim delimcomma) (textblock<-string-delim "a" delimcomma)) :doc "Returns a textblock from a string and delim.") (func textblock<-textblock-delim : textblock [textblock : textblock delim : delim] :doc "Returns a parsed textblock from an unparsed one.") (func textblock-addchild<-textblock-find-child : textblock [textblockarg : textblock find : textblock child : textblock] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // found (and (== find textblockarg)) (copy textblockarg :children (copy (:children textblockarg) child))) (else // recursion (copy textblockarg :parent (textblock-addchild<-textblock-find-child (:parent textblockarg) find child)))) :doc "Add the child to the given parent textblock.") (func textblock-delimnotfound : textblock [textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) delima : delim := (:delim textblockarg) close : delim := (:close textblockarg) parent : textblock := (:parent textblockarg) childp : textblocklist := (:children parent) delimp : delim := (:delim parent) delims : delimlist := (:delimlist delimp)] (if : textblock (then // if delim not closed then error (! (is-empty close)) (let : textblock [msgerr : msg := (msg<-error "closedelimmissing" close) child : textblock := (copy textblockarg :delim (empty delim) :close (empty delim) :parent (empty textblock)) find : textblock := (textblock-findparent<-textblock parent) childrenf : textblocklist := (:children find) childrenr : textblocklist := (copy childrenf child) replace : textblock := (copy find msgerr :children childrenr) parent2 : textblock := (textblock-replace<-textblock-find-replace parent find replace) gparent : textblock := (:parent parent2) parent3 : textblock := (copy parent2 :parent (empty textblock)) childreng : textblocklist := (:children gparent) childrenc : textblocklist := (copy childreng parent3)] (copy gparent :children childrenc msgerr))) (then // if empty parent then textblockarg (is-empty parent) textblockarg) (else // else add textblockarg to parent and return parent (let : textblock [delimchg : delim := (if : delim (is-empty (:delimlist delima)) delima (copy delima :delimlist (empty delimlist))) child : textblock := (if : textblock (= "" text) (empty textblock) (copy textblockarg :delim delimchg :parent (empty textblock))) find : textblock := (textblock-findparent<-textblock parent) closef : delim := (:close find) closing : boolean := (if : boolean (== closef delimclosing) true)] (if : textblock (then closing (let : textblock [parent2 : textblock := (:parent find) find2 : textblock := (textblock-findparent<-textblock parent2) children1 : textblocklist := (if : textblocklist (is-empty child) (:children find) (copy (:children find) child)) replace1 : textblock := (copy find :close (empty delim) :parent (empty textblock) :children children1)] (if : textblock (then (is-empty find2) (copy parent :parent (copy parent2 :children (textblocklist replace1)))) (else (let : textblock [children2 : textblocklist := (copy (:children find2) replace1) replace2 : textblock := (copy find2 :close (empty delim) :children children2) replace : textblock := (textblock-replace<-textblock-find-replace parent2 find2 replace2)] (textblock-replace<-textblock-find-replace parent find replace)))))) (then (is-empty child) parent) (else (textblock-addchild<-textblock-find-child parent find child))))))) :test (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-delimnotfound (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2))))) (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-delimnotfound (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))))) (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-delimnotfound (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))) (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-delimnotfound (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) (test (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))) (textblock-delimnotfound (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))))))))) :doc "Returns a textblock when a delim is not found.") (func textblock-findparent<-textblock : textblock [textblockarg : textblock] (let : textblock [delimcurr : delim := (:delim textblockarg) parent : textblock := (:parent textblockarg) children : textblocklist := (:children textblockarg) starttext : string := (:starttext delimcurr) endtext : string := (:endtext delimcurr)] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // allows children (or (is-empty parent) (and (!= "" starttext) (!= "" endtext))) textblockarg) (else // recursion (textblock-findparent<-textblock parent)))) :doc "Find a parent that accepts a child.") (func textblock-init : textblock [textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) startpos : int := (if : int (= "" text) 0 1) endpos : int := (if : int (= "" text) 0 (length<-string text))] (copy textblockarg :startpos startpos :endpos endpos :parent (copy textblockarg :startpos startpos :endpos endpos :delim (empty delim)))) :test (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-init (textblock :text "<{a,b},{c d}>" :delim delimtest1))) :doc "Returns a textblock ready for parsing.") (func textblock-parse : textblock [textblock : textblock] (collection/any<-for-until-loop-max : textblock textblock (fn : boolean [current : textblock] (is-empty (:parent current))) (fn : textblock [current : textblock] (textblock-parse-one current)) 100000) :bigospace :n^n :bigotime :n^n :test (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse (textblock :text "<{a,b},{c d}>" :delim delimtest1))) :doc "Returns a fully parsed textblock from an initialized textblock.") (func textblock-parse<-string-delim : textblock [text : string delim : delim] (let : textblock [textblockinit : textblock := (textblock<-string-delim text delim)] (textblock-parse textblockinit)) :doc "Returns a fully parsed textblock from a string and delim.") (func textblock-parse-one : textblock [textblockarg : textblock] (let : textblock [delimarg : delim := (:delim textblockarg) close : delim := (:close textblockarg) startpos : int := (:startpos textblockarg) textarg : string := (:text textblockarg) parent : textblock := (:parent textblockarg) is-init : boolean := (and (is-empty parent) (= startpos 0)) starttext : string := (:starttext delimarg) endtext : string := (:endtext delimarg) delimlistarg : delimlist := (:delimlist delimarg) startposchg : int := (if : int (then (= "" textarg) startpos) (then (= 0 startpos) 1) (else startpos)) delimlistcl : delimlist := (if : delimlist (is-empty close) delimlistarg (copy delimlistarg close)) delimfirst : delim := (delim-first<-string-delimlist textarg delimlistcl)] (if : textblock (then // init is-init (textblock-init textblockarg)) (then // empty parent (is-empty parent) textblockarg) (then // no delim found (is-empty delimfirst) (textblock-delimnotfound textblockarg)) (then // close delim (is-close delimfirst) (textblock<-close-textblock delimfirst textblockarg)) (then // single delim (is-single delimfirst) (textblock<-single-textblock delimfirst textblockarg)) (else // open delim (textblock<-open-textblock delimfirst textblockarg)))) :test (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-parse-one (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :delim delimtest1))) (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock-parse-one (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))) (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock-parse-one (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-parse-one (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))))) (test (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))))) (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))) (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-parse-one (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))) (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock-parse-one (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (test (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))) (textblock-parse-one (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))))) (test (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))) (test (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))) (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock-parse-one (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (test (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))) (textblock-parse-one (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))))) (test (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))) (textblock-parse-one (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))))) (test (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))) (textblock-parse-one (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))))) (test (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))) (textblock-parse-one (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))))) (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-parse-one (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) :doc "Returns a textblock that has been parse a single level.") (func textblock-replace<-textblock-find-replace : textblock [textblockarg : textblock find : textblock replace : textblock] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // found (and (== find textblockarg)) replace) (else // recursion (copy textblockarg :parent (textblock-replace<-textblock-find-replace (:parent textblockarg) find replace)))) :doc "Replace the given parent textblock.") (func textblock-startleft<-string-delim-offset : textblock [text : string delim : delim offset : int] (let [pos : int := (:pos delim) start : int := 1 end : int := (- pos 1)] (if (then (= "" text) (empty textblock)) (then (= 0 pos) (empty textblock)) (else (textblock :text (string<-string-start-end text start end) :startpos (+ offset start) :endpos (+ offset end) :curpos 0)))) :test (test (textblock :text "a" :startpos 1 :endpos 1) (textblock-startleft<-string-delim-offset "a,b" (delim :pos 2) 0)) :doc "Returns a textblock constructed from the text before the current delimiter start.") (func textblock-startright<-string-delim-offset : textblock [text : string delimin : delim offset : int] (let [startpos : int := (:pos delimin) starttext : string := (:starttext delimin) endtext : string := (:endtext delimin) delimlist : delimlist := (:delimlist delimin) close : delim := (if : delim (then (= endtext "") (empty delim)) (else (copy delimclose :starttext endtext))) delimlen : int := (switch : int starttext (case :nonwhitespace 0) (case :whitespace 0) (else (length<-string starttext))) curpos : int := 0] (if (then (= text "") (empty textblock)) (then (< startpos 0) (empty textblock)) (else (textblock :text (string<-string-start text startpos) :startpos (+ offset startpos) :curpos curpos :delim delimin :close close)))) :test (test (textblock :text ",b" :startpos 2 :delim (copy delimcomma :pos 2)) (textblock-startright<-string-delim-offset "a,b" (copy delimcomma :pos 2) 0)) (test (textblock :text "<b>c" :startpos 2 :delim (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) :close (copy delimclose :starttext ">")) (textblock-startright<-string-delim-offset "a<b>c" (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) 0)) :doc "Returns a textblock constructed from the text after the current delimiter start.") (func textblocklist<-textblocklist-remove : textblocklist [tblist : textblocklist remove : delim] (list<-list-filter : textblocklist tblist (fn : textblock [textblock : textblock] (let : textblock [delimcurr : delim := (:delim textblock) namecurr : string := (:name delimcurr) nameremove : string := (:name remove)] (if (!= namecurr nameremove) textblock)))) :test (test (textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3")) (textblocklist<-textblocklist-remove (textblocklist (textblock :text "+") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "2") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "3")) delimwhitespace)) :doc "Return a textblocklist with all removedelims removed.")
vx/data/textblock / delim
Description:
  • A delimiter type supporting start and end delimiters and positions.
Type Name:
  • delim
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    starttext
    vx/core/string
    false
    false
    endtext
    vx/core/string
    false
    false
    pos
    vx/core/int
    false
    false
    delimlist
    vx/data/textblock/delimlist
    false
    false
Usage/Test Cases:
Source Code:
  • (type delim : struct :properties [name : string starttext : string endtext : string pos : int delimlist : delimlist] :doc "A delimiter type supporting start and end delimiters and positions.")
vx/data/textblock / delimlist
Description:
  • A list of delim.
Type Name:
  • delimlist
Extends:
  • :list
Default:
Allowed Types:
  • delim
Usage/Test Cases:
  • (test (new delimlist delimcomma delimwhitespace) (delimlist delimcomma delimwhitespace))
Source Code:
  • (type delimlist : list :allowtypes [delim] :test (test (new delimlist delimcomma delimwhitespace) (delimlist delimcomma delimwhitespace)) :doc "A list of delim.")
vx/data/textblock / textblock
Description:
  • A textblock is a tree of text used for parsing by delimter.
Type Name:
  • textblock
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    text
    vx/core/string
    false
    false
    startpos
    vx/core/int
    false
    false
    endpos
    vx/core/int
    false
    false
    curpos
    vx/core/int
    false
    false
    line
    vx/core/int
    false
    false
    column
    vx/core/int
    false
    false
    delim
    vx/data/textblock/delim
    false
    false
    close
    vx/data/textblock/delim
    false
    false
    parent
    vx/data/textblock/textblock
    false
    false
    children
    vx/data/textblock/textblocklist
    false
    false
Usage/Test Cases:
Source Code:
  • (type textblock : struct :properties [name : string text : string startpos : int endpos : int curpos : int line : int column : int delim : delim close : delim parent : textblock children : textblocklist] :doc "A textblock is a tree of text used for parsing by delimter.")
vx/data/textblock / textblocklist
Description:
  • A list of textblock.
Type Name:
  • textblocklist
Extends:
  • :list
Default:
Allowed Types:
  • textblock
Usage/Test Cases:
Source Code:
  • (type textblocklist : list :allowtypes [textblock] :doc "A list of textblock.")
vx/data/textblock / delimbracketangle
Description:
  • Angle Bracket Delimiter
Constant Name:
  • delimbracketangle
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimbracketangle : delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :doc "Angle Bracket Delimiter")
vx/data/textblock / delimbracketcurly
Description:
  • Curly Bracket Delimiter
Constant Name:
  • delimbracketcurly
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimbracketcurly : delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :doc "Curly Bracket Delimiter")
vx/data/textblock / delimbracketsquare
Description:
  • Square Bracket Delimiter
Constant Name:
  • delimbracketsquare
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimbracketsquare : delim (delim :name "delimbracketsquare" :starttext "[" :endtext "]") :doc "Square Bracket Delimiter")
vx/data/textblock / delimclose
Description:
  • A placeholder delimiter used to mark the close of whatever is the current delimiter.
Constant Name:
  • delimclose
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimclose : delim (delim :name "delimclose") :doc "A placeholder delimiter used to mark the close of whatever is the current delimiter.")
vx/data/textblock / delimclosing
Description:
  • A placeholder delimiter used to mark the closing of whatever is the current delimiter.
Constant Name:
  • delimclosing
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimclosing : delim (delim :name "delimclosing") :doc "A placeholder delimiter used to mark the closing of whatever is the current delimiter.")
vx/data/textblock / delimcomma
Description:
  • Comma Delimiter
Constant Name:
  • delimcomma
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimcomma : delim (delim :name "delimcomma" :starttext ",") :doc "Comma Delimiter")
vx/data/textblock / delimcomment
Description:
  • Comment Delimiter
Constant Name:
  • delimcomment
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimcomment : delim (delim :name "delimcomment" :starttext "//" :endtext "\n") :doc "Comment Delimiter")
vx/data/textblock / delimcommentblock
Description:
  • Block Comment Delimiter
Constant Name:
  • delimcommentblock
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimcommentblock : delim (delim :name "delimcommentblock" :starttext "/*" :endtext "*/") :doc "Block Comment Delimiter")
vx/data/textblock / delimline
Description:
  • New Line Delimiter
Constant Name:
  • delimline
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimline : delim (delim :name "delimline" :starttext "\n") :doc "New Line Delimiter")
vx/data/textblock / delimnonwhitespace
Description:
  • Placeholder for delimited non-whitespace
Constant Name:
  • delimnonwhitespace
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimnonwhitespace : delim (delim :name "delimnonwhitespace" :starttext ":nonwhitespace" :endtext ":whitespace") :doc "Placeholder for delimited non-whitespace")
vx/data/textblock / delimparen
Description:
  • Parenthesis Delimiter
Constant Name:
  • delimparen
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimparen : delim (delim :name "delimparen" :starttext "(" :endtext ")") :doc "Parenthesis Delimiter")
vx/data/textblock / delimquote
Description:
  • Quote Delimiter
Constant Name:
  • delimquote
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimquote : delim (delim :name "delimquote" :starttext quote :endtext quote) :doc "Quote Delimiter")
vx/data/textblock / delimquoteblock
Description:
  • Block Quote Delimiter
Constant Name:
  • delimquoteblock
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimquoteblock : delim (delim :name "delimquoteblock" :starttext "`" :endtext "`") :doc "Block Quote Delimiter")
vx/data/textblock / delimspace
Description:
  • Space Delimiter
Constant Name:
  • delimspace
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimspace : delim (delim :name "delimspace" :starttext " " :endtext " ") :doc "Space Delimiter")
vx/data/textblock / delimtest1
Description:
  • A delimiter used for test suite
Constant Name:
  • delimtest1
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimtest1 : delim (delim :delimlist delimlisttest1) :doc "A delimiter used for test suite")
vx/data/textblock / delimlisttest1
Description:
  • A delimiter used for test suite
Constant Name:
  • delimlisttest1
Type:
  • vx/data/textblock/delimlist
Usage/Test Cases:
Source Code:
  • (const delimlisttest1 : delimlist (delimlist delimtest2) :doc "A delimiter used for test suite")
vx/data/textblock / delimtest2
Description:
  • A delimiter used for test suite
Constant Name:
  • delimtest2
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimtest2 : delim (copy delimbracketangle :delimlist delimlisttest2) :doc "A delimiter used for test suite")
vx/data/textblock / delimlisttest2
Description:
  • A delimiter used for test suite
Constant Name:
  • delimlisttest2
Type:
  • vx/data/textblock/delimlist
Usage/Test Cases:
Source Code:
  • (const delimlisttest2 : delimlist (delimlist delimcomma delimtest3) :doc "A delimiter used for test suite")
vx/data/textblock / delimtest3
Description:
  • A delimiter used for test suite
Constant Name:
  • delimtest3
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimtest3 : delim (copy delimbracketcurly :delimlist delimlisttest3) :doc "A delimiter used for test suite")
vx/data/textblock / delimlisttest3
Description:
  • A delimiter used for test suite
Constant Name:
  • delimlisttest3
Type:
  • vx/data/textblock/delimlist
Usage/Test Cases:
Source Code:
  • (const delimlisttest3 : delimlist (delimlist delimcomma delimwhitespace) :doc "A delimiter used for test suite")
vx/data/textblock / delimtext
Description:
  • Placeholder for delimited text
Constant Name:
  • delimtext
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimtext : delim (delim :name "delimtext") :doc "Placeholder for delimited text")
vx/data/textblock / delimwhitespace
Description:
  • Placeholder for delimited whitespace
Constant Name:
  • delimwhitespace
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimwhitespace : delim (delim :name "delimwhitespace" :starttext ":whitespace") :doc "Placeholder for delimited whitespace")
vx/data/textblock / children<-textblock
Description:
  • Returns the child textblocks from a given textblock.
Function Name:
  • children<-textblock
Return Type:
  • vx/data/textblock/textblocklist
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func children<-textblock : textblocklist [textblock : textblock] (:children textblock) :doc "Returns the child textblocks from a given textblock.")
vx/data/textblock / delim-first<-delim-delim
Description:
  • Returns non-empty delim with lowest, non-negative startpos found in string.
Function Name:
  • delim-first<-delim-delim
Return Type:
  • vx/data/textblock/delim
Arguments:
  • Name
    Type
    Generic
    Description
    delim1
    vx/data/textblock/delim
    delim2
    vx/data/textblock/delim
Usage/Test Cases:
  • (test (copy delimcomma :pos 1) (delim-first<-delim-delim (copy delimspace :pos 2) (copy delimcomma :pos 1)))
  • (test (empty delim) (delim-first<-delim-delim (delim :pos 0) (empty delim)))
Source Code:
  • (func delim-first<-delim-delim : delim [delim1 : delim delim2 : delim] (let : delim [pos1 : int := (:pos delim1) pos2 : int := (:pos delim2)] (if : delim (then (= 0 pos2) delim1) (then (= 0 pos1) delim2) (then (is-empty delim2) delim1) (then (is-empty delim1) delim2) (then (< pos2 pos1) delim2) (else delim1))) :test (test (copy delimcomma :pos 1) (delim-first<-delim-delim (copy delimspace :pos 2) (copy delimcomma :pos 1))) (test (empty delim) (delim-first<-delim-delim (delim :pos 0) (empty delim))) :doc "Returns non-empty delim with lowest, non-negative startpos found in string.")
vx/data/textblock / delim-first<-string-delimlist
Description:
  • Returns delim with lowest startpos found in string.
Function Name:
  • delim-first<-string-delimlist
Return Type:
  • vx/data/textblock/delim
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delimlist
    vx/data/textblock/delimlist
Usage/Test Cases:
  • (test (copy delimcomma :pos 2) (delim-first<-string-delimlist "a, b" (delimlist delimspace delimcomma)))
Source Code:
  • (func delim-first<-string-delimlist : delim [text : string delimlist : delimlist] (if : delim (then (is-empty delimlist) (empty delim)) (else (let : delim [resolvedlist : delimlist := (delimlist-pos<-string-delimlist text delimlist)] (any<-list-start-reduce : delim resolvedlist (empty delim) delim-first<-delim-delim)))) :test (test (copy delimcomma :pos 2) (delim-first<-string-delimlist "a, b" (delimlist delimspace delimcomma))) :doc "Returns delim with lowest startpos found in string.")
vx/data/textblock / delim-pos<-string-delim
Description:
  • Return a delim with istart updated to position of first starttext.
Function Name:
  • delim-pos<-string-delim
Return Type:
  • vx/data/textblock/delim
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delim
    vx/data/textblock/delim
Usage/Test Cases:
  • (test (copy delimcomma :pos 2) (delim-pos<-string-delim "a,b" delimcomma))
Source Code:
  • (func delim-pos<-string-delim : delim [text : string delim : delim] (let : delim [find : string := (:starttext delim) pos : int := (typ/int<-string-findkeyword text find)] (if : delim (then (= pos 0) delim) (else (copy delim :pos pos)))) :test (test (copy delimcomma :pos 2) (delim-pos<-string-delim "a,b" delimcomma)) :doc "Return a delim with istart updated to position of first starttext.")
vx/data/textblock / delimlist-pos<-string-delimlist
Description:
  • Returns a delimlist with each delim updated to position of first starttext.
Function Name:
  • delimlist-pos<-string-delimlist
Return Type:
  • vx/data/textblock/delimlist
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delimlist
    vx/data/textblock/delimlist
Usage/Test Cases:
  • (test (delimlist (copy delimspace :pos 3) (copy delimcomma :pos 2)) (delimlist-pos<-string-delimlist "a, b" (delimlist delimspace delimcomma)))
Source Code:
  • (func delimlist-pos<-string-delimlist : delimlist [text : string delimlist : delimlist] (list<-list : delimlist delimlist (fn : delim [delim : delim] (delim-pos<-string-delim text delim))) :test (test (delimlist (copy delimspace :pos 3) (copy delimcomma :pos 2)) (delimlist-pos<-string-delimlist "a, b" (delimlist delimspace delimcomma))) :doc "Returns a delimlist with each delim updated to position of first starttext.")
vx/data/textblock / is-close
Description:
  • Return true if the given delim is a close delim.
Function Name:
  • is-close
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    delimarg
    vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (func is-close : boolean [delimarg : delim] (= (:name delimarg) (:name delimclose)) :doc "Return true if the given delim is a close delim.")
vx/data/textblock / is-single
Description:
  • Return true if the given delim is a single text delim.
Function Name:
  • is-single
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    delimarg
    vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (func is-single : boolean [delimarg : delim] (and (!= "" (:starttext delimarg)) (= "" (:endtext delimarg))) :doc "Return true if the given delim is a single text delim.")
vx/data/textblock / stringlist<-textblocklist
Description:
  • Returns a stringlist from each (:text textblock).
Function Name:
  • stringlist<-textblocklist
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    textblocklist
    vx/data/textblock/textblocklist
Usage/Test Cases:
  • (test (stringlist "a" "b") (stringlist<-textblocklist (textblocklist (textblock :text "a") (textblock :text "b"))))
Source Code:
  • (func stringlist<-textblocklist : stringlist [textblocklist : textblocklist] (list<-list : stringlist textblocklist text<-textblock) :test (test (stringlist "a" "b") (stringlist<-textblocklist (textblocklist (textblock :text "a") (textblock :text "b")))) :doc "Returns a stringlist from each (:text textblock).")
vx/data/textblock / text<-textblock
Description:
  • Returns the text from a given textblock.
Function Name:
  • text<-textblock
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    block
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test "a" (text<-textblock (textblock :text "a")))
Source Code:
  • (func text<-textblock : string [block : textblock] (:text block) :test (test "a" (text<-textblock (textblock :text "a"))) :doc "Returns the text from a given textblock.")
vx/data/textblock / textblock<-close-textblock
Description:
  • Returns a textblock after a close delim found.
Function Name:
  • textblock<-close-textblock
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    close
    vx/data/textblock/delim
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock<-close-textblock (copy delimclose :starttext "}" :pos 2) (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))
  • (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock<-close-textblock (copy delimclose :starttext ">" :pos 1) (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))
Source Code:
  • (func textblock<-close-textblock : textblock [close : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) pos : int := (:pos close) textclose : string := (:starttext close) lenclose : int := (length<-string textclose) posminus : int := (-1 pos) startleft : int := startpos startclose : int := (+ startpos posminus) endclose : int := (switch : int textclose (case :whitespace (int<-string-findkeyword text :nonwhitespace)) (else (+ (-1 startclose) lenclose))) endleft : int := (if : int (= 1 pos) startclose (-1 startclose)) startright : int := (+1 endclose) endright : int := (if : int (< endpos startright) startright endpos) textleft : string := (typ/string<-string-end text posminus) textright : string := (typ/string<-string-start text (+ pos lenclose)) find : textblock := (textblock-findparent<-textblock parent) closefind : delim := (:close find) textfind : string := (:text find) startfind : int := (:startpos find) delimfind : delim := (:delim find) delimright : delim := (delim :delimlist (:delimlist delimfind)) lenfind : int := (- (+1 endclose) startfind) textreplace : string := (string<-string-end textfind lenfind) replace : textblock := (copy find :text textreplace :endpos endclose :delim (copy delimfind :delimlist (empty delimlist)) :close delimclosing) parentchg : textblock := (textblock-replace<-textblock-find-replace parent find replace)] (textblock :text textleft :startpos startleft :endpos endleft :parent (copy textblockarg :text textright :startpos startright :endpos endright :delim delimright :close closefind :parent parentchg))) :test (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock<-close-textblock (copy delimclose :starttext "}" :pos 2) (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))) (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock<-close-textblock (copy delimclose :starttext ">" :pos 1) (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) :doc "Returns a textblock after a close delim found.")
vx/data/textblock / textblock<-empty-textblock
Description:
  • Returns a textblock after an empty delim found.
Function Name:
  • textblock<-empty-textblock
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    empty
    vx/data/textblock/delim
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func textblock<-empty-textblock : textblock [empty : delim textblockarg : textblock] :doc "Returns a textblock after an empty delim found.")
vx/data/textblock / textblock<-open-textblock
Description:
  • Returns a textblock after a close delim found.
Function Name:
  • textblock<-open-textblock
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    open
    vx/data/textblock/delim
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "c}" :startpos 4 :endpos 5 :close (copy delimclose :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (copy delimbracketcurly :pos 0) :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2))))) (textblock<-open-textblock (copy delimbracketcurly :pos 3) (textblock :text "ab{c}" :startpos 1 :endpos 5 :delim delimbracketcurly :parent (textblock :text "ab{c}" :startpos 1 :endpos 5))))
  • (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock<-open-textblock (copy delimtest2 :pos 1) (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))
  • (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock<-open-textblock (copy delimtest3 :pos 1) (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))
Source Code:
  • (func textblock<-open-textblock : textblock [open : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) delima : delim := (:delim textblockarg) pos : int := (:pos open) textopen : string := (:starttext open) textclose : string := (:endtext open) delimlistl : delimlist := (:delimlist open) lenopen : int := (length<-string textopen) posminus : int := (-1 pos) startleft : int := (if : int (= pos 1) (-1 startpos) startpos) endleft : int := (if : int (= pos 1) (-1 startpos) (+ (-1 startleft) posminus)) startright : int := (+ startpos posminus lenopen) startopen : int := (+ startpos posminus) textleft : string := (typ/string<-string-end text posminus) textpar : string := (typ/string<-string-start text pos) textright : string := (typ/string<-string-start text (+ pos lenopen)) close : delim := (copy delimclose :starttext textclose) tbleft : textblock := (if : textblock (then (= "" textleft) (empty textblock)) (else (textblock :text textleft :startpos startleft :endpos endleft))) tbpar1 : textblock := (copy textblockarg :text textpar :startpos startopen :delim (copy open :pos 0 :delimlist (:delimlist delima)) :parent parent) tbfind : textblock := (if : textblock (then (= "" textleft) (empty textblock)) (else (textblock-findparent<-textblock parent))) tbparent : textblock := (if : textblock (then (is-empty tbfind) tbpar1) (else (textblock-addchild<-textblock-find-child tbpar1 tbfind tbleft)))] (textblock :text textright :startpos startright :endpos endpos :delim (delim :delimlist delimlistl) :close close :parent tbparent)) :test (test (textblock :text "c}" :startpos 4 :endpos 5 :close (copy delimclose :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (copy delimbracketcurly :pos 0) :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2))))) (textblock<-open-textblock (copy delimbracketcurly :pos 3) (textblock :text "ab{c}" :startpos 1 :endpos 5 :delim delimbracketcurly :parent (textblock :text "ab{c}" :startpos 1 :endpos 5)))) (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock<-open-textblock (copy delimtest2 :pos 1) (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock<-open-textblock (copy delimtest3 :pos 1) (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))) :doc "Returns a textblock after a close delim found.")
vx/data/textblock / textblock<-single-textblock
Description:
  • Returns a textblock after a single value delim found.
Function Name:
  • textblock<-single-textblock
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    single
    vx/data/textblock/delim
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock<-single-textblock (copy delimcomma :pos 2) (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))
  • (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock<-single-textblock (copy delimcomma :pos 1) (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))
  • (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock<-single-textblock (copy delimwhitespace :pos 2) (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))
Source Code:
  • (func textblock<-single-textblock : textblock [single : delim textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) parent : textblock := (:parent textblockarg) startpos : int := (:startpos textblockarg) endpos : int := (:endpos textblockarg) pos : int := (:pos single) origsingle : string := (:starttext single) textsingle : string := (switch : string origsingle (case :whitespace (let : string [text2 : string := (typ/string<-string-start text pos) pos2 : int := (typ/int<-string-findkeyword text2 :nonwhitespace) pos3 : int := (if : int (then (= 0 pos2) (length<-string text2)) (then (= pos2 pos) pos2) (else (-1 pos2)))] (typ/string<-string-start-end text pos pos3))) (else origsingle)) delimlistl : delimlist := (:delimlist single) lensingle : int := (length<-string textsingle) posminus : int := (-1 pos) startleft : int := startpos startsingle : int := (+ startpos posminus) endsingle : int := (switch : int textsingle (case :whitespace (int<-string-findkeyword text :nonwhitespace)) (else (+ (-1 startsingle) lensingle))) endleft : int := (if : int (= startsingle startpos) startsingle (-1 startsingle)) startright : int := (+1 endsingle) textleft : string := (typ/string<-string-end text posminus) textpar : string := (typ/string<-string-start text pos) textright : string := (typ/string<-string-start text (+ pos lensingle))] (textblock :text textleft :startpos startleft :endpos endleft :delim (delim :delimlist delimlistl) :parent (textblock :text textsingle :startpos startsingle :endpos endsingle :delim (copy single :pos 0 :delimlist (empty delimlist)) :parent (copy textblockarg :text textright :startpos startright :endpos endpos)))) :test (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock<-single-textblock (copy delimcomma :pos 2) (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock<-single-textblock (copy delimcomma :pos 1) (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock<-single-textblock (copy delimwhitespace :pos 2) (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) :doc "Returns a textblock after a single value delim found.")
vx/data/textblock / textblock<-string-delim
Description:
  • Returns a textblock from a string and delim.
Function Name:
  • textblock<-string-delim
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delim
    vx/data/textblock/delim
Usage/Test Cases:
  • (test (textblock :text "a" :startpos 0 :endpos 1 :delim delimcomma) (textblock<-string-delim "a" delimcomma))
Source Code:
  • (func textblock<-string-delim : textblock [text : string delim : delim] (textblock :text text :delim delim :startpos 0 :endpos (length<-string text)) :test (test (textblock :text "a" :startpos 0 :endpos 1 :delim delimcomma) (textblock<-string-delim "a" delimcomma)) :doc "Returns a textblock from a string and delim.")
vx/data/textblock / textblock<-textblock-delim
Description:
  • Returns a parsed textblock from an unparsed one.
Function Name:
  • textblock<-textblock-delim
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    delim
    vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (func textblock<-textblock-delim : textblock [textblock : textblock delim : delim] :doc "Returns a parsed textblock from an unparsed one.")
vx/data/textblock / textblock-addchild<-textblock-find-child
Description:
  • Add the child to the given parent textblock.
Function Name:
  • textblock-addchild<-textblock-find-child
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
    find
    vx/data/textblock/textblock
    child
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func textblock-addchild<-textblock-find-child : textblock [textblockarg : textblock find : textblock child : textblock] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // found (and (== find textblockarg)) (copy textblockarg :children (copy (:children textblockarg) child))) (else // recursion (copy textblockarg :parent (textblock-addchild<-textblock-find-child (:parent textblockarg) find child)))) :doc "Add the child to the given parent textblock.")
vx/data/textblock / textblock-delimnotfound
Description:
  • Returns a textblock when a delim is not found.
Function Name:
  • textblock-delimnotfound
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-delimnotfound (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2)))))
  • (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-delimnotfound (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))))
  • (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-delimnotfound (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))))
  • (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-delimnotfound (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))
  • (test (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))) (textblock-delimnotfound (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)))))))))
Source Code:
  • (func textblock-delimnotfound : textblock [textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) delima : delim := (:delim textblockarg) close : delim := (:close textblockarg) parent : textblock := (:parent textblockarg) childp : textblocklist := (:children parent) delimp : delim := (:delim parent) delims : delimlist := (:delimlist delimp)] (if : textblock (then // if delim not closed then error (! (is-empty close)) (let : textblock [msgerr : msg := (msg<-error "closedelimmissing" close) child : textblock := (copy textblockarg :delim (empty delim) :close (empty delim) :parent (empty textblock)) find : textblock := (textblock-findparent<-textblock parent) childrenf : textblocklist := (:children find) childrenr : textblocklist := (copy childrenf child) replace : textblock := (copy find msgerr :children childrenr) parent2 : textblock := (textblock-replace<-textblock-find-replace parent find replace) gparent : textblock := (:parent parent2) parent3 : textblock := (copy parent2 :parent (empty textblock)) childreng : textblocklist := (:children gparent) childrenc : textblocklist := (copy childreng parent3)] (copy gparent :children childrenc msgerr))) (then // if empty parent then textblockarg (is-empty parent) textblockarg) (else // else add textblockarg to parent and return parent (let : textblock [delimchg : delim := (if : delim (is-empty (:delimlist delima)) delima (copy delima :delimlist (empty delimlist))) child : textblock := (if : textblock (= "" text) (empty textblock) (copy textblockarg :delim delimchg :parent (empty textblock))) find : textblock := (textblock-findparent<-textblock parent) closef : delim := (:close find) closing : boolean := (if : boolean (== closef delimclosing) true)] (if : textblock (then closing (let : textblock [parent2 : textblock := (:parent find) find2 : textblock := (textblock-findparent<-textblock parent2) children1 : textblocklist := (if : textblocklist (is-empty child) (:children find) (copy (:children find) child)) replace1 : textblock := (copy find :close (empty delim) :parent (empty textblock) :children children1)] (if : textblock (then (is-empty find2) (copy parent :parent (copy parent2 :children (textblocklist replace1)))) (else (let : textblock [children2 : textblocklist := (copy (:children find2) replace1) replace2 : textblock := (copy find2 :close (empty delim) :children children2) replace : textblock := (textblock-replace<-textblock-find-replace parent2 find2 replace2)] (textblock-replace<-textblock-find-replace parent find replace)))))) (then (is-empty child) parent) (else (textblock-addchild<-textblock-find-child parent find child))))))) :test (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-delimnotfound (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2))))) (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-delimnotfound (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))))) (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-delimnotfound (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))) (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-delimnotfound (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) (test (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))) (textblock-delimnotfound (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))))))))) :doc "Returns a textblock when a delim is not found.")
vx/data/textblock / textblock-findparent<-textblock
Description:
  • Find a parent that accepts a child.
Function Name:
  • textblock-findparent<-textblock
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func textblock-findparent<-textblock : textblock [textblockarg : textblock] (let : textblock [delimcurr : delim := (:delim textblockarg) parent : textblock := (:parent textblockarg) children : textblocklist := (:children textblockarg) starttext : string := (:starttext delimcurr) endtext : string := (:endtext delimcurr)] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // allows children (or (is-empty parent) (and (!= "" starttext) (!= "" endtext))) textblockarg) (else // recursion (textblock-findparent<-textblock parent)))) :doc "Find a parent that accepts a child.")
vx/data/textblock / textblock-init
Description:
  • Returns a textblock ready for parsing.
Function Name:
  • textblock-init
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-init (textblock :text "<{a,b},{c d}>" :delim delimtest1)))
Source Code:
  • (func textblock-init : textblock [textblockarg : textblock] (let : textblock [text : string := (:text textblockarg) startpos : int := (if : int (= "" text) 0 1) endpos : int := (if : int (= "" text) 0 (length<-string text))] (copy textblockarg :startpos startpos :endpos endpos :parent (copy textblockarg :startpos startpos :endpos endpos :delim (empty delim)))) :test (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-init (textblock :text "<{a,b},{c d}>" :delim delimtest1))) :doc "Returns a textblock ready for parsing.")
vx/data/textblock / textblock-parse
Description:
  • Returns a fully parsed textblock from an initialized textblock.
Function Name:
  • textblock-parse
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse (textblock :text "<{a,b},{c d}>" :delim delimtest1)))
Source Code:
  • (func textblock-parse : textblock [textblock : textblock] (collection/any<-for-until-loop-max : textblock textblock (fn : boolean [current : textblock] (is-empty (:parent current))) (fn : textblock [current : textblock] (textblock-parse-one current)) 100000) :bigospace :n^n :bigotime :n^n :test (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse (textblock :text "<{a,b},{c d}>" :delim delimtest1))) :doc "Returns a fully parsed textblock from an initialized textblock.")
vx/data/textblock / textblock-parse<-string-delim
Description:
  • Returns a fully parsed textblock from a string and delim.
Function Name:
  • textblock-parse<-string-delim
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delim
    vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (func textblock-parse<-string-delim : textblock [text : string delim : delim] (let : textblock [textblockinit : textblock := (textblock<-string-delim text delim)] (textblock-parse textblockinit)) :doc "Returns a fully parsed textblock from a string and delim.")
vx/data/textblock / textblock-parse-one
Description:
  • Returns a textblock that has been parse a single level.
Function Name:
  • textblock-parse-one
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-parse-one (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2)))))
  • (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :delim delimtest1)))
  • (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))
  • (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock-parse-one (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))
  • (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock-parse-one (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))
  • (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-parse-one (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))))
  • (test (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))))
  • (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))
  • (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-parse-one (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))))
  • (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock-parse-one (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))
  • (test (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))) (textblock-parse-one (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))))
  • (test (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))))
  • (test (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))
  • (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock-parse-one (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))
  • (test (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))) (textblock-parse-one (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))))
  • (test (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))) (textblock-parse-one (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9)))))))
  • (test (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))) (textblock-parse-one (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))))
  • (test (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))) (textblock-parse-one (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))))))
  • (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))
  • (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-parse-one (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))
  • (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))))
  • (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))
Source Code:
  • (func textblock-parse-one : textblock [textblockarg : textblock] (let : textblock [delimarg : delim := (:delim textblockarg) close : delim := (:close textblockarg) startpos : int := (:startpos textblockarg) textarg : string := (:text textblockarg) parent : textblock := (:parent textblockarg) is-init : boolean := (and (is-empty parent) (= startpos 0)) starttext : string := (:starttext delimarg) endtext : string := (:endtext delimarg) delimlistarg : delimlist := (:delimlist delimarg) startposchg : int := (if : int (then (= "" textarg) startpos) (then (= 0 startpos) 1) (else startpos)) delimlistcl : delimlist := (if : delimlist (is-empty close) delimlistarg (copy delimlistarg close)) delimfirst : delim := (delim-first<-string-delimlist textarg delimlistcl)] (if : textblock (then // init is-init (textblock-init textblockarg)) (then // empty parent (is-empty parent) textblockarg) (then // no delim found (is-empty delimfirst) (textblock-delimnotfound textblockarg)) (then // close delim (is-close delimfirst) (textblock<-close-textblock delimfirst textblockarg)) (then // single delim (is-single delimfirst) (textblock<-single-textblock delimfirst textblockarg)) (else // open delim (textblock<-open-textblock delimfirst textblockarg)))) :test (test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))) (textblock-parse-one (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :delim delimtest1))) (test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock-parse-one (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))) (test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock-parse-one (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-parse-one (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))))) (test (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))))) (test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))) (test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-parse-one (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))) (test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock-parse-one (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (test (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))) (textblock-parse-one (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))))) (test (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))) (test (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))) (test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock-parse-one (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (test (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))) (textblock-parse-one (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))))) (test (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))) (textblock-parse-one (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))))) (test (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))) (textblock-parse-one (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))))) (test (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))) (textblock-parse-one (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))))) (test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-parse-one (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))) (test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))) :doc "Returns a textblock that has been parse a single level.")
vx/data/textblock / textblock-replace<-textblock-find-replace
Description:
  • Replace the given parent textblock.
Function Name:
  • textblock-replace<-textblock-find-replace
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    textblockarg
    vx/data/textblock/textblock
    find
    vx/data/textblock/textblock
    replace
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func textblock-replace<-textblock-find-replace : textblock [textblockarg : textblock find : textblock replace : textblock] (if : textblock (then // empty (is-empty textblockarg) (empty textblock)) (then // found (and (== find textblockarg)) replace) (else // recursion (copy textblockarg :parent (textblock-replace<-textblock-find-replace (:parent textblockarg) find replace)))) :doc "Replace the given parent textblock.")
vx/data/textblock / textblock-startleft<-string-delim-offset
Description:
  • Returns a textblock constructed from the text before the current delimiter start.
Function Name:
  • textblock-startleft<-string-delim-offset
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delim
    vx/data/textblock/delim
    offset
    vx/core/int
Usage/Test Cases:
  • (test (textblock :text "a" :startpos 1 :endpos 1) (textblock-startleft<-string-delim-offset "a,b" (delim :pos 2) 0))
Source Code:
  • (func textblock-startleft<-string-delim-offset : textblock [text : string delim : delim offset : int] (let [pos : int := (:pos delim) start : int := 1 end : int := (- pos 1)] (if (then (= "" text) (empty textblock)) (then (= 0 pos) (empty textblock)) (else (textblock :text (string<-string-start-end text start end) :startpos (+ offset start) :endpos (+ offset end) :curpos 0)))) :test (test (textblock :text "a" :startpos 1 :endpos 1) (textblock-startleft<-string-delim-offset "a,b" (delim :pos 2) 0)) :doc "Returns a textblock constructed from the text before the current delimiter start.")
vx/data/textblock / textblock-startright<-string-delim-offset
Description:
  • Returns a textblock constructed from the text after the current delimiter start.
Function Name:
  • textblock-startright<-string-delim-offset
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    delimin
    vx/data/textblock/delim
    offset
    vx/core/int
Usage/Test Cases:
  • (test (textblock :text ",b" :startpos 2 :delim (copy delimcomma :pos 2)) (textblock-startright<-string-delim-offset "a,b" (copy delimcomma :pos 2) 0))
  • (test (textblock :text "<b>c" :startpos 2 :delim (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) :close (copy delimclose :starttext ">")) (textblock-startright<-string-delim-offset "a<b>c" (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) 0))
Source Code:
  • (func textblock-startright<-string-delim-offset : textblock [text : string delimin : delim offset : int] (let [startpos : int := (:pos delimin) starttext : string := (:starttext delimin) endtext : string := (:endtext delimin) delimlist : delimlist := (:delimlist delimin) close : delim := (if : delim (then (= endtext "") (empty delim)) (else (copy delimclose :starttext endtext))) delimlen : int := (switch : int starttext (case :nonwhitespace 0) (case :whitespace 0) (else (length<-string starttext))) curpos : int := 0] (if (then (= text "") (empty textblock)) (then (< startpos 0) (empty textblock)) (else (textblock :text (string<-string-start text startpos) :startpos (+ offset startpos) :curpos curpos :delim delimin :close close)))) :test (test (textblock :text ",b" :startpos 2 :delim (copy delimcomma :pos 2)) (textblock-startright<-string-delim-offset "a,b" (copy delimcomma :pos 2) 0)) (test (textblock :text "<b>c" :startpos 2 :delim (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) :close (copy delimclose :starttext ">")) (textblock-startright<-string-delim-offset "a<b>c" (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) 0)) :doc "Returns a textblock constructed from the text after the current delimiter start.")
vx/data/textblock / textblocklist<-textblocklist-remove
Description:
  • Return a textblocklist with all removedelims removed.
Function Name:
  • textblocklist<-textblocklist-remove
Return Type:
  • vx/data/textblock/textblocklist
Arguments:
  • Name
    Type
    Generic
    Description
    tblist
    vx/data/textblock/textblocklist
    remove
    vx/data/textblock/delim
Usage/Test Cases:
  • (test (textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3")) (textblocklist<-textblocklist-remove (textblocklist (textblock :text "+") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "2") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "3")) delimwhitespace))
Source Code:
  • (func textblocklist<-textblocklist-remove : textblocklist [tblist : textblocklist remove : delim] (list<-list-filter : textblocklist tblist (fn : textblock [textblock : textblock] (let : textblock [delimcurr : delim := (:delim textblock) namecurr : string := (:name delimcurr) nameremove : string := (:name remove)] (if (!= namecurr nameremove) textblock)))) :test (test (textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3")) (textblocklist<-textblocklist-remove (textblocklist (textblock :text "+") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "2") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "3")) delimwhitespace)) :doc "Return a textblocklist with all removedelims removed.")
vx/repl
Description:
  • Read-Evaluate-Print-Loop processor.
Package Name:
  • vx/repl
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    coll
    vx/collection
    type
    vx/type
    tb
    vx/data/textblock
    javafuture
    java.util.concurrent.CompletableFuture
Types:
  • liblist, repl, replarglist, repllist
Constants:
  • delimvxlisp, delimvxlispbracket, delimvxlispparen
Functions:
  • any<-liblist-string, any<-macro, any<-repl, any<-script, any-repl<-functype-args, anylist<-repllist, replarglist<-replarglist-textblock-argmap, argmap<-textblock-argmap, const<-string, repl<-liblist-string, repl<-macro, repl<-script, repl<-string-argmap, repl<-textblock, repl<-textblock-argmap, repl-bracket<-textblock-argmap, repl-empty<-textblock-argmap, repl-paren<-textblock-argmap, repllist<-textblocklist-argmap, textblock<-script, typefunc<-string
Source Code:
  • (package vx/repl :libs (lib coll :path vx/collection) (lib type :path vx/type) (lib tb :path vx/data/textblock) (lib javafuture) :doc "Read-Evaluate-Print-Loop processor.") (type liblist : list :allowtypes [string] :doc "List of library names") (type repl : struct :properties [name : string type : any repllist : repllist async : boolean val : any doc : string] :doc "Repl structure") (type replarglist : struct :properties [key : string current : repl repllist : repllist] :doc "Builder for a repllist") (type repllist : list :allowtypes [repl] :doc "List of repl") (const delimvxlisp : delim (delim :name "delimvxlisp" :delimlist (delimlist delimvxlispparen delimcomment delimcommentblock)) :doc "vxlisp File Delimiters") (const delimvxlispbracket : delim (copy delimbracketsquare :name "delimvxlispbracketsquare" :delimlist (delimlist delimcomment delimcommentblock delimquote delimquoteblock delimwhitespace delimvxlispparen)) :doc "vxlisp Square Bracket Delimiters") (const delimvxlispparen : delim (copy delimparen :name "delimvxlispparen" :delimlist (delimlist delimcomment delimcommentblock delimquote delimquoteblock delimwhitespace delimvxlispbracket delimvxlispparen)) :doc "vxlisp Paren Delimiters") (func any<-liblist-string : any [liblist : liblist text : string :doc "Program to run"] (let : any [repl : repl := (repl<-liblist-string liblist text)] (any<-repl repl)) :context :doc "Run an arbitrary program in the REPL.") (func any<-macro : any-1 [anylist : anylist :...] (let : any-1 [repl : repl := (repl<-macro anylist) val : any := (any<-repl repl)] (any<-any : any-1 val)) :context :test (test 5 (any<-macro : int "(+ " (- 7 5) " 3)")) :doc "A function that joins any number of values into a string and then parses and evaluates it.") (func any<-repl : any [repl : repl] (let : any [val : any := (:val repl) repltype : any := (:type repl) repllist : repllist := (:repllist repl) args : anylist := (anylist<-repllist repllist)] (if (then (!-empty val) val) (then (is-func repltype) (any-repl<-functype-args repltype args)) (else (new repltype args)))) :context :test (test "HelloWorld" (any<-repl (repl :type string :repllist (repllist (repl :val "Hello") (repl :val "World") )))) (test 5 (any<-repl (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))))) :doc "Run an arbitrary program in the REPL.") (func any<-script : any [script : string] (let : any [textblock : tb/textblock := (textblock<-script script) repl : repl := (repl<-textblock textblock)] (any<-repl repl)) /* :test (test 2 (any<-script "2")) (test infinity (any<-script "infinity")) */ :test (test 5 (any<-script "(+ 2 3)")) :context :sideeffects "Since any code can be run. This is unsafe by nature." :doc "Run an arbitrary script.") (func any-repl<-functype-args : any [type : any args : anylist] (native :cpp "vx_core::Type_replfunc replfunc = dynamic_cast<vx_core::Type_replfunc>(type); output = replfunc->vx_repl(args);" :js "const vxvalue = type['vx_value'] if (vxvalue != undefined) { const fn = vxvalue['fn'] if (fn != undefined) { output = fn(...args) } }" :java "if (type instanceof Core.Type_replfunc) { Core.Type_replfunc replfunc = (Core.Type_replfunc)type; output = replfunc.vx_repl(args); }") :doc "Returns any from a repl func and args.") (func anylist<-repllist : anylist [repllist : repllist] (list<-list : anylist repllist (fn : any [repl : repl] (any<-repl repl))) :context :doc "Run an arbitrary program in the REPL.") (func replarglist<-replarglist-textblock-argmap : replarglist [replargs : replarglist tb : tb/textblock argmap : argmap] (let : replarglist [key : string := (:key replargs) current : repl := (:current replargs) repllist : repllist := (:repllist replargs) currlist : repllist := (:repllist current) text : string := (:text textblock)] (if : replarglist (then (= key "") (if : replarglist (then (= text ":") (copy replargs :key text)) (then (= text ":=") (copy replargs :key text)) (then (= text ":doc") (copy replargs :key text)) (else // new arg (copy replargs :current (repl :name text) :repllist (copy repllist current))))) (then (= key ":") (copy replargs :key "" :current (copy current :type text))) (then (= key ":=") (copy replargs :key "" :current (copy current :repllist (copy currlist (repl<-textblock-argmap tb argmap))))) (then (= key ":doc") (copy replargs :key "" :current (copy current :doc text))) (else replargs))) :doc "Returns a modified replarglist from by applying a textblock") (func argmap<-textblock-argmap : argmap [textblock : tb/textblock argmap : argmap] (if : argmap (!= "delimbracketsquare" (:name (:delim textblock))) argmap argmap) :doc "Returns an argmap with parsed args from textblock added.") (func const<-string : any [text : string] (let : any [pkgpos : int := (int<-string-findlast text "/") pkgname : string := (if : string (= 0 pkgpos) "vx/core" (type/string<-string-end text (-1 pkgpos))) name : string := (if : string (= 0 pkgpos) text (type/string<-string-start text (+1 pkgpos))) pkg : package := (package-global<-name pkgname) constmap : constmap := (:constmap pkg) constval : any := (any<-map constmap name)] (if : any (!-empty constval) constval (empty any))) :test (test infinity (const<-string "infinity")) (test tb/delimcomma (const<-string "vx/data/textblock/delimcomma")) :doc "Returns a constant from a fully qualified name.") (func repl<-liblist-string : repl [liblist : liblist text : string :doc "Program to run"] :doc "Returns a repl from the given text.") (func repl<-macro : repl [anylist : anylist :...] (let : repl [textlist : stringlist := (list<-list : stringlist anylist (fn [item : any] : string (let : string [typ : any := (type<-any item)] (switch : string typ (case string (any<-any : string item)) (else (string<-any item)))))) script : string := (type/string<-stringlist-join textlist "") tb : tb/textblock := (textblock<-script script)] (repl<-textblock tb)) :context :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-macro "(+ " (- 7 5) " 3)")) :doc "A function that joins any number of values into a string and then parses it.") (func repl<-script : repl [script : string] (let [textblock : tb/textblock := (textblock<-script script)] (repl<-textblock textblock)) :test (test (repl :val 2) (repl<-script "2")) (test (repl :val infinity) (repl<-script "infinity")) (test (repl :type +) (repl<-script "+")) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-script "(+ 2 3)")) :doc "Returns a parsed repl from a string") (func repl<-string-argmap : repl [text : string argmap : argmap] (if : repl (then // if starts and ends quote (and (type/boolean<-string-starts text quote) (type/boolean<-string-ends text quote)) (repl :val (type/string<-string-start-end text 2 -1))) (then // then if is int (is-int text) (repl :val (int<-string text))) (then // then if is float (is-float text) (repl :val (float<-string text))) (else (let : repl [arg : any := (any<-map argmap text)] (if : repl (then // if in argmap (!-empty arg) (repl :val arg)) (else (let : repl [cnst : any := (const<-string text)] (if : repl (then (!-empty cnst) (repl :val cnst)) (else (let : repl [typefunc : any := (typefunc<-string text)] (if : repl (then (!-empty typefunc) (repl :type typefunc)) (else // error (repl (msg<-error :repltypenotfound text))))))))))))) :test (test (repl :val "Hello") (repl<-string-argmap `"Hello"` (empty argmap))) (test (repl :val 2) (repl<-string-argmap "2" (empty argmap))) (test (repl :val 2.3) (repl<-string-argmap "2.3" (empty argmap))) (test (repl :val infinity) (repl<-string-argmap "infinity" (empty argmap))) (test (repl :val tb/delimcomma) (repl<-string-argmap "vx/data/textblock/delimcomma" (empty argmap))) (test (repl :type string) (repl<-string-argmap "string" (empty argmap))) (test (repl :type +) (repl<-string-argmap "+" (empty argmap))) :doc "Returns a function, type, const or primitive from given string.") (func repl<-textblock : repl [textblock : tb/textblock] (repl<-textblock-argmap textblock (empty argmap)) :test (test (repl :val 2) (repl<-textblock (tb/textblock :text "2"))) (test (repl :type +) (repl<-textblock (tb/textblock :text "+"))) (test (repl :type +) (repl<-textblock (tb/textblock :text "+"))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))))) :doc "Returns a repl from a parsed textblock") (func repl<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [delim : delim := (:delim textblock) starttext : string := (:starttext delim)] (switch : repl starttext (case "" (repl-empty<-textblock-argmap textblock argmap)) (case (:starttext tb/delimparen) (repl-paren<-textblock-argmap textblock argmap)) (case (:starttext tb/delimbracketsquare) (repl-bracket<-textblock-argmap textblock argmap)))) :test (test (repl :val 2) (repl<-textblock-argmap (tb/textblock :text "2") (empty argmap))) (test (repl :type +) (repl<-textblock-argmap (tb/textblock :text "+") (empty argmap))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap))) :doc "Returns a repl from a parsed textblock") (func repl-bracket<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (repl) /* (let : repl [childlst : tb/textblocklist := (:children textblock) children : tb/textblocklist := (tb/textblocklist<-textblocklist-remove childlst tb/delimwhitespace) tbname : tb/textblock := (:1 children) sname : string := (:text tbname) tbtype : tb/textblock := (tb/textblock<-textblocklist-key children ":") tbvalue : tb/textblock := (tb/textblock<-textblocklist-key children ":=") tbdoc : tb/textblock := (tb/textblock<-textblocklist-key children ":doc") replarg : repl := (repl<-string-argmap "vx/core/arg" argmap) repls : repllist := (repllist replarg) replargs : repl := (repl<-string-argmap "vx/core/arglist" argmap)] (copy replargs :repllist repls)) :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl-bracket<-textblock-argmap (tb/textblock :text "[val : int := (+ 2 3)]" :delim (copy delimvxlispbracket :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "val") (tb/textblock :text ":") (tb/textblock :text "int") (tb/textblock :text ":=") (tb/textblock :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap)))*/ :doc "Returns a repl from a squarebracket parsed textblock") (func repl-empty<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [children : tb/textblocklist := (:children textblock) len : int := (length<-list children)] (switch : repl len (case 0 (repl<-string-argmap (:text textblock) argmap)) (case 1 (repl<-textblock-argmap (:1 children) argmap)) (else (repl (msg<-error "Empty delim cannot have more than one child."))))) :test (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "2") (empty argmap))) (test (repl :type +) (repl-empty<-textblock-argmap (tb/textblock :text "+") (empty argmap))) (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2"))) (empty argmap))) (test (repl (msg<-error "Empty delim cannot have more than one child.")) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2") (tb/textblock :text "3"))) (empty argmap))) :doc "Returns a repl from an empty delim textblock") (func repl-paren<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [childlst : tb/textblocklist := (:children textblock) children : tb/textblocklist := (tb/textblocklist<-textblocklist-remove childlst tb/delimwhitespace) tbfunc : tb/textblock := (:1 children) sfunc : string := (:text tbfunc) replfunc : repl := (repl<-string-argmap sfunc argmap) typefunc : any := (:type replfunc) posarg : int := (switch : int typefunc (case vx/core/let 3) (case vx/core/fn 3) (else 2)) argmap2 : argmap := (switch : argmap typefunc (case vx/core/let (argmap<-textblock-argmap (:3 children) argmap)) (case vx/core/fn (argmap<-textblock-argmap (:3 children) argmap)) (else argmap)) tbargs : tb/textblocklist := (coll/list<-list-start children posarg) replargs : repllist := (repllist<-textblocklist-argmap tbargs argmap)] (copy replfunc :repllist replargs)) :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl-paren<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap))) :doc "Returns a repl from a parsed textblock") (func repllist<-textblocklist-argmap : repllist [textblocklist : tb/textblocklist argmap : argmap] (list<-list : repllist textblocklist (fn : repl [textblock : tb/textblock] (repl<-textblock textblock))) :doc "Returns a repllist from a parsed textblocklist") (func textblock<-script : tb/textblock [script : string] (tb/textblock-parse<-string-delim script delimvxlisp) :test (test (tb/textblock :text "infinity" :startpos 1 :endpos 8 :children (tb/textblocklist (tb/textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp")))) (textblock<-script "infinity")) (test (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+" :startpos 2 :endpos 2) (tb/textblock :text " " :startpos 3 :endpos 3 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2" :startpos 4 :endpos 4) (tb/textblock :text " " :startpos 5 :endpos 5 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3" :startpos 6 :endpos 6))))) (textblock<-script "(+ 2 3)")) :doc "Returns a parsed textblock from a string") (func typefunc<-string : any [text : string] (let : any [pkgpos : int := (int<-string-findlast text "/") pkgname : string := (if : string (= 0 pkgpos) "vx/core" (type/string<-string-end text (-1 pkgpos))) name : string := (if : string (= 0 pkgpos) text (type/string<-string-start text (+1 pkgpos))) pkg : package := (package-global<-name pkgname) typemap : typemap := (:typemap pkg) typeval : any := (any<-map typemap name)] (if : any (!-empty typeval) typeval (let : any [funcmap : funcmap := (:funcmap pkg) funcval : any := (any<-map funcmap name)] (if : any (!-empty funcval) funcval (empty any))))) :test (test string (typefunc<-string "string")) (test + (typefunc<-string "+")) :doc "Returns a type, or func from a fully qualified name.") /* (func any<-repl-async : any [repl : repl] (let-async : any [val : any := (:val repl) repltype : any := (:type repl) repllist : repllist := (:repllist repl) args : anylist := (anylist<-repllist repllist)] (if (then (!-empty val) val) (then (is-func repltype) (any-repl<-functype-args repltype args)) (else (new repltype args)))) :async :context :doc "Run an arbitrary program in the REPL.") (func any<-script-async : any [text : string] (let-async : any [textblock : tb/textblock := (textblock-repl<-string text) repl : repl := (repl<-textblock textblock)] (any<-repl-async repl)) :context :async :sideeffects "Since any code can be run. This is unsafe by nature." :doc "Run an arbitrary script asynchronously.") */
vx/repl / liblist
Description:
  • List of library names
Type Name:
  • liblist
Extends:
  • :list
Default:
Allowed Types:
  • string
Usage/Test Cases:
Source Code:
  • (type liblist : list :allowtypes [string] :doc "List of library names")
vx/repl / repl
Description:
  • Repl structure
Type Name:
  • repl
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    type
    vx/core/any
    false
    false
    repllist
    vx/repl/repllist
    false
    false
    async
    vx/core/boolean
    false
    false
    val
    vx/core/any
    false
    false
    doc
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type repl : struct :properties [name : string type : any repllist : repllist async : boolean val : any doc : string] :doc "Repl structure")
vx/repl / replarglist
Description:
  • Builder for a repllist
Type Name:
  • replarglist
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    key
    vx/core/string
    false
    false
    current
    vx/repl/repl
    false
    false
    repllist
    vx/repl/repllist
    false
    false
Usage/Test Cases:
Source Code:
  • (type replarglist : struct :properties [key : string current : repl repllist : repllist] :doc "Builder for a repllist")
vx/repl / repllist
Description:
  • List of repl
Type Name:
  • repllist
Extends:
  • :list
Default:
Allowed Types:
  • repl
Usage/Test Cases:
Source Code:
  • (type repllist : list :allowtypes [repl] :doc "List of repl")
vx/repl / delimvxlisp
Description:
  • vxlisp File Delimiters
Constant Name:
  • delimvxlisp
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimvxlisp : delim (delim :name "delimvxlisp" :delimlist (delimlist delimvxlispparen delimcomment delimcommentblock)) :doc "vxlisp File Delimiters")
vx/repl / delimvxlispbracket
Description:
  • vxlisp Square Bracket Delimiters
Constant Name:
  • delimvxlispbracket
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimvxlispbracket : delim (copy delimbracketsquare :name "delimvxlispbracketsquare" :delimlist (delimlist delimcomment delimcommentblock delimquote delimquoteblock delimwhitespace delimvxlispparen)) :doc "vxlisp Square Bracket Delimiters")
vx/repl / delimvxlispparen
Description:
  • vxlisp Paren Delimiters
Constant Name:
  • delimvxlispparen
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimvxlispparen : delim (copy delimparen :name "delimvxlispparen" :delimlist (delimlist delimcomment delimcommentblock delimquote delimquoteblock delimwhitespace delimvxlispbracket delimvxlispparen)) :doc "vxlisp Paren Delimiters")
vx/repl / any<-liblist-string
Description:
  • Run an arbitrary program in the REPL.
Function Name:
  • any<-liblist-string
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    liblist
    vx/repl/liblist
    text
    vx/core/string
    Program to run
Usage/Test Cases:
Source Code:
  • (func any<-liblist-string : any [liblist : liblist text : string :doc "Program to run"] (let : any [repl : repl := (repl<-liblist-string liblist text)] (any<-repl repl)) :context :doc "Run an arbitrary program in the REPL.")
vx/repl / any<-macro
Description:
  • A function that joins any number of values into a string and then parses and evaluates it.
Function Name:
  • any<-macro
Return Type:
  • vx/core/any-1
Arguments:
  • Name
    Type
    Generic
    Description
    anylist
    vx/core/anylist
Usage/Test Cases:
  • (test 5 (any<-macro : int "(+ " (- 7 5) " 3)"))
Source Code:
  • (func any<-macro : any-1 [anylist : anylist :...] (let : any-1 [repl : repl := (repl<-macro anylist) val : any := (any<-repl repl)] (any<-any : any-1 val)) :context :test (test 5 (any<-macro : int "(+ " (- 7 5) " 3)")) :doc "A function that joins any number of values into a string and then parses and evaluates it.")
vx/repl / any<-repl
Description:
  • Run an arbitrary program in the REPL.
Function Name:
  • any<-repl
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    repl
    vx/repl/repl
Usage/Test Cases:
  • (test "HelloWorld" (any<-repl (repl :type string :repllist (repllist (repl :val "Hello") (repl :val "World") ))))
  • (test 5 (any<-repl (repl :type + :repllist (repllist (repl :val 2) (repl :val 3)))))
Source Code:
  • (func any<-repl : any [repl : repl] (let : any [val : any := (:val repl) repltype : any := (:type repl) repllist : repllist := (:repllist repl) args : anylist := (anylist<-repllist repllist)] (if (then (!-empty val) val) (then (is-func repltype) (any-repl<-functype-args repltype args)) (else (new repltype args)))) :context :test (test "HelloWorld" (any<-repl (repl :type string :repllist (repllist (repl :val "Hello") (repl :val "World") )))) (test 5 (any<-repl (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))))) :doc "Run an arbitrary program in the REPL.")
vx/repl / any<-script
Description:
  • Run an arbitrary script.
Function Name:
  • any<-script
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    script
    vx/core/string
Usage/Test Cases:
  • (test 5 (any<-script "(+ 2 3)"))
Source Code:
  • (func any<-script : any [script : string] (let : any [textblock : tb/textblock := (textblock<-script script) repl : repl := (repl<-textblock textblock)] (any<-repl repl)) /* :test (test 2 (any<-script "2")) (test infinity (any<-script "infinity")) */ :test (test 5 (any<-script "(+ 2 3)")) :context :sideeffects "Since any code can be run. This is unsafe by nature." :doc "Run an arbitrary script.")
vx/repl / any-repl<-functype-args
Description:
  • Returns any from a repl func and args.
Function Name:
  • any-repl<-functype-args
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    type
    vx/core/any
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func any-repl<-functype-args : any [type : any args : anylist] (native :cpp "vx_core::Type_replfunc replfunc = dynamic_cast<vx_core::Type_replfunc>(type); output = replfunc->vx_repl(args);" :js "const vxvalue = type['vx_value'] if (vxvalue != undefined) { const fn = vxvalue['fn'] if (fn != undefined) { output = fn(...args) } }" :java "if (type instanceof Core.Type_replfunc) { Core.Type_replfunc replfunc = (Core.Type_replfunc)type; output = replfunc.vx_repl(args); }") :doc "Returns any from a repl func and args.")
vx/repl / anylist<-repllist
Description:
  • Run an arbitrary program in the REPL.
Function Name:
  • anylist<-repllist
Return Type:
  • vx/core/anylist
Arguments:
  • Name
    Type
    Generic
    Description
    repllist
    vx/repl/repllist
Usage/Test Cases:
Source Code:
  • (func anylist<-repllist : anylist [repllist : repllist] (list<-list : anylist repllist (fn : any [repl : repl] (any<-repl repl))) :context :doc "Run an arbitrary program in the REPL.")
vx/repl / replarglist<-replarglist-textblock-argmap
Description:
  • Returns a modified replarglist from by applying a textblock
Function Name:
  • replarglist<-replarglist-textblock-argmap
Return Type:
  • vx/repl/replarglist
Arguments:
  • Name
    Type
    Generic
    Description
    replargs
    vx/repl/replarglist
    tb
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
Source Code:
  • (func replarglist<-replarglist-textblock-argmap : replarglist [replargs : replarglist tb : tb/textblock argmap : argmap] (let : replarglist [key : string := (:key replargs) current : repl := (:current replargs) repllist : repllist := (:repllist replargs) currlist : repllist := (:repllist current) text : string := (:text textblock)] (if : replarglist (then (= key "") (if : replarglist (then (= text ":") (copy replargs :key text)) (then (= text ":=") (copy replargs :key text)) (then (= text ":doc") (copy replargs :key text)) (else // new arg (copy replargs :current (repl :name text) :repllist (copy repllist current))))) (then (= key ":") (copy replargs :key "" :current (copy current :type text))) (then (= key ":=") (copy replargs :key "" :current (copy current :repllist (copy currlist (repl<-textblock-argmap tb argmap))))) (then (= key ":doc") (copy replargs :key "" :current (copy current :doc text))) (else replargs))) :doc "Returns a modified replarglist from by applying a textblock")
vx/repl / argmap<-textblock-argmap
Description:
  • Returns an argmap with parsed args from textblock added.
Function Name:
  • argmap<-textblock-argmap
Return Type:
  • vx/core/argmap
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
Source Code:
  • (func argmap<-textblock-argmap : argmap [textblock : tb/textblock argmap : argmap] (if : argmap (!= "delimbracketsquare" (:name (:delim textblock))) argmap argmap) :doc "Returns an argmap with parsed args from textblock added.")
vx/repl / const<-string
Description:
  • Returns a constant from a fully qualified name.
Function Name:
  • const<-string
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test infinity (const<-string "infinity"))
  • (test tb/delimcomma (const<-string "vx/data/textblock/delimcomma"))
Source Code:
  • (func const<-string : any [text : string] (let : any [pkgpos : int := (int<-string-findlast text "/") pkgname : string := (if : string (= 0 pkgpos) "vx/core" (type/string<-string-end text (-1 pkgpos))) name : string := (if : string (= 0 pkgpos) text (type/string<-string-start text (+1 pkgpos))) pkg : package := (package-global<-name pkgname) constmap : constmap := (:constmap pkg) constval : any := (any<-map constmap name)] (if : any (!-empty constval) constval (empty any))) :test (test infinity (const<-string "infinity")) (test tb/delimcomma (const<-string "vx/data/textblock/delimcomma")) :doc "Returns a constant from a fully qualified name.")
vx/repl / repl<-liblist-string
Description:
  • Returns a repl from the given text.
Function Name:
  • repl<-liblist-string
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    liblist
    vx/repl/liblist
    text
    vx/core/string
    Program to run
Usage/Test Cases:
Source Code:
  • (func repl<-liblist-string : repl [liblist : liblist text : string :doc "Program to run"] :doc "Returns a repl from the given text.")
vx/repl / repl<-macro
Description:
  • A function that joins any number of values into a string and then parses it.
Function Name:
  • repl<-macro
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    anylist
    vx/core/anylist
Usage/Test Cases:
  • (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-macro "(+ " (- 7 5) " 3)"))
Source Code:
  • (func repl<-macro : repl [anylist : anylist :...] (let : repl [textlist : stringlist := (list<-list : stringlist anylist (fn [item : any] : string (let : string [typ : any := (type<-any item)] (switch : string typ (case string (any<-any : string item)) (else (string<-any item)))))) script : string := (type/string<-stringlist-join textlist "") tb : tb/textblock := (textblock<-script script)] (repl<-textblock tb)) :context :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-macro "(+ " (- 7 5) " 3)")) :doc "A function that joins any number of values into a string and then parses it.")
vx/repl / repl<-script
Description:
  • Returns a parsed repl from a string
Function Name:
  • repl<-script
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    script
    vx/core/string
Usage/Test Cases:
  • (test (repl :val 2) (repl<-script "2"))
  • (test (repl :val infinity) (repl<-script "infinity"))
  • (test (repl :type +) (repl<-script "+"))
  • (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-script "(+ 2 3)"))
Source Code:
  • (func repl<-script : repl [script : string] (let [textblock : tb/textblock := (textblock<-script script)] (repl<-textblock textblock)) :test (test (repl :val 2) (repl<-script "2")) (test (repl :val infinity) (repl<-script "infinity")) (test (repl :type +) (repl<-script "+")) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-script "(+ 2 3)")) :doc "Returns a parsed repl from a string")
vx/repl / repl<-string-argmap
Description:
  • Returns a function, type, const or primitive from given string.
Function Name:
  • repl<-string-argmap
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
    argmap
    vx/core/argmap
Usage/Test Cases:
  • (test (repl :val "Hello") (repl<-string-argmap `"Hello"` (empty argmap)))
  • (test (repl :val 2) (repl<-string-argmap "2" (empty argmap)))
  • (test (repl :val 2.3) (repl<-string-argmap "2.3" (empty argmap)))
  • (test (repl :val infinity) (repl<-string-argmap "infinity" (empty argmap)))
  • (test (repl :val tb/delimcomma) (repl<-string-argmap "vx/data/textblock/delimcomma" (empty argmap)))
  • (test (repl :type string) (repl<-string-argmap "string" (empty argmap)))
  • (test (repl :type +) (repl<-string-argmap "+" (empty argmap)))
Source Code:
  • (func repl<-string-argmap : repl [text : string argmap : argmap] (if : repl (then // if starts and ends quote (and (type/boolean<-string-starts text quote) (type/boolean<-string-ends text quote)) (repl :val (type/string<-string-start-end text 2 -1))) (then // then if is int (is-int text) (repl :val (int<-string text))) (then // then if is float (is-float text) (repl :val (float<-string text))) (else (let : repl [arg : any := (any<-map argmap text)] (if : repl (then // if in argmap (!-empty arg) (repl :val arg)) (else (let : repl [cnst : any := (const<-string text)] (if : repl (then (!-empty cnst) (repl :val cnst)) (else (let : repl [typefunc : any := (typefunc<-string text)] (if : repl (then (!-empty typefunc) (repl :type typefunc)) (else // error (repl (msg<-error :repltypenotfound text))))))))))))) :test (test (repl :val "Hello") (repl<-string-argmap `"Hello"` (empty argmap))) (test (repl :val 2) (repl<-string-argmap "2" (empty argmap))) (test (repl :val 2.3) (repl<-string-argmap "2.3" (empty argmap))) (test (repl :val infinity) (repl<-string-argmap "infinity" (empty argmap))) (test (repl :val tb/delimcomma) (repl<-string-argmap "vx/data/textblock/delimcomma" (empty argmap))) (test (repl :type string) (repl<-string-argmap "string" (empty argmap))) (test (repl :type +) (repl<-string-argmap "+" (empty argmap))) :doc "Returns a function, type, const or primitive from given string.")
vx/repl / repl<-textblock
Description:
  • Returns a repl from a parsed textblock
Function Name:
  • repl<-textblock
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (repl :val 2) (repl<-textblock (tb/textblock :text "2")))
  • (test (repl :type +) (repl<-textblock (tb/textblock :text "+")))
  • (test (repl :type +) (repl<-textblock (tb/textblock :text "+")))
  • (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3")))))
  • (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3")))))))
Source Code:
  • (func repl<-textblock : repl [textblock : tb/textblock] (repl<-textblock-argmap textblock (empty argmap)) :test (test (repl :val 2) (repl<-textblock (tb/textblock :text "2"))) (test (repl :type +) (repl<-textblock (tb/textblock :text "+"))) (test (repl :type +) (repl<-textblock (tb/textblock :text "+"))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))))) :doc "Returns a repl from a parsed textblock")
vx/repl / repl<-textblock-argmap
Description:
  • Returns a repl from a parsed textblock
Function Name:
  • repl<-textblock-argmap
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
  • (test (repl :val 2) (repl<-textblock-argmap (tb/textblock :text "2") (empty argmap)))
  • (test (repl :type +) (repl<-textblock-argmap (tb/textblock :text "+") (empty argmap)))
  • (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap)))
  • (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap)))
Source Code:
  • (func repl<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [delim : delim := (:delim textblock) starttext : string := (:starttext delim)] (switch : repl starttext (case "" (repl-empty<-textblock-argmap textblock argmap)) (case (:starttext tb/delimparen) (repl-paren<-textblock-argmap textblock argmap)) (case (:starttext tb/delimbracketsquare) (repl-bracket<-textblock-argmap textblock argmap)))) :test (test (repl :val 2) (repl<-textblock-argmap (tb/textblock :text "2") (empty argmap))) (test (repl :type +) (repl<-textblock-argmap (tb/textblock :text "+") (empty argmap))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap))) (test (repl :type + :repllist (repllist (repl :val 2) (repl :val 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap))) :doc "Returns a repl from a parsed textblock")
vx/repl / repl-bracket<-textblock-argmap
Description:
  • Returns a repl from a squarebracket parsed textblock
Function Name:
  • repl-bracket<-textblock-argmap
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
Source Code:
  • (func repl-bracket<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (repl) /* (let : repl [childlst : tb/textblocklist := (:children textblock) children : tb/textblocklist := (tb/textblocklist<-textblocklist-remove childlst tb/delimwhitespace) tbname : tb/textblock := (:1 children) sname : string := (:text tbname) tbtype : tb/textblock := (tb/textblock<-textblocklist-key children ":") tbvalue : tb/textblock := (tb/textblock<-textblocklist-key children ":=") tbdoc : tb/textblock := (tb/textblock<-textblocklist-key children ":doc") replarg : repl := (repl<-string-argmap "vx/core/arg" argmap) repls : repllist := (repllist replarg) replargs : repl := (repl<-string-argmap "vx/core/arglist" argmap)] (copy replargs :repllist repls)) :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl-bracket<-textblock-argmap (tb/textblock :text "[val : int := (+ 2 3)]" :delim (copy delimvxlispbracket :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "val") (tb/textblock :text ":") (tb/textblock :text "int") (tb/textblock :text ":=") (tb/textblock :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap)))*/ :doc "Returns a repl from a squarebracket parsed textblock")
vx/repl / repl-empty<-textblock-argmap
Description:
  • Returns a repl from an empty delim textblock
Function Name:
  • repl-empty<-textblock-argmap
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
  • (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "2") (empty argmap)))
  • (test (repl :type +) (repl-empty<-textblock-argmap (tb/textblock :text "+") (empty argmap)))
  • (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2"))) (empty argmap)))
  • (test (repl (msg<-error "Empty delim cannot have more than one child.")) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2") (tb/textblock :text "3"))) (empty argmap)))
Source Code:
  • (func repl-empty<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [children : tb/textblocklist := (:children textblock) len : int := (length<-list children)] (switch : repl len (case 0 (repl<-string-argmap (:text textblock) argmap)) (case 1 (repl<-textblock-argmap (:1 children) argmap)) (else (repl (msg<-error "Empty delim cannot have more than one child."))))) :test (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "2") (empty argmap))) (test (repl :type +) (repl-empty<-textblock-argmap (tb/textblock :text "+") (empty argmap))) (test (repl :val 2) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2"))) (empty argmap))) (test (repl (msg<-error "Empty delim cannot have more than one child.")) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2") (tb/textblock :text "3"))) (empty argmap))) :doc "Returns a repl from an empty delim textblock")
vx/repl / repl-paren<-textblock-argmap
Description:
  • Returns a repl from a parsed textblock
Function Name:
  • repl-paren<-textblock-argmap
Return Type:
  • vx/repl/repl
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
    argmap
    vx/core/argmap
Usage/Test Cases:
  • (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl-paren<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap)))
Source Code:
  • (func repl-paren<-textblock-argmap : repl [textblock : tb/textblock argmap : argmap] (let : repl [childlst : tb/textblocklist := (:children textblock) children : tb/textblocklist := (tb/textblocklist<-textblocklist-remove childlst tb/delimwhitespace) tbfunc : tb/textblock := (:1 children) sfunc : string := (:text tbfunc) replfunc : repl := (repl<-string-argmap sfunc argmap) typefunc : any := (:type replfunc) posarg : int := (switch : int typefunc (case vx/core/let 3) (case vx/core/fn 3) (else 2)) argmap2 : argmap := (switch : argmap typefunc (case vx/core/let (argmap<-textblock-argmap (:3 children) argmap)) (case vx/core/fn (argmap<-textblock-argmap (:3 children) argmap)) (else argmap)) tbargs : tb/textblocklist := (coll/list<-list-start children posarg) replargs : repllist := (repllist<-textblocklist-argmap tbargs argmap)] (copy replfunc :repllist replargs)) :test (test (repl :type vx/core/+ :repllist (repllist (repl :val 2) (repl :val 3))) (repl-paren<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap))) :doc "Returns a repl from a parsed textblock")
vx/repl / repllist<-textblocklist-argmap
Description:
  • Returns a repllist from a parsed textblocklist
Function Name:
  • repllist<-textblocklist-argmap
Return Type:
  • vx/repl/repllist
Arguments:
  • Name
    Type
    Generic
    Description
    textblocklist
    vx/data/textblock/textblocklist
    argmap
    vx/core/argmap
Usage/Test Cases:
Source Code:
  • (func repllist<-textblocklist-argmap : repllist [textblocklist : tb/textblocklist argmap : argmap] (list<-list : repllist textblocklist (fn : repl [textblock : tb/textblock] (repl<-textblock textblock))) :doc "Returns a repllist from a parsed textblocklist")
vx/repl / textblock<-script
Description:
  • Returns a parsed textblock from a string
Function Name:
  • textblock<-script
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    script
    vx/core/string
Usage/Test Cases:
  • (test (tb/textblock :text "infinity" :startpos 1 :endpos 8 :children (tb/textblocklist (tb/textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp")))) (textblock<-script "infinity"))
  • (test (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+" :startpos 2 :endpos 2) (tb/textblock :text " " :startpos 3 :endpos 3 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2" :startpos 4 :endpos 4) (tb/textblock :text " " :startpos 5 :endpos 5 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3" :startpos 6 :endpos 6))))) (textblock<-script "(+ 2 3)"))
Source Code:
  • (func textblock<-script : tb/textblock [script : string] (tb/textblock-parse<-string-delim script delimvxlisp) :test (test (tb/textblock :text "infinity" :startpos 1 :endpos 8 :children (tb/textblocklist (tb/textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp")))) (textblock<-script "infinity")) (test (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+" :startpos 2 :endpos 2) (tb/textblock :text " " :startpos 3 :endpos 3 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2" :startpos 4 :endpos 4) (tb/textblock :text " " :startpos 5 :endpos 5 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3" :startpos 6 :endpos 6))))) (textblock<-script "(+ 2 3)")) :doc "Returns a parsed textblock from a string")
vx/repl / typefunc<-string
Description:
  • Returns a type, or func from a fully qualified name.
Function Name:
  • typefunc<-string
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test string (typefunc<-string "string"))
  • (test + (typefunc<-string "+"))
Source Code:
  • (func typefunc<-string : any [text : string] (let : any [pkgpos : int := (int<-string-findlast text "/") pkgname : string := (if : string (= 0 pkgpos) "vx/core" (type/string<-string-end text (-1 pkgpos))) name : string := (if : string (= 0 pkgpos) text (type/string<-string-start text (+1 pkgpos))) pkg : package := (package-global<-name pkgname) typemap : typemap := (:typemap pkg) typeval : any := (any<-map typemap name)] (if : any (!-empty typeval) typeval (let : any [funcmap : funcmap := (:funcmap pkg) funcval : any := (any<-map funcmap name)] (if : any (!-empty funcval) funcval (empty any))))) :test (test string (typefunc<-string "string")) (test + (typefunc<-string "+")) :doc "Returns a type, or func from a fully qualified name.")
nx/tactics/base
Description:
  • Tactics Base Types
Package Name:
  • nx/tactics/base
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    coll
    vx/collection
Types:
  • ability, abilitymap, book, booklist, bookmap, card, cardback, cardimage, cardlist, cardmap, chapter, chapterlist, chapterlistlist, chaptermap, damage, damagelist, damagemap, deck, deckmap, fate, goal, item, itemmap, location, locationmap, mind, modifier, modifiermap, playingcard, power, powermap, rank, ranksuit, rating, role, rolemap, rule, rulemap, scenario, scenariomap, section, sectionlist, sectionlistlist, sectionmap, skill, skilllist, skillmap, skilllistlist, specialty, specialtymap, stat, suit, suitmap, tactics, tarot, team, teammap, terrain, terrainmap, threat, unit, unitability, unitabilitylist, unitabilitymap, unititem, unititemlist, unititemmap, unitmap, unitpower, unitpowerlist, unitpowermap, unitskill, unitskilllist, unitskillmap, unitspecialty, unitspecialtymap, unitweakness, unitweaknessmap, weakness, weaknessmap, disorder, trauma
Constants:
  • rank-ace, rank-king, rank-queen, rank-jack, rank-ten, rank-nine, rank-eight, rank-seven, rank-six, rank-five, rank-four, rank-three, rank-two, rank-joker, ranksuit-jokerblack, ranksuit-jokerred, ranksuit-ac, ranksuit-ad, ranksuit-ah, ranksuit-as, ranksuit-kc, ranksuit-kd, ranksuit-kh, ranksuit-ks, ranksuit-qc, ranksuit-qd, ranksuit-qh, ranksuit-qs, ranksuit-jc, ranksuit-jd, ranksuit-jh, ranksuit-js, ranksuit-tc, ranksuit-td, ranksuit-th, ranksuit-ts, ranksuit-9c, ranksuit-9d, ranksuit-9h, ranksuit-9s, ranksuit-8c, ranksuit-8d, ranksuit-8h, ranksuit-7c, ranksuit-7d, ranksuit-7h, ranksuit-7s, ranksuit-6c, ranksuit-6d, ranksuit-6h, ranksuit-6s, ranksuit-5c, ranksuit-5d, ranksuit-5h, ranksuit-5s, ranksuit-4c, ranksuit-4d, ranksuit-4h, ranksuit-4s, ranksuit-3c, ranksuit-3d, ranksuit-3h, ranksuit-3s, ranksuit-2c, ranksuit-2d, ranksuit-2h, ranksuit-2s, ranksuit-8s, role-aoe, role-bosskiller, role-buffer, role-crowdcontrol, role-distracter, role-healer, role-sniper, role-tank, role-trapper, role-utility, stat-beast, stat-body, stat-mind, stat-shadow, stat-will, stat-speed, suit-club, suit-diamond, suit-heart, suit-spade, suit-black, suit-red
Functions:
  • bookmap<-booklist, cardlist-copy<-card-num, cardmap<-bookmap, cardmap<-cardlist, cardmap-copy<-card-num, chapterlist<-book, chapterlist<-booklist, chapterlist<-chapterlistlist, chapterlistlist<-booklist, chaptermap<-chapterlist, cardimage<-card, name<-chapter, sectionlist<-chapter, sectionlist<-chapterlist, sectionlist<-section, sectionlist<-sectionlistlist, sectionlist<-sectionmap, sectionlist-all<-chapterlist, sectionlist-all<-section, sectionlist-all<-sectionlist, sectionlistlist<-chapterlist, sectionlistlist<-sectionlist, sectionmap<-sectionlist, skilllist<-section, skilllist<-sectionlist, skilllist<-skilllistlist, skilllist<-skillmap, skilllistlist<-sectionlist, skillmap<-skilllist, tactics<-booklist, unitabilitymap<-unitabilitylist, unititemmap<-unititemlist, unitpowermap<-unitpowerlist, unitskillmap<-unitskilllist
Source Code:
  • (package nx/tactics/base :libs (lib coll :path vx/collection) :doc "Tactics Base Types") (type ability : struct :traits [card]) (type abilitymap : map :allowtypes [ability]) (type book : struct :traits [card] :properties [chaptermap : chaptermap]) (type booklist : list :allowtypes [book]) (type bookmap : map :allowtypes [book]) (type card : struct :properties [id : string name : string icon : string image : string reference : string summary : string titles : string orientation : string ranksuit : ranksuit]) (type cardback : struct :traits [card] :doc "The back of a card. Title repeated on top and bottom.") (type cardimage : struct :traits [card] :properties [origcard : card]) (type cardlist : list :allowtypes [card]) (type cardmap : map :allowtypes [card]) (type chapter : struct :traits [card] :properties [sectionmap : sectionmap]) (type chapterlist : list :allowtypes [chapter]) (type chapterlistlist : list :allowtypes [chapterlist]) (type chaptermap : map :allowtypes [chapter]) (type damage : struct :traits [card] :doc "Lasting Body Damage") (type damagelist : list :allowtypes [damage]) (type damagemap : map :allowtypes [damage]) (type deck : struct :traits [card] :properties [cardmap : cardmap]) (type deckmap : map :traits [card] :allowtypes [deck]) (type fate : struct :traits [card]) (type goal : struct :properties [description : string progress : int complete : int reward : string] :traits [card]) (type item : struct :traits [card] :properties [body : string mind : string will : string move : string shadow : string beast : string classification : string crew : string energy : string explosive : string height : string length : string mass : string modifiers : string muzzlevelocity : string range : string rof : string rolemap : rolemap rounds : string speed : string speedair : string speedland : string speedspace : string speedwater : string value : string width : string]) (type itemmap : map :allowtypes [item]) (type location : struct :traits [card] :properties [locationmap : locationmap unitmap : unitmap]) (type locationmap : map :allowtypes [location]) (type mind : struct :traits [card] :doc "The ability to use rational thought to do tasks. This is the opposite of the [Shadow].") (type modifier : struct :traits [card]) (type modifiermap : map :allowtypes [modifier]) (type playingcard : struct :properties [rank : rank suit : suit]) (type power : struct :traits [card] :properties [stat : string abilitymap : abilitymap specialtymap : specialtymap]) (type powermap : map :allowtypes [power]) (type rank : struct :traits [card]) (type ranksuit : struct :properties [rank : rank suit : suit] :traits [card]) (type rating : struct :traits [card] :properties [level : int :doc "Values: 2->10" part : int :doc "Values: 0->9" scale : int :doc "Values: -x->x"] :doc "Rating are displayed as level.partxscale. e.g. 3x1, 5.1x2") (type role : struct) (type rolemap : map :allowtypes [role]) (type rule : struct :properties [classification : string] :traits [card]) (type rulemap : map :allowtypes [rule]) (type scenario : struct :properties [teammap : teammap] :traits [card]) (type scenariomap : map :allowtypes [scenario]) (type section : struct :traits [card] :properties [damagemap : damagemap deckmap : deckmap itemmap : itemmap locationmap : locationmap modifiermap : modifiermap powermap : powermap rulemap : rulemap scenariomap : scenariomap sectionmap : sectionmap skillmap : skillmap suitmap : suitmap terrainmap : terrainmap unitmap : unitmap weaknessmap : weaknessmap]) (type sectionlist : list :allowtypes [section]) (type sectionlistlist : list :allowtypes [sectionlist]) (type sectionmap : map :allowtypes [section]) (type skill : struct :traits [card] :properties [stat : string abilitymap : abilitymap specialtymap : specialtymap]) (type skilllist : list :allowtypes [skill]) (type skillmap : map :allowtypes [skill]) (type skilllistlist : list :allowtypes [skilllist]) (type specialty : struct :traits [card]) (type specialtymap : map :traits [card] :allowtypes [specialty]) (type stat : struct :traits [card]) (type suit : struct :traits [card]) (type suitmap : map :allowtypes [suit]) (type tactics : struct :properties [bookmap : bookmap abilitymap : abilitymap cardmap : cardmap itemmap : itemmap locationmap : locationmap powermap : powermap skillmap : skillmap unitmap : unitmap]) (type tarot : struct :traits [card]) (type team : struct :properties [completevictory : string deploy : string forces : string partialvictory : string] :traits [card]) (type teammap : map :allowtypes [team]) (type terrain : struct :traits [card]) (type terrainmap : map :allowtypes [terrain]) (type threat : struct :properties [description : string progress : int complete : int consequences : string] :traits [card]) (type unit : struct :traits [card] :properties [body : string mind : string will : string move : string shadow : string conscience : string beast : string demeanor : string nature : string age : int classification : string crew : string gender : string mass : string height : string length : string race : string range : string speed : string speedair : string speedland : string speedspace : string speedwater : string value : string width : string damagelist : damagelist rolemap : rolemap unitpowermap : unitpowermap unitskillmap : unitskillmap unitweaknessmap : unitweaknessmap]) (type unitability : struct :properties [name : string ability : ability image : string titles : string reference : string]) (type unitabilitylist : list :allowtypes [unitability]) (type unitabilitymap : map :allowtypes [unitability]) (type unititem : struct :properties [name : string item : item facing : string number : string rounds : string value : string] :traits [card]) (type unititemlist : list :allowtypes [unititem]) (type unititemmap : map :allowtypes [unititem]) (type unitmap : map :allowtypes [unit]) (type unitpower : struct :properties [level : string power : power front : string back : string over : string under : string side : string strength : string unitabilitymap : unitabilitymap unititemmap : unititemmap unitspecialtymap : unitspecialtymap] :traits [card]) (type unitpowerlist : list :allowtypes [unitpower]) (type unitpowermap : map :allowtypes [unitpower]) (type unitskill : struct :properties [level : string skill : skill unitabilitymap : unitabilitymap unititemmap : unititemmap unitspecialtymap : unitspecialtymap] :traits [card]) (type unitskilllist : list :allowtypes [unitskill]) (type unitskillmap : map :allowtypes [unitskill]) (type unitspecialty : struct :properties [name : string image : string titles : string reference : string]) (type unitspecialtymap : map :allowtypes [unitspecialty]) (type unitweakness : struct :traits [card]) (type unitweaknessmap : map :allowtypes [unitweakness]) (type weakness : struct :traits [card]) (type weaknessmap : map :allowtypes [weakness]) (type disorder : struct :traits [card] :doc "Lasting Mind Damage") (type trauma : struct :traits [card] :doc "Lasting Will Damage") (const rank-ace : rank (rank :name "Ace" :titles "A")) (const rank-king : rank (rank :name "King" :titles "K")) (const rank-queen : rank (rank :name "Queen" :titles "Q")) (const rank-jack : rank (rank :name "Jack" :titles "J")) (const rank-ten : rank (rank :name "Ten" :titles "10")) (const rank-nine : rank (rank :name "Nine" :titles "9")) (const rank-eight : rank (rank :name "Eight" :titles "8")) (const rank-seven : rank (rank :name "Seven" :titles "7")) (const rank-six : rank (rank :name "Six" :titles "6")) (const rank-five : rank (rank :name "Five" :titles "5")) (const rank-four : rank (rank :name "Four" :titles "4")) (const rank-three : rank (rank :name "Three" :titles "3")) (const rank-two : rank (rank :name "Two" :titles "2")) (const rank-joker : rank (rank :name "Wild" :titles "W")) (const ranksuit-jokerblack : ranksuit (ranksuit :rank rank-joker :suit suit-black)) (const ranksuit-jokerred : ranksuit (ranksuit :rank rank-joker :suit suit-red)) (const ranksuit-ac : ranksuit (ranksuit :rank rank-ace :suit suit-club)) (const ranksuit-ad : ranksuit (ranksuit :rank rank-ace :suit suit-diamond)) (const ranksuit-ah : ranksuit (ranksuit :rank rank-ace :suit suit-heart)) (const ranksuit-as : ranksuit (ranksuit :rank rank-ace :suit suit-spade)) (const ranksuit-kc : ranksuit (ranksuit :rank rank-king :suit suit-club)) (const ranksuit-kd : ranksuit (ranksuit :rank rank-king :suit suit-diamond)) (const ranksuit-kh : ranksuit (ranksuit :rank rank-king :suit suit-heart)) (const ranksuit-ks : ranksuit (ranksuit :rank rank-king :suit suit-spade)) (const ranksuit-qc : ranksuit (ranksuit :rank rank-queen :suit suit-club)) (const ranksuit-qd : ranksuit (ranksuit :rank rank-queen :suit suit-diamond)) (const ranksuit-qh : ranksuit (ranksuit :rank rank-queen :suit suit-heart)) (const ranksuit-qs : ranksuit (ranksuit :rank rank-queen :suit suit-spade)) (const ranksuit-jc : ranksuit (ranksuit :rank rank-jack :suit suit-club)) (const ranksuit-jd : ranksuit (ranksuit :rank rank-jack :suit suit-diamond)) (const ranksuit-jh : ranksuit (ranksuit :rank rank-jack :suit suit-heart)) (const ranksuit-js : ranksuit (ranksuit :rank rank-jack :suit suit-spade)) (const ranksuit-tc : ranksuit (ranksuit :rank rank-ten :suit suit-club)) (const ranksuit-td : ranksuit (ranksuit :rank rank-ten :suit suit-diamond)) (const ranksuit-th : ranksuit (ranksuit :rank rank-ten :suit suit-heart)) (const ranksuit-ts : ranksuit (ranksuit :rank rank-ten :suit suit-spade)) (const ranksuit-9c : ranksuit (ranksuit :rank rank-nine :suit suit-club)) (const ranksuit-9d : ranksuit (ranksuit :rank rank-nine :suit suit-diamond)) (const ranksuit-9h : ranksuit (ranksuit :rank rank-nine :suit suit-heart)) (const ranksuit-9s : ranksuit (ranksuit :rank rank-nine :suit suit-spade)) (const ranksuit-8c : ranksuit (ranksuit :rank rank-eight :suit suit-club)) (const ranksuit-8d : ranksuit (ranksuit :rank rank-eight :suit suit-diamond)) (const ranksuit-8h : ranksuit (ranksuit :rank rank-eight :suit suit-heart)) (const ranksuit-7c : ranksuit (ranksuit :rank rank-seven :suit suit-club)) (const ranksuit-7d : ranksuit (ranksuit :rank rank-seven :suit suit-diamond)) (const ranksuit-7h : ranksuit (ranksuit :rank rank-seven :suit suit-heart)) (const ranksuit-7s : ranksuit (ranksuit :rank rank-seven :suit suit-spade)) (const ranksuit-6c : ranksuit (ranksuit :rank rank-six :suit suit-club)) (const ranksuit-6d : ranksuit (ranksuit :rank rank-six :suit suit-diamond)) (const ranksuit-6h : ranksuit (ranksuit :rank rank-six :suit suit-heart)) (const ranksuit-6s : ranksuit (ranksuit :rank rank-six :suit suit-spade)) (const ranksuit-5c : ranksuit (ranksuit :rank rank-five :suit suit-club)) (const ranksuit-5d : ranksuit (ranksuit :rank rank-five :suit suit-diamond)) (const ranksuit-5h : ranksuit (ranksuit :rank rank-five :suit suit-heart)) (const ranksuit-5s : ranksuit (ranksuit :rank rank-five :suit suit-spade)) (const ranksuit-4c : ranksuit (ranksuit :rank rank-four :suit suit-club)) (const ranksuit-4d : ranksuit (ranksuit :rank rank-four :suit suit-diamond)) (const ranksuit-4h : ranksuit (ranksuit :rank rank-four :suit suit-heart)) (const ranksuit-4s : ranksuit (ranksuit :rank rank-four :suit suit-spade)) (const ranksuit-3c : ranksuit (ranksuit :rank rank-three :suit suit-club)) (const ranksuit-3d : ranksuit (ranksuit :rank rank-three :suit suit-diamond)) (const ranksuit-3h : ranksuit (ranksuit :rank rank-three :suit suit-heart)) (const ranksuit-3s : ranksuit (ranksuit :rank rank-three :suit suit-spade)) (const ranksuit-2c : ranksuit (ranksuit :rank rank-two :suit suit-club)) (const ranksuit-2d : ranksuit (ranksuit :rank rank-two :suit suit-diamond)) (const ranksuit-2h : ranksuit (ranksuit :rank rank-two :suit suit-heart)) (const ranksuit-2s : ranksuit (ranksuit :rank rank-two :suit suit-spade)) (const ranksuit-8s : ranksuit (ranksuit :rank rank-eight :suit suit-spade)) (const role-aoe : role) (const role-bosskiller : role) (const role-buffer : role) (const role-crowdcontrol : role) (const role-distracter : role) (const role-healer : role) (const role-sniper : role) (const role-tank : role) (const role-trapper : role) (const role-utility : role) (const stat-beast : stat :doc "The ability to use wild rage or terror to lash out or flee. This is the opposite of the [Will].") (const stat-body : stat) (const stat-mind : stat) (const stat-shadow : stat :doc "The ability to use rational thought to do selfish/impulsive acts. This is the opposite of the [Mind].") (const stat-will : stat) (const stat-speed : stat) (const suit-club : suit) (const suit-diamond : suit) (const suit-heart : suit) (const suit-spade : suit) (const suit-black : suit) (const suit-red : suit) (func bookmap<-booklist : bookmap [booklist : booklist] (map<-list : bookmap booklist (fn : string [book : book] (:name book))) :doc "Returns a bookmap of all books.") (func cardlist-copy<-card-num : cardlist [card : card num : int] (list<-for-end-loop 1 num (fn : card [pos : int] (let : card [id : string := (:id card) chg : string := (string id "-" pos)] (copy card :id chg)))) :doc "Returns a cardlist by copying a card num times") (func cardmap<-bookmap : cardmap [bookmap : bookmap] (map<-map : cardmap bookmap (fn : card [key : string value : book] (any<-any : card value))) :doc "Returns a cardmap from a given bookmap") (func cardmap<-cardlist : cardmap [cardlist : cardlist :...] (map<-list : cardmap cardlist (fn : string [card : card] (let : string [id : string := (:id card) name : string := (:name card)] (if : string (!-empty id) id name))))) (func cardmap-copy<-card-num : cardmap [card : card num : int] (let : cardmap [cardlist : cardlist := (cardlist-copy<-card-num card num)] (cardmap<-cardlist cardlist)) :doc "Returns a cardmap by copying a card num times") (func chapterlist<-book : chapterlist [book : book] (let : chapterlist [chaptermap : chaptermap := (:chaptermap book)] (list<-map : chapterlist chaptermap (fn : chapter [key : string value : chapter] value))) :doc "Returns a chapterlist from a given book") (func chapterlist<-booklist : chapterlist [booklist : booklist] (let : chapterlist [chapterlistlist : chapterlistlist := (chapterlistlist<-booklist booklist)] (chapterlist<-chapterlistlist chapterlistlist)) :doc "Returns a chapterlist from a given bookmap") (func chapterlist<-chapterlistlist : chapterlistlist [chapterlistlist : chapterlistlist] (list-join<-list : chapterlist chapterlistlist) :doc "Returns a chapterlist from a given chapterlistlist") (func chapterlistlist<-booklist : chapterlistlist [booklist : booklist] (list<-list : chapterlistlist booklist (fn : chapterlist [book : book] (chapterlist<-book : chapterlist book))) :doc "Returns a chapterlistlist from a given booklist") (func chaptermap<-chapterlist : chaptermap [chapterlist : chapterlist] (map<-list : chaptermap chapterlist (fn : chapter [chapter : chapter] (:name chapter))) :doc "Returns a chaptermap from a given chapterlist") (func cardimage<-card : cardimage [card : card] (let : cardimage [name : string := (:name card) image : string := (:image card) id : string := (string name "-image")] (base/cardimage :id id :name name :origcard card :image image)) :doc "Returns a cardimage from a given card") (func name<-chapter : string [chapter : chapter] (:name chapter)) (func sectionlist<-chapter : sectionlist [chapter : chapter] (let : sectionlist [sectionmap : sectionmap := (:sectionmap chapter)] (sectionlist<-sectionmap sectionmap)) :doc "Returns a list of all sections directly under the given chapter") (func sectionlist<-chapterlist : sectionlist [chapterlist : chapterlist] (let : sectionlist [sectionlistlist : sectionlistlist := (sectionlistlist<-chapterlist chapterlist)] (sectionlist<-sectionlistlist sectionlistlist)) :doc "Returns a list of all sections directly under the given chapterlist") (func sectionlist<-section : sectionlist [section : section] (let : sectionlist [sectionmap : sectionmap := (:sectionmap section)] (sectionlist<-sectionmap sectionmap)) :doc "Returns a list of all sections including subsections") (func sectionlist<-sectionlistlist : sectionlist [sectionlistlist : sectionlistlist] (list-join<-list : sectionlist sectionlistlist) :doc "Returns a sectionlist from a given sectionlistlist") (func sectionlist<-sectionmap : sectionlist [sectionmap : sectionmap] (list<-map : sectionlist sectionmap) :doc "Returns a list of all sections including subsections") (func sectionlist-all<-chapterlist : sectionlist [chapterlist : chapterlist] (let : sectionlist [sections : sectionlist := (sectionlist<-chapterlist chapterlist)] (sectionlist-all<-sectionlist sections)) :doc "Returns a list of all sections including subsections") (func sectionlist-all<-section : sectionlist [section : section] (let : sectionlist [subsections : sectionlist := (sectionlist<-section section)] (any<-list-start-reduce : sectionlist subsections (sectionlist section) (fn : sectionlist [total : sectionlist subsection : section] (let : sectionlist [subsubsections : sectionlist := (sectionlist-all<-section subsection)] (copy total subsubsections))))) :doc "Returns a list of all sections including subsections") (func sectionlist-all<-sectionlist : sectionlist [sectionlist : sectionlist] (let : sectionlist [sectionlistlist : sectionlistlist := (sectionlistlist<-sectionlist sectionlist)] (list-join<-list : sectionlist sectionlistlist)) :test (test (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1") (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1")) (sectionlist-all<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1")))))) :doc "Returns a list of all sections including subsections") (func sectionlistlist<-chapterlist : sectionlistlist [chapterlist : chapterlist] (list<-list : sectionlistlist chapterlist (fn : sectionlist [chapter : chapter] (sectionlist<-chapter chapter))) :doc "Returns a shallow sectionlistlist from a given chapterlist") (func sectionlistlist<-sectionlist : sectionlistlist [sectionlist : sectionlist] (list<-list : sectionlistlist sectionlist (fn : sectionlist [section : section] (let : sectionlist [sublist : sectionlist := (sectionlist<-section section)] (sectionlist section sublist)))) :test (test (sectionlistlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1")) (sectionlist (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1"))) (sectionlistlist<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1")))))) :doc "Returns a shallow sectionlistlist from a given sectionlist") (func sectionmap<-sectionlist : sectionmap [sectionlist : sectionlist] (map<-list : sectionmap sectionlist (fn : section [section : section] (:name section))) :doc "Returns a sectionmap from a given sectionlist") (func skilllist<-section : skilllist [section : section] (let : skilllist [secname : string := (:name section) sec : section := (copy section :name secname) skillmap : skillmap := (:skillmap section)] (skilllist<-skillmap skillmap)) :doc "Returns a skilllist from a given skilllistlist") (func skilllist<-sectionlist : skilllist [sectionlist : sectionlist] (let : skilllist [skilllistlist : skilllistlist := (skilllistlist<-sectionlist sectionlist)] (skilllist<-skilllistlist skilllistlist)) :doc "Returns a skilllist from a given skilllistlist") (func skilllist<-skilllistlist : skilllist [skilllistlist : skilllistlist] (list-join<-list : skilllist skilllistlist) :doc "Returns a skillmap from a given skilllist") (func skilllist<-skillmap : skilllist [skillmap : skillmap] (list<-map : skilllist skillmap) :doc "Returns a skillmap from a given skilllist") (func skilllistlist<-sectionlist : skilllistlist [sections : sectionlist] (list<-list : skilllistlist sections (fn : skilllist [section : section] (skilllist<-section section))) :doc "Returns a skilllistlist from a given sectionlist") (func skillmap<-skilllist : skillmap [skilllist : skilllist] (map<-list : skillmap skilllist (fn : skill [skill : skill] (:name skill))) :doc "Returns a skillmap from a given skilllist") (func tactics<-booklist : tactics [booklist : booklist] (let : tactics [bookmap : bookmap := (bookmap<-booklist booklist) chapterlist : chapterlist := (chapterlist<-booklist booklist) chaptermap : chaptermap := (chaptermap<-chapterlist chapterlist) sectionlist : sectionlist := (sectionlist-all<-chapterlist chapterlist) sectionmap : sectionmap := (sectionmap<-sectionlist sectionlist) // powerlist : powerlist := (powerlist<-sectionlist // sectionlist) // powermap : powermap := (powermap<-powerlist // powerlist) skilllist : skilllist := (skilllist<-sectionlist sectionlist) skillmap : skillmap := (skillmap<-skilllist skilllist) // unitlist : unitlist := (unitlist<-sectionlist // sectionlist) // unitmap : unitmap := (unitmap<-unitlist // unitlist) ] (tactics :bookmap bookmap :chaptermap chaptermap :powermap powermap :sectionmap sectionmap :skillmap skillmap :unitmap unitmap)) :doc "Return a ready tactics from a bookmap.") (func unitabilitymap<-unitabilitylist : unitabilitymap [unitabilitylist : unitabilitylist :...] (map<-list : unitabilitymap unitabilitylist (fn : string [unitability : unitability] (let : string [ability : ability := (:ability unitability) name : string := (if : string (is-empty ability) (:name unitability) (:name ability))] name))) :doc "Returns a unitabilitymap from a unitabilitylist") (func unititemmap<-unititemlist : unititemmap [unititemlist : unititemlist :...] (map<-list : unititemmap unititemlist (fn : string [unititem : unititem] (let : string [item : item := (:item unititem) name : string := (:name item)] name))) :doc "Returns a unititemmap from a unititemlist") (func unitpowermap<-unitpowerlist : unitpowermap [unitpowerlist : unitpowerlist :...] (map<-list : unitpowermap unitpowerlist (fn : string [unitpower : unitpower] (let : string [power : power := (:power unitpower) name : string := (:name power)] name))) :doc "Returns a unitpowermap from a unitpowerlist") (func unitskillmap<-unitskilllist : unitskillmap [unitskilllist : unitskilllist :...] (map<-list : unitskillmap unitskilllist (fn : string [unitskill : unitskill] (let : string [skill : skill := (:skill unitskill) name : string := (:name skill)] name))) :doc "Returns a unitskillmap from a unitskilllist")
nx/tactics/base / ability
Description:
Type Name:
  • ability
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type ability : struct :traits [card])
nx/tactics/base / abilitymap
Description:
Type Name:
  • abilitymap
Extends:
  • :map
Default:
Allowed Types:
  • ability
Usage/Test Cases:
Source Code:
  • (type abilitymap : map :allowtypes [ability])
nx/tactics/base / book
Description:
Type Name:
  • book
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    chaptermap
    nx/tactics/base/chaptermap
    false
    false
Usage/Test Cases:
Source Code:
  • (type book : struct :traits [card] :properties [chaptermap : chaptermap])
nx/tactics/base / booklist
Description:
Type Name:
  • booklist
Extends:
  • :list
Default:
Allowed Types:
  • book
Usage/Test Cases:
Source Code:
  • (type booklist : list :allowtypes [book])
nx/tactics/base / bookmap
Description:
Type Name:
  • bookmap
Extends:
  • :map
Default:
Allowed Types:
  • book
Usage/Test Cases:
Source Code:
  • (type bookmap : map :allowtypes [book])
nx/tactics/base / card
Description:
Type Name:
  • card
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    id
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    icon
    vx/core/string
    false
    false
    image
    vx/core/string
    false
    false
    reference
    vx/core/string
    false
    false
    summary
    vx/core/string
    false
    false
    titles
    vx/core/string
    false
    false
    orientation
    vx/core/string
    false
    false
    ranksuit
    nx/tactics/base/ranksuit
    false
    false
Usage/Test Cases:
Source Code:
  • (type card : struct :properties [id : string name : string icon : string image : string reference : string summary : string titles : string orientation : string ranksuit : ranksuit])
nx/tactics/base / cardback
Description:
  • The back of a card. Title repeated on top and bottom.
Type Name:
  • cardback
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type cardback : struct :traits [card] :doc "The back of a card. Title repeated on top and bottom.")
nx/tactics/base / cardimage
Description:
Type Name:
  • cardimage
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    origcard
    nx/tactics/base/card
    false
    false
Usage/Test Cases:
Source Code:
  • (type cardimage : struct :traits [card] :properties [origcard : card])
nx/tactics/base / cardlist
Description:
Type Name:
  • cardlist
Extends:
  • :list
Default:
Allowed Types:
  • card
Usage/Test Cases:
Source Code:
  • (type cardlist : list :allowtypes [card])
nx/tactics/base / cardmap
Description:
Type Name:
  • cardmap
Extends:
  • :map
Default:
Allowed Types:
  • card
Usage/Test Cases:
Source Code:
  • (type cardmap : map :allowtypes [card])
nx/tactics/base / chapter
Description:
Type Name:
  • chapter
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    sectionmap
    nx/tactics/base/sectionmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type chapter : struct :traits [card] :properties [sectionmap : sectionmap])
nx/tactics/base / chapterlist
Description:
Type Name:
  • chapterlist
Extends:
  • :list
Default:
Allowed Types:
  • chapter
Usage/Test Cases:
Source Code:
  • (type chapterlist : list :allowtypes [chapter])
nx/tactics/base / chapterlistlist
Description:
Type Name:
  • chapterlistlist
Extends:
  • :list
Default:
Allowed Types:
  • chapterlist
Usage/Test Cases:
Source Code:
  • (type chapterlistlist : list :allowtypes [chapterlist])
nx/tactics/base / chaptermap
Description:
Type Name:
  • chaptermap
Extends:
  • :map
Default:
Allowed Types:
  • chapter
Usage/Test Cases:
Source Code:
  • (type chaptermap : map :allowtypes [chapter])
nx/tactics/base / damage
Description:
  • Lasting Body Damage
Type Name:
  • damage
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type damage : struct :traits [card] :doc "Lasting Body Damage")
nx/tactics/base / damagelist
Description:
Type Name:
  • damagelist
Extends:
  • :list
Default:
Allowed Types:
  • damage
Usage/Test Cases:
Source Code:
  • (type damagelist : list :allowtypes [damage])
nx/tactics/base / damagemap
Description:
Type Name:
  • damagemap
Extends:
  • :map
Default:
Allowed Types:
  • damage
Usage/Test Cases:
Source Code:
  • (type damagemap : map :allowtypes [damage])
nx/tactics/base / deck
Description:
Type Name:
  • deck
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    cardmap
    nx/tactics/base/cardmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type deck : struct :traits [card] :properties [cardmap : cardmap])
nx/tactics/base / deckmap
Description:
Type Name:
  • deckmap
Extends:
  • :map
Default:
Allowed Types:
  • deck
Usage/Test Cases:
Source Code:
  • (type deckmap : map :traits [card] :allowtypes [deck])
nx/tactics/base / fate
Description:
Type Name:
  • fate
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type fate : struct :traits [card])
nx/tactics/base / goal
Description:
Type Name:
  • goal
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    description
    vx/core/string
    false
    false
    progress
    vx/core/int
    false
    false
    complete
    vx/core/int
    false
    false
    reward
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type goal : struct :properties [description : string progress : int complete : int reward : string] :traits [card])
nx/tactics/base / item
Description:
Type Name:
  • item
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    body
    vx/core/string
    false
    false
    mind
    vx/core/string
    false
    false
    will
    vx/core/string
    false
    false
    move
    vx/core/string
    false
    false
    shadow
    vx/core/string
    false
    false
    beast
    vx/core/string
    false
    false
    classification
    vx/core/string
    false
    false
    crew
    vx/core/string
    false
    false
    energy
    vx/core/string
    false
    false
    explosive
    vx/core/string
    false
    false
    height
    vx/core/string
    false
    false
    length
    vx/core/string
    false
    false
    mass
    vx/core/string
    false
    false
    modifiers
    vx/core/string
    false
    false
    muzzlevelocity
    vx/core/string
    false
    false
    range
    vx/core/string
    false
    false
    rof
    vx/core/string
    false
    false
    rolemap
    nx/tactics/base/rolemap
    false
    false
    rounds
    vx/core/string
    false
    false
    speed
    vx/core/string
    false
    false
    speedair
    vx/core/string
    false
    false
    speedland
    vx/core/string
    false
    false
    speedspace
    vx/core/string
    false
    false
    speedwater
    vx/core/string
    false
    false
    value
    vx/core/string
    false
    false
    width
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type item : struct :traits [card] :properties [body : string mind : string will : string move : string shadow : string beast : string classification : string crew : string energy : string explosive : string height : string length : string mass : string modifiers : string muzzlevelocity : string range : string rof : string rolemap : rolemap rounds : string speed : string speedair : string speedland : string speedspace : string speedwater : string value : string width : string])
nx/tactics/base / itemmap
Description:
Type Name:
  • itemmap
Extends:
  • :map
Default:
Allowed Types:
  • item
Usage/Test Cases:
Source Code:
  • (type itemmap : map :allowtypes [item])
nx/tactics/base / location
Description:
Type Name:
  • location
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    locationmap
    nx/tactics/base/locationmap
    false
    false
    unitmap
    nx/tactics/base/unitmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type location : struct :traits [card] :properties [locationmap : locationmap unitmap : unitmap])
nx/tactics/base / locationmap
Description:
Type Name:
  • locationmap
Extends:
  • :map
Default:
Allowed Types:
  • location
Usage/Test Cases:
Source Code:
  • (type locationmap : map :allowtypes [location])
nx/tactics/base / mind
Description:
  • The ability to use rational thought to do tasks. This is the opposite of the [Shadow].
Type Name:
  • mind
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type mind : struct :traits [card] :doc "The ability to use rational thought to do tasks. This is the opposite of the [Shadow].")
nx/tactics/base / modifier
Description:
Type Name:
  • modifier
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type modifier : struct :traits [card])
nx/tactics/base / modifiermap
Description:
Type Name:
  • modifiermap
Extends:
  • :map
Default:
Allowed Types:
  • modifier
Usage/Test Cases:
Source Code:
  • (type modifiermap : map :allowtypes [modifier])
nx/tactics/base / playingcard
Description:
Type Name:
  • playingcard
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    rank
    nx/tactics/base/rank
    false
    false
    suit
    nx/tactics/base/suit
    false
    false
Usage/Test Cases:
Source Code:
  • (type playingcard : struct :properties [rank : rank suit : suit])
nx/tactics/base / power
Description:
Type Name:
  • power
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    stat
    vx/core/string
    false
    false
    abilitymap
    nx/tactics/base/abilitymap
    false
    false
    specialtymap
    nx/tactics/base/specialtymap
    false
    false
Usage/Test Cases:
Source Code:
  • (type power : struct :traits [card] :properties [stat : string abilitymap : abilitymap specialtymap : specialtymap])
nx/tactics/base / powermap
Description:
Type Name:
  • powermap
Extends:
  • :map
Default:
Allowed Types:
  • power
Usage/Test Cases:
Source Code:
  • (type powermap : map :allowtypes [power])
nx/tactics/base / rank
Description:
Type Name:
  • rank
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type rank : struct :traits [card])
nx/tactics/base / ranksuit
Description:
Type Name:
  • ranksuit
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    rank
    nx/tactics/base/rank
    false
    false
    suit
    nx/tactics/base/suit
    false
    false
Usage/Test Cases:
Source Code:
  • (type ranksuit : struct :properties [rank : rank suit : suit] :traits [card])
nx/tactics/base / rating
Description:
  • Rating are displayed as level.partxscale. e.g. 3x1, 5.1x2
Type Name:
  • rating
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    level
    vx/core/int
    Values: 2->10
    false
    false
    part
    vx/core/int
    Values: 0->9
    false
    false
    scale
    vx/core/int
    Values: -x->x
    false
    false
Usage/Test Cases:
Source Code:
  • (type rating : struct :traits [card] :properties [level : int :doc "Values: 2->10" part : int :doc "Values: 0->9" scale : int :doc "Values: -x->x"] :doc "Rating are displayed as level.partxscale. e.g. 3x1, 5.1x2")
nx/tactics/base / role
Description:
Type Name:
  • role
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type role : struct)
nx/tactics/base / rolemap
Description:
Type Name:
  • rolemap
Extends:
  • :map
Default:
Allowed Types:
  • role
Usage/Test Cases:
Source Code:
  • (type rolemap : map :allowtypes [role])
nx/tactics/base / rule
Description:
Type Name:
  • rule
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    classification
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type rule : struct :properties [classification : string] :traits [card])
nx/tactics/base / rulemap
Description:
Type Name:
  • rulemap
Extends:
  • :map
Default:
Allowed Types:
  • rule
Usage/Test Cases:
Source Code:
  • (type rulemap : map :allowtypes [rule])
nx/tactics/base / scenario
Description:
Type Name:
  • scenario
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    teammap
    nx/tactics/base/teammap
    false
    false
Usage/Test Cases:
Source Code:
  • (type scenario : struct :properties [teammap : teammap] :traits [card])
nx/tactics/base / scenariomap
Description:
Type Name:
  • scenariomap
Extends:
  • :map
Default:
Allowed Types:
  • scenario
Usage/Test Cases:
Source Code:
  • (type scenariomap : map :allowtypes [scenario])
nx/tactics/base / section
Description:
Type Name:
  • section
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    damagemap
    nx/tactics/base/damagemap
    false
    false
    deckmap
    nx/tactics/base/deckmap
    false
    false
    itemmap
    nx/tactics/base/itemmap
    false
    false
    locationmap
    nx/tactics/base/locationmap
    false
    false
    modifiermap
    nx/tactics/base/modifiermap
    false
    false
    powermap
    nx/tactics/base/powermap
    false
    false
    rulemap
    nx/tactics/base/rulemap
    false
    false
    scenariomap
    nx/tactics/base/scenariomap
    false
    false
    sectionmap
    nx/tactics/base/sectionmap
    false
    false
    skillmap
    nx/tactics/base/skillmap
    false
    false
    suitmap
    nx/tactics/base/suitmap
    false
    false
    terrainmap
    nx/tactics/base/terrainmap
    false
    false
    unitmap
    nx/tactics/base/unitmap
    false
    false
    weaknessmap
    nx/tactics/base/weaknessmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type section : struct :traits [card] :properties [damagemap : damagemap deckmap : deckmap itemmap : itemmap locationmap : locationmap modifiermap : modifiermap powermap : powermap rulemap : rulemap scenariomap : scenariomap sectionmap : sectionmap skillmap : skillmap suitmap : suitmap terrainmap : terrainmap unitmap : unitmap weaknessmap : weaknessmap])
nx/tactics/base / sectionlist
Description:
Type Name:
  • sectionlist
Extends:
  • :list
Default:
Allowed Types:
  • section
Usage/Test Cases:
Source Code:
  • (type sectionlist : list :allowtypes [section])
nx/tactics/base / sectionlistlist
Description:
Type Name:
  • sectionlistlist
Extends:
  • :list
Default:
Allowed Types:
  • sectionlist
Usage/Test Cases:
Source Code:
  • (type sectionlistlist : list :allowtypes [sectionlist])
nx/tactics/base / sectionmap
Description:
Type Name:
  • sectionmap
Extends:
  • :map
Default:
Allowed Types:
  • section
Usage/Test Cases:
Source Code:
  • (type sectionmap : map :allowtypes [section])
nx/tactics/base / skill
Description:
Type Name:
  • skill
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    stat
    vx/core/string
    false
    false
    abilitymap
    nx/tactics/base/abilitymap
    false
    false
    specialtymap
    nx/tactics/base/specialtymap
    false
    false
Usage/Test Cases:
Source Code:
  • (type skill : struct :traits [card] :properties [stat : string abilitymap : abilitymap specialtymap : specialtymap])
nx/tactics/base / skilllist
Description:
Type Name:
  • skilllist
Extends:
  • :list
Default:
Allowed Types:
  • skill
Usage/Test Cases:
Source Code:
  • (type skilllist : list :allowtypes [skill])
nx/tactics/base / skillmap
Description:
Type Name:
  • skillmap
Extends:
  • :map
Default:
Allowed Types:
  • skill
Usage/Test Cases:
Source Code:
  • (type skillmap : map :allowtypes [skill])
nx/tactics/base / skilllistlist
Description:
Type Name:
  • skilllistlist
Extends:
  • :list
Default:
Allowed Types:
  • skilllist
Usage/Test Cases:
Source Code:
  • (type skilllistlist : list :allowtypes [skilllist])
nx/tactics/base / specialty
Description:
Type Name:
  • specialty
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type specialty : struct :traits [card])
nx/tactics/base / specialtymap
Description:
Type Name:
  • specialtymap
Extends:
  • :map
Default:
Allowed Types:
  • specialty
Usage/Test Cases:
Source Code:
  • (type specialtymap : map :traits [card] :allowtypes [specialty])
nx/tactics/base / stat
Description:
Type Name:
  • stat
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type stat : struct :traits [card])
nx/tactics/base / suit
Description:
Type Name:
  • suit
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type suit : struct :traits [card])
nx/tactics/base / suitmap
Description:
Type Name:
  • suitmap
Extends:
  • :map
Default:
Allowed Types:
  • suit
Usage/Test Cases:
Source Code:
  • (type suitmap : map :allowtypes [suit])
nx/tactics/base / tactics
Description:
Type Name:
  • tactics
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    bookmap
    nx/tactics/base/bookmap
    false
    false
    abilitymap
    nx/tactics/base/abilitymap
    false
    false
    cardmap
    nx/tactics/base/cardmap
    false
    false
    itemmap
    nx/tactics/base/itemmap
    false
    false
    locationmap
    nx/tactics/base/locationmap
    false
    false
    powermap
    nx/tactics/base/powermap
    false
    false
    skillmap
    nx/tactics/base/skillmap
    false
    false
    unitmap
    nx/tactics/base/unitmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type tactics : struct :properties [bookmap : bookmap abilitymap : abilitymap cardmap : cardmap itemmap : itemmap locationmap : locationmap powermap : powermap skillmap : skillmap unitmap : unitmap])
nx/tactics/base / tarot
Description:
Type Name:
  • tarot
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type tarot : struct :traits [card])
nx/tactics/base / team
Description:
Type Name:
  • team
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    completevictory
    vx/core/string
    false
    false
    deploy
    vx/core/string
    false
    false
    forces
    vx/core/string
    false
    false
    partialvictory
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type team : struct :properties [completevictory : string deploy : string forces : string partialvictory : string] :traits [card])
nx/tactics/base / teammap
Description:
Type Name:
  • teammap
Extends:
  • :map
Default:
Allowed Types:
  • team
Usage/Test Cases:
Source Code:
  • (type teammap : map :allowtypes [team])
nx/tactics/base / terrain
Description:
Type Name:
  • terrain
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type terrain : struct :traits [card])
nx/tactics/base / terrainmap
Description:
Type Name:
  • terrainmap
Extends:
  • :map
Default:
Allowed Types:
  • terrain
Usage/Test Cases:
Source Code:
  • (type terrainmap : map :allowtypes [terrain])
nx/tactics/base / threat
Description:
Type Name:
  • threat
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    description
    vx/core/string
    false
    false
    progress
    vx/core/int
    false
    false
    complete
    vx/core/int
    false
    false
    consequences
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type threat : struct :properties [description : string progress : int complete : int consequences : string] :traits [card])
nx/tactics/base / unit
Description:
Type Name:
  • unit
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    body
    vx/core/string
    false
    false
    mind
    vx/core/string
    false
    false
    will
    vx/core/string
    false
    false
    move
    vx/core/string
    false
    false
    shadow
    vx/core/string
    false
    false
    conscience
    vx/core/string
    false
    false
    beast
    vx/core/string
    false
    false
    demeanor
    vx/core/string
    false
    false
    nature
    vx/core/string
    false
    false
    age
    vx/core/int
    false
    false
    classification
    vx/core/string
    false
    false
    crew
    vx/core/string
    false
    false
    gender
    vx/core/string
    false
    false
    mass
    vx/core/string
    false
    false
    height
    vx/core/string
    false
    false
    length
    vx/core/string
    false
    false
    race
    vx/core/string
    false
    false
    range
    vx/core/string
    false
    false
    speed
    vx/core/string
    false
    false
    speedair
    vx/core/string
    false
    false
    speedland
    vx/core/string
    false
    false
    speedspace
    vx/core/string
    false
    false
    speedwater
    vx/core/string
    false
    false
    value
    vx/core/string
    false
    false
    width
    vx/core/string
    false
    false
    damagelist
    nx/tactics/base/damagelist
    false
    false
    rolemap
    nx/tactics/base/rolemap
    false
    false
    unitpowermap
    nx/tactics/base/unitpowermap
    false
    false
    unitskillmap
    nx/tactics/base/unitskillmap
    false
    false
    unitweaknessmap
    nx/tactics/base/unitweaknessmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type unit : struct :traits [card] :properties [body : string mind : string will : string move : string shadow : string conscience : string beast : string demeanor : string nature : string age : int classification : string crew : string gender : string mass : string height : string length : string race : string range : string speed : string speedair : string speedland : string speedspace : string speedwater : string value : string width : string damagelist : damagelist rolemap : rolemap unitpowermap : unitpowermap unitskillmap : unitskillmap unitweaknessmap : unitweaknessmap])
nx/tactics/base / unitability
Description:
Type Name:
  • unitability
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    ability
    nx/tactics/base/ability
    false
    false
    image
    vx/core/string
    false
    false
    titles
    vx/core/string
    false
    false
    reference
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type unitability : struct :properties [name : string ability : ability image : string titles : string reference : string])
nx/tactics/base / unitabilitylist
Description:
Type Name:
  • unitabilitylist
Extends:
  • :list
Default:
Allowed Types:
  • unitability
Usage/Test Cases:
Source Code:
  • (type unitabilitylist : list :allowtypes [unitability])
nx/tactics/base / unitabilitymap
Description:
Type Name:
  • unitabilitymap
Extends:
  • :map
Default:
Allowed Types:
  • unitability
Usage/Test Cases:
Source Code:
  • (type unitabilitymap : map :allowtypes [unitability])
nx/tactics/base / unititem
Description:
Type Name:
  • unititem
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    item
    nx/tactics/base/item
    false
    false
    facing
    vx/core/string
    false
    false
    number
    vx/core/string
    false
    false
    rounds
    vx/core/string
    false
    false
    value
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type unititem : struct :properties [name : string item : item facing : string number : string rounds : string value : string] :traits [card])
nx/tactics/base / unititemlist
Description:
Type Name:
  • unititemlist
Extends:
  • :list
Default:
Allowed Types:
  • unititem
Usage/Test Cases:
Source Code:
  • (type unititemlist : list :allowtypes [unititem])
nx/tactics/base / unititemmap
Description:
Type Name:
  • unititemmap
Extends:
  • :map
Default:
Allowed Types:
  • unititem
Usage/Test Cases:
Source Code:
  • (type unititemmap : map :allowtypes [unititem])
nx/tactics/base / unitmap
Description:
Type Name:
  • unitmap
Extends:
  • :map
Default:
Allowed Types:
  • unit
Usage/Test Cases:
Source Code:
  • (type unitmap : map :allowtypes [unit])
nx/tactics/base / unitpower
Description:
Type Name:
  • unitpower
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    level
    vx/core/string
    false
    false
    power
    nx/tactics/base/power
    false
    false
    front
    vx/core/string
    false
    false
    back
    vx/core/string
    false
    false
    over
    vx/core/string
    false
    false
    under
    vx/core/string
    false
    false
    side
    vx/core/string
    false
    false
    strength
    vx/core/string
    false
    false
    unitabilitymap
    nx/tactics/base/unitabilitymap
    false
    false
    unititemmap
    nx/tactics/base/unititemmap
    false
    false
    unitspecialtymap
    nx/tactics/base/unitspecialtymap
    false
    false
Usage/Test Cases:
Source Code:
  • (type unitpower : struct :properties [level : string power : power front : string back : string over : string under : string side : string strength : string unitabilitymap : unitabilitymap unititemmap : unititemmap unitspecialtymap : unitspecialtymap] :traits [card])
nx/tactics/base / unitpowerlist
Description:
Type Name:
  • unitpowerlist
Extends:
  • :list
Default:
Allowed Types:
  • unitpower
Usage/Test Cases:
Source Code:
  • (type unitpowerlist : list :allowtypes [unitpower])
nx/tactics/base / unitpowermap
Description:
Type Name:
  • unitpowermap
Extends:
  • :map
Default:
Allowed Types:
  • unitpower
Usage/Test Cases:
Source Code:
  • (type unitpowermap : map :allowtypes [unitpower])
nx/tactics/base / unitskill
Description:
Type Name:
  • unitskill
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    level
    vx/core/string
    false
    false
    skill
    nx/tactics/base/skill
    false
    false
    unitabilitymap
    nx/tactics/base/unitabilitymap
    false
    false
    unititemmap
    nx/tactics/base/unititemmap
    false
    false
    unitspecialtymap
    nx/tactics/base/unitspecialtymap
    false
    false
Usage/Test Cases:
Source Code:
  • (type unitskill : struct :properties [level : string skill : skill unitabilitymap : unitabilitymap unititemmap : unititemmap unitspecialtymap : unitspecialtymap] :traits [card])
nx/tactics/base / unitskilllist
Description:
Type Name:
  • unitskilllist
Extends:
  • :list
Default:
Allowed Types:
  • unitskill
Usage/Test Cases:
Source Code:
  • (type unitskilllist : list :allowtypes [unitskill])
nx/tactics/base / unitskillmap
Description:
Type Name:
  • unitskillmap
Extends:
  • :map
Default:
Allowed Types:
  • unitskill
Usage/Test Cases:
Source Code:
  • (type unitskillmap : map :allowtypes [unitskill])
nx/tactics/base / unitspecialty
Description:
Type Name:
  • unitspecialty
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    image
    vx/core/string
    false
    false
    titles
    vx/core/string
    false
    false
    reference
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type unitspecialty : struct :properties [name : string image : string titles : string reference : string])
nx/tactics/base / unitspecialtymap
Description:
Type Name:
  • unitspecialtymap
Extends:
  • :map
Default:
Allowed Types:
  • unitspecialty
Usage/Test Cases:
Source Code:
  • (type unitspecialtymap : map :allowtypes [unitspecialty])
nx/tactics/base / unitweakness
Description:
Type Name:
  • unitweakness
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type unitweakness : struct :traits [card])
nx/tactics/base / unitweaknessmap
Description:
Type Name:
  • unitweaknessmap
Extends:
  • :map
Default:
Allowed Types:
  • unitweakness
Usage/Test Cases:
Source Code:
  • (type unitweaknessmap : map :allowtypes [unitweakness])
nx/tactics/base / weakness
Description:
Type Name:
  • weakness
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type weakness : struct :traits [card])
nx/tactics/base / weaknessmap
Description:
Type Name:
  • weaknessmap
Extends:
  • :map
Default:
Allowed Types:
  • weakness
Usage/Test Cases:
Source Code:
  • (type weaknessmap : map :allowtypes [weakness])
nx/tactics/base / disorder
Description:
  • Lasting Mind Damage
Type Name:
  • disorder
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type disorder : struct :traits [card] :doc "Lasting Mind Damage")
nx/tactics/base / trauma
Description:
  • Lasting Will Damage
Type Name:
  • trauma
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type trauma : struct :traits [card] :doc "Lasting Will Damage")
nx/tactics/base / rank-ace
Description:
Constant Name:
  • rank-ace
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-ace : rank (rank :name "Ace" :titles "A"))
nx/tactics/base / rank-king
Description:
Constant Name:
  • rank-king
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-king : rank (rank :name "King" :titles "K"))
nx/tactics/base / rank-queen
Description:
Constant Name:
  • rank-queen
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-queen : rank (rank :name "Queen" :titles "Q"))
nx/tactics/base / rank-jack
Description:
Constant Name:
  • rank-jack
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-jack : rank (rank :name "Jack" :titles "J"))
nx/tactics/base / rank-ten
Description:
Constant Name:
  • rank-ten
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-ten : rank (rank :name "Ten" :titles "10"))
nx/tactics/base / rank-nine
Description:
Constant Name:
  • rank-nine
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-nine : rank (rank :name "Nine" :titles "9"))
nx/tactics/base / rank-eight
Description:
Constant Name:
  • rank-eight
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-eight : rank (rank :name "Eight" :titles "8"))
nx/tactics/base / rank-seven
Description:
Constant Name:
  • rank-seven
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-seven : rank (rank :name "Seven" :titles "7"))
nx/tactics/base / rank-six
Description:
Constant Name:
  • rank-six
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-six : rank (rank :name "Six" :titles "6"))
nx/tactics/base / rank-five
Description:
Constant Name:
  • rank-five
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-five : rank (rank :name "Five" :titles "5"))
nx/tactics/base / rank-four
Description:
Constant Name:
  • rank-four
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-four : rank (rank :name "Four" :titles "4"))
nx/tactics/base / rank-three
Description:
Constant Name:
  • rank-three
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-three : rank (rank :name "Three" :titles "3"))
nx/tactics/base / rank-two
Description:
Constant Name:
  • rank-two
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-two : rank (rank :name "Two" :titles "2"))
nx/tactics/base / rank-joker
Description:
Constant Name:
  • rank-joker
Type:
  • nx/tactics/base/rank
Usage/Test Cases:
Source Code:
  • (const rank-joker : rank (rank :name "Wild" :titles "W"))
nx/tactics/base / ranksuit-jokerblack
Description:
Constant Name:
  • ranksuit-jokerblack
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-jokerblack : ranksuit (ranksuit :rank rank-joker :suit suit-black))
nx/tactics/base / ranksuit-jokerred
Description:
Constant Name:
  • ranksuit-jokerred
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-jokerred : ranksuit (ranksuit :rank rank-joker :suit suit-red))
nx/tactics/base / ranksuit-ac
Description:
Constant Name:
  • ranksuit-ac
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-ac : ranksuit (ranksuit :rank rank-ace :suit suit-club))
nx/tactics/base / ranksuit-ad
Description:
Constant Name:
  • ranksuit-ad
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-ad : ranksuit (ranksuit :rank rank-ace :suit suit-diamond))
nx/tactics/base / ranksuit-ah
Description:
Constant Name:
  • ranksuit-ah
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-ah : ranksuit (ranksuit :rank rank-ace :suit suit-heart))
nx/tactics/base / ranksuit-as
Description:
Constant Name:
  • ranksuit-as
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-as : ranksuit (ranksuit :rank rank-ace :suit suit-spade))
nx/tactics/base / ranksuit-kc
Description:
Constant Name:
  • ranksuit-kc
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-kc : ranksuit (ranksuit :rank rank-king :suit suit-club))
nx/tactics/base / ranksuit-kd
Description:
Constant Name:
  • ranksuit-kd
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-kd : ranksuit (ranksuit :rank rank-king :suit suit-diamond))
nx/tactics/base / ranksuit-kh
Description:
Constant Name:
  • ranksuit-kh
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-kh : ranksuit (ranksuit :rank rank-king :suit suit-heart))
nx/tactics/base / ranksuit-ks
Description:
Constant Name:
  • ranksuit-ks
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-ks : ranksuit (ranksuit :rank rank-king :suit suit-spade))
nx/tactics/base / ranksuit-qc
Description:
Constant Name:
  • ranksuit-qc
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-qc : ranksuit (ranksuit :rank rank-queen :suit suit-club))
nx/tactics/base / ranksuit-qd
Description:
Constant Name:
  • ranksuit-qd
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-qd : ranksuit (ranksuit :rank rank-queen :suit suit-diamond))
nx/tactics/base / ranksuit-qh
Description:
Constant Name:
  • ranksuit-qh
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-qh : ranksuit (ranksuit :rank rank-queen :suit suit-heart))
nx/tactics/base / ranksuit-qs
Description:
Constant Name:
  • ranksuit-qs
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-qs : ranksuit (ranksuit :rank rank-queen :suit suit-spade))
nx/tactics/base / ranksuit-jc
Description:
Constant Name:
  • ranksuit-jc
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-jc : ranksuit (ranksuit :rank rank-jack :suit suit-club))
nx/tactics/base / ranksuit-jd
Description:
Constant Name:
  • ranksuit-jd
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-jd : ranksuit (ranksuit :rank rank-jack :suit suit-diamond))
nx/tactics/base / ranksuit-jh
Description:
Constant Name:
  • ranksuit-jh
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-jh : ranksuit (ranksuit :rank rank-jack :suit suit-heart))
nx/tactics/base / ranksuit-js
Description:
Constant Name:
  • ranksuit-js
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-js : ranksuit (ranksuit :rank rank-jack :suit suit-spade))
nx/tactics/base / ranksuit-tc
Description:
Constant Name:
  • ranksuit-tc
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-tc : ranksuit (ranksuit :rank rank-ten :suit suit-club))
nx/tactics/base / ranksuit-td
Description:
Constant Name:
  • ranksuit-td
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-td : ranksuit (ranksuit :rank rank-ten :suit suit-diamond))
nx/tactics/base / ranksuit-th
Description:
Constant Name:
  • ranksuit-th
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-th : ranksuit (ranksuit :rank rank-ten :suit suit-heart))
nx/tactics/base / ranksuit-ts
Description:
Constant Name:
  • ranksuit-ts
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-ts : ranksuit (ranksuit :rank rank-ten :suit suit-spade))
nx/tactics/base / ranksuit-9c
Description:
Constant Name:
  • ranksuit-9c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-9c : ranksuit (ranksuit :rank rank-nine :suit suit-club))
nx/tactics/base / ranksuit-9d
Description:
Constant Name:
  • ranksuit-9d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-9d : ranksuit (ranksuit :rank rank-nine :suit suit-diamond))
nx/tactics/base / ranksuit-9h
Description:
Constant Name:
  • ranksuit-9h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-9h : ranksuit (ranksuit :rank rank-nine :suit suit-heart))
nx/tactics/base / ranksuit-9s
Description:
Constant Name:
  • ranksuit-9s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-9s : ranksuit (ranksuit :rank rank-nine :suit suit-spade))
nx/tactics/base / ranksuit-8c
Description:
Constant Name:
  • ranksuit-8c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-8c : ranksuit (ranksuit :rank rank-eight :suit suit-club))
nx/tactics/base / ranksuit-8d
Description:
Constant Name:
  • ranksuit-8d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-8d : ranksuit (ranksuit :rank rank-eight :suit suit-diamond))
nx/tactics/base / ranksuit-8h
Description:
Constant Name:
  • ranksuit-8h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-8h : ranksuit (ranksuit :rank rank-eight :suit suit-heart))
nx/tactics/base / ranksuit-7c
Description:
Constant Name:
  • ranksuit-7c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-7c : ranksuit (ranksuit :rank rank-seven :suit suit-club))
nx/tactics/base / ranksuit-7d
Description:
Constant Name:
  • ranksuit-7d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-7d : ranksuit (ranksuit :rank rank-seven :suit suit-diamond))
nx/tactics/base / ranksuit-7h
Description:
Constant Name:
  • ranksuit-7h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-7h : ranksuit (ranksuit :rank rank-seven :suit suit-heart))
nx/tactics/base / ranksuit-7s
Description:
Constant Name:
  • ranksuit-7s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-7s : ranksuit (ranksuit :rank rank-seven :suit suit-spade))
nx/tactics/base / ranksuit-6c
Description:
Constant Name:
  • ranksuit-6c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-6c : ranksuit (ranksuit :rank rank-six :suit suit-club))
nx/tactics/base / ranksuit-6d
Description:
Constant Name:
  • ranksuit-6d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-6d : ranksuit (ranksuit :rank rank-six :suit suit-diamond))
nx/tactics/base / ranksuit-6h
Description:
Constant Name:
  • ranksuit-6h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-6h : ranksuit (ranksuit :rank rank-six :suit suit-heart))
nx/tactics/base / ranksuit-6s
Description:
Constant Name:
  • ranksuit-6s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-6s : ranksuit (ranksuit :rank rank-six :suit suit-spade))
nx/tactics/base / ranksuit-5c
Description:
Constant Name:
  • ranksuit-5c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-5c : ranksuit (ranksuit :rank rank-five :suit suit-club))
nx/tactics/base / ranksuit-5d
Description:
Constant Name:
  • ranksuit-5d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-5d : ranksuit (ranksuit :rank rank-five :suit suit-diamond))
nx/tactics/base / ranksuit-5h
Description:
Constant Name:
  • ranksuit-5h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-5h : ranksuit (ranksuit :rank rank-five :suit suit-heart))
nx/tactics/base / ranksuit-5s
Description:
Constant Name:
  • ranksuit-5s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-5s : ranksuit (ranksuit :rank rank-five :suit suit-spade))
nx/tactics/base / ranksuit-4c
Description:
Constant Name:
  • ranksuit-4c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-4c : ranksuit (ranksuit :rank rank-four :suit suit-club))
nx/tactics/base / ranksuit-4d
Description:
Constant Name:
  • ranksuit-4d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-4d : ranksuit (ranksuit :rank rank-four :suit suit-diamond))
nx/tactics/base / ranksuit-4h
Description:
Constant Name:
  • ranksuit-4h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-4h : ranksuit (ranksuit :rank rank-four :suit suit-heart))
nx/tactics/base / ranksuit-4s
Description:
Constant Name:
  • ranksuit-4s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-4s : ranksuit (ranksuit :rank rank-four :suit suit-spade))
nx/tactics/base / ranksuit-3c
Description:
Constant Name:
  • ranksuit-3c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-3c : ranksuit (ranksuit :rank rank-three :suit suit-club))
nx/tactics/base / ranksuit-3d
Description:
Constant Name:
  • ranksuit-3d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-3d : ranksuit (ranksuit :rank rank-three :suit suit-diamond))
nx/tactics/base / ranksuit-3h
Description:
Constant Name:
  • ranksuit-3h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-3h : ranksuit (ranksuit :rank rank-three :suit suit-heart))
nx/tactics/base / ranksuit-3s
Description:
Constant Name:
  • ranksuit-3s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-3s : ranksuit (ranksuit :rank rank-three :suit suit-spade))
nx/tactics/base / ranksuit-2c
Description:
Constant Name:
  • ranksuit-2c
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-2c : ranksuit (ranksuit :rank rank-two :suit suit-club))
nx/tactics/base / ranksuit-2d
Description:
Constant Name:
  • ranksuit-2d
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-2d : ranksuit (ranksuit :rank rank-two :suit suit-diamond))
nx/tactics/base / ranksuit-2h
Description:
Constant Name:
  • ranksuit-2h
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-2h : ranksuit (ranksuit :rank rank-two :suit suit-heart))
nx/tactics/base / ranksuit-2s
Description:
Constant Name:
  • ranksuit-2s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-2s : ranksuit (ranksuit :rank rank-two :suit suit-spade))
nx/tactics/base / ranksuit-8s
Description:
Constant Name:
  • ranksuit-8s
Type:
  • nx/tactics/base/ranksuit
Usage/Test Cases:
Source Code:
  • (const ranksuit-8s : ranksuit (ranksuit :rank rank-eight :suit suit-spade))
nx/tactics/base / role-aoe
Description:
Constant Name:
  • role-aoe
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-aoe : role)
nx/tactics/base / role-bosskiller
Description:
Constant Name:
  • role-bosskiller
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-bosskiller : role)
nx/tactics/base / role-buffer
Description:
Constant Name:
  • role-buffer
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-buffer : role)
nx/tactics/base / role-crowdcontrol
Description:
Constant Name:
  • role-crowdcontrol
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-crowdcontrol : role)
nx/tactics/base / role-distracter
Description:
Constant Name:
  • role-distracter
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-distracter : role)
nx/tactics/base / role-healer
Description:
Constant Name:
  • role-healer
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-healer : role)
nx/tactics/base / role-sniper
Description:
Constant Name:
  • role-sniper
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-sniper : role)
nx/tactics/base / role-tank
Description:
Constant Name:
  • role-tank
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-tank : role)
nx/tactics/base / role-trapper
Description:
Constant Name:
  • role-trapper
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-trapper : role)
nx/tactics/base / role-utility
Description:
Constant Name:
  • role-utility
Type:
  • nx/tactics/base/role
Usage/Test Cases:
Source Code:
  • (const role-utility : role)
nx/tactics/base / stat-beast
Description:
  • The ability to use wild rage or terror to lash out or flee. This is the opposite of the [Will].
Constant Name:
  • stat-beast
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-beast : stat :doc "The ability to use wild rage or terror to lash out or flee. This is the opposite of the [Will].")
nx/tactics/base / stat-body
Description:
Constant Name:
  • stat-body
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-body : stat)
nx/tactics/base / stat-mind
Description:
Constant Name:
  • stat-mind
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-mind : stat)
nx/tactics/base / stat-shadow
Description:
  • The ability to use rational thought to do selfish/impulsive acts. This is the opposite of the [Mind].
Constant Name:
  • stat-shadow
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-shadow : stat :doc "The ability to use rational thought to do selfish/impulsive acts. This is the opposite of the [Mind].")
nx/tactics/base / stat-will
Description:
Constant Name:
  • stat-will
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-will : stat)
nx/tactics/base / stat-speed
Description:
Constant Name:
  • stat-speed
Type:
  • nx/tactics/base/stat
Usage/Test Cases:
Source Code:
  • (const stat-speed : stat)
nx/tactics/base / suit-club
Description:
Constant Name:
  • suit-club
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-club : suit)
nx/tactics/base / suit-diamond
Description:
Constant Name:
  • suit-diamond
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-diamond : suit)
nx/tactics/base / suit-heart
Description:
Constant Name:
  • suit-heart
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-heart : suit)
nx/tactics/base / suit-spade
Description:
Constant Name:
  • suit-spade
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-spade : suit)
nx/tactics/base / suit-black
Description:
Constant Name:
  • suit-black
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-black : suit)
nx/tactics/base / suit-red
Description:
Constant Name:
  • suit-red
Type:
  • nx/tactics/base/suit
Usage/Test Cases:
Source Code:
  • (const suit-red : suit)
nx/tactics/base / bookmap<-booklist
Description:
  • Returns a bookmap of all books.
Function Name:
  • bookmap<-booklist
Return Type:
  • nx/tactics/base/bookmap
Arguments:
  • Name
    Type
    Generic
    Description
    booklist
    nx/tactics/base/booklist
Usage/Test Cases:
Source Code:
  • (func bookmap<-booklist : bookmap [booklist : booklist] (map<-list : bookmap booklist (fn : string [book : book] (:name book))) :doc "Returns a bookmap of all books.")
nx/tactics/base / cardlist-copy<-card-num
Description:
  • Returns a cardlist by copying a card num times
Function Name:
  • cardlist-copy<-card-num
Return Type:
  • nx/tactics/base/cardlist
Arguments:
  • Name
    Type
    Generic
    Description
    card
    nx/tactics/base/card
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func cardlist-copy<-card-num : cardlist [card : card num : int] (list<-for-end-loop 1 num (fn : card [pos : int] (let : card [id : string := (:id card) chg : string := (string id "-" pos)] (copy card :id chg)))) :doc "Returns a cardlist by copying a card num times")
nx/tactics/base / cardmap<-bookmap
Description:
  • Returns a cardmap from a given bookmap
Function Name:
  • cardmap<-bookmap
Return Type:
  • nx/tactics/base/cardmap
Arguments:
  • Name
    Type
    Generic
    Description
    bookmap
    nx/tactics/base/bookmap
Usage/Test Cases:
Source Code:
  • (func cardmap<-bookmap : cardmap [bookmap : bookmap] (map<-map : cardmap bookmap (fn : card [key : string value : book] (any<-any : card value))) :doc "Returns a cardmap from a given bookmap")
nx/tactics/base / cardmap<-cardlist
Description:
Function Name:
  • cardmap<-cardlist
Return Type:
  • nx/tactics/base/cardmap
Arguments:
  • Name
    Type
    Generic
    Description
    cardlist
    nx/tactics/base/cardlist
Usage/Test Cases:
Source Code:
  • (func cardmap<-cardlist : cardmap [cardlist : cardlist :...] (map<-list : cardmap cardlist (fn : string [card : card] (let : string [id : string := (:id card) name : string := (:name card)] (if : string (!-empty id) id name)))))
nx/tactics/base / cardmap-copy<-card-num
Description:
  • Returns a cardmap by copying a card num times
Function Name:
  • cardmap-copy<-card-num
Return Type:
  • nx/tactics/base/cardmap
Arguments:
  • Name
    Type
    Generic
    Description
    card
    nx/tactics/base/card
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func cardmap-copy<-card-num : cardmap [card : card num : int] (let : cardmap [cardlist : cardlist := (cardlist-copy<-card-num card num)] (cardmap<-cardlist cardlist)) :doc "Returns a cardmap by copying a card num times")
nx/tactics/base / chapterlist<-book
Description:
  • Returns a chapterlist from a given book
Function Name:
  • chapterlist<-book
Return Type:
  • nx/tactics/base/chapterlist
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
Usage/Test Cases:
Source Code:
  • (func chapterlist<-book : chapterlist [book : book] (let : chapterlist [chaptermap : chaptermap := (:chaptermap book)] (list<-map : chapterlist chaptermap (fn : chapter [key : string value : chapter] value))) :doc "Returns a chapterlist from a given book")
nx/tactics/base / chapterlist<-booklist
Description:
  • Returns a chapterlist from a given bookmap
Function Name:
  • chapterlist<-booklist
Return Type:
  • nx/tactics/base/chapterlist
Arguments:
  • Name
    Type
    Generic
    Description
    booklist
    nx/tactics/base/booklist
Usage/Test Cases:
Source Code:
  • (func chapterlist<-booklist : chapterlist [booklist : booklist] (let : chapterlist [chapterlistlist : chapterlistlist := (chapterlistlist<-booklist booklist)] (chapterlist<-chapterlistlist chapterlistlist)) :doc "Returns a chapterlist from a given bookmap")
nx/tactics/base / chapterlist<-chapterlistlist
Description:
  • Returns a chapterlist from a given chapterlistlist
Function Name:
  • chapterlist<-chapterlistlist
Return Type:
  • nx/tactics/base/chapterlistlist
Arguments:
  • Name
    Type
    Generic
    Description
    chapterlistlist
    nx/tactics/base/chapterlistlist
Usage/Test Cases:
Source Code:
  • (func chapterlist<-chapterlistlist : chapterlistlist [chapterlistlist : chapterlistlist] (list-join<-list : chapterlist chapterlistlist) :doc "Returns a chapterlist from a given chapterlistlist")
nx/tactics/base / chapterlistlist<-booklist
Description:
  • Returns a chapterlistlist from a given booklist
Function Name:
  • chapterlistlist<-booklist
Return Type:
  • nx/tactics/base/chapterlistlist
Arguments:
  • Name
    Type
    Generic
    Description
    booklist
    nx/tactics/base/booklist
Usage/Test Cases:
Source Code:
  • (func chapterlistlist<-booklist : chapterlistlist [booklist : booklist] (list<-list : chapterlistlist booklist (fn : chapterlist [book : book] (chapterlist<-book : chapterlist book))) :doc "Returns a chapterlistlist from a given booklist")
nx/tactics/base / chaptermap<-chapterlist
Description:
  • Returns a chaptermap from a given chapterlist
Function Name:
  • chaptermap<-chapterlist
Return Type:
  • nx/tactics/base/chaptermap
Arguments:
  • Name
    Type
    Generic
    Description
    chapterlist
    nx/tactics/base/chapterlist
Usage/Test Cases:
Source Code:
  • (func chaptermap<-chapterlist : chaptermap [chapterlist : chapterlist] (map<-list : chaptermap chapterlist (fn : chapter [chapter : chapter] (:name chapter))) :doc "Returns a chaptermap from a given chapterlist")
nx/tactics/base / cardimage<-card
Description:
  • Returns a cardimage from a given card
Function Name:
  • cardimage<-card
Return Type:
  • nx/tactics/base/cardimage
Arguments:
  • Name
    Type
    Generic
    Description
    card
    nx/tactics/base/card
Usage/Test Cases:
Source Code:
  • (func cardimage<-card : cardimage [card : card] (let : cardimage [name : string := (:name card) image : string := (:image card) id : string := (string name "-image")] (base/cardimage :id id :name name :origcard card :image image)) :doc "Returns a cardimage from a given card")
nx/tactics/base / name<-chapter
Description:
Function Name:
  • name<-chapter
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
Usage/Test Cases:
Source Code:
  • (func name<-chapter : string [chapter : chapter] (:name chapter))
nx/tactics/base / sectionlist<-chapter
Description:
  • Returns a list of all sections directly under the given chapter
Function Name:
  • sectionlist<-chapter
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
Usage/Test Cases:
Source Code:
  • (func sectionlist<-chapter : sectionlist [chapter : chapter] (let : sectionlist [sectionmap : sectionmap := (:sectionmap chapter)] (sectionlist<-sectionmap sectionmap)) :doc "Returns a list of all sections directly under the given chapter")
nx/tactics/base / sectionlist<-chapterlist
Description:
  • Returns a list of all sections directly under the given chapterlist
Function Name:
  • sectionlist<-chapterlist
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    chapterlist
    nx/tactics/base/chapterlist
Usage/Test Cases:
Source Code:
  • (func sectionlist<-chapterlist : sectionlist [chapterlist : chapterlist] (let : sectionlist [sectionlistlist : sectionlistlist := (sectionlistlist<-chapterlist chapterlist)] (sectionlist<-sectionlistlist sectionlistlist)) :doc "Returns a list of all sections directly under the given chapterlist")
nx/tactics/base / sectionlist<-section
Description:
  • Returns a list of all sections including subsections
Function Name:
  • sectionlist<-section
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
Usage/Test Cases:
Source Code:
  • (func sectionlist<-section : sectionlist [section : section] (let : sectionlist [sectionmap : sectionmap := (:sectionmap section)] (sectionlist<-sectionmap sectionmap)) :doc "Returns a list of all sections including subsections")
nx/tactics/base / sectionlist<-sectionlistlist
Description:
  • Returns a sectionlist from a given sectionlistlist
Function Name:
  • sectionlist<-sectionlistlist
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    sectionlistlist
    nx/tactics/base/sectionlistlist
Usage/Test Cases:
Source Code:
  • (func sectionlist<-sectionlistlist : sectionlist [sectionlistlist : sectionlistlist] (list-join<-list : sectionlist sectionlistlist) :doc "Returns a sectionlist from a given sectionlistlist")
nx/tactics/base / sectionlist<-sectionmap
Description:
  • Returns a list of all sections including subsections
Function Name:
  • sectionlist<-sectionmap
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    sectionmap
    nx/tactics/base/sectionmap
Usage/Test Cases:
Source Code:
  • (func sectionlist<-sectionmap : sectionlist [sectionmap : sectionmap] (list<-map : sectionlist sectionmap) :doc "Returns a list of all sections including subsections")
nx/tactics/base / sectionlist-all<-chapterlist
Description:
  • Returns a list of all sections including subsections
Function Name:
  • sectionlist-all<-chapterlist
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    chapterlist
    nx/tactics/base/chapterlist
Usage/Test Cases:
Source Code:
  • (func sectionlist-all<-chapterlist : sectionlist [chapterlist : chapterlist] (let : sectionlist [sections : sectionlist := (sectionlist<-chapterlist chapterlist)] (sectionlist-all<-sectionlist sections)) :doc "Returns a list of all sections including subsections")
nx/tactics/base / sectionlist-all<-section
Description:
  • Returns a list of all sections including subsections
Function Name:
  • sectionlist-all<-section
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
Usage/Test Cases:
Source Code:
  • (func sectionlist-all<-section : sectionlist [section : section] (let : sectionlist [subsections : sectionlist := (sectionlist<-section section)] (any<-list-start-reduce : sectionlist subsections (sectionlist section) (fn : sectionlist [total : sectionlist subsection : section] (let : sectionlist [subsubsections : sectionlist := (sectionlist-all<-section subsection)] (copy total subsubsections))))) :doc "Returns a list of all sections including subsections")
nx/tactics/base / sectionlist-all<-sectionlist
Description:
  • Returns a list of all sections including subsections
Function Name:
  • sectionlist-all<-sectionlist
Return Type:
  • nx/tactics/base/sectionlist
Arguments:
  • Name
    Type
    Generic
    Description
    sectionlist
    nx/tactics/base/sectionlist
Usage/Test Cases:
  • (test (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1") (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1")) (sectionlist-all<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))))))
Source Code:
  • (func sectionlist-all<-sectionlist : sectionlist [sectionlist : sectionlist] (let : sectionlist [sectionlistlist : sectionlistlist := (sectionlistlist<-sectionlist sectionlist)] (list-join<-list : sectionlist sectionlistlist)) :test (test (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1") (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1")) (sectionlist-all<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1")))))) :doc "Returns a list of all sections including subsections")
nx/tactics/base / sectionlistlist<-chapterlist
Description:
  • Returns a shallow sectionlistlist from a given chapterlist
Function Name:
  • sectionlistlist<-chapterlist
Return Type:
  • nx/tactics/base/sectionlistlist
Arguments:
  • Name
    Type
    Generic
    Description
    chapterlist
    nx/tactics/base/chapterlist
Usage/Test Cases:
Source Code:
  • (func sectionlistlist<-chapterlist : sectionlistlist [chapterlist : chapterlist] (list<-list : sectionlistlist chapterlist (fn : sectionlist [chapter : chapter] (sectionlist<-chapter chapter))) :doc "Returns a shallow sectionlistlist from a given chapterlist")
nx/tactics/base / sectionlistlist<-sectionlist
Description:
  • Returns a shallow sectionlistlist from a given sectionlist
Function Name:
  • sectionlistlist<-sectionlist
Return Type:
  • nx/tactics/base/sectionlistlist
Arguments:
  • Name
    Type
    Generic
    Description
    sectionlist
    nx/tactics/base/sectionlist
Usage/Test Cases:
  • (test (sectionlistlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1")) (sectionlist (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1"))) (sectionlistlist<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))))))
Source Code:
  • (func sectionlistlist<-sectionlist : sectionlistlist [sectionlist : sectionlist] (list<-list : sectionlistlist sectionlist (fn : sectionlist [section : section] (let : sectionlist [sublist : sectionlist := (sectionlist<-section section)] (sectionlist section sublist)))) :test (test (sectionlistlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "a1")) (sectionlist (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1"))) (section :name "b1"))) (sectionlistlist<-sectionlist (sectionlist (section :name "a" :sectionmap (sectionmap "a1" (section :name "a1"))) (section :name "b" :sectionmap (sectionmap "b1" (section :name "b1")))))) :doc "Returns a shallow sectionlistlist from a given sectionlist")
nx/tactics/base / sectionmap<-sectionlist
Description:
  • Returns a sectionmap from a given sectionlist
Function Name:
  • sectionmap<-sectionlist
Return Type:
  • nx/tactics/base/sectionmap
Arguments:
  • Name
    Type
    Generic
    Description
    sectionlist
    nx/tactics/base/sectionlist
Usage/Test Cases:
Source Code:
  • (func sectionmap<-sectionlist : sectionmap [sectionlist : sectionlist] (map<-list : sectionmap sectionlist (fn : section [section : section] (:name section))) :doc "Returns a sectionmap from a given sectionlist")
nx/tactics/base / skilllist<-section
Description:
  • Returns a skilllist from a given skilllistlist
Function Name:
  • skilllist<-section
Return Type:
  • nx/tactics/base/skilllist
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
Usage/Test Cases:
Source Code:
  • (func skilllist<-section : skilllist [section : section] (let : skilllist [secname : string := (:name section) sec : section := (copy section :name secname) skillmap : skillmap := (:skillmap section)] (skilllist<-skillmap skillmap)) :doc "Returns a skilllist from a given skilllistlist")
nx/tactics/base / skilllist<-sectionlist
Description:
  • Returns a skilllist from a given skilllistlist
Function Name:
  • skilllist<-sectionlist
Return Type:
  • nx/tactics/base/skilllist
Arguments:
  • Name
    Type
    Generic
    Description
    sectionlist
    nx/tactics/base/sectionlist
Usage/Test Cases:
Source Code:
  • (func skilllist<-sectionlist : skilllist [sectionlist : sectionlist] (let : skilllist [skilllistlist : skilllistlist := (skilllistlist<-sectionlist sectionlist)] (skilllist<-skilllistlist skilllistlist)) :doc "Returns a skilllist from a given skilllistlist")
nx/tactics/base / skilllist<-skilllistlist
Description:
  • Returns a skillmap from a given skilllist
Function Name:
  • skilllist<-skilllistlist
Return Type:
  • nx/tactics/base/skilllist
Arguments:
  • Name
    Type
    Generic
    Description
    skilllistlist
    nx/tactics/base/skilllistlist
Usage/Test Cases:
Source Code:
  • (func skilllist<-skilllistlist : skilllist [skilllistlist : skilllistlist] (list-join<-list : skilllist skilllistlist) :doc "Returns a skillmap from a given skilllist")
nx/tactics/base / skilllist<-skillmap
Description:
  • Returns a skillmap from a given skilllist
Function Name:
  • skilllist<-skillmap
Return Type:
  • nx/tactics/base/skilllist
Arguments:
  • Name
    Type
    Generic
    Description
    skillmap
    nx/tactics/base/skillmap
Usage/Test Cases:
Source Code:
  • (func skilllist<-skillmap : skilllist [skillmap : skillmap] (list<-map : skilllist skillmap) :doc "Returns a skillmap from a given skilllist")
nx/tactics/base / skilllistlist<-sectionlist
Description:
  • Returns a skilllistlist from a given sectionlist
Function Name:
  • skilllistlist<-sectionlist
Return Type:
  • nx/tactics/base/skilllistlist
Arguments:
  • Name
    Type
    Generic
    Description
    sections
    nx/tactics/base/sectionlist
Usage/Test Cases:
Source Code:
  • (func skilllistlist<-sectionlist : skilllistlist [sections : sectionlist] (list<-list : skilllistlist sections (fn : skilllist [section : section] (skilllist<-section section))) :doc "Returns a skilllistlist from a given sectionlist")
nx/tactics/base / skillmap<-skilllist
Description:
  • Returns a skillmap from a given skilllist
Function Name:
  • skillmap<-skilllist
Return Type:
  • nx/tactics/base/skillmap
Arguments:
  • Name
    Type
    Generic
    Description
    skilllist
    nx/tactics/base/skilllist
Usage/Test Cases:
Source Code:
  • (func skillmap<-skilllist : skillmap [skilllist : skilllist] (map<-list : skillmap skilllist (fn : skill [skill : skill] (:name skill))) :doc "Returns a skillmap from a given skilllist")
nx/tactics/base / tactics<-booklist
Description:
  • Return a ready tactics from a bookmap.
Function Name:
  • tactics<-booklist
Return Type:
  • nx/tactics/base/tactics
Arguments:
  • Name
    Type
    Generic
    Description
    booklist
    nx/tactics/base/booklist
Usage/Test Cases:
Source Code:
  • (func tactics<-booklist : tactics [booklist : booklist] (let : tactics [bookmap : bookmap := (bookmap<-booklist booklist) chapterlist : chapterlist := (chapterlist<-booklist booklist) chaptermap : chaptermap := (chaptermap<-chapterlist chapterlist) sectionlist : sectionlist := (sectionlist-all<-chapterlist chapterlist) sectionmap : sectionmap := (sectionmap<-sectionlist sectionlist) // powerlist : powerlist := (powerlist<-sectionlist // sectionlist) // powermap : powermap := (powermap<-powerlist // powerlist) skilllist : skilllist := (skilllist<-sectionlist sectionlist) skillmap : skillmap := (skillmap<-skilllist skilllist) // unitlist : unitlist := (unitlist<-sectionlist // sectionlist) // unitmap : unitmap := (unitmap<-unitlist // unitlist) ] (tactics :bookmap bookmap :chaptermap chaptermap :powermap powermap :sectionmap sectionmap :skillmap skillmap :unitmap unitmap)) :doc "Return a ready tactics from a bookmap.")
nx/tactics/base / unitabilitymap<-unitabilitylist
Description:
  • Returns a unitabilitymap from a unitabilitylist
Function Name:
  • unitabilitymap<-unitabilitylist
Return Type:
  • nx/tactics/base/unitabilitymap
Arguments:
  • Name
    Type
    Generic
    Description
    unitabilitylist
    nx/tactics/base/unitabilitylist
Usage/Test Cases:
Source Code:
  • (func unitabilitymap<-unitabilitylist : unitabilitymap [unitabilitylist : unitabilitylist :...] (map<-list : unitabilitymap unitabilitylist (fn : string [unitability : unitability] (let : string [ability : ability := (:ability unitability) name : string := (if : string (is-empty ability) (:name unitability) (:name ability))] name))) :doc "Returns a unitabilitymap from a unitabilitylist")
nx/tactics/base / unititemmap<-unititemlist
Description:
  • Returns a unititemmap from a unititemlist
Function Name:
  • unititemmap<-unititemlist
Return Type:
  • nx/tactics/base/unititemmap
Arguments:
  • Name
    Type
    Generic
    Description
    unititemlist
    nx/tactics/base/unititemlist
Usage/Test Cases:
Source Code:
  • (func unititemmap<-unititemlist : unititemmap [unititemlist : unititemlist :...] (map<-list : unititemmap unititemlist (fn : string [unititem : unititem] (let : string [item : item := (:item unititem) name : string := (:name item)] name))) :doc "Returns a unititemmap from a unititemlist")
nx/tactics/base / unitpowermap<-unitpowerlist
Description:
  • Returns a unitpowermap from a unitpowerlist
Function Name:
  • unitpowermap<-unitpowerlist
Return Type:
  • nx/tactics/base/unitpowermap
Arguments:
  • Name
    Type
    Generic
    Description
    unitpowerlist
    nx/tactics/base/unitpowerlist
Usage/Test Cases:
Source Code:
  • (func unitpowermap<-unitpowerlist : unitpowermap [unitpowerlist : unitpowerlist :...] (map<-list : unitpowermap unitpowerlist (fn : string [unitpower : unitpower] (let : string [power : power := (:power unitpower) name : string := (:name power)] name))) :doc "Returns a unitpowermap from a unitpowerlist")
nx/tactics/base / unitskillmap<-unitskilllist
Description:
  • Returns a unitskillmap from a unitskilllist
Function Name:
  • unitskillmap<-unitskilllist
Return Type:
  • nx/tactics/base/unitskillmap
Arguments:
  • Name
    Type
    Generic
    Description
    unitskilllist
    nx/tactics/base/unitskilllist
Usage/Test Cases:
Source Code:
  • (func unitskillmap<-unitskilllist : unitskillmap [unitskilllist : unitskilllist :...] (map<-list : unitskillmap unitskilllist (fn : string [unitskill : unitskill] (let : string [skill : skill := (:skill unitskill) name : string := (:name skill)] name))) :doc "Returns a unitskillmap from a unitskilllist")
nx/tactics/books/advanced_rules
Description:
Package Name:
  • nx/tactics/books/advanced_rules
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_advanced_rules_overview, chapter_advanced_tokens, chapter_advanced_rules, chapter_genres
Source Code:
  • (package nx/tactics/books/advanced_rules :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Advanced Rules" :image "AdvancedRules.jpg" :chaptermap (base/chaptermap "Advanced Rules Overview" (chapter_advanced_rules_overview) "Advanced Tokens" (chapter_advanced_tokens) "Advanced Rules" (chapter_advanced_rules) "Genres" (chapter_genres) ))) (func chapter_advanced_rules_overview : base/chapter (chapter :name "Advanced Rules Overview" :sectionmap (sectionmap "Why Tactics: Advanced Rules?" (section :name "Why Tactics: Advanced Rules?" :summary "The Tactics:Basic Rules are sufficient for running a board game, but they lack detail when simulating a specific genre. The Tactics system is designed to allow different sets of rules to be plugged into the basic rules on an ala carte basis. This Advanced Rule book provides many of the optional rules necessary to increase realism or pseudo-realism. The other genre-based rule books will add rules that are specific to each genre.") "Advanced Rules Strategies" (section :name "Advanced Rules Strategies" :summary "* Strike First - Units are immediately penalized for damage taken, so do unto others before they do unto you. * Maintain a Threat - The battlefield changes with each unit's move, so use pawns to control the map while saving powerful and valuable units until later in the Round. If you are not careful your opponent will surround and eliminate your units that have already acted. * Hold the Line - Opportunity and Hold Off abilities are deadly and allow you to protect weaker units. * Use the Terrain - Cover and abilities linked to cover offer an outstanding defense that layers with normal defense. The difference is most pronounced with lesser units. Effective use of terrain will determine the victor in most battles.")))) (func chapter_advanced_tokens : base/chapter (chapter :name "Advanced Tokens" :sectionmap (sectionmap "Advanced White Tokens" (section :name "Advanced White Tokens" :summary "White tokens represent temporary conditions that will pass quickly. * [Activate]: Remove one White token." :rulemap (rulemap :Fascination (rule :name "Fascination" :summary "* [Move]: If a unit has more Facination Tokens than Mind, then no Move. * [Action]: If a unit has more Facination Tokens than Mind, then no Action.") :Faith (rule :name "Faith" :image "Tokens/FaithToken.png") :Peace (rule :name "Peace" :image "Tokens/PeaceToken.png") :Rage (rule :name "Rage" :image "Tokens/RageToken.png" :summary "+1 Attack -1 Defense -1 All other Abilities that are not Attacks * Ignore 1 Retreat for each Rage") :Slow (rule :name "Slow" :image "Tokens/SlowToken.png" :summary "* [Move]: [-1 Speed]" :titles "Hold" :classification "White Token") :Strain (rule :name "Strain"))) "Advanced Black Tokens" (section :name "Advanced Black Tokens" :rulemap (rulemap :Aging (rule :name "Aging" :summary "* Reduces all Abilites and Life Span.") :Blindness (rule :name "Blindness") :Crippled (rule :name "Crippled" :image "Tokens/CrippledToken.png" :summary "-1 [Speed]" :classification "Black Token") :Curse (rule :name "Curse" :summary "* [Anytime]: When unit gains a [Red Token] or a [Black Token], roll for each Curse Token. * For each [Hit], replace a Curse Token with a Token of any type just gained.") :Depression (rule :name "Depression") :Insanity (rule :name "Insanity") :Petrified (rule :name "Petrified") :Radiation (rule :name "Radiation" :image "Tokens/RadiationToken.png") :Shapeshift (rule :name "Shapeshift"))) "Advanced Red Tokens" (section :name "Advanced Red Tokens" :summary "* Red tokens represent conditions that can rapidly grow out of control. * [Activate]: Add one Stun token." :rulemap (rulemap :Acid (rule :name "Acid" :summary "* May use a [Move] to remove an Acid Token. * [End of Turn] - Roll Acid Tokens. Hits do Damage. Remove an Acid Token."))) "Green Tokens" (section :name "Green Tokens" :summary "* Green Tokens represent conditions that generally grow worse over time." :rulemap (rulemap :Disease (rule :name "Disease" :image "Tokens/DiseaseToken.png" :summary "Spreading, slow damage over time" :titles "Diseased, Infected, Rabid, Sickly") :Envy (rule :name "Envy") :Fatigue (rule :name "Fatigue" :summary "-1 [Abilities] * Removed with rest") :Greed (rule :name "Greed") :Hunger (rule :name "Hunger" :summary "-1 [Abilities] per week without food * Removed after eating") :Love (rule :name "Love") :Lust (rule :name "Lust") :Poison (rule :name "Poison" :image "Tokens/PoisonToken.png") :Suffocation (rule :name "Suffocation" :summary "-1 [Abilities] +1 Suffocation per minute without air * Each Suffocation after 2 also add [Damage] * Remove 1 Suffocation each 10 minutes of breathing") :Thrist (rule :name "Thrist" :summary "-1 [Abilities] +1 Thirst per day without drink * Remove 1 Thirst each day with ample drinking"))) "Advanced Purple Tokens" (section :name "Advanced Purple Tokens" :rulemap (rulemap :Ace (rule :name "Ace" :image "Tokens/AceToken.png" :summary "* [Action]: [+1 Skill] * [Defense]: [+1 Defense]" :titles "Elite" :classification "Purple Token") :Apathy (rule :name "Apathy" :classification "Purple Token") :Hidden (rule :name "Hidden" :summary "* [Action]: A unit with Hidden tokens is not actually at the location shown by its unit marker. * [Defense]: Any unit that can see the unit marker may spend an [Action] to attempt to attack or locate the unit. This is done by the unit secretly choosing the actual location of the unit up to the number of Hidden tokens away from the unit marker where the unit lies (note: the target location may not be passed a barrier that the unit could not cross with normal movement). The opponent then tries to guess both direction and distance. The unit then reveals its actual position and moves its unit marker there. If both are guessed, the unit is discovered and loses all Hidden tokens. If either is guessed, the unit loses 1 Hidden token. If the unit has no Hidden tokens, resolve the attack normally. If the unit has Hidden tokens then the unit remains hidden and any attack fails unless it is an area effect and the unit is the effect." :classification "Purple Token") :Prepare (rule :name "Prepare" :summary "* [Action]: An item with Prepare may not be used until it has Prepare tokens equal to Prepare value. * [Action]: If unit does not move this [Turn], add a Prepare token to it. * Note: If the unit moves or takes a another action, then remove all Prepare tokens.")))))) (func chapter_advanced_rules : base/chapter (chapter :name "Advanced Rules" :sectionmap (sectionmap "Advanced Setup Rules" (section :name "Advanced Setup Rules" :rulemap (rulemap :Campaigns (rule :name "Campaigns" :summary "* Starting a New Campaign * Creating Player Characters * Creating Plots * Conflict * Creating Scenarios * Continuing a Campaign") "Randomized Scenarios" (rule :name "Randomized Scenarios" :summary "* Choose a Map - Any map, indoor or outdoor, square or hex map may be used. The scale must be approximately 1 inch=1.5 meters (5 feet). * Choose Starting Positions - Each side rolls 2d6. From highest to lowest, each side chooses one of the starting positions (usually corners) of the map to start. * Deploy Teams - In the same order from highest to lowest each player deploys their teams up to 5 hexes from the edges of the map.") "Recruit Teams" (rule :name "Recruit Teams" :summary "* Choose Recruitment Points for each Side. * Recruit units by spending these points using the [Double Down] rule. * Usually, only units from a single Faction may be purchased."))) :Goals (section :name "Goals" :rulemap (rulemap :Experience (rule :name "Experience" :summary "* Experience allows a unit to gain permanent ability increases. * Something major must be on the line, such that if the character fails he will incur a significant loss (e.g. a valuable item, his life). This is why characters seek out high stakes gambles and are not satisfied unless a great deal is on the line. * The character must face an opponent or difficulty no more than 1 level below his own or he must declare he is using the [Honor System]. * Minor Achievement - Gain an [Latent Ability] 2 levels below your highest level (minimum 1). * Major Achievement - Gain a [Latent Skill] 2 levels below your highest level (minimum 1).") "Latent Skill/Ability" (rule :name "Latent Skill/Ability" :summary "* Latent Skills and Abilities represent potential capabilities that have not yet expressed. * Like Skills, they have levels and may be combined and split.") "Gain a Skill/Power, Ability/Specialty" (rule :name "Gain a Skill/Power, Ability/Specialty" :summary "* In order to gain a new ability, a user must perform research, practice, and experimentation. * Each week of practice and experimentation, the user may draw a Fate card. ** If the Fate is a critical it is successful and may do EITHER of the following: *** Gaining a Skill/Power - The user may convert a [Latent Skill] to a Skill or Power (if allowed) of equal level. *** Gaining an Ability/Specialty - The user may convert or [Latent Ability] into an actual Ability or Specialty on an equal level. * Training Area/Laboratory - +1 Die if a dedicated training area with appropriate resources is available. * Assistants - Assistants reduce the difficulty of a task as well as allowing them to learn on the job. See [Followers]. * Mentor - +1 Die if a mentor is available. * Experimentation - Trial and error can produce some fascinating or useless random results. * Invention - Permanent Devices and Enchantments can be created over time. ** Cost - Great care and cost must be expended to obtain or create an item of sufficient quality to hold an enchantment. ** Difficulty - Inventions may be created instead of acquiring a new ability. ** Time") "Honor System" (rule :name "Honor System" :summary "* Normally a character cannot gain experience from a foe more than 1 level below his own. If a character wants to gain experience against such a lower level foe, he must declare that he wants to compete 'On His Honor' using the Honor System. * The Honor System basically allows a character to metaphorically (or literally) fight an opponent with one hand tied behind his back. * The character must challenge the opponent to a 'fair fight'. The challenge makes the fight formal to any observers and places the character's honor squarely on the line. * The character must offer some special incentive if the opponent wins (e.g. a special treasure, his daughter's hand in marriage, safe passage for his opponents, not invading the Earth, his own head on a pike, etc.) * For the duration of the challenge, others must not interfere. * For the duration of the challenge, the character must refrain from using any skills that are more than 1 level higher than the opponent's defense. Further he must limit his own defense rolls to 1 more than the opponents skill. * If the opponent or his allies breaks these terms, the challenge is void. * If the character or his allies breaks these terms, it is a serious blow to the honor of the character and he immediately loses one level from one of his highest skills. * If the character wins the competition, he may gain experience normally against this opponent.") :Study (rule :name "Study" :summary "* Books * Instruction * Time") :Rewards (rule :name "Rewards" :summary "* Survival * Experience ** +1 [Experience] for total or partial victory in the adventure. ** +1 [Experience] for surviving life or death. ** +1 [Experience] for the exceptional role playing and maintaining character concept. ** +1 [Experience] for particularly heroic or infamous public actions (i.e. fame spread). ** +1 [Experience] point toward a specific skill for training under a master 3 or more levels over your own. ** +1 [Experience] point toward a specific skill after 1 month of experimentation. Experimentation requires expense commensurate with the level of the skill. * Treasure * Knowledge * Favor * Allies * Influence * Prestige * Patronage") :Treasure (rule :name "Treasure" :summary "A Treasure Roll is made when a random treasure is needed."))) "Turn Sequence Rules" (section :name "Turn Sequence Rules" :rulemap (rulemap "Take the Initiative" (rule :name "Take the Initiative") "Simultaneous Movement" (rule :name "Simultaneous Movement" :summary "* After initiative is determined, each player chooses a unit or formation to activate. Each unit is compared to determine the one with the highest movement. This number is the number of phases in this turn. Each unit may choose to move or act on any phase of the turn with their chosen unit. They may also choose to react with any other unit, but a reacting unit may only move or use an action not both."))) "Action Rules" (section :name "Action Rules" :rulemap (rulemap "Dramatic Clinch" (rule :name "Dramatic Clinch" :summary "* During Melee or Close Combat, if the [Defense Roll] exactly cancelled the [Attack Roll], the [Units] may enter a Clinch where they may speak to one another briefly without anyone overhearing.") "Dramatic Effect" (rule :name "Dramatic Effect" :summary "* At the discretion of the other players, [Critical Hits] may be spent to describe a dramatic display of skill. This has no game effect but add great flavor to the game.") :Formation (rule :name "Formation" :summary "* [Move]: Use half [Speed] to add a formation token of the appropriate type. * [Damage]: If a unit takes 2 [Retreats], remove its formation token. * Note: A unit only have 1 formation at a time.") "Limited Dice" (rule :name "Limited Dice" :summary "* Note: Limited and Synergy dice cancel each other in equals numbers so no roll may have both Synergy and Limited dice. * 1, 2, 3, 4, 5 = No Effect * 6 = Hit and roll a Critical Die") "Multiple Actions" (rule :name "Multiple Actions" :summary "If the [Unit] has multiple [Crew] members, then each member may use a DIFFERENT [Ability] this turn.") "Synergy Dice" (rule :name "Synergy Dice" :summary "* Abilities that work together should be a benefit without breaking game balance. Synergies allow skills and equipment to work together without unbalancing the game or requiring specific combinations of abilities to be effective. * Note: Limited and Synergy dice cancel each other in equals numbers so no roll may have both Synergy and Limited dice. * 1, 2, 3 = No Effect * 4, 5 = Hit * 6 = Hit and roll 2 Critical Dice"))) "Advanced Situational Rules" (section :name "Advanced Situational Rules" :rulemap (rulemap "Off Handed" (rule :name "Off Handed" :reference "I admit it. You are better than I am. Then why are you smiling? Because I know something you don't know...I am not left handed...There's something I ought to tell you...I am not left handed either. - Princess Bride" :summary "* [Action]: -1 If an ability normally requires 2 hands to perform and only one hand is available.") :Surprised (rule :name "Surprised" :summary "If one or more units are Surprised, they lose their [Action] this [Turn] and lose half of their [Speed]."))) "Effect Rules" (section :name "Effect Rules" :rulemap (rulemap :Cold (rule :name "Cold" :summary "* [Critical Hits] may be used for [Slow Tokens]") :Electricity (rule :name "Electricity" :summary "* [Critical Hits] may be used to place 2 [Stun] each (or 2 [Damage] each if the target is [Mechanical])" :titles "Electric Shock, Lightning") :Flame (rule :name "Flame" :summary "* [Critical Hits] may be used for [Fire Tokens]") :Infection (rule :name "Infection") "Internal Bleeding" (rule :name "Internal Bleeding") "Permanent Disability" (rule :name "Permanent Disability" :titles "Aneurysm, Brain Damage, Crippling, Nerve Damage, Paralysis, Stroke") :Piercing (rule :name "Piercing" :summary "* [Damage]: [Critical Hits] may be used to roll 2 more [Damage] dice each.") :Slashing (rule :name "Slashing" :summary "* [Damage]: [Critical Hits] may be used for [Bleeding Tokens].") :Smoke (rule :name "Smoke") :Resistant (rule :name "Resistant" :summary "* Armor rolls are doubled on a [Unit] that is stuck by an attack to which it is resistant. Minimum: 2 dice.") "System Shock" (rule :name "System Shock" :summary "* When the body sustains a significant amount of damage, the body goes into shock."))) "Hit Location Rules" (section :name "Hit Location Rules" :rulemap (rulemap "Hit Location" (rule :name "Hit Location" :summary "* People and machines are durable but complex and are generally easier to disable than destroy completely. * A player may choose any number of [Critical Hits] to spend on special effects based on [Hit Location]. * Roll once on the following table for each [Critical Hits] spent: ** 6 - Attacker Chooses Hit Location ** 5 - [Hit Location - Head] or [Hit Location - Command] ** 4 - [Hit Location - Arms] or [Hit Location - Weapons] ** 3 - [Hit Location - Chest] or [Hit Location - Mission] ** 2 - [Hit Location - Vitals] or [Hit Location - Special Systems] ** 1 - [Hit Location - Legs] or [Hit Location - Movement] ** 6 - Head ** 5 - Far Arm (including shoulder) ** 4 - Near Arm (including shoulder) ** 3 - Vitals ** 2 - Near Leg (including hip) ** 1 - Far Leg (including hip)") "Hit Location - Head" (rule :name "Hit Location - Head") "Hit Location - Command" (rule :name "Hit Location - Command" :summary "* 6 - Command: Unit skips its next turn. * 5 - Crew: Half of crew in space killed * 4 - Passengers: Half of Passengers in space killed. * 3 - Life Support System: 1 Life support or climate control system is Reduced by 1/2. * 2 - Safety System: 1 Safety or escape system is disabled. A second hit destroys it. * 1 - Electronics: 1 Sensor, computer, or communication system is disabled. A second hit destroys it.") "Hit Location - Arms" (rule :name "Hit Location - Arms") "Hit Location - Weapons" (rule :name "Hit Location - Weapons" :summary "* 5-6 - Weapon: 1 Weapon damage is reduced by 1. * 3-4 - Arc of Fire: 1 weapon loses 1 arc of fire. * 1-2 - Magazine: 1 Weapon rolls Damage against own unit with 1/2 Armor Defense") "Hit Location - Chest" (rule :name "Hit Location - Chest") "Hit Location - Mission" (rule :name "Hit Location - Mission" :summary "* 4-6 - Armor: Armor Facing is reduced by 1. * 1-3 - Cargo: Half of Cargo in space destroyed.") "Hit Location - Vitals" (rule :name "Hit Location - Vitals") "Hit Location - Special Systems" (rule :name "Hit Location - Special Systems" :summary "* 4-6 - Special Equipment: 1 special system is disabled. A second hit destroyes it. * 1-3 - Fire: Fire Token") "Hit Location - Legs" (rule :name "Hit Location - Legs") "Hit Location - Movement" (rule :name "Hit Location - Movement" :summary "* 6 - Engine: Acc and recharging reduced by 1/4. * 5 - Movement: Acc and Max Speed for 1 movement system reduced by 1/4 (minimum 1). If it loses all Movement in the currently used Movement type, it will crash or sink as applicable. * 4 - Manueverability: -1 Facing changes per turn * 1-3 - Fuel/Reaction Mass: Range reduced by 1/4"))) "Damage Cards" (section :name "Damage Cards" :damagemap (damagemap :Damage (damage :name "Damage" :summary "* Effect: -1 [Body] * Duration: Permanent until healed. * Regular Damage with no side-effects.") "Air Reserve Loss" (damage :name "Air Reserve Loss") "Air Circulation Failure" (damage :name "Air Circulation Failure") "Air Purification Failure" (damage :name "Air Purification Failure") "Attitude Control Malfunction" (damage :name "Attitude Control Malfunction") "Cargo Damage" (damage :name "Cargo Damage") "Cargo Fire" (damage :name "Cargo Fire") "Cargo Loss" (damage :name "Cargo Loss") "Crew Casualties" (damage :name "Crew Casualties") "Crew Quarters Fire" (damage :name "Crew Quarters Fire") "Fire Suppression Failure" (damage :name "Fire Suppression Failure") "Movement Impaired" (damage :name "Movement Impaired" :summary "* Effect: -25% [Move] * Duration: Permanent until unit spends an entire turn repairing.") "Movement Crippled" (damage :name "Movement Crippled" :summary "* Effect: -25% [Move] * Duration: Permanent until healed.") "Movement Control Failure" (damage :name "Movement Control Failure" :summary "* Unit must move at full speed until repaired.") "Artificial Gravity Malfunction" (damage :name "Artificial Gravity Malfunction") "Bridge Damaged" (damage :name "Bridge Damaged") "Bridge Explosion" (damage :name "Bridge Explosion") "Bridge Fire" (damage :name "Bridge Fire") "Bulkhead Collapse" (damage :name "Bulkhead Collapse") "Cargo Hold Damaged" (damage :name "Cargo Hold Damaged") "Cargo Hold Explosion" (damage :name "Cargo Hold Explosion") "Cargo Hold Fire" (damage :name "Cargo Hold Fire") "Central Computer Malfunction" (damage :name "Central Computer Malfunction") "Central Computer Explosion" (damage :name "Central Computer Explosion") "Central Computer Fire" (damage :name "Central Computer Fire") "Command and Control Failure" (damage :name "Command and Control Failure") "Communications Failure" (damage :name "Communications Failure" :summary "* Unit cannot communicate with other units. * In Game: Player may not speak. He/she may write rules questions to game master or opponents.") "Crew Quarters Damaged" (damage :name "Crew Quarters Damaged") "Damage Control Damaged" (damage :name "Damage Control Damaged") "Engineering Damage" (damage :name "Engineering Damage") "Fire Control System Malfunction" (damage :name "Fire Control System Malfunction") "Flag Bridge Damaged" (damage :name "Flag Bridge Damaged" :summary "* The Flag Bridge is used by senior executive officers to coordinate a fleet.") "Food Stock Damaged" (damage :name "Food Stock Damaged") "Fuel Explosion" (damage :name "Fuel Explosion") "Fuel Fire" (damage :name "Fuel Fire") "Fuel Loss" (damage :name "Fuel Loss") "Helm Control Malfunction" (damage :name "Helm Control Malfunction") "Helm Fire" (damage :name "Helm Fire") "Hydroponics Damage" (damage :name "Hydroponics Damage") "Inertial Dampener Malfunction" (damage :name "Inertial Dampener Malfunction") "Intercommunications Failure" (damage :name "Intercommunications Failure" :summary "* Unit cannot communicate within the vehicle except person to person. On large vehicles, this can be a localized failure.") "Life Support Malfunction" (damage :name "Life Support Malfunction") "Medical Bay Damage" (damage :name "Medical Bay Damage") "Medical Bay Explosion" (damage :name "Medical Bay Explosion") "Medical Bay Fire" (damage :name "Medical Bay Fire") "Missile Launcher Explosion" (damage :name "Missile Launcher Explosion") "Missile Launcher Malfunction" (damage :name "Missile Launcher Malfunction") "Missile Magazine Explosion" (damage :name "Missile Magazine Explosion") "Missile Magazine Fire" (damage :name "Missile Magazine Fire") "Movement Malfunction" (damage :name "Movement Malfunction") "Navigation Failure" (damage :name "Navigation Failure") "Navigation Light Failure" (damage :name "Navigation Light Failure" :summary "* The vehicles navigation/landing lights are not working across all spectrums. In combat, these lights are normally off anyway, but they make any landing or docking manuever much more perilous.") "Passenger Quarters Explosion" (damage :name "Passenger Quarters Explosion") "Passenger Quarters Fire" (damage :name "Passenger Quarters Fire") "Power Control Failure" (damage :name "Power Control Failure") "Power Plant Coolant Failure" (damage :name "Power Plant Coolant Failure") "Power Plant Damage" (damage :name "Power Plant Damage") "Power Plant Explosion" (damage :name "Power Plant Explosion") "Power Plant Fire" (damage :name "Power Plant Fire") "Power Failure" (damage :name "Power Failure") "Propellent Loss" (damage :name "Propellent Loss") "Remote Systems Malfunction" (damage :name "Remote Systems Malfunction" :summary "* Command over drones is lost.") "Secondary Bridge Explosion" (damage :name "Secondary Bridge Explosion") "Secondary Bridge Fire" (damage :name "Secondary Bridge Fire") "Secondary Bridge Malfunction" (damage :name "Secondary Bridge Malfunction") "Sensor (Short Range) Malfunction" (damage :name "Sensor (Short Range) Malfunction") "Sensor (Long Range) Malfunction" (damage :name "Sensor (Long Range) Malfunction") "Shield Malfunction" (damage :name "Shield Malfunction") "Spine Cracks" (damage :name "Spine Cracks") "Steering Malfunction" (damage :name "Steering Malfunction" :summary "* Unit can only perform 1 change in direction during a Move.") "Structural Collapse" (damage :name "Structural Collapse") "Target Aquisition Failure" (damage :name "Target Aquisition Failure") "Temperature Control Failure" (damage :name "Temperature Control Failure") "Turning Malfunction" (damage :name "Turning Malfunction" :summary "* Unit cannot turn toward one side.") "Transponder Failure" (damage :name "Transponder Failure" :summary "* The vehicle no longer identifies as friend of foe, so it appears as a potential enemy vehicle. In a heated exchange it may take friendly fire. * This can be as simple as a fallen flag on old navy ships." :titles "IFF Damage, Not Running Colors") "Water Reserve Loss" (damage :name "Water Reserve Loss") "Weapon Magazine Explosion" (damage :name "Weapon Magazine Explosion") "Weapon Magazine Fire" (damage :name "Weapon Magazine Fire") "Weapon Malfunction" (damage :name "Weapon Malfunction") "Weapon Explosion" (damage :name "Weapon Explosion") "Weapon Fire" (damage :name "Weapon Fire") "Weapon Power Failure" (damage :name "Weapon Power Failure") "Weapon Traverse Malfunction" (damage :name "Weapon Traverse Malfunction")))))) (func chapter_genres : base/chapter (chapter :name "Genres" :sectionmap (sectionmap "Carrier Command" (section :name "Carrier Command" :summary "Carrier Command is a set of rules for use with units that hold other units in a [Hanger]. Common Actions * Enter or Exit Hanger - Move and Action (Unit): Place a unit from the [Hanger] on the [Flight Deck] OR from the [Flight Deck] to the [Hanger]. Only 1 unit may be on the [Flight Deck] at any given moment and may be targetted normally there. * Launch or Land - Move and Action (Unit): Move a unit onto or off of the [Flight Deck]. If the carrier has a [Launch Catapult], a launching unit gains +2 movement. * Dive Bomb - Action: -4 Altitude and drop bombs attacking the top of the target creating [Fire] and damaging weapons, crew, and [Flight Deck]. Normally only the target and opposing aircraft can [Interrupt] before the bombs are dropped. Can only be performed from exactly +5 Altitude and with no [White Tokens]. * Torpedo Bomb - Action: Drop torpedo attacking a side of the target below the water line creating [Flooding] and damaging [Speed]. Can only be performed from exactly +1 Altitude and with no [White Tokens]. * Landing - Move and Action (Unit): Move a unit and place it on the [Flight Deck]. Only 1 unit may be on the [Flight Deck] at any given moment and may be targetted normally there. * Refuel or Reload - Move and Action (Unit): Any unit on the [Flight Deck] or in the [Hanger] may refuel OR reload weapons (changing weapons if desired).") :RTS/4X (section :name "RTS/4X" :summary "4X: * eXplore * eXpand * eXploit * eXterminate"))))
nx/tactics/books/advanced_rules / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Advanced Rules" :image "AdvancedRules.jpg" :chaptermap (base/chaptermap "Advanced Rules Overview" (chapter_advanced_rules_overview) "Advanced Tokens" (chapter_advanced_tokens) "Advanced Rules" (chapter_advanced_rules) "Genres" (chapter_genres) )))
nx/tactics/books/advanced_rules / chapter_advanced_rules_overview
Description:
Function Name:
  • chapter_advanced_rules_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_advanced_rules_overview : base/chapter (chapter :name "Advanced Rules Overview" :sectionmap (sectionmap "Why Tactics: Advanced Rules?" (section :name "Why Tactics: Advanced Rules?" :summary "The Tactics:Basic Rules are sufficient for running a board game, but they lack detail when simulating a specific genre. The Tactics system is designed to allow different sets of rules to be plugged into the basic rules on an ala carte basis. This Advanced Rule book provides many of the optional rules necessary to increase realism or pseudo-realism. The other genre-based rule books will add rules that are specific to each genre.") "Advanced Rules Strategies" (section :name "Advanced Rules Strategies" :summary "* Strike First - Units are immediately penalized for damage taken, so do unto others before they do unto you. * Maintain a Threat - The battlefield changes with each unit's move, so use pawns to control the map while saving powerful and valuable units until later in the Round. If you are not careful your opponent will surround and eliminate your units that have already acted. * Hold the Line - Opportunity and Hold Off abilities are deadly and allow you to protect weaker units. * Use the Terrain - Cover and abilities linked to cover offer an outstanding defense that layers with normal defense. The difference is most pronounced with lesser units. Effective use of terrain will determine the victor in most battles."))))
nx/tactics/books/advanced_rules / chapter_advanced_tokens
Description:
Function Name:
  • chapter_advanced_tokens
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_advanced_tokens : base/chapter (chapter :name "Advanced Tokens" :sectionmap (sectionmap "Advanced White Tokens" (section :name "Advanced White Tokens" :summary "White tokens represent temporary conditions that will pass quickly. * [Activate]: Remove one White token." :rulemap (rulemap :Fascination (rule :name "Fascination" :summary "* [Move]: If a unit has more Facination Tokens than Mind, then no Move. * [Action]: If a unit has more Facination Tokens than Mind, then no Action.") :Faith (rule :name "Faith" :image "Tokens/FaithToken.png") :Peace (rule :name "Peace" :image "Tokens/PeaceToken.png") :Rage (rule :name "Rage" :image "Tokens/RageToken.png" :summary "+1 Attack -1 Defense -1 All other Abilities that are not Attacks * Ignore 1 Retreat for each Rage") :Slow (rule :name "Slow" :image "Tokens/SlowToken.png" :summary "* [Move]: [-1 Speed]" :titles "Hold" :classification "White Token") :Strain (rule :name "Strain"))) "Advanced Black Tokens" (section :name "Advanced Black Tokens" :rulemap (rulemap :Aging (rule :name "Aging" :summary "* Reduces all Abilites and Life Span.") :Blindness (rule :name "Blindness") :Crippled (rule :name "Crippled" :image "Tokens/CrippledToken.png" :summary "-1 [Speed]" :classification "Black Token") :Curse (rule :name "Curse" :summary "* [Anytime]: When unit gains a [Red Token] or a [Black Token], roll for each Curse Token. * For each [Hit], replace a Curse Token with a Token of any type just gained.") :Depression (rule :name "Depression") :Insanity (rule :name "Insanity") :Petrified (rule :name "Petrified") :Radiation (rule :name "Radiation" :image "Tokens/RadiationToken.png") :Shapeshift (rule :name "Shapeshift"))) "Advanced Red Tokens" (section :name "Advanced Red Tokens" :summary "* Red tokens represent conditions that can rapidly grow out of control. * [Activate]: Add one Stun token." :rulemap (rulemap :Acid (rule :name "Acid" :summary "* May use a [Move] to remove an Acid Token. * [End of Turn] - Roll Acid Tokens. Hits do Damage. Remove an Acid Token."))) "Green Tokens" (section :name "Green Tokens" :summary "* Green Tokens represent conditions that generally grow worse over time." :rulemap (rulemap :Disease (rule :name "Disease" :image "Tokens/DiseaseToken.png" :summary "Spreading, slow damage over time" :titles "Diseased, Infected, Rabid, Sickly") :Envy (rule :name "Envy") :Fatigue (rule :name "Fatigue" :summary "-1 [Abilities] * Removed with rest") :Greed (rule :name "Greed") :Hunger (rule :name "Hunger" :summary "-1 [Abilities] per week without food * Removed after eating") :Love (rule :name "Love") :Lust (rule :name "Lust") :Poison (rule :name "Poison" :image "Tokens/PoisonToken.png") :Suffocation (rule :name "Suffocation" :summary "-1 [Abilities] +1 Suffocation per minute without air * Each Suffocation after 2 also add [Damage] * Remove 1 Suffocation each 10 minutes of breathing") :Thrist (rule :name "Thrist" :summary "-1 [Abilities] +1 Thirst per day without drink * Remove 1 Thirst each day with ample drinking"))) "Advanced Purple Tokens" (section :name "Advanced Purple Tokens" :rulemap (rulemap :Ace (rule :name "Ace" :image "Tokens/AceToken.png" :summary "* [Action]: [+1 Skill] * [Defense]: [+1 Defense]" :titles "Elite" :classification "Purple Token") :Apathy (rule :name "Apathy" :classification "Purple Token") :Hidden (rule :name "Hidden" :summary "* [Action]: A unit with Hidden tokens is not actually at the location shown by its unit marker. * [Defense]: Any unit that can see the unit marker may spend an [Action] to attempt to attack or locate the unit. This is done by the unit secretly choosing the actual location of the unit up to the number of Hidden tokens away from the unit marker where the unit lies (note: the target location may not be passed a barrier that the unit could not cross with normal movement). The opponent then tries to guess both direction and distance. The unit then reveals its actual position and moves its unit marker there. If both are guessed, the unit is discovered and loses all Hidden tokens. If either is guessed, the unit loses 1 Hidden token. If the unit has no Hidden tokens, resolve the attack normally. If the unit has Hidden tokens then the unit remains hidden and any attack fails unless it is an area effect and the unit is the effect." :classification "Purple Token") :Prepare (rule :name "Prepare" :summary "* [Action]: An item with Prepare may not be used until it has Prepare tokens equal to Prepare value. * [Action]: If unit does not move this [Turn], add a Prepare token to it. * Note: If the unit moves or takes a another action, then remove all Prepare tokens."))))))
nx/tactics/books/advanced_rules / chapter_advanced_rules
Description:
Function Name:
  • chapter_advanced_rules
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_advanced_rules : base/chapter (chapter :name "Advanced Rules" :sectionmap (sectionmap "Advanced Setup Rules" (section :name "Advanced Setup Rules" :rulemap (rulemap :Campaigns (rule :name "Campaigns" :summary "* Starting a New Campaign * Creating Player Characters * Creating Plots * Conflict * Creating Scenarios * Continuing a Campaign") "Randomized Scenarios" (rule :name "Randomized Scenarios" :summary "* Choose a Map - Any map, indoor or outdoor, square or hex map may be used. The scale must be approximately 1 inch=1.5 meters (5 feet). * Choose Starting Positions - Each side rolls 2d6. From highest to lowest, each side chooses one of the starting positions (usually corners) of the map to start. * Deploy Teams - In the same order from highest to lowest each player deploys their teams up to 5 hexes from the edges of the map.") "Recruit Teams" (rule :name "Recruit Teams" :summary "* Choose Recruitment Points for each Side. * Recruit units by spending these points using the [Double Down] rule. * Usually, only units from a single Faction may be purchased."))) :Goals (section :name "Goals" :rulemap (rulemap :Experience (rule :name "Experience" :summary "* Experience allows a unit to gain permanent ability increases. * Something major must be on the line, such that if the character fails he will incur a significant loss (e.g. a valuable item, his life). This is why characters seek out high stakes gambles and are not satisfied unless a great deal is on the line. * The character must face an opponent or difficulty no more than 1 level below his own or he must declare he is using the [Honor System]. * Minor Achievement - Gain an [Latent Ability] 2 levels below your highest level (minimum 1). * Major Achievement - Gain a [Latent Skill] 2 levels below your highest level (minimum 1).") "Latent Skill/Ability" (rule :name "Latent Skill/Ability" :summary "* Latent Skills and Abilities represent potential capabilities that have not yet expressed. * Like Skills, they have levels and may be combined and split.") "Gain a Skill/Power, Ability/Specialty" (rule :name "Gain a Skill/Power, Ability/Specialty" :summary "* In order to gain a new ability, a user must perform research, practice, and experimentation. * Each week of practice and experimentation, the user may draw a Fate card. ** If the Fate is a critical it is successful and may do EITHER of the following: *** Gaining a Skill/Power - The user may convert a [Latent Skill] to a Skill or Power (if allowed) of equal level. *** Gaining an Ability/Specialty - The user may convert or [Latent Ability] into an actual Ability or Specialty on an equal level. * Training Area/Laboratory - +1 Die if a dedicated training area with appropriate resources is available. * Assistants - Assistants reduce the difficulty of a task as well as allowing them to learn on the job. See [Followers]. * Mentor - +1 Die if a mentor is available. * Experimentation - Trial and error can produce some fascinating or useless random results. * Invention - Permanent Devices and Enchantments can be created over time. ** Cost - Great care and cost must be expended to obtain or create an item of sufficient quality to hold an enchantment. ** Difficulty - Inventions may be created instead of acquiring a new ability. ** Time") "Honor System" (rule :name "Honor System" :summary "* Normally a character cannot gain experience from a foe more than 1 level below his own. If a character wants to gain experience against such a lower level foe, he must declare that he wants to compete 'On His Honor' using the Honor System. * The Honor System basically allows a character to metaphorically (or literally) fight an opponent with one hand tied behind his back. * The character must challenge the opponent to a 'fair fight'. The challenge makes the fight formal to any observers and places the character's honor squarely on the line. * The character must offer some special incentive if the opponent wins (e.g. a special treasure, his daughter's hand in marriage, safe passage for his opponents, not invading the Earth, his own head on a pike, etc.) * For the duration of the challenge, others must not interfere. * For the duration of the challenge, the character must refrain from using any skills that are more than 1 level higher than the opponent's defense. Further he must limit his own defense rolls to 1 more than the opponents skill. * If the opponent or his allies breaks these terms, the challenge is void. * If the character or his allies breaks these terms, it is a serious blow to the honor of the character and he immediately loses one level from one of his highest skills. * If the character wins the competition, he may gain experience normally against this opponent.") :Study (rule :name "Study" :summary "* Books * Instruction * Time") :Rewards (rule :name "Rewards" :summary "* Survival * Experience ** +1 [Experience] for total or partial victory in the adventure. ** +1 [Experience] for surviving life or death. ** +1 [Experience] for the exceptional role playing and maintaining character concept. ** +1 [Experience] for particularly heroic or infamous public actions (i.e. fame spread). ** +1 [Experience] point toward a specific skill for training under a master 3 or more levels over your own. ** +1 [Experience] point toward a specific skill after 1 month of experimentation. Experimentation requires expense commensurate with the level of the skill. * Treasure * Knowledge * Favor * Allies * Influence * Prestige * Patronage") :Treasure (rule :name "Treasure" :summary "A Treasure Roll is made when a random treasure is needed."))) "Turn Sequence Rules" (section :name "Turn Sequence Rules" :rulemap (rulemap "Take the Initiative" (rule :name "Take the Initiative") "Simultaneous Movement" (rule :name "Simultaneous Movement" :summary "* After initiative is determined, each player chooses a unit or formation to activate. Each unit is compared to determine the one with the highest movement. This number is the number of phases in this turn. Each unit may choose to move or act on any phase of the turn with their chosen unit. They may also choose to react with any other unit, but a reacting unit may only move or use an action not both."))) "Action Rules" (section :name "Action Rules" :rulemap (rulemap "Dramatic Clinch" (rule :name "Dramatic Clinch" :summary "* During Melee or Close Combat, if the [Defense Roll] exactly cancelled the [Attack Roll], the [Units] may enter a Clinch where they may speak to one another briefly without anyone overhearing.") "Dramatic Effect" (rule :name "Dramatic Effect" :summary "* At the discretion of the other players, [Critical Hits] may be spent to describe a dramatic display of skill. This has no game effect but add great flavor to the game.") :Formation (rule :name "Formation" :summary "* [Move]: Use half [Speed] to add a formation token of the appropriate type. * [Damage]: If a unit takes 2 [Retreats], remove its formation token. * Note: A unit only have 1 formation at a time.") "Limited Dice" (rule :name "Limited Dice" :summary "* Note: Limited and Synergy dice cancel each other in equals numbers so no roll may have both Synergy and Limited dice. * 1, 2, 3, 4, 5 = No Effect * 6 = Hit and roll a Critical Die") "Multiple Actions" (rule :name "Multiple Actions" :summary "If the [Unit] has multiple [Crew] members, then each member may use a DIFFERENT [Ability] this turn.") "Synergy Dice" (rule :name "Synergy Dice" :summary "* Abilities that work together should be a benefit without breaking game balance. Synergies allow skills and equipment to work together without unbalancing the game or requiring specific combinations of abilities to be effective. * Note: Limited and Synergy dice cancel each other in equals numbers so no roll may have both Synergy and Limited dice. * 1, 2, 3 = No Effect * 4, 5 = Hit * 6 = Hit and roll 2 Critical Dice"))) "Advanced Situational Rules" (section :name "Advanced Situational Rules" :rulemap (rulemap "Off Handed" (rule :name "Off Handed" :reference "I admit it. You are better than I am. Then why are you smiling? Because I know something you don't know...I am not left handed...There's something I ought to tell you...I am not left handed either. - Princess Bride" :summary "* [Action]: -1 If an ability normally requires 2 hands to perform and only one hand is available.") :Surprised (rule :name "Surprised" :summary "If one or more units are Surprised, they lose their [Action] this [Turn] and lose half of their [Speed]."))) "Effect Rules" (section :name "Effect Rules" :rulemap (rulemap :Cold (rule :name "Cold" :summary "* [Critical Hits] may be used for [Slow Tokens]") :Electricity (rule :name "Electricity" :summary "* [Critical Hits] may be used to place 2 [Stun] each (or 2 [Damage] each if the target is [Mechanical])" :titles "Electric Shock, Lightning") :Flame (rule :name "Flame" :summary "* [Critical Hits] may be used for [Fire Tokens]") :Infection (rule :name "Infection") "Internal Bleeding" (rule :name "Internal Bleeding") "Permanent Disability" (rule :name "Permanent Disability" :titles "Aneurysm, Brain Damage, Crippling, Nerve Damage, Paralysis, Stroke") :Piercing (rule :name "Piercing" :summary "* [Damage]: [Critical Hits] may be used to roll 2 more [Damage] dice each.") :Slashing (rule :name "Slashing" :summary "* [Damage]: [Critical Hits] may be used for [Bleeding Tokens].") :Smoke (rule :name "Smoke") :Resistant (rule :name "Resistant" :summary "* Armor rolls are doubled on a [Unit] that is stuck by an attack to which it is resistant. Minimum: 2 dice.") "System Shock" (rule :name "System Shock" :summary "* When the body sustains a significant amount of damage, the body goes into shock."))) "Hit Location Rules" (section :name "Hit Location Rules" :rulemap (rulemap "Hit Location" (rule :name "Hit Location" :summary "* People and machines are durable but complex and are generally easier to disable than destroy completely. * A player may choose any number of [Critical Hits] to spend on special effects based on [Hit Location]. * Roll once on the following table for each [Critical Hits] spent: ** 6 - Attacker Chooses Hit Location ** 5 - [Hit Location - Head] or [Hit Location - Command] ** 4 - [Hit Location - Arms] or [Hit Location - Weapons] ** 3 - [Hit Location - Chest] or [Hit Location - Mission] ** 2 - [Hit Location - Vitals] or [Hit Location - Special Systems] ** 1 - [Hit Location - Legs] or [Hit Location - Movement] ** 6 - Head ** 5 - Far Arm (including shoulder) ** 4 - Near Arm (including shoulder) ** 3 - Vitals ** 2 - Near Leg (including hip) ** 1 - Far Leg (including hip)") "Hit Location - Head" (rule :name "Hit Location - Head") "Hit Location - Command" (rule :name "Hit Location - Command" :summary "* 6 - Command: Unit skips its next turn. * 5 - Crew: Half of crew in space killed * 4 - Passengers: Half of Passengers in space killed. * 3 - Life Support System: 1 Life support or climate control system is Reduced by 1/2. * 2 - Safety System: 1 Safety or escape system is disabled. A second hit destroys it. * 1 - Electronics: 1 Sensor, computer, or communication system is disabled. A second hit destroys it.") "Hit Location - Arms" (rule :name "Hit Location - Arms") "Hit Location - Weapons" (rule :name "Hit Location - Weapons" :summary "* 5-6 - Weapon: 1 Weapon damage is reduced by 1. * 3-4 - Arc of Fire: 1 weapon loses 1 arc of fire. * 1-2 - Magazine: 1 Weapon rolls Damage against own unit with 1/2 Armor Defense") "Hit Location - Chest" (rule :name "Hit Location - Chest") "Hit Location - Mission" (rule :name "Hit Location - Mission" :summary "* 4-6 - Armor: Armor Facing is reduced by 1. * 1-3 - Cargo: Half of Cargo in space destroyed.") "Hit Location - Vitals" (rule :name "Hit Location - Vitals") "Hit Location - Special Systems" (rule :name "Hit Location - Special Systems" :summary "* 4-6 - Special Equipment: 1 special system is disabled. A second hit destroyes it. * 1-3 - Fire: Fire Token") "Hit Location - Legs" (rule :name "Hit Location - Legs") "Hit Location - Movement" (rule :name "Hit Location - Movement" :summary "* 6 - Engine: Acc and recharging reduced by 1/4. * 5 - Movement: Acc and Max Speed for 1 movement system reduced by 1/4 (minimum 1). If it loses all Movement in the currently used Movement type, it will crash or sink as applicable. * 4 - Manueverability: -1 Facing changes per turn * 1-3 - Fuel/Reaction Mass: Range reduced by 1/4"))) "Damage Cards" (section :name "Damage Cards" :damagemap (damagemap :Damage (damage :name "Damage" :summary "* Effect: -1 [Body] * Duration: Permanent until healed. * Regular Damage with no side-effects.") "Air Reserve Loss" (damage :name "Air Reserve Loss") "Air Circulation Failure" (damage :name "Air Circulation Failure") "Air Purification Failure" (damage :name "Air Purification Failure") "Attitude Control Malfunction" (damage :name "Attitude Control Malfunction") "Cargo Damage" (damage :name "Cargo Damage") "Cargo Fire" (damage :name "Cargo Fire") "Cargo Loss" (damage :name "Cargo Loss") "Crew Casualties" (damage :name "Crew Casualties") "Crew Quarters Fire" (damage :name "Crew Quarters Fire") "Fire Suppression Failure" (damage :name "Fire Suppression Failure") "Movement Impaired" (damage :name "Movement Impaired" :summary "* Effect: -25% [Move] * Duration: Permanent until unit spends an entire turn repairing.") "Movement Crippled" (damage :name "Movement Crippled" :summary "* Effect: -25% [Move] * Duration: Permanent until healed.") "Movement Control Failure" (damage :name "Movement Control Failure" :summary "* Unit must move at full speed until repaired.") "Artificial Gravity Malfunction" (damage :name "Artificial Gravity Malfunction") "Bridge Damaged" (damage :name "Bridge Damaged") "Bridge Explosion" (damage :name "Bridge Explosion") "Bridge Fire" (damage :name "Bridge Fire") "Bulkhead Collapse" (damage :name "Bulkhead Collapse") "Cargo Hold Damaged" (damage :name "Cargo Hold Damaged") "Cargo Hold Explosion" (damage :name "Cargo Hold Explosion") "Cargo Hold Fire" (damage :name "Cargo Hold Fire") "Central Computer Malfunction" (damage :name "Central Computer Malfunction") "Central Computer Explosion" (damage :name "Central Computer Explosion") "Central Computer Fire" (damage :name "Central Computer Fire") "Command and Control Failure" (damage :name "Command and Control Failure") "Communications Failure" (damage :name "Communications Failure" :summary "* Unit cannot communicate with other units. * In Game: Player may not speak. He/she may write rules questions to game master or opponents.") "Crew Quarters Damaged" (damage :name "Crew Quarters Damaged") "Damage Control Damaged" (damage :name "Damage Control Damaged") "Engineering Damage" (damage :name "Engineering Damage") "Fire Control System Malfunction" (damage :name "Fire Control System Malfunction") "Flag Bridge Damaged" (damage :name "Flag Bridge Damaged" :summary "* The Flag Bridge is used by senior executive officers to coordinate a fleet.") "Food Stock Damaged" (damage :name "Food Stock Damaged") "Fuel Explosion" (damage :name "Fuel Explosion") "Fuel Fire" (damage :name "Fuel Fire") "Fuel Loss" (damage :name "Fuel Loss") "Helm Control Malfunction" (damage :name "Helm Control Malfunction") "Helm Fire" (damage :name "Helm Fire") "Hydroponics Damage" (damage :name "Hydroponics Damage") "Inertial Dampener Malfunction" (damage :name "Inertial Dampener Malfunction") "Intercommunications Failure" (damage :name "Intercommunications Failure" :summary "* Unit cannot communicate within the vehicle except person to person. On large vehicles, this can be a localized failure.") "Life Support Malfunction" (damage :name "Life Support Malfunction") "Medical Bay Damage" (damage :name "Medical Bay Damage") "Medical Bay Explosion" (damage :name "Medical Bay Explosion") "Medical Bay Fire" (damage :name "Medical Bay Fire") "Missile Launcher Explosion" (damage :name "Missile Launcher Explosion") "Missile Launcher Malfunction" (damage :name "Missile Launcher Malfunction") "Missile Magazine Explosion" (damage :name "Missile Magazine Explosion") "Missile Magazine Fire" (damage :name "Missile Magazine Fire") "Movement Malfunction" (damage :name "Movement Malfunction") "Navigation Failure" (damage :name "Navigation Failure") "Navigation Light Failure" (damage :name "Navigation Light Failure" :summary "* The vehicles navigation/landing lights are not working across all spectrums. In combat, these lights are normally off anyway, but they make any landing or docking manuever much more perilous.") "Passenger Quarters Explosion" (damage :name "Passenger Quarters Explosion") "Passenger Quarters Fire" (damage :name "Passenger Quarters Fire") "Power Control Failure" (damage :name "Power Control Failure") "Power Plant Coolant Failure" (damage :name "Power Plant Coolant Failure") "Power Plant Damage" (damage :name "Power Plant Damage") "Power Plant Explosion" (damage :name "Power Plant Explosion") "Power Plant Fire" (damage :name "Power Plant Fire") "Power Failure" (damage :name "Power Failure") "Propellent Loss" (damage :name "Propellent Loss") "Remote Systems Malfunction" (damage :name "Remote Systems Malfunction" :summary "* Command over drones is lost.") "Secondary Bridge Explosion" (damage :name "Secondary Bridge Explosion") "Secondary Bridge Fire" (damage :name "Secondary Bridge Fire") "Secondary Bridge Malfunction" (damage :name "Secondary Bridge Malfunction") "Sensor (Short Range) Malfunction" (damage :name "Sensor (Short Range) Malfunction") "Sensor (Long Range) Malfunction" (damage :name "Sensor (Long Range) Malfunction") "Shield Malfunction" (damage :name "Shield Malfunction") "Spine Cracks" (damage :name "Spine Cracks") "Steering Malfunction" (damage :name "Steering Malfunction" :summary "* Unit can only perform 1 change in direction during a Move.") "Structural Collapse" (damage :name "Structural Collapse") "Target Aquisition Failure" (damage :name "Target Aquisition Failure") "Temperature Control Failure" (damage :name "Temperature Control Failure") "Turning Malfunction" (damage :name "Turning Malfunction" :summary "* Unit cannot turn toward one side.") "Transponder Failure" (damage :name "Transponder Failure" :summary "* The vehicle no longer identifies as friend of foe, so it appears as a potential enemy vehicle. In a heated exchange it may take friendly fire. * This can be as simple as a fallen flag on old navy ships." :titles "IFF Damage, Not Running Colors") "Water Reserve Loss" (damage :name "Water Reserve Loss") "Weapon Magazine Explosion" (damage :name "Weapon Magazine Explosion") "Weapon Magazine Fire" (damage :name "Weapon Magazine Fire") "Weapon Malfunction" (damage :name "Weapon Malfunction") "Weapon Explosion" (damage :name "Weapon Explosion") "Weapon Fire" (damage :name "Weapon Fire") "Weapon Power Failure" (damage :name "Weapon Power Failure") "Weapon Traverse Malfunction" (damage :name "Weapon Traverse Malfunction"))))))
nx/tactics/books/advanced_rules / chapter_genres
Description:
Function Name:
  • chapter_genres
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_genres : base/chapter (chapter :name "Genres" :sectionmap (sectionmap "Carrier Command" (section :name "Carrier Command" :summary "Carrier Command is a set of rules for use with units that hold other units in a [Hanger]. Common Actions * Enter or Exit Hanger - Move and Action (Unit): Place a unit from the [Hanger] on the [Flight Deck] OR from the [Flight Deck] to the [Hanger]. Only 1 unit may be on the [Flight Deck] at any given moment and may be targetted normally there. * Launch or Land - Move and Action (Unit): Move a unit onto or off of the [Flight Deck]. If the carrier has a [Launch Catapult], a launching unit gains +2 movement. * Dive Bomb - Action: -4 Altitude and drop bombs attacking the top of the target creating [Fire] and damaging weapons, crew, and [Flight Deck]. Normally only the target and opposing aircraft can [Interrupt] before the bombs are dropped. Can only be performed from exactly +5 Altitude and with no [White Tokens]. * Torpedo Bomb - Action: Drop torpedo attacking a side of the target below the water line creating [Flooding] and damaging [Speed]. Can only be performed from exactly +1 Altitude and with no [White Tokens]. * Landing - Move and Action (Unit): Move a unit and place it on the [Flight Deck]. Only 1 unit may be on the [Flight Deck] at any given moment and may be targetted normally there. * Refuel or Reload - Move and Action (Unit): Any unit on the [Flight Deck] or in the [Hanger] may refuel OR reload weapons (changing weapons if desired).") :RTS/4X (section :name "RTS/4X" :summary "4X: * eXplore * eXpand * eXploit * eXterminate"))))
nx/tactics/books/age_of_sail
Description:
Package Name:
  • nx/tactics/books/age_of_sail
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_age_of_sail_overview, chapter_age_of_sail_weaponry, chapter_renaissance, chapter_golden_age_of_sail, chapter_american_revolution, chapter_french_revolution, chapter_tokugawa_shogunate
Source Code:
  • (package nx/tactics/books/age_of_sail :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Age Of Sail" :chaptermap (base/chaptermap "Age of Sail Overview" (chapter_age_of_sail_overview) "Age of Sail Weaponry" (chapter_age_of_sail_weaponry) "Renaissance" (chapter_renaissance) "Golden Age of Sail" (chapter_golden_age_of_sail) "American Revolution" (chapter_american_revolution) "French Revolution" (chapter_french_revolution) "Tokugawa Shogunate" (chapter_tokugawa_shogunate) ))) (func chapter_age_of_sail_overview : base/chapter (chapter :name "Age of Sail Overview" :sectionmap (sectionmap "Why Tactics: Age of Sail?" (section :name "Why Tactics: Age of Sail?" :reference "http://www.thepirateking.com/historical/cannon_projectiles.htm" :summary "The Age of Sail was the period in which international trade and naval warfare were dominated by sailing ships, lasting from the 16th to the mid 19th century. This is a significant period during which square-rigged sailing ships carried European settlers to many parts of the world in one of the most expansive human migrations in recorded history.") "Age of Sail Land Warfare" (section :name "Age of Sail Land Warfare" :summary "* Infantry * Cavalry * Muskets * Cannons * Artillery * High Ground") "Age of Sail Naval Warfare" (section :name "Age of Sail Naval Warfare" :summary "* Wind * Large Ships * Small Ships * Solid Shot * Burning Shot * Chain Shot * Fortifications")))) (func chapter_age_of_sail_weaponry : base/chapter (chapter :name "Age of Sail Weaponry" :sectionmap (sectionmap "Age of Sail Pistols" (section :name "Age of Sail Pistols" :itemmap (itemmap "20mm Dragon" (item :name "20mm Dragon" :reference "The blunderbuss, and especially the shorter dragon, was typically issued to troops such as cavalry, who needed a lightweight, easily handled firearm. The dragon became so associated with cavalry and mounted infantry that the term dragoon became synonymous with mounted infantry." :summary "* A short, muzzle-loading, flintlock, hand shotgun" :muzzlevelocity "225m/s"))) "Age of Sail Rifles" (section :name "Age of Sail Rifles" :itemmap (itemmap "12mm Carbine" (item :name "12mm Carbine" :summary "Short musket # Effective Range 60m # Muskets could regularly penetrate Plate Armor" :muzzlevelocity "438m/s") "18mm Musket" (item :name "18mm Musket" :reference "The Brown Bess was used in the era of the expansion of the British Empire. It was used for a hundred years with incremental changes in its design." :summary "# Effective Range 60m # Muskets could regularly penetrate Plate Armor" :titles "Brown Bess" :muzzlevelocity "320m/s") "20mm Blunderbuss" (item :name "20mm Blunderbuss" :reference "A blunderbuss is a muzzle-loading firearm with a flared, trumpet-like barrel and is the predecessor to the shotgun. Most of these weapons are mid-sized, being smaller than most shoulder-fired arms, but larger than a pistol. The muzzle was flared not to increase the spread of the shot, but rather to funnel powder and shot into the weapon, making it easier to reload on horseback or on a moving carriage." :muzzlevelocity "225m/s"))) "Age of Sail Cannons" (section :name "Age of Sail Cannons" :itemmap (itemmap :Chainshot (item :name "Chainshot" :image "AgeOfSail/Cannon_Chainshot.jpg" :summary "* Does no damage. All [Hits] are [Disabled Tokens]. All [Critical Hits] are [Crippled Tokens].") :Grapeshot (item :name "Grapeshot" :image "AgeOfSail/Cannon_Grapeshot.jpg") "Round shot" (item :name "Round shot" :image "AgeOfSail/Cannon_Roundshot.jpg") "140mm Field Culverin" (item :name "140mm Field Culverin" :image "AgeOfSail/Culverin.jpg" :summary "600,000J" :classification "Cannon" :length "4.5m" :mass "2.2tons" :muzzlevelocity "400m/s" :range "450m") "100mm Demi-culverin" (item :name "100mm Demi-culverin" :image "AgeOfSail/Demi-culverin.jpg" :classification "Cannon" :length "3.4m" :mass "1.5tons" :muzzlevelocity "487m/s" :range "300m" :rof ".75/min")))))) (func chapter_renaissance : base/chapter (chapter :name "Renaissance")) (func chapter_golden_age_of_sail : base/chapter (chapter :name "Golden Age of Sail" :sectionmap (sectionmap "Age of Sail Scenarios" (section :name "Age of Sail Scenarios" :scenariomap (scenariomap :Pirates (scenario :name "Pirates") :Swashbucklers (scenario :name "Swashbucklers"))) "Age of Sail Dutch" (section :name "Age of Sail Dutch") "Age of Sail British" (section :name "Age of Sail British" :unitmap (unitmap "British Musketeers" (unit :name "British Musketeers" :image "AgeOfSail/British_Musketeers.png" :summary "Musket Infantry" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "British Caravel" (unit :name "British Caravel" :image "AgeOfSail/BritishCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Frigate" (unit :name "British Frigate" :image "AgeOfSail/BritishFrigate.png" :reference "A warship second only in size to the Ship-of-the-Line. Frigates were three-masted with a raised forecastle and quarterdeck. They had anywhere from 24 to 38 guns on her deck. They were faster than the ship-of-the-lines and were used for escort purposes. They were sometimes used to hunt pirates. Only a few pirates were ever in command of a frigate as most pirates would flee from a frigate." :speed "20kph" :classification "Med. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Man-O-War" (unit :name "British Man-O-War" :image "AgeOfSail/BritishManOWar.png" :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Schooner" (unit :name "British Schooner" :image "AgeOfSail/BritishSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Racing Galleon" (unit :name "British Racing Galleon" :classification "Lt. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "East India Company" (section :name "East India Company") :French (section :name "French" :unitmap (unitmap "Napoleon Bonaparte" (unit :name "Napoleon Bonaparte" :image "AgeOfSail/French_Napoleon.png") "French Musketeers" (unit :name "French Musketeers" :image "AgeOfSail/French_Musketeers.png" :summary "Musket Infantry" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "French Carabiners" (unit :name "French Carabiners" :summary "Light Cavalry carrying short Carbine rifles" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "12mm Carbine" (unititem :name "12mm Carbine"))))) "French Dragoons" (unit :name "French Dragoons" :image "AgeOfSail/French_Dragoons.png" :summary "Musket Cavalry intending to ride into battle and dismount to fire." :classification "Med. Cavalry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "French Man-O-War" (unit :name "French Man-O-War" :reference "These ships were the heavy-guns of the fleet. They resembled galleons in design, but had heavy fire-power. Only the three major sea-powers of the time (Spain, England, and France) had many of these kind of ships." :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "French Schooner" (unit :name "French Schooner" :image "AgeOfSail/FrenchSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) :Pirates (section :name "Pirates" :summary "The era of piracy in the Caribbean Sea began in the 17th century and died out in the 1720s after the navies of the nations of Western Europe with colonies in the Caribbean began combating pirates." :unitmap (unitmap "Pirate Crew" (unit :name "Pirate Crew" :image "AgeOfSail/Pirate_Crew.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4" :unitabilitymap (unitabilitymap "Boarding Party" (unitability :name "Boarding Party"))))) "Pirate Caravel" (unit :name "Pirate Caravel" :image "AgeOfSail/PirateCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Schooner" (unit :name "Pirate Schooner" :image "AgeOfSail/PirateSchooner.png" :reference "The Schooner has a narrow hull, two masts and is less than 100 tons. She is generally rigged with two large sails. She had a shallow draft which allowed her to remain in shallow coves waiting for her prey. The Schooner is very fast and large enough to carry a plentiful crew. It was a favorite among both pirates and smugglers." :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Sloop" (unit :name "Pirate Sloop" :reference "The Sloop was fast, agile, and had a shallow draft. Today's sailing Yacht is essentially a sloop." :classification "Lt. Naval Vessel" :mass "100tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Brigantine" (unit :name "Pirate Brigantine" :reference "The brigantine was a small ship carrying both sails and oars. It was a favorite of Mediterranean pirates from whence it got its name Brigantine meaning Brigand Ship. Later the ship referred to a two-masted sailing ship with much greater sailing power." :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "Age of Sail Portuguese" (section :name "Age of Sail Portuguese" :unitmap (unitmap "Portuguese Caravel" (unit :name "Portuguese Caravel" :reference "The Nina was actually named the Santa Clara. Nina was a pun on its owner's name: Juan Nino." :titles "Nina, Pinta" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Portuguese Carrack" (unit :name "Portuguese Carrack" :reference "All of Columbus' ships were second-hand (if not third or more) and were never meant for exploration." :titles "Santa Maria" :speed "10kph" :classification "Med. Naval Vessel" :crew "40" :mass "300tons" :length "25m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "Age of Sail Spanish" (section :name "Age of Sail Spanish" :unitmap (unitmap "Silver Train" (unit :name "Silver Train") "Treasure Fleet" (unit :name "Treasure Fleet" :classification "Hvy. Naval Vessel") "Spanish Caravel" (unit :name "Spanish Caravel" :image "AgeOfSail/SpanishCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Spanish Galleon" (unit :name "Spanish Galleon" :image "AgeOfSail/SpanishGalleon.png" :reference "Large ships meant for transporting cargo. The Spanish treasure fleets were made of these ships. Although they were sluggish, they weren't the easy target you would expect for they could carry heavy cannon which made attacking them difficult. They had two to three decks. Most had three masts. Some galleons sported 4 masts but these were an exception to the rule." :classification "Hvy. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm"))) "Spanish Man-O-War" (unit :name "Spanish Man-O-War" :image "AgeOfSail/SpanishManOWar.png" :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Spanish Schooner" (unit :name "Spanish Schooner" :image "AgeOfSail/SpanishSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4")))))))) (func chapter_american_revolution : base/chapter (chapter :name "American Revolution" :sectionmap (sectionmap "Age of Sail United States" (section :name "Age of Sail United States" :unitmap (unitmap "American Frigate" (unit :name "American Frigate" :image "AgeOfSail/AmericanFrigate.png" :titles "USS Constitution, Old Ironsides" :speed "24kph" :classification "Hvy. Naval Vessel" :mass "2200tons" :length "62m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "21 inches (530 mm/88mm RHA)" :front "88mm" :back "88mm" :side "88mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "30 x 24-pounder (11 kg) long gun 20 x 32-pounder (15 kg) carronade 2 x 24-pounder (11 kg) bow chasers" :unitabilitymap (unitabilitymap :Salvo (unitability :name "Salvo")))))))))) (func chapter_french_revolution : base/chapter (chapter :name "French Revolution")) (func chapter_tokugawa_shogunate : base/chapter (chapter :name "Tokugawa Shogunate" :sectionmap (sectionmap "Tokugawa Prefecture" (section :name "Tokugawa Prefecture" :locationmap (locationmap "Tokugawa Town" (location :name "Tokugawa Town" :summary "* The Daimyo chose to place his castle near a moderately-sized villiage. He wanted the advantage of a town without having more people than could be kept track of. The Daimyo's presense has brought an influx of trade, and the town is surprisingly wealthy. * There is a cooper, a brewer, a courtesan house, an inn, a silk-maker, a woodworker, 2 woodcutters, 15 merchants, 20 fishermen, over 100 farmers, and about 15 vagrants. * There are 2 police officers and many of the townspeople are in the reserve. * In addition, the Daimyo personally supports 25 samurai, a swordsmith, an armorer, a fletcher, 2 carpenters, 2 advisors, a scupltor, a jeweler, 2 fine weavers, 2 painters, 2 scribes, and a mistress.") "Buddhist Temple" (location :name "Buddhist Temple" :summary "* A temple was established in the area long before the Daimyo located himself in the area. The temple remains a significant political power, and with their Sohei and Budoka, they could be more than an annoyance to the Daimyo. * Besides the master, there are 4 senior priests (Gakusho) and 20 monks (12 Gakusho and 8 Budoka). There are also 5 Sohei that act as guards and trainers. The temple is supported by donations and tithes. * Martial training is only allowed as it pertains to self-awareness. Fighting people is a sin unless in the protection of others. Training has been a point of contention with the Daimyo, but the issue has died down.")) :unitmap (unitmap :Daimyo (unit :name "Daimyo" :summary "* A gruff, no nonsense samurai. He craved the power and pretige of this position, but now finds that life as a Daimyo is sheltered and dull. * He is convinced that there is a plot to take his life, though there is no evidence to support this. He seems to enjoy the challenge of defending himself against this threat. He does fear dying dishonorably. For this reason, he has his food rigorously tested and his bedchambers inordinately guarded. He tries to leave himself more open to a direct attack, so he is often poorly guarded when he is armed. * The Daimyo feels intellectually challenged by both the Temple Master and the Castellan. He has become increasingly interested in these mind games, and a good challenge is a sure way to the Daimyo's good favor." :titles "Kenji Ginichi") "Daimyo's Wife" (unit :name "Daimyo's Wife" :summary "* Efficient, beautiful, and totally unimportant. The Daimyo is not interested in her at all. She is only a baby machine to him (and not a very good one). She does not aspire to higher station and is quite content with her circle of friends from the villiage who visit often.") "Daimyo's Son" (unit :name "Daimyo's Son" :summary "* A bored an somewhat obnoxious teenager. He revels in the past exploits of his illustrious father and is horrified by the inactive positon he is in now (a feeling shared by the Daimyo). The idea of being a Daimyo (or a court samural makes him ill. He wants to be an adventurer or a a ronin. He has studied with the samurai and budoka, but he lacks incentive and discipline. His most accomplished skill is distracting his guards so he can slip away.") :Castellan (unit :name "Castellan" :summary "* A classic samurai, dedicated and loyal. His main duties are to keep the province running, but more importantly he must protect the Daimyo and his family. This last task has proven very difficult. The Daimyo and his son have proven very difficult to defend. The Daimyo constantly reduces his guards, and his son tries to escape them. The castellan may not disobey the Daimyo, but he has prepared a long list of ways to manipulate the Daimyo into safer courses of action. When unable to control the Daimyo, he will send troops 'on patrol' in the Daimyo's area. He will delay or harry the Daimyo to make his movements less predictable. The Daimyo is aware of these machinations and enjoys outsmarting the castellan wherever possible. So far, the castellan is easily winning this battle of wits.") "Temple Master" (unit :name "Temple Master" :summary "* The temple master is a man of great diplomatic skill, and the Daimyo has found himself outmatched in all but military issues. The Daimyo often does not grant the master an audience until he has brushed up on the matter at hand.") :Oyabun (unit :name "Oyabun" :summary "* The head of the local Yakuza sees that the Daimyo is acting rather recklessly and is plotting an elaborate and subtle scheme to take advantage of the situation."))) "Age of Sail Japan" (section :name "Age of Sail Japan" :unitmap (unitmap "Japanese Archer" (unit :name "Japanese Archer") "Japanese Daimyo" (unit :name "Japanese Daimyo") "Japanese Emperor" (unit :name "Japanese Emperor") "Japanese Rifleman" (unit :name "Japanese Rifleman") "Japnese Samurai" (unit :name "Japnese Samurai"))))))
nx/tactics/books/age_of_sail / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Age Of Sail" :chaptermap (base/chaptermap "Age of Sail Overview" (chapter_age_of_sail_overview) "Age of Sail Weaponry" (chapter_age_of_sail_weaponry) "Renaissance" (chapter_renaissance) "Golden Age of Sail" (chapter_golden_age_of_sail) "American Revolution" (chapter_american_revolution) "French Revolution" (chapter_french_revolution) "Tokugawa Shogunate" (chapter_tokugawa_shogunate) )))
nx/tactics/books/age_of_sail / chapter_age_of_sail_overview
Description:
Function Name:
  • chapter_age_of_sail_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_age_of_sail_overview : base/chapter (chapter :name "Age of Sail Overview" :sectionmap (sectionmap "Why Tactics: Age of Sail?" (section :name "Why Tactics: Age of Sail?" :reference "http://www.thepirateking.com/historical/cannon_projectiles.htm" :summary "The Age of Sail was the period in which international trade and naval warfare were dominated by sailing ships, lasting from the 16th to the mid 19th century. This is a significant period during which square-rigged sailing ships carried European settlers to many parts of the world in one of the most expansive human migrations in recorded history.") "Age of Sail Land Warfare" (section :name "Age of Sail Land Warfare" :summary "* Infantry * Cavalry * Muskets * Cannons * Artillery * High Ground") "Age of Sail Naval Warfare" (section :name "Age of Sail Naval Warfare" :summary "* Wind * Large Ships * Small Ships * Solid Shot * Burning Shot * Chain Shot * Fortifications"))))
nx/tactics/books/age_of_sail / chapter_age_of_sail_weaponry
Description:
Function Name:
  • chapter_age_of_sail_weaponry
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_age_of_sail_weaponry : base/chapter (chapter :name "Age of Sail Weaponry" :sectionmap (sectionmap "Age of Sail Pistols" (section :name "Age of Sail Pistols" :itemmap (itemmap "20mm Dragon" (item :name "20mm Dragon" :reference "The blunderbuss, and especially the shorter dragon, was typically issued to troops such as cavalry, who needed a lightweight, easily handled firearm. The dragon became so associated with cavalry and mounted infantry that the term dragoon became synonymous with mounted infantry." :summary "* A short, muzzle-loading, flintlock, hand shotgun" :muzzlevelocity "225m/s"))) "Age of Sail Rifles" (section :name "Age of Sail Rifles" :itemmap (itemmap "12mm Carbine" (item :name "12mm Carbine" :summary "Short musket # Effective Range 60m # Muskets could regularly penetrate Plate Armor" :muzzlevelocity "438m/s") "18mm Musket" (item :name "18mm Musket" :reference "The Brown Bess was used in the era of the expansion of the British Empire. It was used for a hundred years with incremental changes in its design." :summary "# Effective Range 60m # Muskets could regularly penetrate Plate Armor" :titles "Brown Bess" :muzzlevelocity "320m/s") "20mm Blunderbuss" (item :name "20mm Blunderbuss" :reference "A blunderbuss is a muzzle-loading firearm with a flared, trumpet-like barrel and is the predecessor to the shotgun. Most of these weapons are mid-sized, being smaller than most shoulder-fired arms, but larger than a pistol. The muzzle was flared not to increase the spread of the shot, but rather to funnel powder and shot into the weapon, making it easier to reload on horseback or on a moving carriage." :muzzlevelocity "225m/s"))) "Age of Sail Cannons" (section :name "Age of Sail Cannons" :itemmap (itemmap :Chainshot (item :name "Chainshot" :image "AgeOfSail/Cannon_Chainshot.jpg" :summary "* Does no damage. All [Hits] are [Disabled Tokens]. All [Critical Hits] are [Crippled Tokens].") :Grapeshot (item :name "Grapeshot" :image "AgeOfSail/Cannon_Grapeshot.jpg") "Round shot" (item :name "Round shot" :image "AgeOfSail/Cannon_Roundshot.jpg") "140mm Field Culverin" (item :name "140mm Field Culverin" :image "AgeOfSail/Culverin.jpg" :summary "600,000J" :classification "Cannon" :length "4.5m" :mass "2.2tons" :muzzlevelocity "400m/s" :range "450m") "100mm Demi-culverin" (item :name "100mm Demi-culverin" :image "AgeOfSail/Demi-culverin.jpg" :classification "Cannon" :length "3.4m" :mass "1.5tons" :muzzlevelocity "487m/s" :range "300m" :rof ".75/min"))))))
nx/tactics/books/age_of_sail / chapter_renaissance
Description:
Function Name:
  • chapter_renaissance
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_renaissance : base/chapter (chapter :name "Renaissance"))
nx/tactics/books/age_of_sail / chapter_golden_age_of_sail
Description:
Function Name:
  • chapter_golden_age_of_sail
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_golden_age_of_sail : base/chapter (chapter :name "Golden Age of Sail" :sectionmap (sectionmap "Age of Sail Scenarios" (section :name "Age of Sail Scenarios" :scenariomap (scenariomap :Pirates (scenario :name "Pirates") :Swashbucklers (scenario :name "Swashbucklers"))) "Age of Sail Dutch" (section :name "Age of Sail Dutch") "Age of Sail British" (section :name "Age of Sail British" :unitmap (unitmap "British Musketeers" (unit :name "British Musketeers" :image "AgeOfSail/British_Musketeers.png" :summary "Musket Infantry" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "British Caravel" (unit :name "British Caravel" :image "AgeOfSail/BritishCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Frigate" (unit :name "British Frigate" :image "AgeOfSail/BritishFrigate.png" :reference "A warship second only in size to the Ship-of-the-Line. Frigates were three-masted with a raised forecastle and quarterdeck. They had anywhere from 24 to 38 guns on her deck. They were faster than the ship-of-the-lines and were used for escort purposes. They were sometimes used to hunt pirates. Only a few pirates were ever in command of a frigate as most pirates would flee from a frigate." :speed "20kph" :classification "Med. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Man-O-War" (unit :name "British Man-O-War" :image "AgeOfSail/BritishManOWar.png" :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Schooner" (unit :name "British Schooner" :image "AgeOfSail/BritishSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "British Racing Galleon" (unit :name "British Racing Galleon" :classification "Lt. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "East India Company" (section :name "East India Company") :French (section :name "French" :unitmap (unitmap "Napoleon Bonaparte" (unit :name "Napoleon Bonaparte" :image "AgeOfSail/French_Napoleon.png") "French Musketeers" (unit :name "French Musketeers" :image "AgeOfSail/French_Musketeers.png" :summary "Musket Infantry" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "French Carabiners" (unit :name "French Carabiners" :summary "Light Cavalry carrying short Carbine rifles" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "12mm Carbine" (unititem :name "12mm Carbine"))))) "French Dragoons" (unit :name "French Dragoons" :image "AgeOfSail/French_Dragoons.png" :summary "Musket Cavalry intending to ride into battle and dismount to fire." :classification "Med. Cavalry" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "3" :unititemmap (unititemmap "18mm Musket" (unititem :name "18mm Musket"))))) "French Man-O-War" (unit :name "French Man-O-War" :reference "These ships were the heavy-guns of the fleet. They resembled galleons in design, but had heavy fire-power. Only the three major sea-powers of the time (Spain, England, and France) had many of these kind of ships." :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "French Schooner" (unit :name "French Schooner" :image "AgeOfSail/FrenchSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) :Pirates (section :name "Pirates" :summary "The era of piracy in the Caribbean Sea began in the 17th century and died out in the 1720s after the navies of the nations of Western Europe with colonies in the Caribbean began combating pirates." :unitmap (unitmap "Pirate Crew" (unit :name "Pirate Crew" :image "AgeOfSail/Pirate_Crew.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4" :unitabilitymap (unitabilitymap "Boarding Party" (unitability :name "Boarding Party"))))) "Pirate Caravel" (unit :name "Pirate Caravel" :image "AgeOfSail/PirateCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Schooner" (unit :name "Pirate Schooner" :image "AgeOfSail/PirateSchooner.png" :reference "The Schooner has a narrow hull, two masts and is less than 100 tons. She is generally rigged with two large sails. She had a shallow draft which allowed her to remain in shallow coves waiting for her prey. The Schooner is very fast and large enough to carry a plentiful crew. It was a favorite among both pirates and smugglers." :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Sloop" (unit :name "Pirate Sloop" :reference "The Sloop was fast, agile, and had a shallow draft. Today's sailing Yacht is essentially a sloop." :classification "Lt. Naval Vessel" :mass "100tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Pirate Brigantine" (unit :name "Pirate Brigantine" :reference "The brigantine was a small ship carrying both sails and oars. It was a favorite of Mediterranean pirates from whence it got its name Brigantine meaning Brigand Ship. Later the ship referred to a two-masted sailing ship with much greater sailing power." :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "Age of Sail Portuguese" (section :name "Age of Sail Portuguese" :unitmap (unitmap "Portuguese Caravel" (unit :name "Portuguese Caravel" :reference "The Nina was actually named the Santa Clara. Nina was a pun on its owner's name: Juan Nino." :titles "Nina, Pinta" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Portuguese Carrack" (unit :name "Portuguese Carrack" :reference "All of Columbus' ships were second-hand (if not third or more) and were never meant for exploration." :titles "Santa Maria" :speed "10kph" :classification "Med. Naval Vessel" :crew "40" :mass "300tons" :length "25m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))) "Age of Sail Spanish" (section :name "Age of Sail Spanish" :unitmap (unitmap "Silver Train" (unit :name "Silver Train") "Treasure Fleet" (unit :name "Treasure Fleet" :classification "Hvy. Naval Vessel") "Spanish Caravel" (unit :name "Spanish Caravel" :image "AgeOfSail/SpanishCaravel.png" :speed "15kph" :classification "Med. Naval Vessel" :crew "20" :mass "150tons" :length "25m" :width "9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "7 inches (180 mm/30mm RHA)" :front "30mm" :back "30mm" :side "30mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Spanish Galleon" (unit :name "Spanish Galleon" :image "AgeOfSail/SpanishGalleon.png" :reference "Large ships meant for transporting cargo. The Spanish treasure fleets were made of these ships. Although they were sluggish, they weren't the easy target you would expect for they could carry heavy cannon which made attacking them difficult. They had two to three decks. Most had three masts. Some galleons sported 4 masts but these were an exception to the rule." :classification "Hvy. Naval Vessel" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm"))) "Spanish Man-O-War" (unit :name "Spanish Man-O-War" :image "AgeOfSail/SpanishManOWar.png" :classification "Hvy. Naval Vessel" :mass "1000tons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "14 inches (360 mm/60mm RHA)" :front "60mm" :back "60mm" :side "60mm")) :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))) "Spanish Schooner" (unit :name "Spanish Schooner" :image "AgeOfSail/SpanishSchooner.png" :classification "Med. Naval Vessel" :mass "80tons" :length "18m" :width "6m" :unitskillmap (unitskillmap :Seamanship (unitskill :name "Seamanship" :level "4"))))))))
nx/tactics/books/age_of_sail / chapter_american_revolution
Description:
Function Name:
  • chapter_american_revolution
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_american_revolution : base/chapter (chapter :name "American Revolution" :sectionmap (sectionmap "Age of Sail United States" (section :name "Age of Sail United States" :unitmap (unitmap "American Frigate" (unit :name "American Frigate" :image "AgeOfSail/AmericanFrigate.png" :titles "USS Constitution, Old Ironsides" :speed "24kph" :classification "Hvy. Naval Vessel" :mass "2200tons" :length "62m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "21 inches (530 mm/88mm RHA)" :front "88mm" :back "88mm" :side "88mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "30 x 24-pounder (11 kg) long gun 20 x 32-pounder (15 kg) carronade 2 x 24-pounder (11 kg) bow chasers" :unitabilitymap (unitabilitymap :Salvo (unitability :name "Salvo"))))))))))
nx/tactics/books/age_of_sail / chapter_french_revolution
Description:
Function Name:
  • chapter_french_revolution
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_french_revolution : base/chapter (chapter :name "French Revolution"))
nx/tactics/books/age_of_sail / chapter_tokugawa_shogunate
Description:
Function Name:
  • chapter_tokugawa_shogunate
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_tokugawa_shogunate : base/chapter (chapter :name "Tokugawa Shogunate" :sectionmap (sectionmap "Tokugawa Prefecture" (section :name "Tokugawa Prefecture" :locationmap (locationmap "Tokugawa Town" (location :name "Tokugawa Town" :summary "* The Daimyo chose to place his castle near a moderately-sized villiage. He wanted the advantage of a town without having more people than could be kept track of. The Daimyo's presense has brought an influx of trade, and the town is surprisingly wealthy. * There is a cooper, a brewer, a courtesan house, an inn, a silk-maker, a woodworker, 2 woodcutters, 15 merchants, 20 fishermen, over 100 farmers, and about 15 vagrants. * There are 2 police officers and many of the townspeople are in the reserve. * In addition, the Daimyo personally supports 25 samurai, a swordsmith, an armorer, a fletcher, 2 carpenters, 2 advisors, a scupltor, a jeweler, 2 fine weavers, 2 painters, 2 scribes, and a mistress.") "Buddhist Temple" (location :name "Buddhist Temple" :summary "* A temple was established in the area long before the Daimyo located himself in the area. The temple remains a significant political power, and with their Sohei and Budoka, they could be more than an annoyance to the Daimyo. * Besides the master, there are 4 senior priests (Gakusho) and 20 monks (12 Gakusho and 8 Budoka). There are also 5 Sohei that act as guards and trainers. The temple is supported by donations and tithes. * Martial training is only allowed as it pertains to self-awareness. Fighting people is a sin unless in the protection of others. Training has been a point of contention with the Daimyo, but the issue has died down.")) :unitmap (unitmap :Daimyo (unit :name "Daimyo" :summary "* A gruff, no nonsense samurai. He craved the power and pretige of this position, but now finds that life as a Daimyo is sheltered and dull. * He is convinced that there is a plot to take his life, though there is no evidence to support this. He seems to enjoy the challenge of defending himself against this threat. He does fear dying dishonorably. For this reason, he has his food rigorously tested and his bedchambers inordinately guarded. He tries to leave himself more open to a direct attack, so he is often poorly guarded when he is armed. * The Daimyo feels intellectually challenged by both the Temple Master and the Castellan. He has become increasingly interested in these mind games, and a good challenge is a sure way to the Daimyo's good favor." :titles "Kenji Ginichi") "Daimyo's Wife" (unit :name "Daimyo's Wife" :summary "* Efficient, beautiful, and totally unimportant. The Daimyo is not interested in her at all. She is only a baby machine to him (and not a very good one). She does not aspire to higher station and is quite content with her circle of friends from the villiage who visit often.") "Daimyo's Son" (unit :name "Daimyo's Son" :summary "* A bored an somewhat obnoxious teenager. He revels in the past exploits of his illustrious father and is horrified by the inactive positon he is in now (a feeling shared by the Daimyo). The idea of being a Daimyo (or a court samural makes him ill. He wants to be an adventurer or a a ronin. He has studied with the samurai and budoka, but he lacks incentive and discipline. His most accomplished skill is distracting his guards so he can slip away.") :Castellan (unit :name "Castellan" :summary "* A classic samurai, dedicated and loyal. His main duties are to keep the province running, but more importantly he must protect the Daimyo and his family. This last task has proven very difficult. The Daimyo and his son have proven very difficult to defend. The Daimyo constantly reduces his guards, and his son tries to escape them. The castellan may not disobey the Daimyo, but he has prepared a long list of ways to manipulate the Daimyo into safer courses of action. When unable to control the Daimyo, he will send troops 'on patrol' in the Daimyo's area. He will delay or harry the Daimyo to make his movements less predictable. The Daimyo is aware of these machinations and enjoys outsmarting the castellan wherever possible. So far, the castellan is easily winning this battle of wits.") "Temple Master" (unit :name "Temple Master" :summary "* The temple master is a man of great diplomatic skill, and the Daimyo has found himself outmatched in all but military issues. The Daimyo often does not grant the master an audience until he has brushed up on the matter at hand.") :Oyabun (unit :name "Oyabun" :summary "* The head of the local Yakuza sees that the Daimyo is acting rather recklessly and is plotting an elaborate and subtle scheme to take advantage of the situation."))) "Age of Sail Japan" (section :name "Age of Sail Japan" :unitmap (unitmap "Japanese Archer" (unit :name "Japanese Archer") "Japanese Daimyo" (unit :name "Japanese Daimyo") "Japanese Emperor" (unit :name "Japanese Emperor") "Japanese Rifleman" (unit :name "Japanese Rifleman") "Japnese Samurai" (unit :name "Japnese Samurai"))))))
nx/tactics/books/age_of_steam
Description:
Package Name:
  • nx/tactics/books/age_of_steam
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_age_of_steam_overview, chapter_age_of_steam_equipment, chapter_steam_age_maps, chapter_civil_war, chapter_victorian_england, chapter_wild_west, chapter_examples_of_play
Source Code:
  • (package nx/tactics/books/age_of_steam :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Age of Steam" :image "WildWest.jpg" :chaptermap (base/chaptermap "Age of Steam Overview" (chapter_age_of_steam_overview) "Age of Steam Equipment" (chapter_age_of_steam_equipment) "Steam Age Maps" (chapter_steam_age_maps) "Civil War" (chapter_civil_war) "Victorian England" (chapter_victorian_england) "Wild West" (chapter_wild_west) "Examples of Play" (chapter_examples_of_play) ))) (func chapter_age_of_steam_overview : base/chapter (chapter :name "Age of Steam Overview" :sectionmap (sectionmap "Why Tactics: Age of Steam?" (section :name "Why Tactics: Age of Steam?") "Age of Steam Personal Combat" (section :name "Age of Steam Personal Combat" :summary "* Dueling * Civil War * Cowboys * Indians * Bandits * Cattle Rustlers * Marksman") "Age of Steam Land Warfare" (section :name "Age of Steam Land Warfare" :summary "* Infantry * Cavalry * Pistols * Rifles * Cannons * Artillery * Gatling Guns * Trains") "Age of Steam Naval Warfare" (section :name "Age of Steam Naval Warfare" :summary "* Wind * Large Ships * Small Ships * Solid Shot * Burning Shot * Chain Shot")))) (func chapter_age_of_steam_equipment : base/chapter (chapter :name "Age of Steam Equipment" :sectionmap (sectionmap "Age of Steam Weaponry" (section :name "Age of Steam Weaponry" :itemmap (itemmap ".45 Colt Peacemaker" (item :name ".45 Colt Peacemaker" :image "Western/Colt1873.jpg" :reference "US Army issue from 1873-1892 and used by other notables like Wyatt Earp and Bat Masterson. Wyatt Earp's fictional Colt Buntline was supposed to be a long barrel version of the Colt Peacemaker." :summary "Single action, revolver" :classification "Pistol" :modifiers "Bleeding" :range "30m" :rounds "6") ".45 Smith&amp;Wesson Schofield" (item :name ".45 Smith&amp;Wesson Schofield" :image "Western/Schofield1869.jpg" :reference "Just meat and potatoes. Me and Jesse James think it's the best handgun in the world. - Kid, The Quick and the Dead." :summary "Single action, revolver" :classification "Pistol" :modifiers "Bleeding" :range "30m" :rounds "6") ".41 Remington Derringer" (item :name ".41 Remington Derringer" :image "Western/Derringer.jpg" :reference "The classic Remington design is still popular; a Remington pattern derringer in .38 Special is still smaller than the most compact .25 ACP semiautomatic, and provides far superior terminal ballistic performance in its two shots than the .25 ACP does with six or seven." :summary "Rimfire, single action" :classification "Pistol" :modifiers "Bleeding" :range "16m" :rounds "2") ".44 Winchester Model 1873" (item :name ".44 Winchester Model 1873" :image "Western/Winchester1873.jpg" :reference "The Winchester is among the earliest repeating rifles, and has become synonymous with lever-action firearms. Known as 'The Gun that Won the West' for its immense popularity at that time." :summary "Lever action, repeating" :classification "Rifle" :length "125.2cm" :mass "4.3kg" :muzzlevelocity "379m/s" :range "100m") "12g Winchester Model 1887" (item :name "12g Winchester Model 1887" :reference "Considered the first truly successful repeating shotgun" :summary "Level action" :classification "Shotgun" :length "1m" :mass "3.6kg" :modifiers "Scattershot, Bleeding" :range "30m" :rounds "5") ".50 Gatling Gun" (item :name ".50 Gatling Gun" :image "Western/GatlingGun1876.jpg.jpg" :classification "Hvy. MG" :modifiers "Auto, Bleeding" :range "100m") "Napoleon Cannon" (item :name "Napoleon Cannon" :image "Western/CivilWarCannon.jpg" :summary "Smoothbore, muzzle-loading, 12-pounder" :classification "Cannon" :modifiers "Blast, Indirect Fire" :range "250m"))) "Steam Age Vehicles" (section :name "Steam Age Vehicles" :unitmap (unitmap "Horseless Carriage" (unit :name "Horseless Carriage") "Mailplane Biplane" (unit :name "Mailplane Biplane") "Ocean Liner" (unit :name "Ocean Liner" :titles "Liner, Steam Liner") :Stagecoach (unit :name "Stagecoach") "Steam Ferry" (unit :name "Steam Ferry") "Steam Train Boxcar" (unit :name "Steam Train Boxcar") "Steam Train Caboose" (unit :name "Steam Train Caboose") "Steam Train Coach" (unit :name "Steam Train Coach") "Steam Train Locomotive" (unit :name "Steam Train Locomotive") "Steam Train Private Coach" (unit :name "Steam Train Private Coach") :Steamboat (unit :name "Steamboat") "Tramp Freighter" (unit :name "Tramp Freighter") :Zepplin (unit :name "Zepplin" :titles "Dirigible")))))) (func chapter_steam_age_maps : base/chapter (chapter :name "Steam Age Maps" :sectionmap (sectionmap "Steam Age Terrain" (section :name "Steam Age Terrain" :rulemap (rulemap :Mine (rule :name "Mine") :Tumbleweed (rule :name "Tumbleweed") "Western Town" (rule :name "Western Town")))))) (func chapter_civil_war : base/chapter (chapter :name "Civil War" :sectionmap (sectionmap "Civil War Scenarios" (section :name "Civil War Scenarios" :scenariomap (scenariomap "Civil War Battle" (scenario :name "Civil War Battle") :Ironclads (scenario :name "Ironclads" :summary "The first battle between ironclads happened on 9 March 1862, as the armored Monitor was deployed to protect the Union's wooden fleet from the ironclad ram Virginia and other Confederate warships. In this engagement, the two ironclads repeatedly tried to ram one another while shells bounced off their armor. The battle attracted attention worldwide, making it clear that the wooden warship was now out of date, with the ironclads destroying them easily."))) "Confederate Army" (section :name "Confederate Army" :unitmap (unitmap "Confederate Cannon" (unit :name "Confederate Cannon") "Confederate Conscript" (unit :name "Confederate Conscript") "Confederate Gatling Gunner" (unit :name "Confederate Gatling Gunner") "Confederate Medic" (unit :name "Confederate Medic") "Confederate Officer" (unit :name "Confederate Officer") "Confederate Veteran" (unit :name "Confederate Veteran"))) "Confederate Navy" (section :name "Confederate Navy" :unitmap (unitmap :Merrimack (unit :name "Merrimack" :titles "CSS Virginia" :speed "17kph" :classification "Hvy. Naval Vessel" :crew "320" :mass "4500tons" :length "84m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "100mm iron over 610mm of wood (102mm RHA)" :front "200mm" :back "200mm" :side "200mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "2 x 7 inch (178mm) rifles 2 x 6 inch (152mm) rifles 6 x 9 inch (229mm) Dahlgren smoothbores 2 x 12-pounder (5kg) howitzers" :level "4"))))) "Union Army" (section :name "Union Army" :unitmap (unitmap "Union Cannon" (unit :name "Union Cannon") "Union Conscript" (unit :name "Union Conscript") "Union Gatling Gunner" (unit :name "Union Gatling Gunner") "Union Medic" (unit :name "Union Medic") "Union Officer" (unit :name "Union Officer") "Union Veteran" (unit :name "Union Veteran"))) "Union Navy" (section :name "Union Navy" :unitmap (unitmap "USS Monitor" (unit :name "USS Monitor" :speed "15kph" :classification "Hvy. Naval Vessel" :crew "59" :mass "1000tons" :length "52m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "200mm iron turret, 25mm deck, 125mm hull belt" :front "200mm" :back "200mm" :over "25mm" :side "200mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "2 x 11 in (280mm) Dahlgren smoothbores, turret" :level "4")))))))) (func chapter_victorian_england : base/chapter (chapter :name "Victorian England" :sectionmap (sectionmap "Victoraian Characters" (section :name "Victoraian Characters" :unitmap (unitmap "Dr. John Watson" (unit :name "Dr. John Watson") "Herbert George Wells" (unit :name "Herbert George Wells") "Jack the Ripper" (unit :name "Jack the Ripper") "Sherlock Holmes" (unit :name "Sherlock Holmes" :reference "* Watson: What made like this? * Sherlock: Oh, dear Watson. Nothing made me ... I made me.")))))) (func chapter_wild_west : base/chapter (chapter :name "Wild West" :sectionmap (sectionmap "Western Scenarios" (section :name "Western Scenarios" :scenariomap (scenariomap "Western Gunfight" (scenario :name "Western Gunfight" :summary "Setup Grassland Map Personal Scale Player 1 begins with a Gunslinger deployed anywhere on the map. Player 2 begins with a US Marshall deployed within 10 spaces of Gunslinger. Both Players' units are standing still with pistols holstered. Gunslinger has the initiative. Special Rules Shoot From the Hip Hit Location"))) "Steam Age Outlaws" (section :name "Steam Age Outlaws" :unitmap (unitmap :Bandito (unit :name "Bandito" :image "Western/BanditoToken.png" :reference "You think you're better than I am? Where we came from, if one did not want to die of poverty, one became a priest or a bandit! ...You became a priest because you were... too much of a coward to do what I do! - Tuco. The Good, the Bad, and the Ugly." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "3"))) :Gunslinger (unit :name "Gunslinger" :image "Western/GunslingerToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Crime (unitskill :name "Crime" :level "3" :unitabilitymap (unitabilitymap "Armed Robbery" (unitability :name "Armed Robbery") :Rustling (unitability :name "Rustling"))))) "Man with No Name" (unit :name "Man with No Name" :image "Western/ManWithNoNameToken.png" :reference "* [to Tuco] Tut, tut. Such ingratitude after all the times I saved your life. - Blondie, The Good, the Bad, and the Ugly * There are two kinds of people in the world...Those who have a loaded gun and those who dig. You dig! - Blondie, The Good, the Bad, and the Ugly" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "5"))) "Professional Killer" (unit :name "Professional Killer" :image "Western/ProfessionalKiller.png" :reference "He paid me a thousand. I think his idea was that I kill you. But you know, the pity is when I'm paid, I always follow my job through. - Angel Eyes, The Good, the Bad, and the Ugly" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))))) "Steam Age Lawmen" (section :name "Steam Age Lawmen" :unitmap (unitmap :Deputy (unit :name "Deputy") :Sheriff (unit :name "Sheriff") "US Marshall" (unit :name "US Marshall" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))))) "Steam Age Indians" (section :name "Steam Age Indians" :unitmap (unitmap "Sioux Gunfighter" (unit :name "Sioux Gunfighter" :image "Western/IndianAxe.jpg" :reference "Spotted Horse cannot be killed by a bullet! - Spotted Horse, The Quick and the Dead"))) "Steam Age Townsfolk" (section :name "Steam Age Townsfolk" :unitmap (unitmap "Chinese Monk" (unit :name "Chinese Monk" :reference "I seek not to know the answers, but to understand the questions. - Kwai Chang Caine, Kung Fu TV Series") "Chinese Rail worker" (unit :name "Chinese Rail worker") :Cowboy (unit :name "Cowboy") :Dentist (unit :name "Dentist") :Farmer (unit :name "Farmer") "General Store Owner" (unit :name "General Store Owner") :Judge (unit :name "Judge") :Preacher (unit :name "Preacher") "Saloon Barkeep" (unit :name "Saloon Barkeep") :Undertaker (unit :name "Undertaker") "Whore with a Heart of Gold" (unit :name "Whore with a Heart of Gold"))) "Steam Age Travelers" (section :name "Steam Age Travelers" :unitmap (unitmap "Carpet Bagger" (unit :name "Carpet Bagger") :Gambler (unit :name "Gambler" :summary "This is a very special pack. See, I put an ace in every time I kill a man. (The deck is all aces) - Ace, The Quick and the Dead") :Prospector (unit :name "Prospector") "Snake Oil Salesman" (unit :name "Snake Oil Salesman"))) "Steam Age Tycoons" (section :name "Steam Age Tycoons" :unitmap (unitmap :Banker (unit :name "Banker") "Land Baron" (unit :name "Land Baron" :reference "All I hear from you...is how poor you are; how you can't afford my taxes. Yet somehow, you managed to find the money to hire a gunfighter to kill me. If ya got so much money, I'm just gonna have to take some more. - John Herod, The Quick and the Dead" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))) "Oil Baron" (unit :name "Oil Baron") "Railroad Tycoon" (unit :name "Railroad Tycoon")))))) (func chapter_examples_of_play : base/chapter (chapter :name "Examples of Play" :sectionmap (sectionmap "Western Gunfight" (section :name "Western Gunfight" :summary "Round 1 - Turn 1 Initiative Gunslinger player starts with the initiative, but the Marshall wants to 'Take the Initiative' Each Player rolls 2 dice. +1 for the player who currently holds initiative. +1 for highest skill. -1 if most Damaged or Stunned. A tie means simultaneous actions. Gunslinger rolls 6 + 1 (holds initiative) = 7. Marshall rolls 8. Marshall takes the initiative. Move Marshall is within range of his weapon, so chooses not to move to get the best chance to hit. Action Fast Draw - Marshall is in weapon range and chooses to use Fast Draw to draw his weapon and fire. Attack - Fast Draw was a Free Action and Marshall chooses to fire. He uses his Handgun Skill and any modifiers to determine attack dice. 5 (Handguns) +1 (Accuracy) - 1 (Hip Shoot) = 6 Dice Marshall rolls 6 dice and gets 1 (miss), 2 (miss), 2 (miss), 3 (miss), 5 (hit), and 6 (hit and bonus die). He rolls the bonus die and gets another 6 (critical hit and bonus die). He rolls the bonus die and gets a 3 (flag). Marshall's total roll is 1 hit, 1 critical, and a flag. Defense Gunslinger now rolls dice equal to appropriate defense: 4 Body = 4 Dice Gunslinger rolls 3 dice and gets 1 (miss), 3 (miss), 5 (hit), and 6 (hit and bonus die). He rolls the bonus die and gets a 4 (critical hit). Gunslinger's total is 2 hits and 1 critical. Gunslinger's 1 hit cancels one of Marshall's hits and his 1 critical hit cancels one of Marshall's critical hits. This leaves Marshall with only a single flag, Gunslinger had rolled a second hit, but since it can only cancel other hits, it has no effect. Effects Flags - Gunslinger gains a Flag Token and must retreat one space for each flag. He therefore retreats 1 space away from Marshall. Attack Damage - Since no damage was rolled, Marshall's turn is over. Round 1 - Turn 2 Initiative Gunslinger player regains the initiative. Marshall has already taken a turn and cannot do so again this round. White Tokens - After initiative is determined, Gunslinger must remove a White Token if any. He removes the Flag token. Move Gunslinger was forced to back by the Flag but is still in his weapon's range, so he will not take an attack penalty. However, if he moves closer he will take a penalty for moving, so he opts to stay still and fire. Action Fast Draw - Gunslinger also uses Fast Draw to draw and fire. Attack - He uses his Handgun Skill and any modifiers to determine attack dice. 5 (Handguns) +1 (Accuracy) -1 (Hip Shoot) = 5 Dice. Gunslinger rolls 5 dice and gets 1 (miss), 3 (miss), 4 (hit), 5 (hit), and 5 (hit). His total roll is 3 hits. Nice. Defense Marshall now rolls dice equal to appropriate defense. 4 Body = 4 Dice. Marshall rolls 4 dice and gets 1 (miss), 1 (miss), 3 (miss), and 4 (hit). Marshall's total is 1 hit. Marshall cancels 1 of Gunslinger's hits. This leaves Gunslinger with 2 hits. Effects Damage Rating - Since Gunslinger rolled at least 1 hit or critical hit (he scored 2), he checks the damage rating of his Schofield .45. Its damage rating is 4. If Gunslinger had rolled less than 4 dice, the Schofield would allow him to roll the difference in additional damage dice. However, Gunslinger rolled 4 dice already, so he receives no additional dice. Hits - The first hit is converted to a Stun Token. Damage - All subsequent hits are converted to Damage Tokens. Damage Summary - 1 Stun Token and 1 Damage Token. Hit Location - Since we are using Hit Location and did some form of damage, roll 2 dice. The first determines side of the body: 1-2 is left side, 3-4 is center, and 5-6 is right side. The second die determines height on the body: 1-2 is low, 3-4 is middle, 5-6 is high. Marshall rolls 6 (right), 2 (low): Right Shin/Foot. The 1 Damage Token is therefore on Marshall's Right Shin. This will limit his movement. Turn End Round End - Since all units have acted, the round ends. Round 2 - Turn 1 Initiative Marshall has the initiative since Gunslinger player ended with the initiative, but Gunslinger predictably wants to 'Take the Initiative' back. Marshall desperately needs to win initiative to recover a bit from the last hit. Each Player rolls 2 dice. +1 for the player who currently holds initiative. +1 for highest skill. -1 if most Damaged or Stunned. A tie means simultaneous actions. Marshall rolls 4 + 1 (holds initiative) -1 (most Damaged) = 4. Gunslinger rolls 8 and takes the initiative. Gunslinger grins. White Tokens - Gunslinger has no White Tokens. Move Gunslinger presses his advantage and stays and fires hoping to finish this battle. Action Since their guns are already drawn, neither unit needs to fire from the hip anymore. Attack - Gunslinger determines attack dice. 5 (Handguns) +1 (Accuracy) = 6 Dice. Gunslinger rolls 6 dice and gets 1 (miss), 1 (miss), 3 (miss), 5 (hit), 5 (hit), and 6 (hit and bonus die). He rolls the bonus and gets 1 (flag). His total roll is 3 hits and a flag. Looking good. Defense Marshall now rolls dice equal to appropriate defense. 4 Body -1 (Damage) -1 (Stun) = 2 Dice. Need some good rolls about now. Marshall rolls 2 dice and gets 1 (miss) and 1 (miss). Nothing. Marshall is hit dead-on by the Gunslinger. Effects Damage Rating - Since Gunslinger rolled at least 1 hit or critical hit (he scored 3), he checks the damage rating of his Schofield .45. Its damage rating is 4 is not more than his 6 dice rolled so no additional dice. Hits - The first hit is converted to a Stun Token. Damage - All subsequent hits are converted to Damage Tokens. Damage Summary - 1 Stun Token and 2 Damage Tokens. Hit Location - Since we are using Hit Location and did some form of damage, roll 2 dice. The first determines side of the body: 1-2 is left side, 3-4 is center, and 5-6 is right side. The second die determines height on the body: 1-2 is low, 3-4 is middle, 5-6 is high. Marshall rolls 2 (left), 4 (center): Left Thigh. The 2 Damage Tokens are therefore on Marshall's Left Thigh. This will limit his movement even more. Damage Total - 2 Stun Tokens and 3 Damage Tokens (1 on Right Shin, 2 on Left Thigh). The total of -5 is greater than the Marshall's 4 Body, so he drops to the ground. Round 2 - Turn 2 Initiative Marshall has the initiative since Gunslinger has already acted this round. White Tokens - Marshall removes a White Token if any. He removes 1 of the Stun tokens. Move Marshall is prone and has no Move left to even crawl (Move 4 - 1 (Stun) - 3 (Damage)). Action Marshall could attack with 5 (Handguns) + 1 (Accuracy) - 1 (Stun) - 3 (Damage) = 2 Dice, but he has no dice to defend next turn, he is Prone (+1) and Helpless (+1) for a total of 8 Gunslinger Dice against his own 0 Dice. What's more the gunslinger doesn't have a scratch on him. The duel is clearly over, and the Marshall drops his gun and begs for his life."))))
nx/tactics/books/age_of_steam / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Age of Steam" :image "WildWest.jpg" :chaptermap (base/chaptermap "Age of Steam Overview" (chapter_age_of_steam_overview) "Age of Steam Equipment" (chapter_age_of_steam_equipment) "Steam Age Maps" (chapter_steam_age_maps) "Civil War" (chapter_civil_war) "Victorian England" (chapter_victorian_england) "Wild West" (chapter_wild_west) "Examples of Play" (chapter_examples_of_play) )))
nx/tactics/books/age_of_steam / chapter_age_of_steam_overview
Description:
Function Name:
  • chapter_age_of_steam_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_age_of_steam_overview : base/chapter (chapter :name "Age of Steam Overview" :sectionmap (sectionmap "Why Tactics: Age of Steam?" (section :name "Why Tactics: Age of Steam?") "Age of Steam Personal Combat" (section :name "Age of Steam Personal Combat" :summary "* Dueling * Civil War * Cowboys * Indians * Bandits * Cattle Rustlers * Marksman") "Age of Steam Land Warfare" (section :name "Age of Steam Land Warfare" :summary "* Infantry * Cavalry * Pistols * Rifles * Cannons * Artillery * Gatling Guns * Trains") "Age of Steam Naval Warfare" (section :name "Age of Steam Naval Warfare" :summary "* Wind * Large Ships * Small Ships * Solid Shot * Burning Shot * Chain Shot"))))
nx/tactics/books/age_of_steam / chapter_age_of_steam_equipment
Description:
Function Name:
  • chapter_age_of_steam_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_age_of_steam_equipment : base/chapter (chapter :name "Age of Steam Equipment" :sectionmap (sectionmap "Age of Steam Weaponry" (section :name "Age of Steam Weaponry" :itemmap (itemmap ".45 Colt Peacemaker" (item :name ".45 Colt Peacemaker" :image "Western/Colt1873.jpg" :reference "US Army issue from 1873-1892 and used by other notables like Wyatt Earp and Bat Masterson. Wyatt Earp's fictional Colt Buntline was supposed to be a long barrel version of the Colt Peacemaker." :summary "Single action, revolver" :classification "Pistol" :modifiers "Bleeding" :range "30m" :rounds "6") ".45 Smith&amp;Wesson Schofield" (item :name ".45 Smith&amp;Wesson Schofield" :image "Western/Schofield1869.jpg" :reference "Just meat and potatoes. Me and Jesse James think it's the best handgun in the world. - Kid, The Quick and the Dead." :summary "Single action, revolver" :classification "Pistol" :modifiers "Bleeding" :range "30m" :rounds "6") ".41 Remington Derringer" (item :name ".41 Remington Derringer" :image "Western/Derringer.jpg" :reference "The classic Remington design is still popular; a Remington pattern derringer in .38 Special is still smaller than the most compact .25 ACP semiautomatic, and provides far superior terminal ballistic performance in its two shots than the .25 ACP does with six or seven." :summary "Rimfire, single action" :classification "Pistol" :modifiers "Bleeding" :range "16m" :rounds "2") ".44 Winchester Model 1873" (item :name ".44 Winchester Model 1873" :image "Western/Winchester1873.jpg" :reference "The Winchester is among the earliest repeating rifles, and has become synonymous with lever-action firearms. Known as 'The Gun that Won the West' for its immense popularity at that time." :summary "Lever action, repeating" :classification "Rifle" :length "125.2cm" :mass "4.3kg" :muzzlevelocity "379m/s" :range "100m") "12g Winchester Model 1887" (item :name "12g Winchester Model 1887" :reference "Considered the first truly successful repeating shotgun" :summary "Level action" :classification "Shotgun" :length "1m" :mass "3.6kg" :modifiers "Scattershot, Bleeding" :range "30m" :rounds "5") ".50 Gatling Gun" (item :name ".50 Gatling Gun" :image "Western/GatlingGun1876.jpg.jpg" :classification "Hvy. MG" :modifiers "Auto, Bleeding" :range "100m") "Napoleon Cannon" (item :name "Napoleon Cannon" :image "Western/CivilWarCannon.jpg" :summary "Smoothbore, muzzle-loading, 12-pounder" :classification "Cannon" :modifiers "Blast, Indirect Fire" :range "250m"))) "Steam Age Vehicles" (section :name "Steam Age Vehicles" :unitmap (unitmap "Horseless Carriage" (unit :name "Horseless Carriage") "Mailplane Biplane" (unit :name "Mailplane Biplane") "Ocean Liner" (unit :name "Ocean Liner" :titles "Liner, Steam Liner") :Stagecoach (unit :name "Stagecoach") "Steam Ferry" (unit :name "Steam Ferry") "Steam Train Boxcar" (unit :name "Steam Train Boxcar") "Steam Train Caboose" (unit :name "Steam Train Caboose") "Steam Train Coach" (unit :name "Steam Train Coach") "Steam Train Locomotive" (unit :name "Steam Train Locomotive") "Steam Train Private Coach" (unit :name "Steam Train Private Coach") :Steamboat (unit :name "Steamboat") "Tramp Freighter" (unit :name "Tramp Freighter") :Zepplin (unit :name "Zepplin" :titles "Dirigible"))))))
nx/tactics/books/age_of_steam / chapter_steam_age_maps
Description:
Function Name:
  • chapter_steam_age_maps
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_steam_age_maps : base/chapter (chapter :name "Steam Age Maps" :sectionmap (sectionmap "Steam Age Terrain" (section :name "Steam Age Terrain" :rulemap (rulemap :Mine (rule :name "Mine") :Tumbleweed (rule :name "Tumbleweed") "Western Town" (rule :name "Western Town"))))))
nx/tactics/books/age_of_steam / chapter_civil_war
Description:
Function Name:
  • chapter_civil_war
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_civil_war : base/chapter (chapter :name "Civil War" :sectionmap (sectionmap "Civil War Scenarios" (section :name "Civil War Scenarios" :scenariomap (scenariomap "Civil War Battle" (scenario :name "Civil War Battle") :Ironclads (scenario :name "Ironclads" :summary "The first battle between ironclads happened on 9 March 1862, as the armored Monitor was deployed to protect the Union's wooden fleet from the ironclad ram Virginia and other Confederate warships. In this engagement, the two ironclads repeatedly tried to ram one another while shells bounced off their armor. The battle attracted attention worldwide, making it clear that the wooden warship was now out of date, with the ironclads destroying them easily."))) "Confederate Army" (section :name "Confederate Army" :unitmap (unitmap "Confederate Cannon" (unit :name "Confederate Cannon") "Confederate Conscript" (unit :name "Confederate Conscript") "Confederate Gatling Gunner" (unit :name "Confederate Gatling Gunner") "Confederate Medic" (unit :name "Confederate Medic") "Confederate Officer" (unit :name "Confederate Officer") "Confederate Veteran" (unit :name "Confederate Veteran"))) "Confederate Navy" (section :name "Confederate Navy" :unitmap (unitmap :Merrimack (unit :name "Merrimack" :titles "CSS Virginia" :speed "17kph" :classification "Hvy. Naval Vessel" :crew "320" :mass "4500tons" :length "84m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "100mm iron over 610mm of wood (102mm RHA)" :front "200mm" :back "200mm" :side "200mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "2 x 7 inch (178mm) rifles 2 x 6 inch (152mm) rifles 6 x 9 inch (229mm) Dahlgren smoothbores 2 x 12-pounder (5kg) howitzers" :level "4"))))) "Union Army" (section :name "Union Army" :unitmap (unitmap "Union Cannon" (unit :name "Union Cannon") "Union Conscript" (unit :name "Union Conscript") "Union Gatling Gunner" (unit :name "Union Gatling Gunner") "Union Medic" (unit :name "Union Medic") "Union Officer" (unit :name "Union Officer") "Union Veteran" (unit :name "Union Veteran"))) "Union Navy" (section :name "Union Navy" :unitmap (unitmap "USS Monitor" (unit :name "USS Monitor" :speed "15kph" :classification "Hvy. Naval Vessel" :crew "59" :mass "1000tons" :length "52m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "200mm iron turret, 25mm deck, 125mm hull belt" :front "200mm" :back "200mm" :over "25mm" :side "200mm")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "2 x 11 in (280mm) Dahlgren smoothbores, turret" :level "4"))))))))
nx/tactics/books/age_of_steam / chapter_victorian_england
Description:
Function Name:
  • chapter_victorian_england
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_victorian_england : base/chapter (chapter :name "Victorian England" :sectionmap (sectionmap "Victoraian Characters" (section :name "Victoraian Characters" :unitmap (unitmap "Dr. John Watson" (unit :name "Dr. John Watson") "Herbert George Wells" (unit :name "Herbert George Wells") "Jack the Ripper" (unit :name "Jack the Ripper") "Sherlock Holmes" (unit :name "Sherlock Holmes" :reference "* Watson: What made like this? * Sherlock: Oh, dear Watson. Nothing made me ... I made me."))))))
nx/tactics/books/age_of_steam / chapter_wild_west
Description:
Function Name:
  • chapter_wild_west
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wild_west : base/chapter (chapter :name "Wild West" :sectionmap (sectionmap "Western Scenarios" (section :name "Western Scenarios" :scenariomap (scenariomap "Western Gunfight" (scenario :name "Western Gunfight" :summary "Setup Grassland Map Personal Scale Player 1 begins with a Gunslinger deployed anywhere on the map. Player 2 begins with a US Marshall deployed within 10 spaces of Gunslinger. Both Players' units are standing still with pistols holstered. Gunslinger has the initiative. Special Rules Shoot From the Hip Hit Location"))) "Steam Age Outlaws" (section :name "Steam Age Outlaws" :unitmap (unitmap :Bandito (unit :name "Bandito" :image "Western/BanditoToken.png" :reference "You think you're better than I am? Where we came from, if one did not want to die of poverty, one became a priest or a bandit! ...You became a priest because you were... too much of a coward to do what I do! - Tuco. The Good, the Bad, and the Ugly." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "3"))) :Gunslinger (unit :name "Gunslinger" :image "Western/GunslingerToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Crime (unitskill :name "Crime" :level "3" :unitabilitymap (unitabilitymap "Armed Robbery" (unitability :name "Armed Robbery") :Rustling (unitability :name "Rustling"))))) "Man with No Name" (unit :name "Man with No Name" :image "Western/ManWithNoNameToken.png" :reference "* [to Tuco] Tut, tut. Such ingratitude after all the times I saved your life. - Blondie, The Good, the Bad, and the Ugly * There are two kinds of people in the world...Those who have a loaded gun and those who dig. You dig! - Blondie, The Good, the Bad, and the Ugly" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "5"))) "Professional Killer" (unit :name "Professional Killer" :image "Western/ProfessionalKiller.png" :reference "He paid me a thousand. I think his idea was that I kill you. But you know, the pity is when I'm paid, I always follow my job through. - Angel Eyes, The Good, the Bad, and the Ugly" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))))) "Steam Age Lawmen" (section :name "Steam Age Lawmen" :unitmap (unitmap :Deputy (unit :name "Deputy") :Sheriff (unit :name "Sheriff") "US Marshall" (unit :name "US Marshall" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))))) "Steam Age Indians" (section :name "Steam Age Indians" :unitmap (unitmap "Sioux Gunfighter" (unit :name "Sioux Gunfighter" :image "Western/IndianAxe.jpg" :reference "Spotted Horse cannot be killed by a bullet! - Spotted Horse, The Quick and the Dead"))) "Steam Age Townsfolk" (section :name "Steam Age Townsfolk" :unitmap (unitmap "Chinese Monk" (unit :name "Chinese Monk" :reference "I seek not to know the answers, but to understand the questions. - Kwai Chang Caine, Kung Fu TV Series") "Chinese Rail worker" (unit :name "Chinese Rail worker") :Cowboy (unit :name "Cowboy") :Dentist (unit :name "Dentist") :Farmer (unit :name "Farmer") "General Store Owner" (unit :name "General Store Owner") :Judge (unit :name "Judge") :Preacher (unit :name "Preacher") "Saloon Barkeep" (unit :name "Saloon Barkeep") :Undertaker (unit :name "Undertaker") "Whore with a Heart of Gold" (unit :name "Whore with a Heart of Gold"))) "Steam Age Travelers" (section :name "Steam Age Travelers" :unitmap (unitmap "Carpet Bagger" (unit :name "Carpet Bagger") :Gambler (unit :name "Gambler" :summary "This is a very special pack. See, I put an ace in every time I kill a man. (The deck is all aces) - Ace, The Quick and the Dead") :Prospector (unit :name "Prospector") "Snake Oil Salesman" (unit :name "Snake Oil Salesman"))) "Steam Age Tycoons" (section :name "Steam Age Tycoons" :unitmap (unitmap :Banker (unit :name "Banker") "Land Baron" (unit :name "Land Baron" :reference "All I hear from you...is how poor you are; how you can't afford my taxes. Yet somehow, you managed to find the money to hire a gunfighter to kill me. If ya got so much money, I'm just gonna have to take some more. - John Herod, The Quick and the Dead" :unitskillmap (unitskillmap :Evasion (unitskill :name "Evasion" :level "4"))) "Oil Baron" (unit :name "Oil Baron") "Railroad Tycoon" (unit :name "Railroad Tycoon"))))))
nx/tactics/books/age_of_steam / chapter_examples_of_play
Description:
Function Name:
  • chapter_examples_of_play
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_examples_of_play : base/chapter (chapter :name "Examples of Play" :sectionmap (sectionmap "Western Gunfight" (section :name "Western Gunfight" :summary "Round 1 - Turn 1 Initiative Gunslinger player starts with the initiative, but the Marshall wants to 'Take the Initiative' Each Player rolls 2 dice. +1 for the player who currently holds initiative. +1 for highest skill. -1 if most Damaged or Stunned. A tie means simultaneous actions. Gunslinger rolls 6 + 1 (holds initiative) = 7. Marshall rolls 8. Marshall takes the initiative. Move Marshall is within range of his weapon, so chooses not to move to get the best chance to hit. Action Fast Draw - Marshall is in weapon range and chooses to use Fast Draw to draw his weapon and fire. Attack - Fast Draw was a Free Action and Marshall chooses to fire. He uses his Handgun Skill and any modifiers to determine attack dice. 5 (Handguns) +1 (Accuracy) - 1 (Hip Shoot) = 6 Dice Marshall rolls 6 dice and gets 1 (miss), 2 (miss), 2 (miss), 3 (miss), 5 (hit), and 6 (hit and bonus die). He rolls the bonus die and gets another 6 (critical hit and bonus die). He rolls the bonus die and gets a 3 (flag). Marshall's total roll is 1 hit, 1 critical, and a flag. Defense Gunslinger now rolls dice equal to appropriate defense: 4 Body = 4 Dice Gunslinger rolls 3 dice and gets 1 (miss), 3 (miss), 5 (hit), and 6 (hit and bonus die). He rolls the bonus die and gets a 4 (critical hit). Gunslinger's total is 2 hits and 1 critical. Gunslinger's 1 hit cancels one of Marshall's hits and his 1 critical hit cancels one of Marshall's critical hits. This leaves Marshall with only a single flag, Gunslinger had rolled a second hit, but since it can only cancel other hits, it has no effect. Effects Flags - Gunslinger gains a Flag Token and must retreat one space for each flag. He therefore retreats 1 space away from Marshall. Attack Damage - Since no damage was rolled, Marshall's turn is over. Round 1 - Turn 2 Initiative Gunslinger player regains the initiative. Marshall has already taken a turn and cannot do so again this round. White Tokens - After initiative is determined, Gunslinger must remove a White Token if any. He removes the Flag token. Move Gunslinger was forced to back by the Flag but is still in his weapon's range, so he will not take an attack penalty. However, if he moves closer he will take a penalty for moving, so he opts to stay still and fire. Action Fast Draw - Gunslinger also uses Fast Draw to draw and fire. Attack - He uses his Handgun Skill and any modifiers to determine attack dice. 5 (Handguns) +1 (Accuracy) -1 (Hip Shoot) = 5 Dice. Gunslinger rolls 5 dice and gets 1 (miss), 3 (miss), 4 (hit), 5 (hit), and 5 (hit). His total roll is 3 hits. Nice. Defense Marshall now rolls dice equal to appropriate defense. 4 Body = 4 Dice. Marshall rolls 4 dice and gets 1 (miss), 1 (miss), 3 (miss), and 4 (hit). Marshall's total is 1 hit. Marshall cancels 1 of Gunslinger's hits. This leaves Gunslinger with 2 hits. Effects Damage Rating - Since Gunslinger rolled at least 1 hit or critical hit (he scored 2), he checks the damage rating of his Schofield .45. Its damage rating is 4. If Gunslinger had rolled less than 4 dice, the Schofield would allow him to roll the difference in additional damage dice. However, Gunslinger rolled 4 dice already, so he receives no additional dice. Hits - The first hit is converted to a Stun Token. Damage - All subsequent hits are converted to Damage Tokens. Damage Summary - 1 Stun Token and 1 Damage Token. Hit Location - Since we are using Hit Location and did some form of damage, roll 2 dice. The first determines side of the body: 1-2 is left side, 3-4 is center, and 5-6 is right side. The second die determines height on the body: 1-2 is low, 3-4 is middle, 5-6 is high. Marshall rolls 6 (right), 2 (low): Right Shin/Foot. The 1 Damage Token is therefore on Marshall's Right Shin. This will limit his movement. Turn End Round End - Since all units have acted, the round ends. Round 2 - Turn 1 Initiative Marshall has the initiative since Gunslinger player ended with the initiative, but Gunslinger predictably wants to 'Take the Initiative' back. Marshall desperately needs to win initiative to recover a bit from the last hit. Each Player rolls 2 dice. +1 for the player who currently holds initiative. +1 for highest skill. -1 if most Damaged or Stunned. A tie means simultaneous actions. Marshall rolls 4 + 1 (holds initiative) -1 (most Damaged) = 4. Gunslinger rolls 8 and takes the initiative. Gunslinger grins. White Tokens - Gunslinger has no White Tokens. Move Gunslinger presses his advantage and stays and fires hoping to finish this battle. Action Since their guns are already drawn, neither unit needs to fire from the hip anymore. Attack - Gunslinger determines attack dice. 5 (Handguns) +1 (Accuracy) = 6 Dice. Gunslinger rolls 6 dice and gets 1 (miss), 1 (miss), 3 (miss), 5 (hit), 5 (hit), and 6 (hit and bonus die). He rolls the bonus and gets 1 (flag). His total roll is 3 hits and a flag. Looking good. Defense Marshall now rolls dice equal to appropriate defense. 4 Body -1 (Damage) -1 (Stun) = 2 Dice. Need some good rolls about now. Marshall rolls 2 dice and gets 1 (miss) and 1 (miss). Nothing. Marshall is hit dead-on by the Gunslinger. Effects Damage Rating - Since Gunslinger rolled at least 1 hit or critical hit (he scored 3), he checks the damage rating of his Schofield .45. Its damage rating is 4 is not more than his 6 dice rolled so no additional dice. Hits - The first hit is converted to a Stun Token. Damage - All subsequent hits are converted to Damage Tokens. Damage Summary - 1 Stun Token and 2 Damage Tokens. Hit Location - Since we are using Hit Location and did some form of damage, roll 2 dice. The first determines side of the body: 1-2 is left side, 3-4 is center, and 5-6 is right side. The second die determines height on the body: 1-2 is low, 3-4 is middle, 5-6 is high. Marshall rolls 2 (left), 4 (center): Left Thigh. The 2 Damage Tokens are therefore on Marshall's Left Thigh. This will limit his movement even more. Damage Total - 2 Stun Tokens and 3 Damage Tokens (1 on Right Shin, 2 on Left Thigh). The total of -5 is greater than the Marshall's 4 Body, so he drops to the ground. Round 2 - Turn 2 Initiative Marshall has the initiative since Gunslinger has already acted this round. White Tokens - Marshall removes a White Token if any. He removes 1 of the Stun tokens. Move Marshall is prone and has no Move left to even crawl (Move 4 - 1 (Stun) - 3 (Damage)). Action Marshall could attack with 5 (Handguns) + 1 (Accuracy) - 1 (Stun) - 3 (Damage) = 2 Dice, but he has no dice to defend next turn, he is Prone (+1) and Helpless (+1) for a total of 8 Gunslinger Dice against his own 0 Dice. What's more the gunslinger doesn't have a scratch on him. The duel is clearly over, and the Marshall drops his gun and begs for his life."))))
nx/tactics/books/ancients
Description:
Package Name:
  • nx/tactics/books/ancients
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_ancients_overview, chapter_ancients_scenarios, chapter_anglo_saxons, chapter_carthaginians, chapter_chinese_dynasty, chapter_egyptian_dynasty, chapter_germanic_tribes, chapter_greek_city_states, chapter_macedon, chapter_norsemen, chapter_persians, chapter_roman_empire, chapter_unfiled_ancient
Source Code:
  • (package nx/tactics/books/ancients :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Ancients" :image "300_phalanx.jpg" :chaptermap (base/chaptermap "Ancients Overview" (chapter_ancients_overview) "Ancients Scenarios" (chapter_ancients_scenarios) "Anglo/Saxons" (chapter_anglo_saxons) "Carthaginians" (chapter_carthaginians) "Chinese Dynasty" (chapter_chinese_dynasty) "Egyptian Dynasty" (chapter_egyptian_dynasty) "Germanic Tribes" (chapter_germanic_tribes) "Greek City States" (chapter_greek_city_states) "Macedon" (chapter_macedon) "Norsemen" (chapter_norsemen) "Persians" (chapter_persians) "Roman Empire" (chapter_roman_empire) "Unfiled Ancient" (chapter_unfiled_ancient) ))) (func chapter_ancients_overview : base/chapter (chapter :name "Ancients Overview" :sectionmap (sectionmap "Why Tactics: Ancients?" (section :name "Why Tactics: Ancients?") "Ancients Land Warfare" (section :name "Ancients Land Warfare" :summary "* Infantry * Formations * Axemen * Polearms * Cavalry * Horse Archers * Armored Cavalry * Elephants * Chariots * Archers * Longbows * Crossbows * Siege * Ballista * Catapult * Fortifications") "Ancients Naval Warfare" (section :name "Ancients Naval Warfare" :summary "* Wind * Large Ships * Small Ships * War Barge * Ballista")))) (func chapter_ancients_scenarios : base/chapter (chapter :name "Ancients Scenarios" :sectionmap (sectionmap "Ancient Scenarios" (section :name "Ancient Scenarios" :scenariomap (scenariomap "Flush Them Out" (scenario :name "Flush Them Out" :summary "* 10 Turns" :teammap (teammap :Germanics (team :name "Germanics" :completevictory "Half of Roman units are lost." :deploy "1) Tactical Map 2) 6 Forest Terrain on Germanic side of map 3) Deploy units anywhere on Germanic side of map" :forces "* 20 Levels of units" :partialvictory "Romans lose more units than Germanics.") :Romans* (team :name "Romans*" :completevictory "Half of Germanics are lost." :deploy "1) Tactical Map 2) 3 Forest Terrain on Roman side of map. 3) Deploy units along Roman players edge of the map." :forces "* 20 Levels of units" :partialvictory "Germanics lose more units than Romans."))) "Roman Gladiators" (scenario :name "Roman Gladiators")))))) (func chapter_anglo_saxons : base/chapter (chapter :name "Anglo/Saxons" :sectionmap (sectionmap "Anglo/Saxon Armies" (section :name "Anglo/Saxon Armies")))) (func chapter_carthaginians : base/chapter (chapter :name "Carthaginians" :sectionmap (sectionmap "Carthaginian Armies" (section :name "Carthaginian Armies" :unitmap (unitmap "Carthaginian Elephant" (unit :name "Carthaginian Elephant" :speed "40kph" :mass "10tons"))) "Carhaginian Naval Vessels" (section :name "Carhaginian Naval Vessels" :itemmap (itemmap "Carthaginian Quinquereme" (item :name "Carthaginian Quinquereme")))))) (func chapter_chinese_dynasty : base/chapter (chapter :name "Chinese Dynasty")) (func chapter_egyptian_dynasty : base/chapter (chapter :name "Egyptian Dynasty" :sectionmap (sectionmap "Egyptian Armies" (section :name "Egyptian Armies" :unitmap (unitmap "Egyptian Archer" (unit :name "Egyptian Archer") "Egyptian Charioteer" (unit :name "Egyptian Charioteer")))))) (func chapter_germanic_tribes : base/chapter (chapter :name "Germanic Tribes" :sectionmap (sectionmap "Germanic Armies" (section :name "Germanic Armies" :unitmap (unitmap "Free Spears" (unit :name "Free Spears" :image "Germanics/GermanLevySpearmen.png" :summary "Free Spears are farmers and hunters. According to Germanic tradition, as soon as these men receive their spear and shield, they are 'free' adults. Though lacking in the organized training of the warbands, they are veterans of the ritualized tribal warfare of German tribes, and fight with a force and fury superior to their neighbors militia." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Youth Skirmishers" (unit :name "Youth Skirmishers" :image "Germanics/GermanSkirmishers.png" :summary "Young skirmishers break up and harass enemy formations before the main battle lines meet, and act as a screen for heavy troops, taking losses in order to increase the odds of survival of more valuable 'proven' warriors. They must first prove themselves in battle in order to earn status. Each warrior is armed with a bundle of throwing spears, a slightly longer spear for melee and a stout ovular shield, but they do not wear armor, being poor and of low status, but also choosing speed over protection." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "2" :unitabilitymap (unitabilitymap :Forestry (unitability :name "Forestry"))))) "Proven Spearmen" (unit :name "Proven Spearmen" :image "Germanics/GermanTrustedSpearmen.png" :summary "Proud and experienced, 'proven' warriors steeled by years of constant warfare and veterans of numerous conflicts. These men are hardened for battle and unlikely to flee from conflict, and are trained through long experience to work in close or open formation, and even the shieldwall." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "German Slayers" (unit :name "German Slayers" :image "Germanics/GermanSlayers.png" :summary "By shaping heavy boughs of oak and inserting bone spikes, these Cudgels can be used to maim both armored and unarmored foes alike. Cudgels are cheap, easy to make, and replaceable on campaign, while also being able to smash or punch through armor. Although this weapon may seem primitive to untrained eyes, against armored opponents it is more effective than any other at their disposal. These light armored club warriors were recorded to have taken down units of the feared and notoriously lethal kataphraktoi." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Shooters" (unit :name "German Shooters" :image "Germanics/GermanShooters.png" :summary "Equipped to harass and break up enemy formations so more experienced and valuable melee warriors can finish them. Shooters are often untrained or uncapable warriors, but many are also excellect hunters. They are also armed with the spear and can act as light infantry, but they will not last long in melee. In the woods, their superior ambush skills can be put to best use. Historically, Germanic bowmen on the battlefield were few in numbers, because weapons were status symbols, and common multipurpose tools, such as the axe or bow were looked down upon." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Sword Possessors" (unit :name "Sword Possessors" :image "Germanics/GermanSwordPossessors.png" :summary "Sword Possessors are well trained, experienced and armed with superior quality swords and javelins to soften the enemy before their furious charge. Historically, swords were not plentiful in Germanic lands because of the cost of iron, so those fierce and valiant warriors carried their highly valued swords with pride." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Night Walkers" (unit :name "Night Walkers" :image "Germanics/GermanNightWalkers.png" :summary "Night-Walkers are unconventional warriors who specialize in ambush. They display their zeal and ferocity with the help of pitch and dye by blackening their shields and bodies. They choose dark nights for their battles and when the moment is right, they charge wildly, wide-eyed and screaming at their foes. Any who survive assaults by these maniacal warriors are convinced they are spirits sent from the otherworld." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Intimidation (unitskill :name "Intimidation" :level "3" :unitabilitymap (unitabilitymap :Terrorize (unitability :name "Terrorize"))))) "Pike Fence" (unit :name "Pike Fence" :image "Germanics/GermanPikeFence.png" :summary "The Pike Fence are hard-nosed, disciplined warriors that fight together in a very dense formation, unlike most other Germanic warbands. They are trained in the Shield Wall and are universally feared by cavalry." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Hearth Companions" (unit :name "Hearth Companions" :image "Germanics/GermanHearthCompanion.png" :summary "These are the Germanic tribes' best warriors. Germans respect their leader's bravery, not their rank, and it is a disgrace for a leader to be surpassed in bravery. They are wealthy, powerful men, fiercely loyal to their lord, often heavily scarred by years of warfare. Their weapons and armor are the best. To leave a battlefield alive while their lord lay dead meant a life of shame and scorn. To defend and protect him, to assign one's own acts of heroism to his credit-that's what is truly meant by allegiance." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Germanic Riders" (unit :name "Germanic Riders" :image "Germanics/GermanRiders.png" :summary "Riders ride small, poor quality horses, though they are excellent light cavalry. Like many Germanic warriors, however, they can lack battle-discipline and be over-keen to enter battle for glory. They were mostly armed with shield and spear and were supported by fast-moving light infantry - this light cavalry combined with light infantry allowed great tactical speed and versatility on the battlefield. Historically, Germanic tribes did not frequently use cavalry, however, some tribes were known for their cavalry and many peoples praised the good quality of Germanic cavalry. Though their horses were not exceptional, Germanic horsemen could still maneuver very well and operated as a unit, rather than as an unorganized band." :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Germ. Companion Cavalry" (unit :name "Germ. Companion Cavalry" :image "Germanics/GermanCompanionCavalry.png" :summary "The Companion Cavalry are extremely wealthy and powerful men, but still fiercely loyal to their lord who provides them the finest warhorses and wargear at his disposal. They can be used most effectively as shock troops whose charges can break the enemy line and destory their flanks, but they are also useful for overrunning heavy infantry and slaughtering lighter cavalry." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally")))))))))) (func chapter_greek_city_states : base/chapter (chapter :name "Greek City States" :sectionmap (sectionmap "Greek Armies" (section :name "Greek Armies" :unitmap (unitmap "Greek Hoplite" (unit :name "Greek Hoplite" :image "Greeks/GreekHopliteToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Spartan Hoplite" (unit :name "Spartan Hoplite" :image "Greeks/GreekSpartanToken.png" :reference "* From the age of seven onwards, Spartan males were trained for a life of warfare. They were taught iron discipline, and almost programmed to forget about their individuality. * The strenuous training and comradeship engendered between Spartans made them ideally suited to hoplite warfare which required high levels of discipline and selflessness." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "2" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Greek General" (unit :name "Greek General" :image "Greeks/GreekGeneralToken.png" :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Thracian Peltast" (unit :name "Thracian Peltast" :reference "* When faced by hoplites peltasts operated by throwing javelins at short range. If the hoplites charged they would flee. As they carried considerably lighter equipment than the hoplites they were usually able to evade successfully especially in difficult terrain. * Peltasts were usually deployed on the flanks of the phalanx providing a link with any cavalry." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Greek Cavalry" (unit :name "Greek Cavalry" :reference "The utility of the Greek Citizen Cavalry was small on account of their heavy armor." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Greek Cataphracts" (unit :name "Greek Cataphracts" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Greek Philosopher" (unit :name "Greek Philosopher") "Greek Senator" (unit :name "Greek Senator") "Greek Wrestler" (unit :name "Greek Wrestler"))) "Greek Naval Vessels" (section :name "Greek Naval Vessels" :itemmap (itemmap "Greek Galley" (item :name "Greek Galley") "Greek Trireme" (item :name "Greek Trireme") "Greek Quinquereme" (item :name "Greek Quinquereme")))))) (func chapter_macedon : base/chapter (chapter :name "Macedon" :sectionmap (sectionmap "Macedonian Armies" (section :name "Macedonian Armies" :unitmap (unitmap "Macedonian Prodromoi Cavalry" (unit :name "Macedonian Prodromoi Cavalry" :reference "The utility of the Greek Citizen Cavalry was small on account of their heavy armor." :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Macedonian Companion Cavalry" (unit :name "Macedonian Companion Cavalry" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "Macedonian Naval Vessels" (section :name "Macedonian Naval Vessels" :itemmap (itemmap "Macedonian Galley" (item :name "Macedonian Galley") "Macedonian Trireme" (item :name "Macedonian Trireme")))))) (func chapter_norsemen : base/chapter (chapter :name "Norsemen" :sectionmap (sectionmap "Viking Armies" (section :name "Viking Armies" :unitmap (unitmap "Viking Axeman" (unit :name "Viking Axeman" :unitskillmap (unitskillmap :Frenzy (unitskill :name "Frenzy" :unitabilitymap (unitabilitymap :Berserker (unitability :name "Berserker"))))) "Viking Swordsman" (unit :name "Viking Swordsman"))) "Viking Naval Vessels" (section :name "Viking Naval Vessels" :itemmap (itemmap "Viking War Galley" (item :name "Viking War Galley")))))) (func chapter_persians : base/chapter (chapter :name "Persians" :sectionmap (sectionmap "Persian Armies" (section :name "Persian Armies" :unitmap (unitmap "Persian Lt. Cavalry" (unit :name "Persian Lt. Cavalry") "Persian Horse Archer" (unit :name "Persian Horse Archer") "Persian Scythed Chariot" (unit :name "Persian Scythed Chariot")))))) (func chapter_roman_empire : base/chapter (chapter :name "Roman Empire" :sectionmap (sectionmap :Legionnaries (section :name "Legionnaries" :summary "Roman Legions were the official fighting force of the empire and were divided in the following way: * Each Legion consisted of 4800 men * Each Legion was divided into 10 cohorts of 480 legionaries * Each Cohort was divided into 6 centuries of 80 men each. The 6 centuries were: Forward Hastati, Rear Hastati, Forward Pricipes, Rear Pricipes, Forward Triarii, and Rear Triarii. * Each Century was divided into 10 octets of 8 men. Soldiers of an octet shared a tent, and were rewarded or punished together. If one member acted dishonorably in battle, that contubernium would suffer decimation, whereby the group would be required to draw straws, the soldier unlucky enough to draw the short straw then being stoned to death by the others." :unitmap (unitmap :Hastati (unit :name "Hastati" :image "Romans/RomanLegionaireToken.png" :summary "These were the first line of the Roman heavy infantry and were made up of the relatively young (inexperienced), but wealthier citizens. The Hastati were the primary engaging force of the legion and always met the enemy first in melee combat. If things went badly, or they simply needed to rest and regroup, the Hastati would roll behind the Princeps." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Princeps (unit :name "Princeps" :image "Romans/RomanPrincepToken.png" :summary "The elite of the legion, in the prime of their careers for age and experience, and constituted the wealthier class. It was simply the obligation of the Princeps to win the battle. First they would act in relief of the Hastati, but then would carry the fight in earnest. It was a successful tactic, wearing down the enemy with good, but not your best forces, than hitting with your best men right in the middle of the fight." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Triarii (unit :name "Triarii" :image "Romans/RomanLegionaire2Token.png" :summary "Though the triarii were similarly armored as the Hastatii and Princeps, they played a much different role and were more akin to the Greek hoplites than Roman heavy infantry. The Triarii were the oldest and very experienced of the Roman army, and their job was to defend against disaster as a last resort, or to shock the enemy with a different look at the right moment. If the heavy infantry were pushed back, the Triarii would charge forward with their spears, hopefully with the effect of shocking the enemy and allowing the Princeps and Hastati time to regroup. They were used as a last resort, and the Latin expression 'ad triarios redisse', or it has come to the triarii, became a general phrase meaning that something was in a desperate situation." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Centurion (unit :name "Centurion" :image "Romans/RomanCenturionToken.png" :summary "Each Centurion commanded the 80 men in a single century (Forward Hastati, etc)." :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Praetorian Guard" (unit :name "Praetorian Guard" :summary "Initially, the guard for a general, the title was later used for the Emperor's personal army. These men were handpicked from the legions and represent the best warriors in Rome." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Velites (unit :name "Velites" :image "Romans/RomanVeliteToken.png" :summary "The poorest citizen class allowed to serve, these units were lightly armed skirmishers who were deployed en masse on the battlefield in front of the heavier infantry lines, but moved back beyond the Hastati after discharging their javelins as the enemy approached. The Velites were also an important part of defense against war elephants. Using their greater mobility, due to lighter armament, Velites could avoid elephant charges and flank them." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Equites Legionis" (unit :name "Equites Legionis" :image "Romans/RomanHeavyCavalryToken.png" :summary "The Republican cavalry was designed for speed of movement, and were similarly equipped to the Hastati. Their duty was to provide scouting and potential fast moving support to weakening parts of a battle line. At times the cavalry could be used to turn a flank or deliver a shock at the right moment, but their limited number generally made their capabilities limited. As the Romans were not considered great natural horsemen, the great effectiveness of cavalry in the Roman army didn't come until the inclusion of various auxilia cavalry like that of the Gauls and Germanics." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Riding (unitskill :name "Riding" :level "2" :unitabilitymap (unitabilitymap "Run Down" (unitability :name "Run Down"))))))) :Auxilia (section :name "Auxilia" :summary "Roman Auxilia are support troops and specialized units. By the 2nd century, the auxilia contained the same number of infantry as the legions and in addition provided almost all the Roman army's cavalry and more specialised troops (especially light cavalry and archers). The auxilia thus represented three-fifths of Rome's regular land forces. Like their legionary counterparts, auxiliary recruits were mostly volunteers, not conscripts, but unlike the legion the auxilia accepted non-Romans (which represented 90% of the empire)." :unitmap (unitmap "Cohors Peditata" (unit :name "Cohors Peditata" :image "Romans/RomanAuxiliaToken.png" :summary "Most auxiliary cohortes contained heavy infantry similar to legionaries." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Cohortes Sagittariorum" (unit :name "Cohortes Sagittariorum" :image "Romans/RomanArcherAuxiliaToken.png" :summary "Most Sagittarii were from Syria." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) :Funditores (unit :name "Funditores" :summary "Slingers wore no armor." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Eques Alaris" (unit :name "Eques Alaris" :image "Romans/RomanLightCavalryToken.png" :summary "Auxiliary Cavalryman" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Alae Sagittariorum" (unit :name "Alae Sagittariorum" :summary "* Mounted Archers" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) :Cataphractarii (unit :name "Cataphractarii" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Roman Charioteer" (unit :name "Roman Charioteer" :image "Romans/RomanCharioteer.png" :classification "Hvy. Cavalry"))) :Civilians (section :name "Civilians" :unitmap (unitmap "Roman Gladiator" (unit :name "Roman Gladiator" :image "Romans/RomanGladiatorToken.png" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :level "1" :unititemmap (unititemmap "Round Shield" (unititem :name "Round Shield"))))) "Roman Senator" (unit :name "Roman Senator") "Roman Slave" (unit :name "Roman Slave") "Roman Slaver" (unit :name "Roman Slaver"))) "Roman Naval Vessels" (section :name "Roman Naval Vessels" :itemmap (itemmap "Roman Galley" (item :name "Roman Galley") "Roman Trireme" (item :name "Roman Trireme") "Roman Quinquereme" (item :name "Roman Quinquereme")))))) (func chapter_unfiled_ancient : base/chapter (chapter :name "Unfiled Ancient" :summary "Examples of Play Romans vs. Greeks Combat Example: Combat Cards: Surprise Use when: Opponent must be unaware Effects: +4 Attack Opponent can only defend Hold Off Use when: Longer Reach In Melee Combat Not in Close Combat Effects: First Strike +2 Attack +4 Damage Vs Charge Opponent cannot move into Close Combat if you hit. Charge: Effect: Use when: Not in Melee Combat Effect: Full Move Attack +2 Damage Moves into Close Combat Guard: Effect: +2 Defense All hits taken are shield hits Example: Human attacks the Orc in the open. The Orc has longer reach an chooses Hold Off. The Human is wary of the spear and plays Guard and Close Combat. Round 1: Orc roll: 12 + 9 Spear + 2 Hold Off = 23 Human roll: 9 + 8 Sword + 2 Guard - 1 Encumberance = 18 Orc scores a hit for 5 + 3 Spear = 8 Damage Guard makes the damage a shield hit. Determine hit location. 8 (Piercing) - 3 (Shield) - 3 (Armor) = 2 (Piercing) Wound. Body reduces by 2 to 10 not enough to change bonus. The successful Hold Off means the Human's Close Combat Movement fails."))
nx/tactics/books/ancients / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Ancients" :image "300_phalanx.jpg" :chaptermap (base/chaptermap "Ancients Overview" (chapter_ancients_overview) "Ancients Scenarios" (chapter_ancients_scenarios) "Anglo/Saxons" (chapter_anglo_saxons) "Carthaginians" (chapter_carthaginians) "Chinese Dynasty" (chapter_chinese_dynasty) "Egyptian Dynasty" (chapter_egyptian_dynasty) "Germanic Tribes" (chapter_germanic_tribes) "Greek City States" (chapter_greek_city_states) "Macedon" (chapter_macedon) "Norsemen" (chapter_norsemen) "Persians" (chapter_persians) "Roman Empire" (chapter_roman_empire) "Unfiled Ancient" (chapter_unfiled_ancient) )))
nx/tactics/books/ancients / chapter_ancients_overview
Description:
Function Name:
  • chapter_ancients_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_ancients_overview : base/chapter (chapter :name "Ancients Overview" :sectionmap (sectionmap "Why Tactics: Ancients?" (section :name "Why Tactics: Ancients?") "Ancients Land Warfare" (section :name "Ancients Land Warfare" :summary "* Infantry * Formations * Axemen * Polearms * Cavalry * Horse Archers * Armored Cavalry * Elephants * Chariots * Archers * Longbows * Crossbows * Siege * Ballista * Catapult * Fortifications") "Ancients Naval Warfare" (section :name "Ancients Naval Warfare" :summary "* Wind * Large Ships * Small Ships * War Barge * Ballista"))))
nx/tactics/books/ancients / chapter_ancients_scenarios
Description:
Function Name:
  • chapter_ancients_scenarios
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_ancients_scenarios : base/chapter (chapter :name "Ancients Scenarios" :sectionmap (sectionmap "Ancient Scenarios" (section :name "Ancient Scenarios" :scenariomap (scenariomap "Flush Them Out" (scenario :name "Flush Them Out" :summary "* 10 Turns" :teammap (teammap :Germanics (team :name "Germanics" :completevictory "Half of Roman units are lost." :deploy "1) Tactical Map 2) 6 Forest Terrain on Germanic side of map 3) Deploy units anywhere on Germanic side of map" :forces "* 20 Levels of units" :partialvictory "Romans lose more units than Germanics.") :Romans* (team :name "Romans*" :completevictory "Half of Germanics are lost." :deploy "1) Tactical Map 2) 3 Forest Terrain on Roman side of map. 3) Deploy units along Roman players edge of the map." :forces "* 20 Levels of units" :partialvictory "Germanics lose more units than Romans."))) "Roman Gladiators" (scenario :name "Roman Gladiators"))))))
nx/tactics/books/ancients / chapter_anglo_saxons
Description:
Function Name:
  • chapter_anglo_saxons
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_anglo_saxons : base/chapter (chapter :name "Anglo/Saxons" :sectionmap (sectionmap "Anglo/Saxon Armies" (section :name "Anglo/Saxon Armies"))))
nx/tactics/books/ancients / chapter_carthaginians
Description:
Function Name:
  • chapter_carthaginians
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_carthaginians : base/chapter (chapter :name "Carthaginians" :sectionmap (sectionmap "Carthaginian Armies" (section :name "Carthaginian Armies" :unitmap (unitmap "Carthaginian Elephant" (unit :name "Carthaginian Elephant" :speed "40kph" :mass "10tons"))) "Carhaginian Naval Vessels" (section :name "Carhaginian Naval Vessels" :itemmap (itemmap "Carthaginian Quinquereme" (item :name "Carthaginian Quinquereme"))))))
nx/tactics/books/ancients / chapter_chinese_dynasty
Description:
Function Name:
  • chapter_chinese_dynasty
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_chinese_dynasty : base/chapter (chapter :name "Chinese Dynasty"))
nx/tactics/books/ancients / chapter_egyptian_dynasty
Description:
Function Name:
  • chapter_egyptian_dynasty
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_egyptian_dynasty : base/chapter (chapter :name "Egyptian Dynasty" :sectionmap (sectionmap "Egyptian Armies" (section :name "Egyptian Armies" :unitmap (unitmap "Egyptian Archer" (unit :name "Egyptian Archer") "Egyptian Charioteer" (unit :name "Egyptian Charioteer"))))))
nx/tactics/books/ancients / chapter_germanic_tribes
Description:
Function Name:
  • chapter_germanic_tribes
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_germanic_tribes : base/chapter (chapter :name "Germanic Tribes" :sectionmap (sectionmap "Germanic Armies" (section :name "Germanic Armies" :unitmap (unitmap "Free Spears" (unit :name "Free Spears" :image "Germanics/GermanLevySpearmen.png" :summary "Free Spears are farmers and hunters. According to Germanic tradition, as soon as these men receive their spear and shield, they are 'free' adults. Though lacking in the organized training of the warbands, they are veterans of the ritualized tribal warfare of German tribes, and fight with a force and fury superior to their neighbors militia." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Youth Skirmishers" (unit :name "Youth Skirmishers" :image "Germanics/GermanSkirmishers.png" :summary "Young skirmishers break up and harass enemy formations before the main battle lines meet, and act as a screen for heavy troops, taking losses in order to increase the odds of survival of more valuable 'proven' warriors. They must first prove themselves in battle in order to earn status. Each warrior is armed with a bundle of throwing spears, a slightly longer spear for melee and a stout ovular shield, but they do not wear armor, being poor and of low status, but also choosing speed over protection." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "2" :unitabilitymap (unitabilitymap :Forestry (unitability :name "Forestry"))))) "Proven Spearmen" (unit :name "Proven Spearmen" :image "Germanics/GermanTrustedSpearmen.png" :summary "Proud and experienced, 'proven' warriors steeled by years of constant warfare and veterans of numerous conflicts. These men are hardened for battle and unlikely to flee from conflict, and are trained through long experience to work in close or open formation, and even the shieldwall." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "German Slayers" (unit :name "German Slayers" :image "Germanics/GermanSlayers.png" :summary "By shaping heavy boughs of oak and inserting bone spikes, these Cudgels can be used to maim both armored and unarmored foes alike. Cudgels are cheap, easy to make, and replaceable on campaign, while also being able to smash or punch through armor. Although this weapon may seem primitive to untrained eyes, against armored opponents it is more effective than any other at their disposal. These light armored club warriors were recorded to have taken down units of the feared and notoriously lethal kataphraktoi." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Shooters" (unit :name "German Shooters" :image "Germanics/GermanShooters.png" :summary "Equipped to harass and break up enemy formations so more experienced and valuable melee warriors can finish them. Shooters are often untrained or uncapable warriors, but many are also excellect hunters. They are also armed with the spear and can act as light infantry, but they will not last long in melee. In the woods, their superior ambush skills can be put to best use. Historically, Germanic bowmen on the battlefield were few in numbers, because weapons were status symbols, and common multipurpose tools, such as the axe or bow were looked down upon." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Sword Possessors" (unit :name "Sword Possessors" :image "Germanics/GermanSwordPossessors.png" :summary "Sword Possessors are well trained, experienced and armed with superior quality swords and javelins to soften the enemy before their furious charge. Historically, swords were not plentiful in Germanic lands because of the cost of iron, so those fierce and valiant warriors carried their highly valued swords with pride." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Night Walkers" (unit :name "Night Walkers" :image "Germanics/GermanNightWalkers.png" :summary "Night-Walkers are unconventional warriors who specialize in ambush. They display their zeal and ferocity with the help of pitch and dye by blackening their shields and bodies. They choose dark nights for their battles and when the moment is right, they charge wildly, wide-eyed and screaming at their foes. Any who survive assaults by these maniacal warriors are convinced they are spirits sent from the otherworld." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Intimidation (unitskill :name "Intimidation" :level "3" :unitabilitymap (unitabilitymap :Terrorize (unitability :name "Terrorize"))))) "Pike Fence" (unit :name "Pike Fence" :image "Germanics/GermanPikeFence.png" :summary "The Pike Fence are hard-nosed, disciplined warriors that fight together in a very dense formation, unlike most other Germanic warbands. They are trained in the Shield Wall and are universally feared by cavalry." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Hearth Companions" (unit :name "Hearth Companions" :image "Germanics/GermanHearthCompanion.png" :summary "These are the Germanic tribes' best warriors. Germans respect their leader's bravery, not their rank, and it is a disgrace for a leader to be surpassed in bravery. They are wealthy, powerful men, fiercely loyal to their lord, often heavily scarred by years of warfare. Their weapons and armor are the best. To leave a battlefield alive while their lord lay dead meant a life of shame and scorn. To defend and protect him, to assign one's own acts of heroism to his credit-that's what is truly meant by allegiance." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Germanic Riders" (unit :name "Germanic Riders" :image "Germanics/GermanRiders.png" :summary "Riders ride small, poor quality horses, though they are excellent light cavalry. Like many Germanic warriors, however, they can lack battle-discipline and be over-keen to enter battle for glory. They were mostly armed with shield and spear and were supported by fast-moving light infantry - this light cavalry combined with light infantry allowed great tactical speed and versatility on the battlefield. Historically, Germanic tribes did not frequently use cavalry, however, some tribes were known for their cavalry and many peoples praised the good quality of Germanic cavalry. Though their horses were not exceptional, Germanic horsemen could still maneuver very well and operated as a unit, rather than as an unorganized band." :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Germ. Companion Cavalry" (unit :name "Germ. Companion Cavalry" :image "Germanics/GermanCompanionCavalry.png" :summary "The Companion Cavalry are extremely wealthy and powerful men, but still fiercely loyal to their lord who provides them the finest warhorses and wargear at his disposal. They can be used most effectively as shock troops whose charges can break the enemy line and destory their flanks, but they are also useful for overrunning heavy infantry and slaughtering lighter cavalry." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))))))))
nx/tactics/books/ancients / chapter_greek_city_states
Description:
Function Name:
  • chapter_greek_city_states
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_greek_city_states : base/chapter (chapter :name "Greek City States" :sectionmap (sectionmap "Greek Armies" (section :name "Greek Armies" :unitmap (unitmap "Greek Hoplite" (unit :name "Greek Hoplite" :image "Greeks/GreekHopliteToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall"))))) "Spartan Hoplite" (unit :name "Spartan Hoplite" :image "Greeks/GreekSpartanToken.png" :reference "* From the age of seven onwards, Spartan males were trained for a life of warfare. They were taught iron discipline, and almost programmed to forget about their individuality. * The strenuous training and comradeship engendered between Spartans made them ideally suited to hoplite warfare which required high levels of discipline and selflessness." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "2" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Greek General" (unit :name "Greek General" :image "Greeks/GreekGeneralToken.png" :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Thracian Peltast" (unit :name "Thracian Peltast" :reference "* When faced by hoplites peltasts operated by throwing javelins at short range. If the hoplites charged they would flee. As they carried considerably lighter equipment than the hoplites they were usually able to evade successfully especially in difficult terrain. * Peltasts were usually deployed on the flanks of the phalanx providing a link with any cavalry." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Greek Cavalry" (unit :name "Greek Cavalry" :reference "The utility of the Greek Citizen Cavalry was small on account of their heavy armor." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Greek Cataphracts" (unit :name "Greek Cataphracts" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Greek Philosopher" (unit :name "Greek Philosopher") "Greek Senator" (unit :name "Greek Senator") "Greek Wrestler" (unit :name "Greek Wrestler"))) "Greek Naval Vessels" (section :name "Greek Naval Vessels" :itemmap (itemmap "Greek Galley" (item :name "Greek Galley") "Greek Trireme" (item :name "Greek Trireme") "Greek Quinquereme" (item :name "Greek Quinquereme"))))))
nx/tactics/books/ancients / chapter_macedon
Description:
Function Name:
  • chapter_macedon
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_macedon : base/chapter (chapter :name "Macedon" :sectionmap (sectionmap "Macedonian Armies" (section :name "Macedonian Armies" :unitmap (unitmap "Macedonian Prodromoi Cavalry" (unit :name "Macedonian Prodromoi Cavalry" :reference "The utility of the Greek Citizen Cavalry was small on account of their heavy armor." :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Macedonian Companion Cavalry" (unit :name "Macedonian Companion Cavalry" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "Macedonian Naval Vessels" (section :name "Macedonian Naval Vessels" :itemmap (itemmap "Macedonian Galley" (item :name "Macedonian Galley") "Macedonian Trireme" (item :name "Macedonian Trireme"))))))
nx/tactics/books/ancients / chapter_norsemen
Description:
Function Name:
  • chapter_norsemen
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_norsemen : base/chapter (chapter :name "Norsemen" :sectionmap (sectionmap "Viking Armies" (section :name "Viking Armies" :unitmap (unitmap "Viking Axeman" (unit :name "Viking Axeman" :unitskillmap (unitskillmap :Frenzy (unitskill :name "Frenzy" :unitabilitymap (unitabilitymap :Berserker (unitability :name "Berserker"))))) "Viking Swordsman" (unit :name "Viking Swordsman"))) "Viking Naval Vessels" (section :name "Viking Naval Vessels" :itemmap (itemmap "Viking War Galley" (item :name "Viking War Galley"))))))
nx/tactics/books/ancients / chapter_persians
Description:
Function Name:
  • chapter_persians
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_persians : base/chapter (chapter :name "Persians" :sectionmap (sectionmap "Persian Armies" (section :name "Persian Armies" :unitmap (unitmap "Persian Lt. Cavalry" (unit :name "Persian Lt. Cavalry") "Persian Horse Archer" (unit :name "Persian Horse Archer") "Persian Scythed Chariot" (unit :name "Persian Scythed Chariot"))))))
nx/tactics/books/ancients / chapter_roman_empire
Description:
Function Name:
  • chapter_roman_empire
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_roman_empire : base/chapter (chapter :name "Roman Empire" :sectionmap (sectionmap :Legionnaries (section :name "Legionnaries" :summary "Roman Legions were the official fighting force of the empire and were divided in the following way: * Each Legion consisted of 4800 men * Each Legion was divided into 10 cohorts of 480 legionaries * Each Cohort was divided into 6 centuries of 80 men each. The 6 centuries were: Forward Hastati, Rear Hastati, Forward Pricipes, Rear Pricipes, Forward Triarii, and Rear Triarii. * Each Century was divided into 10 octets of 8 men. Soldiers of an octet shared a tent, and were rewarded or punished together. If one member acted dishonorably in battle, that contubernium would suffer decimation, whereby the group would be required to draw straws, the soldier unlucky enough to draw the short straw then being stoned to death by the others." :unitmap (unitmap :Hastati (unit :name "Hastati" :image "Romans/RomanLegionaireToken.png" :summary "These were the first line of the Roman heavy infantry and were made up of the relatively young (inexperienced), but wealthier citizens. The Hastati were the primary engaging force of the legion and always met the enemy first in melee combat. If things went badly, or they simply needed to rest and regroup, the Hastati would roll behind the Princeps." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Princeps (unit :name "Princeps" :image "Romans/RomanPrincepToken.png" :summary "The elite of the legion, in the prime of their careers for age and experience, and constituted the wealthier class. It was simply the obligation of the Princeps to win the battle. First they would act in relief of the Hastati, but then would carry the fight in earnest. It was a successful tactic, wearing down the enemy with good, but not your best forces, than hitting with your best men right in the middle of the fight." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Triarii (unit :name "Triarii" :image "Romans/RomanLegionaire2Token.png" :summary "Though the triarii were similarly armored as the Hastatii and Princeps, they played a much different role and were more akin to the Greek hoplites than Roman heavy infantry. The Triarii were the oldest and very experienced of the Roman army, and their job was to defend against disaster as a last resort, or to shock the enemy with a different look at the right moment. If the heavy infantry were pushed back, the Triarii would charge forward with their spears, hopefully with the effect of shocking the enemy and allowing the Princeps and Hastati time to regroup. They were used as a last resort, and the Latin expression 'ad triarios redisse', or it has come to the triarii, became a general phrase meaning that something was in a desperate situation." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Centurion (unit :name "Centurion" :image "Romans/RomanCenturionToken.png" :summary "Each Centurion commanded the 80 men in a single century (Forward Hastati, etc)." :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Praetorian Guard" (unit :name "Praetorian Guard" :summary "Initially, the guard for a general, the title was later used for the Emperor's personal army. These men were handpicked from the legions and represent the best warriors in Rome." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Formation: Phalanx" (unitability :name "Formation: Phalanx") "Formation: Shield Wall" (unitability :name "Formation: Shield Wall") "Formation: Testudo" (unitability :name "Formation: Testudo"))))) :Velites (unit :name "Velites" :image "Romans/RomanVeliteToken.png" :summary "The poorest citizen class allowed to serve, these units were lightly armed skirmishers who were deployed en masse on the battlefield in front of the heavier infantry lines, but moved back beyond the Hastati after discharging their javelins as the enemy approached. The Velites were also an important part of defense against war elephants. Using their greater mobility, due to lighter armament, Velites could avoid elephant charges and flank them." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Equites Legionis" (unit :name "Equites Legionis" :image "Romans/RomanHeavyCavalryToken.png" :summary "The Republican cavalry was designed for speed of movement, and were similarly equipped to the Hastati. Their duty was to provide scouting and potential fast moving support to weakening parts of a battle line. At times the cavalry could be used to turn a flank or deliver a shock at the right moment, but their limited number generally made their capabilities limited. As the Romans were not considered great natural horsemen, the great effectiveness of cavalry in the Roman army didn't come until the inclusion of various auxilia cavalry like that of the Gauls and Germanics." :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Riding (unitskill :name "Riding" :level "2" :unitabilitymap (unitabilitymap "Run Down" (unitability :name "Run Down"))))))) :Auxilia (section :name "Auxilia" :summary "Roman Auxilia are support troops and specialized units. By the 2nd century, the auxilia contained the same number of infantry as the legions and in addition provided almost all the Roman army's cavalry and more specialised troops (especially light cavalry and archers). The auxilia thus represented three-fifths of Rome's regular land forces. Like their legionary counterparts, auxiliary recruits were mostly volunteers, not conscripts, but unlike the legion the auxilia accepted non-Romans (which represented 90% of the empire)." :unitmap (unitmap "Cohors Peditata" (unit :name "Cohors Peditata" :image "Romans/RomanAuxiliaToken.png" :summary "Most auxiliary cohortes contained heavy infantry similar to legionaries." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Cohortes Sagittariorum" (unit :name "Cohortes Sagittariorum" :image "Romans/RomanArcherAuxiliaToken.png" :summary "Most Sagittarii were from Syria." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) :Funditores (unit :name "Funditores" :summary "Slingers wore no armor." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) "Eques Alaris" (unit :name "Eques Alaris" :image "Romans/RomanLightCavalryToken.png" :summary "Auxiliary Cavalryman" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Alae Sagittariorum" (unit :name "Alae Sagittariorum" :summary "* Mounted Archers" :classification "Lt. Cavalry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Formation: Skirmish" (unitability :name "Formation: Skirmish"))))) :Cataphractarii (unit :name "Cataphractarii" :classification "Hvy. Cavalry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command"))))) "Roman Charioteer" (unit :name "Roman Charioteer" :image "Romans/RomanCharioteer.png" :classification "Hvy. Cavalry"))) :Civilians (section :name "Civilians" :unitmap (unitmap "Roman Gladiator" (unit :name "Roman Gladiator" :image "Romans/RomanGladiatorToken.png" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :level "1" :unititemmap (unititemmap "Round Shield" (unititem :name "Round Shield"))))) "Roman Senator" (unit :name "Roman Senator") "Roman Slave" (unit :name "Roman Slave") "Roman Slaver" (unit :name "Roman Slaver"))) "Roman Naval Vessels" (section :name "Roman Naval Vessels" :itemmap (itemmap "Roman Galley" (item :name "Roman Galley") "Roman Trireme" (item :name "Roman Trireme") "Roman Quinquereme" (item :name "Roman Quinquereme"))))))
nx/tactics/books/ancients / chapter_unfiled_ancient
Description:
Function Name:
  • chapter_unfiled_ancient
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_unfiled_ancient : base/chapter (chapter :name "Unfiled Ancient" :summary "Examples of Play Romans vs. Greeks Combat Example: Combat Cards: Surprise Use when: Opponent must be unaware Effects: +4 Attack Opponent can only defend Hold Off Use when: Longer Reach In Melee Combat Not in Close Combat Effects: First Strike +2 Attack +4 Damage Vs Charge Opponent cannot move into Close Combat if you hit. Charge: Effect: Use when: Not in Melee Combat Effect: Full Move Attack +2 Damage Moves into Close Combat Guard: Effect: +2 Defense All hits taken are shield hits Example: Human attacks the Orc in the open. The Orc has longer reach an chooses Hold Off. The Human is wary of the spear and plays Guard and Close Combat. Round 1: Orc roll: 12 + 9 Spear + 2 Hold Off = 23 Human roll: 9 + 8 Sword + 2 Guard - 1 Encumberance = 18 Orc scores a hit for 5 + 3 Spear = 8 Damage Guard makes the damage a shield hit. Determine hit location. 8 (Piercing) - 3 (Shield) - 3 (Armor) = 2 (Piercing) Wound. Body reduces by 2 to 10 not enough to change bonus. The successful Hold Off means the Human's Close Combat Movement fails."))
nx/tactics/books/bestiary
Description:
Package Name:
  • nx/tactics/books/bestiary
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_bestiary_overview, chapter_amphibians, chapter_arthropods, chapter_avians, chapter_mammals_marsupials, chapter_marine_creatures, chapter_reptiles, chapter_plants, chapter_microorganisms, chapter_underground_creatures, chapter_humanoids, chapter_humanoids_fantastic, chapter_beastmen, chapter_constructs, chapter_dragons, chapter_elementals, chapter_extra-dimensional, chapter_darkling, chapter_giant_races, chapter_mythical_beasts, chapter_shapeshifters, chapter_undead_creatures
Source Code:
  • (package nx/tactics/books/bestiary :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Bestiary" :image "FloraAndFauna.jpg" :chaptermap (base/chaptermap "Bestiary Overview" (chapter_bestiary_overview) "Amphibians" (chapter_amphibians) "Arthropods" (chapter_arthropods) "Avians" (chapter_avians) "Mammals/Marsupials" (chapter_mammals_marsupials) "Marine Creatures" (chapter_marine_creatures) "Reptiles" (chapter_reptiles) "Plants" (chapter_plants) "Microorganisms" (chapter_microorganisms) "Underground Creatures" (chapter_underground_creatures) "Humanoids" (chapter_humanoids) "Humanoids, Fantastic" (chapter_humanoids_fantastic) "Beastmen" (chapter_beastmen) "Constructs" (chapter_constructs) "Dragons" (chapter_dragons) "Elementals" (chapter_elementals) "Extra-Dimensional" (chapter_extra-dimensional) "Darkling" (chapter_darkling) "Giant Races" (chapter_giant_races) "Mythical Beasts" (chapter_mythical_beasts) "Shapeshifters" (chapter_shapeshifters) "Undead Creatures" (chapter_undead_creatures) ))) (func chapter_bestiary_overview : base/chapter (chapter :name "Bestiary Overview" :sectionmap (sectionmap "Why Tactics: Bestiary?" (section :name "Why Tactics: Bestiary?")))) (func chapter_amphibians : base/chapter (chapter :name "Amphibians" :sectionmap (sectionmap "Common Amphibians" (section :name "Common Amphibians" :unitmap (unitmap :Frog (unit :name "Frog") :Salamander (unit :name "Salamander") :Toad (unit :name "Toad"))) "Fantastic Amphibians" (section :name "Fantastic Amphibians" :unitmap (unitmap "Frog, Giant" (unit :name "Frog, Giant") "Toad, Giant" (unit :name "Toad, Giant") "Toad, Giant Poisonous" (unit :name "Toad, Giant Poisonous")))))) (func chapter_arthropods : base/chapter (chapter :name "Arthropods" :sectionmap (sectionmap :Ants (section :name "Ants" :unitmap (unitmap "Army Ants" (unit :name "Army Ants") "Black Ants" (unit :name "Black Ants") "Fire Ants" (unit :name "Fire Ants") "Red Ants" (unit :name "Red Ants"))) :Arachnids (section :name "Arachnids" :unitmap (unitmap :Scorpion (unit :name "Scorpion") "Canopy Spider" (unit :name "Canopy Spider") :Tarantula (unit :name "Tarantula"))) :Bees (section :name "Bees" :unitmap (unitmap "Honey Bees" (unit :name "Honey Bees") "Killer Bees" (unit :name "Killer Bees") :Wasp (unit :name "Wasp"))) :Beetles (section :name "Beetles" :unitmap (unitmap "Bombardier Beetle" (unit :name "Bombardier Beetle") "Carrion Beetle" (unit :name "Carrion Beetle") "Fire Beetle" (unit :name "Fire Beetle") "Stag Beetle" (unit :name "Stag Beetle"))) "Flying Insects" (section :name "Flying Insects" :unitmap (unitmap :Firefly (unit :name "Firefly" :titles "Lightning Bug") :Horsefly (unit :name "Horsefly") "Praying Mantis" (unit :name "Praying Mantis"))) "Fantastic Arthropods" (section :name "Fantastic Arthropods" :unitmap (unitmap "Ant, Giant" (unit :name "Ant, Giant") "Ant, Huge" (unit :name "Ant, Huge") "Ant, Huge Fire" (unit :name "Ant, Huge Fire") "Ant Lion, Giant" (unit :name "Ant Lion, Giant") "Ant Lion, Huge" (unit :name "Ant Lion, Huge") "Beetle, Giant" (unit :name "Beetle, Giant") "Beetle, Giant Pincher" (unit :name "Beetle, Giant Pincher") "Beetle, Giant Rinoceros" (unit :name "Beetle, Giant Rinoceros") "Beetle, Hugh" (unit :name "Beetle, Hugh") "Beetle, Hugh Fire" (unit :name "Beetle, Hugh Fire") "Caterpillar, Giant" (unit :name "Caterpillar, Giant") "Centipede, Giant" (unit :name "Centipede, Giant") "Centipede, Hugh Poisonous" (unit :name "Centipede, Hugh Poisonous") "Cockroach, Giant" (unit :name "Cockroach, Giant") "Dragonfly, Giant" (unit :name "Dragonfly, Giant") "Dragonfly, Huge" (unit :name "Dragonfly, Huge") "Fire Bug" (unit :name "Fire Bug") "Firefly, Huge" (unit :name "Firefly, Huge") "Lightning Bug, Huge" (unit :name "Lightning Bug, Huge") "Mantis, Giant" (unit :name "Mantis, Giant") "Mantis, Huge" (unit :name "Mantis, Huge") "Mosquito, Giant" (unit :name "Mosquito, Giant") "Mosquito, Huge" (unit :name "Mosquito, Huge") "Scarab, Huge" (unit :name "Scarab, Huge") "Scorpion, Giant" (unit :name "Scorpion, Giant") "Scorpion, Huge" (unit :name "Scorpion, Huge") "Spider, Giant" (unit :name "Spider, Giant") "Spider, Huge" (unit :name "Spider, Huge") "Spider, Huge Spitting" (unit :name "Spider, Huge Spitting") "Spider, Huge Trap Door" (unit :name "Spider, Huge Trap Door") "Spider, Huge Water" (unit :name "Spider, Huge Water") "Spider, Phase" (unit :name "Spider, Phase" :titles "Dimension Spider") :Vasp (unit :name "Vasp" :summary "* The Vasp is a giant predatory insectoid. They stand 10 feet tall with segmented bodies covered with metallic scales. Despite their size and ungainly appearance, they are surprisingly quick and can leap 30 feet. * Vasps are solitary nocturnal creatures that usually attack by leaping on its victim, pining it to the ground, and stinging it to death with its tail. Its stinger exudes a caustic venom that slowly dissolves the internal organs. While the toxin is taking effect, the Vasp wraps it prey in a silky cocoon and drags it back to its lair." :mass "250kg" :height "3m") "Wasp, Huge" (unit :name "Wasp, Huge") "Wasp, Parasite" (unit :name "Wasp, Parasite") "Worm, Giant" (unit :name "Worm, Giant") "Worm, Giant Sand" (unit :name "Worm, Giant Sand")))))) (func chapter_avians : base/chapter (chapter :name "Avians" :sectionmap (sectionmap :Birds (section :name "Birds" :unitmap (unitmap :Crane (unit :name "Crane") :Eagle (unit :name "Eagle") :Falcon (unit :name "Falcon") :Hawk (unit :name "Hawk") :Owl (unit :name "Owl") :Parrot (unit :name "Parrot") :Raven (unit :name "Raven") :Shrike (unit :name "Shrike") :Vulture (unit :name "Vulture"))) "Fantastic Avians" (section :name "Fantastic Avians" :unitmap (unitmap :Hekler (unit :name "Hekler" :summary "* The Hekler is a pestiferous variety of bird identified by its spiked plummage and awful, shrill cry they produce when hungry. Heklers have the annoying habit of following travellers scrounging for handouts and leftovers. They are extremely persistent and will pursue their victims for miles, swawking incessently. Worse, the call is audible for two miles and is known to attract predatory beasts. If fed, they become silent while they eat, providing an opportunity to escape." :titles "Nag-Bird") "Iron Shrike" (unit :name "Iron Shrike" :summary "* A long beaked bird with metallic plumage. Their metallic feathers make them very hardy but also poor flyers. They hunt by diving at full speed from high altitudes and impaling their prey on their dagger-like beaks.") "Sky Jelly" (unit :name "Sky Jelly") "Sky Pufferfish" (unit :name "Sky Pufferfish") "Sky Shark" (unit :name "Sky Shark") "Sky Squid" (unit :name "Sky Squid") :Skyfish (unit :name "Skyfish" :summary "* Skyfish have developed their flotation bladders to hold lighter than air gases. Their bodies and bones are porous and very lightweight, so they are somewhat more vulnerable to impact damage. If their flotation bladder is ruptured, they will sink. Some skyfish have adapted to live at very high altitudes to avoid predators.") "Winged Viper" (unit :name "Winged Viper" :summary "* A snake with feathered wings and a mildly poisonous bite. They are generally small but can grow to 10 feet. They feed on small creatures, but will attack larger targets when hungry or disturbed.")))))) (func chapter_mammals_marsupials : base/chapter (chapter :name "Mammals/Marsupials" :sectionmap (sectionmap :Apes (section :name "Apes" :unitmap (unitmap :Ape (unit :name "Ape") :Baboon (unit :name "Baboon") :Chimpanzee (unit :name "Chimpanzee") :Gibbon (unit :name "Gibbon") :Gorilla (unit :name "Gorilla") :Orangutan (unit :name "Orangutan"))) :Bats (section :name "Bats" :unitmap (unitmap "Fruit Bat" (unit :name "Fruit Bat") "Vampire Bat" (unit :name "Vampire Bat"))) :Bears (section :name "Bears" :unitmap (unitmap "Black Bear" (unit :name "Black Bear") "Brown Bear" (unit :name "Brown Bear") "Grizzly Bear" (unit :name "Grizzly Bear" :reference "* It has been estimated that a bite from a grizzly could crush a bowling ball." :mass "600kg") "Polar Bear" (unit :name "Polar Bear"))) :Cats (section :name "Cats" :unitmap (unitmap :Bobcat (unit :name "Bobcat") :Cheetah (unit :name "Cheetah") :Cougar (unit :name "Cougar") "House cat" (unit :name "House cat") :Jaguar (unit :name "Jaguar") :Leopard (unit :name "Leopard" :titles "Panther, King Leopard - a [Large] Leopard with distinctive patterns of spots." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "4" :unitabilitymap (unitabilitymap "Neck Bite" (unitability :name "Neck Bite") :Pounce (unitability :name "Pounce")))) :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "3" :unitabilitymap (unitabilitymap "Jungle Survival" (unitability :name "Jungle Survival"))))) :Lion (unit :name "Lion") :Lynx (unit :name "Lynx") :Panther (unit :name "Panther") :Tiger (unit :name "Tiger" :summary "Tora") :Wildcat (unit :name "Wildcat"))) :Canines (section :name "Canines" :unitmap (unitmap :Akita (unit :name "Akita") :Bloodhound (unit :name "Bloodhound") :Doberman (unit :name "Doberman") "German Shepherd" (unit :name "German Shepherd" :mass "40kg") "Guard Dog" (unit :name "Guard Dog") :Husky (unit :name "Husky") "Mad Dog" (unit :name "Mad Dog") :Sheepdog (unit :name "Sheepdog") "War Dog" (unit :name "War Dog") "Wild Dog" (unit :name "Wild Dog") :Wolf (unit :name "Wolf" :summary "* Hearing - The upper range of a wolfs' hearing is upwards of 80 kHz. The upper range of humans is only 20 kHz. A wolf can hear up to 6 miles away in forest and 10 miles in open areas, including some high-pitched sounds that a human can't hear. Even when it sleeps, a wolf's ears stand straight up so it can catch sounds. Unlike humans, wolves can easily tell what direction sound is coming from by turning their ears from side to side. * Smell - The wolf's sense of smell is about 100 times better than a human's. It can smell prey more than a mile away if the wind is right. It can sense an animal three days after it's gone. Wolves finished a test to locate hidden food in five minutes that domestic dogs took over an hour to finish. * Vision - Beyond a short distance their vision must be somewhat blurred. Nevertheless, wolves can see shapes and, especially, movement over long distances, and their peripheral vision is extremely accurate. They are able to detect even the slightest movements of very small animals, such as a mosquito, at a distance of more than ten feet. There is some controversy as to whether wolves see in color or black and white. Regardless, it is unlikely that they see the various hues of the spectrum as humans see them, because the physical makeup of the eye is different. Nighttime vision for wolves is many times better than human vision in the day or night. Wolves can actually see much better and even much more clearly at night. The eyes of the wolf are like most predators, with a sight-field of nearly 180 degrees and pointed forward." :titles "Lone Wolf"))) :Elephants (section :name "Elephants" :unitmap (unitmap "African Elephant" (unit :name "African Elephant" :speed "40kph" :mass "10tons") "Asian Elephant" (unit :name "Asian Elephant" :speed "40kph" :mass "5tons") "Rogue Elephant" (unit :name "Rogue Elephant") "War Elephant" (unit :name "War Elephant"))) "Herd Animals" (section :name "Herd Animals" :unitmap (unitmap :Bison (unit :name "Bison") :Camel (unit :name "Camel" :reference "* Trot: 10mph / 16kph * Canter 17mph / 27kph * Gallop 22mph / 35kph (10km+) * Gallop 25mph / 40kph (1km burst) * These speeds are consistent with a horse. In terms of war, camels are probably superior given their better stamina and load capacity." :speed "35kph") :Cattle (unit :name "Cattle") :Deer (unit :name "Deer") "Draft Horse" (unit :name "Draft Horse" :mass "800kg") :Elk (unit :name "Elk") :Moose (unit :name "Moose") :Reindeer (unit :name "Reindeer") :Horse (unit :name "Horse" :reference "* Trot: 10mph / 16kph (Cataphracts) * Canter 12mph / 19kph (Heavy Cavalry, Cataphracts Charge) * Gallop 20mph / 32kph (Light Cavalry, Heavy Cavalry Charge) * Gallop 25mph / 40kph (1km burst) * The U.S. Calvary in 1941 recommended that the collective weight of rider and gear not exceed 20% of the total weight of the horse." :titles "Charger, Courser, Draft, Maverick, Pony, Stallion, War Horse" :speed "32kph" :mass "600kg"))) :Marsupials (section :name "Marsupials" :unitmap (unitmap :Kangaroo (unit :name "Kangaroo") :Koala (unit :name "Koala") :Opossum (unit :name "Opossum"))) :Rodents (section :name "Rodents" :unitmap (unitmap :Beaver (unit :name "Beaver") :Gerbil (unit :name "Gerbil") :Ferret (unit :name "Ferret") :Hamster (unit :name "Hamster") "Huge Rat" (unit :name "Huge Rat" :reference "* What about the R.O.U.S.'s? Rodents Of Unusual Size? I don't think they exist. Raghh! - Westley, Buttercup, and ROUS - The Princess Bride") :Mouse (unit :name "Mouse") "Plague Rat" (unit :name "Plague Rat") :Rabbit (unit :name "Rabbit") "Rabid Rat" (unit :name "Rabid Rat") :Rat (unit :name "Rat") "Sewer Rat" (unit :name "Sewer Rat"))) :Swine (section :name "Swine" :unitmap (unitmap :Boar (unit :name "Boar") :Pig (unit :name "Pig") :Razorback (unit :name "Razorback") :Warthog (unit :name "Warthog") "Wild Boar" (unit :name "Wild Boar"))) "Other Mammals" (section :name "Other Mammals" :unitmap (unitmap :Badger (unit :name "Badger") :Donkey (unit :name "Donkey") :Mule (unit :name "Mule") :Hippopotamus (unit :name "Hippopotamus" :mass "1.5tons") :Hyena (unit :name "Hyena") :Porcupine (unit :name "Porcupine" :titles "Hedgehog") :Rhinoceros (unit :name "Rhinoceros" :titles "Black Rhino, White Rhino") :Weasel (unit :name "Weasel") :Wolverine (unit :name "Wolverine"))) "Fantastic Mammals" (section :name "Fantastic Mammals" :unitmap (unitmap "Bat, Huge" (unit :name "Bat, Huge") "Boar, Great" (unit :name "Boar, Great") "Ferret, Keen" (unit :name "Ferret, Keen" :summary "* These furred scavengers are hoarders and theives by nature robbing nests and homes alike. They have uncanny manual dexterity and are natural thieves able to squeeze into tight places, evade detection, and untie knots. * If caputured at infancy, they can be raised as pets and taught to steal for its master. For this reason, they are valuable to professional thieves. * With training they can be taught to pick pockets and even pick simple locks." :mass "2kg" :length ".5m") "Rat, Bog" (unit :name "Rat, Bog") "Rat, Crypt" (unit :name "Rat, Crypt") "Rat, Plague" (unit :name "Rat, Plague") :Terrorphant (unit :name "Terrorphant" :summary "* A giant, carnivorous elephant. An evily, intelligent alpha predator.") :Terrorpotmus (unit :name "Terrorpotmus" :summary "* A giant, carnivorous hippopotamus. An keenly intelligent alpha predator.") "Wolf, Dire" (unit :name "Wolf, Dire") "Wolf, Warg" (unit :name "Wolf, Warg") "Wolverine, Huge" (unit :name "Wolverine, Huge")))))) (func chapter_marine_creatures : base/chapter (chapter :name "Marine Creatures" :sectionmap (sectionmap :Crustaceans (section :name "Crustaceans" :unitmap (unitmap :Crab (unit :name "Crab") "Giant Clam" (unit :name "Giant Clam") "King Crab" (unit :name "King Crab") :Lobster (unit :name "Lobster"))) :Fish (section :name "Fish" :unitmap (unitmap "Alligator Gar" (unit :name "Alligator Gar") :Barracuda (unit :name "Barracuda") :Eel (unit :name "Eel") "Electic Eel" (unit :name "Electic Eel") "Manta Ray" (unit :name "Manta Ray") "Moray Eel" (unit :name "Moray Eel") :Piranha (unit :name "Piranha") "Sting Ray" (unit :name "Sting Ray"))) "Marine Mammals" (section :name "Marine Mammals" :unitmap (unitmap "Blue Whale" (unit :name "Blue Whale") :Dolphin (unit :name "Dolphin" :reference "Man had always assumed that he was more intelligent than dolphins because he had a achieved so much: the wheel, New York, Wars. Whilst all the dolphins had ever done was muck about in the water having a good time. But conversely, the dolphin thought they were more intelligent than man for precisely same reasonse. - Hitchhikers Guide to the Galaxy") "Killer Whale" (unit :name "Killer Whale") "Sea Elephant" (unit :name "Sea Elephant") "Sea Lion" (unit :name "Sea Lion") :Seal (unit :name "Seal") "Sperm Whale" (unit :name "Sperm Whale"))) :Sharks (section :name "Sharks" :unitmap (unitmap "Great White Shark" (unit :name "Great White Shark" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))) :Senses (unitpower :name "Senses" :unitabilitymap (unitabilitymap "Blood Scent" (unitability :name "Blood Scent") "Electromagnetic Vision" (unitability :name "Electromagnetic Vision"))))) "Tiger Shark" (unit :name "Tiger Shark" :unitpowermap (unitpowermap :Senses (unitpower :name "Senses" :unitabilitymap (unitabilitymap "Blood Scent" (unitability :name "Blood Scent") "Electromagnetic Vision" (unitability :name "Electromagnetic Vision"))))))) "Other Marine" (section :name "Other Marine" :unitmap (unitmap :Coral (unit :name "Coral") :Octopus (unit :name "Octopus") "Giant Octopus" (unit :name "Giant Octopus") :Squid (unit :name "Squid") "Giant Squid" (unit :name "Giant Squid"))) "Fantastic Marine Creatures" (section :name "Fantastic Marine Creatures" :unitmap (unitmap "Crab, Giant" (unit :name "Crab, Giant") "Maray Eel, Giant" (unit :name "Maray Eel, Giant" :summary "* Giant, sightless eels native to deep undersea caves and grottos. These aggressive predators measure over 20 feet and have rows of sharp jagged teeth." :titles "Kra") "Kingfisher, Giant" (unit :name "Kingfisher, Giant") "Lamprey, Huge" (unit :name "Lamprey, Huge") "Octopus, Giant" (unit :name "Octopus, Giant") "Red Tide" (unit :name "Red Tide") "Sea Serpent" (unit :name "Sea Serpent") "Seahorse, Huge" (unit :name "Seahorse, Huge") "Shark, Megalodon" (unit :name "Shark, Megalodon")))))) (func chapter_reptiles : base/chapter (chapter :name "Reptiles" :sectionmap (sectionmap :Alligators/Crocodiles (section :name "Alligators/Crocodiles" :unitmap (unitmap :Alligator (unit :name "Alligator") :Crocodile (unit :name "Crocodile") "Emperor Crocodile" (unit :name "Emperor Crocodile"))) :Lizards (section :name "Lizards" :unitmap (unitmap "Komodo Dragon" (unit :name "Komodo Dragon") :Lizard (unit :name "Lizard"))) :Snakes (section :name "Snakes" :unitmap (unitmap :Anaconda (unit :name "Anaconda" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Swallow Whole" (unitability :name "Swallow Whole"))))) :Asp (unit :name "Asp" :reference "Asps. Very dangerous. You go first. - Raiders of the Lost Ark") "Black Mamba" (unit :name "Black Mamba" :summary "* The black mamba receives its name from the black coloration inside of its mouth, rather than their skin color which is a gray to olive tone. The black mamba is the fastest moving snake in the world, capable of moving up to 20 km/h(12.5 mph). However it uses this speed to evade danger, rather than catch prey. * Black mambas are among the ten most venomous snakes in the world. A single bite may inject enough venom to kill from 20-40 grown men. When cornered, they will readily attack. In fact, many snake experts have cited the black mamba as the world's most aggressive snake, noting tendency to actively attack without provocation. When warding off a threat, the black mamba usually delivers multiple strikes, injecting its potent neuro-and cardiotoxin with each strike, often attacking the body or head, unlike most other snakes. * Black mambas tend to live in their lairs for long periods of time, which are often vacated insect mounds or hollow trees. Black mambas are diurnal snakes that hunt prey actively day or night. * The black mamba is more than 3 times as venomous as the Cape Cobra, over 5 times as venomous as the King cobra and about 40 times as venomous as the Gaboon viper. Black mamba venom contains powerful, rapid-acting neurotoxins and cardiotoxins. The initial symptom of the bite is local pain in the bite area, although not as severe as snakes with hemotoxins. The victim then experiences a tingling sensation in the extremities, drooping eyelids, tunnel vision, sweating, excessive salivation, and lack of muscle control (specifically the mouth and tongue). If the victim does not receive medical attention, symptoms rapidly progress to nausea, shortness of breath, confusion, and paralysis. Eventually, the victim experiences convulsions, respiratory failure, and coma, and dies due to suffocation resulting from paralysis of the muscles used for breathing. Without treatment the mortality rate is 100%, the highest among all venomous snakes in the world.") "Boa Constrictor" (unit :name "Boa Constrictor") :Cobra (unit :name "Cobra") "King Cobra" (unit :name "King Cobra") :Python (unit :name "Python") :Viper (unit :name "Viper"))) :Toads (section :name "Toads" :unitmap (unitmap "Poisonous Toad" (unit :name "Poisonous Toad"))) "Fantastic Reptiles" (section :name "Fantastic Reptiles" :unitmap (unitmap :Balizard (unit :name "Balizard" :summary "* A large, magical variety of lizard that survives in arctic climates. Its body temperature matches the surrounding. It has a special form of gaze ability where it can draw heat from any target it is facing into its nose and mouth. It uses this ability to freeze opponents before eating their icy remains.") "Crocodile, Giant" (unit :name "Crocodile, Giant") "Desert Strider" (unit :name "Desert Strider" :summary "* Striders are large bipedal desert creatures resembling a cross between a lizard and a flightless bird. Striders are perfectly acclimated to desert life. They can go for months without water, have protective lenses over their eyes, and actually process sunlight to supplement the insects and reptiles they normally consume. Conversely, they cannot survive outside a desert environment.") "Lizard, Giant" (unit :name "Lizard, Giant") "Serpent, Great" (unit :name "Serpent, Great") "Snake, Crypt Cobra" (unit :name "Snake, Crypt Cobra") "Snake, Swaying Cobra" (unit :name "Snake, Swaying Cobra" :summary "* This seemingly normal Cobra has the enhanced ability to hypnotise its victim. * Hypnotism - By slowly swaying back and forth and removing all hostile intent from its mind, the Cobra creates the illusion that it is peaceful and harmless. Its victim becomes enthralled and simply watches as the Cobra slowly advances. When the Cobra is face to face with its victim, it attacks with lightning speed to bite the face or throat to deposit its venom near the victim's brain." :titles "Hypnotic Cobra") "Tortoise, Giant" (unit :name "Tortoise, Giant")))))) (func chapter_plants : base/chapter (chapter :name "Plants" :sectionmap (sectionmap :Herbs (section :name "Herbs" :summary "* Acacia - aka gum arabic. Protection, Psychic Powers. Burn with sandalwood to open psychic centers. Parts used: dried gum, leaves, wood * Aconite - aka wolfsbane, monkshood, blue rocket *POISON* Don't ingest. Protection, Invisibility. Use this herb with great caution to consecrate the athame or ritual knife. Make an infusion with the leaves or root to banish prior energy from magickal blades and to infuse it with protection. The root or leaves may be burned as incense for the same purpose. Gather the fresh flowers to make a tincture to refresh the power of the knives. Use an infusion as a magickal wash for ritual tools or sacred space. Brings protection and magickal watchfulness against negative energies in ritual. Wash a new cauldron in the infusion or burn aconite in its first fire. Used to invoke Hecate. Wrap the seed in a lizard skin and carry to become invisible at will. Used to poison arrow tips in early times. Also as protection from and a cure for werewolves. * African Violet - Spirituality, Protection. Promotes spirituality when grown in the home. * Agaric - aka magic mushroom, redcap, death angel, death cap Fertility. Place on the altar or in the bedroom to increase fertility. * Agrimony - aka Church steeples, cocklebur, stickwort, sticklewort Protection, Sleep. Agrimony is best known for its sleep-inducing qualities, therefore it is excellent in dream pillows, especially mixed with mugwort. Enhances magickal healing. A wash or oil increases effectiveness of all forms of ritual healing, psychic healing, or distance healing. Anoint hands with oil to cleanse auras. Creates a barrier against negative energies. Use if you feel to be under psychic attack. A counter-magick herb, it not only breaks hexes, but sends them back to the hexer. * Alfalfa - Prosperity, Anti-hunger, Money. Brings in money and protects against financial misfortune. Harvest a small quantity at the full moon. Dry and burn in the cauldron. Place ashes in an magickal amulet. * Allspice - Money, Luck, Healing. * Almond - Money, Prosperity, Wisdom. Use oil, wash, or incense to anoint magickal wands or ritual candlesticks. (Almond wood makes excellent wands, especially for use in love magick). Excellent herbs for handfastings or other rituals of union. Also good for overcoming alcohol dependency. Almonds, leaves, and wood may be used in money magick. Placing almonds in your pocket will lead you to treasures. Aloe -- aka burn plant, medicine plant Protection, Luck. Guards against evil influences and prevents household accidents. Plant aloe on the graves of loved ones to promote a peaceful existence until the deceased is reborn. Use for success in the world. Prevents feelings of loneliness. Aloes, Wood -- aka Lignum aloes Love, Spirituality. Althea -- aka marshmallow, sweet weed, wymote Protection, Psychic Powers. Burn as incense or carry as a sachet for a good psychic power stimulator. A good 'spirit puller.' It draws good spirits into workings and rituals when placed on the altar. An aphrodisiac -- make an oil from seeds gathered under the full moon to use on the genitals. An amulet made of the leaf or root worn near the genitals will accomplish the same ends. Alyssum -- aka Alison, Madwort Protection, Moderating Anger Amaranth -- Love-lies-bleeding, red cockscomb, velvet flower Healing, Protection, Invisibility. Used in pagan burial ritutals. Mends a broken heart. Anemone -- aka Meadow Anemone, Wind Flower, Pasque Flower Health, Protection, Healing. Use the blossoms in all healing rituals. Grow red anemones in the garden to protect the garden and the home. Wrap flowers in a red cloth and wear or carry to prevent disease. Use the flowers to color Ostara eggs. Anemone (Wood) -- aka crowfoot, windflower Healing.Used to invoke elemental air. Maturing flower is ideal nesting place for faeries. A charm against fevers. Use during rituals of death and dying. Angelica -- aka archangel, masterwort Exorcism, Protection, Healing, Visions. Use in all protection and exorcism incenses. Angelica protects in two ways: it creates a barrier against negative energy and fills you with good, radiant energy. Removes curses, hexes, or spells that have been cast against you. Enhances the aura. Gives a joyful outlook on life. Anise Seed -- aka aniseed, anneys Protection. Purification. Youth. Deals with inner, personal issues related to lack of fulfillment. Helps one to become more open to happiness and enjoy company of others. Put in dream pillows to protect from nightmares. Brings protection when traveling in the astral. Include anise in handfasting and wedding cakes. Anise, Star -- aka Chinese anise Use to consecrate ritual cups and chalices. Powdered stars may be used as incense to invoke your Deities or banish negative energy. Used in death and dying rituals. Apple -- aka Silver bough, silver branch, tree of love Love, Healing, Garden Magick, Immortality. Use apple branches to make wands ideally suited for emotional and love magick. The apple branch will gain one admittance to the faery underworld. For healing, cut an apple into three pieces, rub on the afflicted part of the body, and bury outside. Do this during the waning moon to banish illness. Apples can be used for poppets or the apple wood carved into a poppet. Powder dried seeds and bark to burn as incense. (Caution: more than a few apple seeds can be poisonous). Apples are associated with the dead and Samhain, which is often called the Feast of Apples. Apricot -- Love. Use juice in love spells or potions. Eat fruit to obtain a sweet disposition. Leaves and flowers can be added to love sachets and the pits carried to attract love. Arabic Gum -- aka Arabic, Egyptian gum, Indian gum Purifies negativity and evil. Add to incense for good vibrations.See Acacia. Arbutus -- Exorcism, Protection. Protects little children. Arrow Root -- Increases one's good fortune and makes opportunity more visible on the horizon. Asafoetida -- aka Devil's dung, food of the gods Exorcism, Purification, Protection. Horrid odor. Use with caution. Used by those seeking the mysteries of the Horned God. Helps us break free of our negative desires. Increases the power of any ritual. Ash aka Nion Protection, Prosperity, Sea Rituals, Health. The Teutonic World Tree, Yggdrasil, is said to be an ash tree. An ash staff wards off evil. Healing wands should be made of ash wood. Carve poppets from the roots of the ash tree. Burning ash at Yule brings prosperity. Carry the leaves to gain love. Aspen -- Eloquence, Anti-Theft. Aster -- aka China Aster, Michaelmas Daisy, Starwort Use in love sachets, or carry the bloom to win love. Grow in the garden with a wish for love. Avens -- aka bennet, blessed herb, clove root, golden star, harefoot Exorcism, Purification, Love. Brings protection to the home, kindred, and self. A whole root is needed for an amulet. Burn ground or cut root to promote blessings and keep out negativity. Avocado -- aka alligator pear Love, Beauty, Lust. Grow a plant from the pit of an avocado to bring love into it. Wands made from avocado wood make potent all-purpose instruments. Bachelor's Buttons -- aka devil's flower, red campion Love. Women wear this flower on their breast to attract love. Balm, Lemon -- aka bee balm, lemon basalm, melissa, sweet balm, sweet melissa Love. Success. Healing, especially for those with mental or nervous disorders. Use in love charms and spells to attract a partner. Opens one to the divine love of the Goddess. Gives energy to make one more desirable to the opposite sex. Balm of Gilead -- aka balsam tree Love, Manifestations, Protection, Healing. Carry the buds to mend a broken heart. Also steep them in red wine for a love potion. One of the best forms of magickal oils to be used to dress candles in magickal healing. Bamboo -- Protection, Luck, Hex-Breaking, Wishes. Excellent for magick wands, representing all four elements. 'Growing up from the earth through water, it passes through the sky as it reaches toward the fire of the Sun.' Crush the wood to a powder and burn for protection -- or grow by the house for good fortune. Banana -- Fertility. Cures impotency. Use leaves, flowers, and fruits in prosperity and money spells. Banyan -- aka Indian fig tree, vada tree Luck. Barley -- Love, Healing, Protection. Use the grain or barley water in love spells. Basil -- aka Witches herb, American dittany, St. Joseph's herb Love, Exorcism, Wealth, Flying, Protection. Causes sympathy between two people and soothes tempers between lovers. Add to love sachets and incenses. Place in cash register or on doorsill of business to attract customers. Use when invoking elemental salamanders or communing with dragons. Also used for courage. Bay -- aka bay laurel, laurel, sweet bay Protection, Psychic Powers, Healing, Purification, Strength. Used in clairvoyance and wisdom brews. Place leaves under pillow for prophetic dreams. Burn to cause vision. Attracts love and romance. Use to consecrate musical instruments. Bay leaves impart strength to athletes. Write wishes on bay leaves and burn. Bean -- Protection, Exorcism, Wart Charming, Reconciliations, Potency, Love. Used in rattles, they scare away bad spirits. Rub a dried bean on warts during the waning Moon. As you do so, say 'As this bean decays, So wort, fall away!' Bedstraw -- Worn or carried to attract love. Beech -- Wishes Beet -- Love. Use as an ink in love magick, also as a blood substitute. Belladonna -- aka banewort, witches berry, sorcerer's berry, deadly nightshade, death's herb, devil's cherries *Poison* Highly toxic. All parts of the plant are extremely poisonous. Encourages astral projection and produces visions, but belladonna is best avoided. A primary ingredient in flying ointments. Used in funeral rituals to aspurge the circle, helping the deceased to let go and move forward. Used to invoke Circe. Gather berries when they are ripe (around Samhain.) Store with onyx. Medicinally, it has been used as a sedative. As every part of the plant is extremely poisonous, neither leaves, berries, nor root should be handled if there are any cuts or abrasions on the hands. The root is the most poisonous, the leaves and flowers less so, and the berries, except to children, least of all. It is said that an adult may eat two or three berries without injury, but dangerous symptoms appear if more are taken, and it is wiser not to attempt the experiment. Though so powerful in its action on the human body, the plant seems to affect some of the lower animals but little. Rabbits, sheep, goats and swine eat the leaves with impunity, and birds often eat the seeds without any apparent effect, but cats and dogs are very susceptible to the poison. -- Grieve's Modern Herbal Benzoin -- Purification, Prosperity. Provides focus. Enhances concentration. Useful in astral travel (protects spirit while travelling). Promotes generosity. Brings increased success to any magickal working or to attain magickal goals. Used as a base for incense. Make an incense of benzoin, cinnamon, and basil to attract customers to your place of business. Bergamot, Orange -- aka orange mint, bergamot Money. Put leaves in wallet or purse to attract money. Rub fresh leaves on money before spending. Be-Still -- aka trumpet flower, yellow oleander *POISON* Wear beans as a talisan to attract luck. Betony, Wood -- aka bishopwort, lousewort, purple betony Protection, Purification, Love. Placed under the pillow, it shields the sleeper from dreams. Throw in the Midsummer fire and jump through the smoke to purify the body. Very powerful in its ability to protect against dark and negative energy. Birch -- Protection, Exorcism, Purification. The traditional broom of the witch is made from birch twigs. Since birch is sacred to Thor, it is best to take the bark after the tree has been kissed by Thor, that is, hit by lightning. A circular grove of oak trees is among the most magickal of sites. Bistort -- aka dragonwort, snakeweed, sweet dock Psychic Powers, Fertility. Carry bistort if you wish to conceive. Burn with frankincense to increase psychic powers or when using divination. Add to money and wealth incenses. Bittersweet -- Protection, Healing Blackberry -- Healing, Money, Protection. Bake blackberry pies at Lammas. Use leaves and berries in spells of wealth. Dry fruit and powder it for use in magickal healing potions. Weave pentagrams from the brambles to hang in the home for protection. Bladderwrack -- aka kelp, sea spirit, seawrack Protection, Sea Spells, Wind Spells, Money, Psychic Powers. Fill a small jar with whiskey, add kelp and cap tightly. Place in kitchen window to ensure a steady flow of money in the household. Bleeding Heart -- Love. When grown, the plant brings love. If growing indoors, plant a penny in the soil to offset negative vibrations. (For some reason, this plant emits negativity when grown indoors -- maybe because love needs freedom to grow?) Lore: crush the flower. If the juice is red, your love has a heart full of love for you. If it is white, he or she does not. Bloodroot -- aka king root, red root *POISON* Love, Protection, Purification. Wear or carry the root to draw love and to avert evil spells and negativity. Bluebell -- aka harebell Luck, Truth. Anyone who wears a bluebell is compelled to tell the truth in all matters. Plant on graves. Comforts those left behind. Blueberry -- aka bilberry Protection. Keeping blueberries under the doormat will keep away undesirables. Eat blueberry pie when under attack. This gets the protection inside you and increases the herb's protectiveness. Blue Flag -- aka iris, liver lily, poison lily, flag lily, fleur-de-lys *POISON* Money. Carry the root for financial gain. Place in cash registers to increase business. Bodhi -- aka bo-tree, peepul tree, pipul Fertility, Protection, Wisdom, Meditation. Boneset -- aka Indian sage, feverwort, sweating plant, teasel, wood boneset Protection. Exorcism. Borage -- Courage. Drink a tea for psychic powers. No matter how difficult the times, borage will always lift spirits. Bracken -- Healing, Rain Magick, Prophetic Dreams. If bracken is burned outside, rain will fall. Place the root under the pillow and solutions to problems will appear in dreams. Also used for fertility and protection. Brazil Nut -- Carry as a talisman for love. Briony -- aka wild hops, wild vine, wood vine, gout root, mad root, snake grape Image Magick, Money, Protection.Often used as a substitute for the rare mandrake root in poppet magick. Money placed near briony root will increase, as long as it is left there. Hang in houses to protect against bad weather. Bromeliad -- aka chameleon star, Earth star Protection, Money. Grow in the home for protection, money, and luxuries. Broom -- aka besom, basam, broom tops, Irish broom, Scotch broom *POISON* Purification, Protection, Wind Spells, Divination. Makes an excellent ritual or handfasting broom. Use to create sacred space. Blooms bring good fortune and plenty. To raise the winds, throw broom into the air while invoking the spirits of the Air. To calm the winds, burn broom and bury the ashes. An infusion sprinkled throughout the house exorcises poltergists. Buchu -- aka buku, oval buchu, short buchu Psychic Powers, Prophetic Dreams. Drink to foretell the future. Mix with frankincense and burn before sleep for prophetic dreams (only a small amount in the bedroom). Buckthorn -- Protection, Exorcism, Wishes, Legal Matters. Buckwheat -- aka beechwheat, French wheat, Saracen corn Money, Protection. Form magick circles with the flour for protection. Add a few grains to money incenses and keep in the kitchen to guard against poverty. Burdock -- aka beggar's buttons, cockleburr, great burdock Protection, Healing Cactus -- Protection, Chastity. Cactus spines are used in witches bottles for protection. Carry or bury to release their protective powers. Calamus -- aka myrtle flag, sweet cane, sedge, sweet flag, sweet grass, sweet sedge *POISON* Luck, Healing, Money, Protection. String beads and wear for healing. Use powdered root in incenses and sachets. Used to strengthen and bind spells. Growing the plant brings good luck. Camellia -- Brings riches and luxury. Place fresh blossoms in water on altar during money and prosperity riches. Camphor -- Chastity, Health, Divination. A bag of camphor hung around the neck keeps flus and colds away. Use in divinatory incenses. Caraway -- Protection, Lust, Health, Anti-Theft, Mental Powers. Any object which holds some caraway seeds is theft-free. Induces lust when baked into breads, cookies, or cakes. The seeds strengthen the memory. Cardamom -- Lust, Love. Add ground seeds to warmed wine for a quick lust potion. Bake in apple pies and add to sachets and incenses to induce love. Carnation -- aka jove's flower, gillies, gilliflower, sops-in-wine Protection, Strength, Healing. Use in all-purpose protection spells. Gives strength and energy to the sick. Place fresh carnation on the altar during healing spells and add dried flowers to healing sachets and incenses. Carob -- aka caroba, carobina, carobinha Protection, Health. Wear or carry. Carrot -- Fertility, Lust. Women should eat the seeds to become pregnant. Eat carrots to promote lust and cure impotence. Cascara Sagrada -- aka sacred bark Legal Matters, Money, Protection. Sprinkle infusion around your home before going to court. It will help you win your case. Cashew -- Money. Castor -- aka palma christi, palms christi root *POISON* Protection. Catnip -- aka catmint, cat's wort, field balm, nepeta, nip, catnep Cat Magick, Love, Beauty, Happiness. Give to your cat to create a psychic bond between the two of you. Use in love sachets with rose petals. Attracts good spirits and great luck. Used in beauty and happiness spells. Large pressed leaves are used for bookmarks in magickal texts. Mix with dragon's blood in an incense to rid oneself of bad habits or behavioral problems. Cattail -- Lust. Carry if you don't like sex, but want to. Cedar -- Healing, Purification, Money, Protection. The smoke is purifying and chases away bad dreams. Keep a piece in the wallet to draw money and in all money incenses. Add to love sachets and Burn for psychic powers. Celandine -- aka devil's milk, kenning wort, swallow-wort, tetterwort Protection, Escape, Happiness, Legal Matters. Aids in escaping unwarranted imprisonment or entrapment. Wear next to the skin and replace every three days. Cures depression, brings happiness when worn. Wear to court to win the favor of the jury. Celery -- Mental Powers, Lust, Psychic Powers. Chew seeds to aid concentration or in dream pillows to induce sleep. Burned with orris root, seeds increase psychic powers. Eat stalk to induce lust. Centaury -- aka christ's ladder, feverwort Burn to drive off snakes. Chamomile -- aka ground apple, roman camomile, maythn, whig plant Money, Sleep, Love, Purification. Sprinkle around property to remove curses and spells cast against you. Cherry -- aka sweet cherry Love, Divination. Chestnut -- Love. Chickweed -- aka adder's mouth, starweed, starwort, stitchwort, tongue grass Fertility, Love Chicory -- aka succory, wild cherry, wild succory Removing Obstacles, Invisibility, Favors, Frugality. Carry to remove all obstacles that might crop up in your life. Rub juice on body to obtain favors from great persons. Chili Pepper -- aka red pepper Fidelity, Hex Breaking, Love. China Berry -- *POISON* Carry seeds for luck and to bring change into your life. Chrysanthemum -- aka mum Protection. Promotes mental health. Use in rituals of death and dying. Cinnamon -- aka sweet wood Spirituality, Success, Healing, Power, Psychic Powers, Lust, Protection, Love. Empower with tourmaline. Enhancing skills of prophecy through channeling, working through an oracle, or through divination. When burned as an incense, it raises high spiritual vibrations. Aids in healing. Draws money. Stimulates psychic power and produces protective vibrations. Great in sachets and amulets. Cinquefoil -- aka crampweed, five finger blossom, five finger grass, goosegrass, silverweed, potentilla The five points of the leaves represent love, money, health, power, and wisdom. If carried, all these will be granted. Good for love magick and to promote an abundant harvest. Contains the energy to manifest one's ideas. An ingredient in mediaeval flying ointments. Citron -- Psychic Powers, Healing. Clove -- Protection, Exorcism, Love, Money. Burn as an incense. Worn or carried, they attract the opposite sex. Clover -- aka shamrock, trefoil, three-leaved grass Protection, Love, Money, Fidelity, Exorcism, Success. Coconut -- Purification, Protection, Chastity Coffee -- Ritual stimulant. Aztec, Mayan, and Incan peoples all revered the berry of this plant. Cohosh, Black -- aka black snake root, bugbane, squawroot Love, Courage, Protection, Potency Coltsfoot -- aka ass's foot, British tobacco, bull's foot, butterbur, Coughwort Use in love sachets and spells of peace and tranquility. Love, Visions. Columbine -- Love, Courage. Rub on hands for courage and daring or carry it. Seeds can be used in love perfume. Pulverize seeds and rub on hands to attract love. Practitioners of animal magick, those working with eagles (aquila=eagle), or those wishing to invoke the protection of deity through the realm of birds may work with this herb. Comfrey -- aka boneset, bruisewort, knit back, knit bone, slippery root Good for any magickal healing. Worn or carried, it ensures safety during travel. The root is used in money spells. Copal -- Love, Purification. Added to love and purification incenses. A piece of copal can represent the heart in poppets. Coriander -- aka Chinese parsley, cilantro Love, Health, Healing. Used in love sachets and spells. Add the powdered seeds to warm wine to make a lust potion. Protects gardeners and all in their households. Gather at harvest and hang in the home for protection. The seeds promote peace between people who are unable to get along. Use it in drinks or crushed in incense. Helps one find romance and is an excellent herb to add to an elixir when the Great Rite is celebrated. Throw instead of rice at handfastings or add to the handfasting cake. Corn -- aka maize, seed of seeds, sacred mother Protection, Luck, Divination. Represents fertility and is used to invoke Mother Earth. Used at Mabon and Lammas in ritual, it teaches the mystery of life, death, and rebirth. Cornflower -- aka blue bottle, bluecap, bluet Patron herb of herbalists. Blue leaves make a lovely ink for Book of Shadows. Cotton -- Luck, Healing, Protection, Rain, Fishing Magick. Place cotton on an aching tooth to take away pain. Planted or scattered in yard, it keeps ghosts away. Burning cotton causes rain. Cowslip -- aka arthritica, fairy cup, lady's key, buckles Healing, Youth, Treasure Finding. Place it beneath the front porch to discourage visitors. Preserves youth, and restores it when lost. The odor is healing, and holding a bunch will locate hidden treasure. Sacred to Freya, and can be used to invoke her. Some believe the path to Freya will lead one to earthbound treasures and abundance. Crocus -- Burn in a censor with alum to see a vision of the thief who robbed you. Love, Visions. Cucumber -- aka cowcucumber Chastity, Healing, Fertility. Cooling and soothing to the psyche. Slices laid on eyes assists astral travel. Fruit hinders lust. Peel on head relieves pain of headache. Cumin -- aka cumino, cumino aigro Protection, Fidelity, Exorcism, Anti-theft. Burned with frankincense for protection and scattered on the floor (sometimes with salt) to drive out evil. Used in love spells. When given to a lover, promotes fidelity. Cumin seed steeped in wine makes a lust potion. Curry -- Protection. Burn the specific plant, not the mixture of spices, to repel evil at night. Cyclamen -- aka groundbread, sow bread, swine bread Fertility, Protection, Happiness, Lust. Add to handfasting or wedding cake. Cypress -- aka Tree of Death Longevity, Healing, Comfort, Protection. Wear at time of crisis. Taken to funerals, eases grief and calms mind. Throw a sprig of cypress into a grave to give the deceased luck and love in the hereafter. Daffodil -- Love, Fertility, Luck Daisy -- Lust, Luck Damiana -- Lust, Love, Visions Dandelion -- Divination, Wishes, Calling Spirits Deerstongue -- Lust, Psychic Powers Dill -- Protection, Money, Lust, Luck Dock -- Healing, Fertility, Money Dogbane -- Use the flowers in magickal love mixtures. Dogwood -- Wishes, Protection. Keeps writings and meetings secret, therefore is an excellent herb for the Book of Shadows. An oil of the flowers is priceless in sealing letters and keeping unintended eyes from secret writings. Powdered flowers and dried bark may be used as incense. Place the sap of the dogwood onto a handkerchief on Midsummer Eve. This will grant any wish you have as long as you carry it faithfully. Dogwood leaves or wood can be placed in protective amulets. Dragon's Blood -- Love, Protection, Exorcism, Potency. Used in homemade magickal inks. Burn the resin to entice errant lovers to return. A stick placed under the pillow will cure impotency. A powerful protectant when sprinkled around the house or burned as incense. A pinch added to to other incenses will increase their potency. Dulse -- Lust, Harmony Dutchman's Britches -- Love Ebony -- Protection, Power Echinacea -- Strengthening Spells Edelwiess -- Invisibility, Bullet-Proofing Elder -- Exorcism, Protection, Healing, Prosperity, Peace Elecampane -- Love, Protection, Psychic Powers Elm -- Love Endive -- Love, Lust Eucalyptus -- Healing, Protection Eyebright -- Mental Powers, Psychic Powers Fennel -- Protection, Healing, Purification Fenugreek -- Money Fern -- Rain Making, Protection, Luck, Riches, Health, Exorcism Feverfew -- Protection Fig -- Divination, Fertility, Love Figwort -- Health, Protection Flax -- Money, Protection, Beauty, Psychic Powers, Healing Fleabane -- Exorcism, Protection, Chastity Foxglove -- aka deadmen's bells, dog's finger, fairy thimbles, fox bells, witches bells, witches thimbles *POISON* Protection. Brings true magick to your garden by attracting faeries and plant devas. Assists in communion with the Underworld. Collect the juice of the herb under a favorable moon sign. Mark the very center of your circle with the juice and wait there to see the realm of faery. Frankincense -- Protection, Exorcism, Spirituality Gardenia -- Love, Peace, Healing, Spirituality Garlic -- Protection, Healing, Exorcism, Lust, Anti-Theft Gentian -- Love, Power Geranium -- Fertility, Love, Health, Protection Ginger -- Love, Money, Success, Power Ginseng -- Love, Wishes, Healing, Beauty, Protection, Lust Goats Rue -- Healing, Health Goldenrod -- Money, Divination Goldenseal -- Healing, Money Gorse -- Protection, Money Gotu Kola -- Meditation Gourd -- Protection Grain -- Protection Grape -- Fertility, Garden Magick, Mental Powers, Money Grass -- Psychic Powers, Protection Ground Ivy -- Divination Groundsel -- Health, Healing Hawthorn -- Fertility, Chastity, Fishing Magick, Happiness Hazel -- Luck, Fertility, Anti-Lightning, Protection, Wishes Heather -- aka heath Protection, Rain Making, Luck. Robert Graves said heather is a suitable tree for the inititation of Scottish witches. Brings one in touch with divinity and increases physical beauty. Wearing an amulet of the wood will bring a long physical life and put one in touch with the truly immortal soul. A valuable herb for those who pursue initiatory paths. Unfolds the inner self. Carried, it will guard against rape or other violent crimes or just to bring good luck. (White heather is best here.) When burned with fern will attract rain. Heliotrope -- Exorcism, Prophetic Dreams, Healing, Wealth, Invisibility Hellebore, Black -- aka Melampode *Poison* Protection. Provides an aura or mantle of invisibility. The safest use of this herb is to place pieces of the root or dried berries in an amulet or magick pouch. Used to bless farm animals and pets. Good for working with familiars -- but please don't breathe the fumes or ingest! Hemlock -- aka herb bennet, poison parsley, spotted hemlock, water parsley *Poison* Destroys sexual drive. Induces astral projection. Juice rubbed on magickal blades empower and purify them.Used in medievel flying ointments. Hemp -- Healing, Love, Vision, Meditation Henbane -- aka black nightshade, devil's eye, henbells, poison tobacco, hogsbean *Poison* A love-bringing herb when worn. Traditionally used in ointments and brews. Induces delirium. Used with wisdom, it could be an excellent herb for consecrating ceremonial vessels. Attracts hares, therefore would be an excellent herb for those who raise rabbits. Henna -- Healing. Place on forehead to relieve headache. Attracts love if worn near the heart. Protects from illness and from evil eye. A body adornment originating in the Mediterranean. Modern witches use as a ritual adornment, especially for the Great Rite and other important ritual occasions. Henna mixed with olive oil, massaged on the penis at the rising and setting suns promotes virility. Hibiscus -- Lust, Love, Divination Hickory -- Legal Matters High John the Conqueror -- Money, Love, Success, Happiness Holly -- Protection, Anti-Lightning, Luck, Dream Magick. One of the best protective herbs. The wood of the holly is very well suited for the handle of the ritual knife as it both attracts and repels energies. It is powerful when defense is needed in circle while preserving the gentleness within it. Holly water is sprinkled on newborn babies to protect them. Carried by men, it promotes luck. (Ivy is the corresponding plant of luck for women). Decorate the house with it at Yule for good luck. After midnight on a Friday, without making a sound, gather nine holly leaves, preferably from a non-spiny plant (one that has smooth leaves). Wrap these up in a white cloth using nine knots to tie the ends together. Place this beneath your pillow, and your dreams will come true. -- Cunningham's Encyclopedia of Magickal Herbs Honesty -- Money, Repelling Monsters Honeysuckle -- aka goat's leaf, woodbine Money, Psychic Powers, Protection. Ring green candles with honeysuckle flowers to attract money or place them in a vase in the house for the same purpose. Lightly crush flowers and rub on forehead to heighten psychic powers. The extracted oil is best for increasing spiritual sight. It enhances understanding of images and impressions collected in the astral. Connects one with the mysteries of the Cauldron of Cerridwen. In ritual, dried, powdered bark may be used as incense. Hops -- Healing, Sleep Horehound -- Protection, Mental Powers, Exorcism, Healing Horse Chestnut -- Money, Healing Horseradish -- Purification, Exorcism Horsetail -- Snake Charming, Fertility Houseleek -- Luck, Protection, Love Huckleberry -- Luck, Protection, Dream Magick, Hex Breaking Hyacinth -- Love, Protection, Happiness Hydrangea -- Hex Breaking Hyssop -- Purification, Protection Indian Paint Brush -- Love Iris -- Purification, Wisdom Irish Moss -- Money, Luck, Protection Ivy -- Protection, Healing Jasmine -- Love, Money, Prophetic Dreams Jobs Tears -- Healing, Wishes, Luck Joe Pye Weed -- Love, Respect Juniper -- Protection, Anti-Theft, Love, Exorcism, Health Kava-Kava -- Visions, Protection, Luck Knotweed -- Binding, Health Lady's Mantle -- Love Lady's Slipper -- Protection Larch -- Protection, Anti-Theft Larkspur -- Health, Protection Lavender -- Love, Protection, Sleep, Chastity (with rosemary), Longevity, Purification, Happiness, Peace Leek -- Love, Protection, Exorcism Lemon -- Longevity, Purification, Love, Friendship Lemongrass -- Repel Snakes, Lust, Psychic Powers Lemon Verbena -- Purification, Love Lettuce -- Chastity, Protection, Love, Divination, Sleep Licorice -- Love, Lust, Fidelity Life Everlasting -- Longevity, Health, Healing Lilac -- Exorcism, Protection Lily -- Protection, Breaking Love Spells Lily of the Valley -- Mental Powers, Happiness Lime -- Healing, Love, Protection Linden -- Protection, Immortality, Luck, Love, Sleep Liverwort -- Protection, Love Loosestrife -- Peace, Protection Lotus -- Protection, Lock-Opening Lovage -- Love Love Seed -- Friendship, Love Lucky Hand -- Employment, Luck, Protection, Money, Travel Mace -- Psychic Powers, Mental Powers Magnolia -- Fidelity Maidenhair -- Beauty, Love Male Fern -- Luck, Love Mallow -- Love, Protection, Exorcism Mandrake -- aka herb of Circe, witches mannikin, wild lemon, sorceror's root *Poison* Protection, Love, Money, Fertility, Health. Few herbs are as steeped in magickal lore as mandrake. It is associated with the most intense practices of magick and especially well suited for love magick. It has great power as a visionary herb. It empowers visions, providing the impetus to bring them into manifestation. It intensifies the magick of any situation. A whole mandrake root placed in the home will bring protection and prosperity. Carried, it will attract love. The human shape of the root makes it well suited for use as poppet. (Substitute ash roots, apples, root of the briony, or the American may apple if the cost is prohibitive). To activate a dried mandrake, place it on the altar undisturbed for three days. Then place it in warm water overnight. The root will then be activated and ready for any magickal purpose. Maple -- Love, Longevity, Money Marigold -- aka calendula, drunkard, marybud, marygold Protection, Prophetic Dreams, Legal Matters, Psychic Powers. Aids visionary sight and helps find stolen property by producing a vision of the thief in the mind and the location of the stolen property. Dried petals may be used alone or mixed with dried incense to consecrate divination tools. Petals may be macerated in sunflower oil to make an oil of consecration. Adds a special, loving magick to rituals of death and dying. Carry marigold petals with a bay leaf to quiet gossip. Marjoram -- Protection, Love, Happiness, Health, Money Mastic -- Psychic Powers, Manifestations, Lust May Apple -- aka American mandrake, duck's foot, hog apple, racoon berry *Poison* Money. Generally used as a substitution for European (true) mandrake. Its uses are practically identical, although the may apple is not related to the true mandrake. Meadow Rue -- Divination Meadowsweet -- Love, Divination, Peace, Happiness Mesquite -- Healing Mimosa -- Protection, Love, Prophetic Dreams, Purification Mint -- Money, Love, Lust, Healing, Exorcism, Travel, Protection Mistletoe -- aka Witches broom, Thunderbesom, Holy wood, Golden bough Protection, Love, Hunting, Fertility, Health, Exorcism. Moonwort -- Money, Love Moss -- Luck, Money Mugwort -- aka Artemis herb, Artemisia, Felon herb, Muggons, Naughty Man, Sailor's Tobacco, St. John's Plant Strength, Psychic Powers, Protection, Prophetic Dreams, Healing, Astral Projection. Use a wash or the oil to consecrate or anoint crystal balls or any tool of divination. Produces visionary dreams and is a prime ingredient in dream pillows. Keeps one safe from dark forces. Protects children. Incense brings protection. Carried, it brings loved ones safely home from journeys. A tonic for the soul, it keeps us aware of our spiritual direction. Burn with sandalwood or wormwood during scrying sessions. A mugwort infusion sweetened with honey will enhance divination. Carried, it also increases lust and fertility. Mulberry -- Protection, Strength Mullein -- Courage, Protection, Health, Love, Divination, Exorcism Mustard -- Fertility, Protection, Mental Powers Myrrh -- Protection, Exorcism, Healing, Spirituality Myrtle -- Love, Fertility, Youth, Peace, Money Nettle -- Exorcism, Protection, Healing, Lust Norfolk Island Pine -- Protection, Anti-Hunger Nuts -- Fertility, Prosperity, Love, Luck Oak -- Protection, Health, Money, Healing, Potency, Fertility, Luck Oats -- Money Olive -- Healing, Peace, Fertility, Potency, Protection, Lust Onion -- Protection, Exorcism, Healing, Money, Prophetic Dreams, Lust Orange -- Love, Divination, Luck, Money Orchid -- Love Oregon Grape -- Money, Prosperity Orris -- aka Florentine Iris, Queen Elizabeth Root Love, Protection, Divination. The root is used to find and hold love. The root powder is known as Love Drawing Powder. Protects from evil spirits. The roots and leaves hung in the house and added to the bath are good for personal protection. Make a pendulum with a small piece of the wood. Palm, Date -- Fertility, Potency Pansy -- Love, Rain Magick, Love, Divination Papaya -- Love, Protection Parsley -- Love, Protection, Purification Passion Flower -- Peace, Sleep, Friendship Patchouly -- Money, Fertility, Lust Pea -- Money, Love Peach -- Love, Exorcism, Longevity, Fertility, Wishes Pear -- Lust, Love Pecan -- Money, Employment Pennyroyal -- Strength, Protection, Peace Peony -- Protection, Exorcism Pepper -- Protection, Exorcism Peppermint -- Purification, Sleep, Love, Healing, Psychic Powers Periwinkle -- aka Sorcerer's Violet, Blue Buttons *POISON* Patron herb of Wiccans. Love, Lust, Mental Powers, Money, Protection. Best when gathered when the moon is one night old, nine nights old, 11 nights old, 13 nights old, or 30 nights old. The dried flowers may be added to any magickal mixture to enhance the working. Banishes negative energy. Makes one feel desirable. Add dried flowers or root to amulets to bring necessary changes to one's life to attract a loving partner. Plant on graves of children. Helps grieving parents heal from their loss. Keeps memory of lost child alive without unhealthy attachments. Persimmon -- Healing, Lust Pimento -- Love Pine -- Healing, Fertility, Protection, Exorcism, Money Pineapple -- Luck, Money, Chastity Pistachio -- Breaking Love Spells Plum -- Healing Poke -- Courage, Hex Breaking Pomegranate -- Divination, Luck, Wishes, Wealth, Fertility Poplar -- Money, Flying Poppy -- Fertility, Love, Sleep, Money, Luck, Invisibility Potato -- Image Magick, Healing Prickly Ash -- Love Primrose -- Protection, Love Purslane -- Sleep, Love, Luck, Protection, Happiness Quince -- Protection, Love, Happiness Radish -- Protection, Lust Ragweed -- Courage Raspberry -- Protection, Love Rattlesnake Root -- Protection, Money Rhubarb -- Protection, Fidelity Rice -- Protection, Fidelity Roots -- Protection, Power, Divination Rose -- Love, Psychic Powers, Healing, Love, Divination, Luck, Protection Rosemary -- Protection, Love, Lust, Mental Powers, Exorcism, Purification, Healing, Sleep, Youth Rowan -- Psychic Powers, Healing, Protection, Success Rue -- Healing, Health, Mental Powers, Exorcism, Love Rye -- Love, Fertility Saffron -- Love, Healing, Happiness, Wind Raising, Lust, Strength, Psychic Powers Sage -- Immortality, Longevity, Wisdom, Protection, Wishes Sagebrush -- Purification, Exorcism St. John's Wort -- Health, Power, Protection, Strength, Love, Divination, Happiness Sandalwood -- Protection, Healing, Exorcism, Spirituality Sarsaparilla -- Love, Money Sassafras -- Health, Money Savory, Summer -- Mental Powers Skullcap -- Love, Fidelity, Peace Senna -- Love Sesame -- Money, Lust Shallot -- Purification Skunk Cabbage -- Legal Matters Slippery Elm -- Halts Gossip Snakeroot -- Luck, Money Snakeroot, Black -- Love, Lust, Money Snapdragon -- Protection Solomon's Seal -- Protection, Exorcism Sorrel Wood -- Healing, Health Southern Wood -- Love, Lust, Protection Spanish Moss -- Protection Spearmint -- Healing, Love, Mental Powers Spiderwort -- Love Spikenard -- Love Star Anise -- Psychic Powers, Luck Strawberry -- Love, Luck Sugar Cane -- Love, Lust Sunflower -- Fertility, Wishes, Health, Wisdom Sweetgrass -- Calling Spirits Sweetpea -- Friendship, Chastity, Courage, Strength Tansy -- Health, Longevity Tea -- Riches, Courage, Strength Thistle -- Strength, Protection, Hex Breaking, Healing Thistle, Holy -- Purification, Hex Breaking Thistle, Milk -- Snake enraging Thyme -- Health, Healing, Sleep, Psychic Powers, Love, Purification, Courage Toadflax -- Protection, Hex Breaking Toadstool -- Rain Making Tobacco -- Healing, Purification Tonka Bean -- aka Coumaria Nut, Tonqua, Tonquin Bean *DO NOT CONSUME. BELIEVED TO CAUSE CANCER* Love. Money. Courage. Wishes. Used extensively in love sachets and mixtures, and carried to attract love. Also worn or carried to attract money, bring luck, grant courage, and ward off illness. Turmeric -- Purification Turnip -- Protection, Ending Relationships Uva Ursa -- Psychic Workings Valerian -- Love, Sleep, Purification, Protection Vanilla -- Love, Lust, Mental Powers Venus Flytrap -- Protection, Love Vervain -- The Witches Herb. Love, Protection, Purification, Peace, Money, Youth, Chastity, Sleep. Healing. Empowers any magick, especially love spells. Enhances the dreaming process and is recommended for dream quests. Used to consecrate and empower any ritual tools. Protects from negative emotions and depression. Used in house and home blessings. Turns back negativity. In love spells: add to recipes to attract mates, find true love, achieve sexual fulfilment, work sexual magick, an for bringing extra bliss on the wedding night. The herb of poets, singers, and bards. Inspires artistry. Instills a love of learning. Best when gathered at Midsummer. Vetch, Giant -- Fidelity Vetivert -- Love, Hex Breaking, Luck, Money, Anti-Theft Violet -- Protection, Love, Lust, Luck, Wishes, Peace, Healing Walnut -- Health, Mental Powers, Infertility, Wishes Wheat -- Fertility, Money Willow -- Love, Divination, Protection, Healing Wintergreen -- Protection, Healing, Hex Breaking Witch Hazel -- Protection, Chastity Wolf's Bane -- see Aconite Wood Rose -- Luck Woodruff -- Victory, Protection, Money Wormwood -- Psychic Powers, Protection, Love, Calling Spirits Yarrow -- Courage, Love, Psychic Powers, Exorcism Yellow Evening Primrose -- Hunting Yerba Mate -- Fidelity, Love, Lust Yerba Santa -- Beauty, Healing, Psychic Powers, Protection Yucca -- Transmutation, Protection, Purification" :itemmap (itemmap :Belladonna (item :name "Belladonna" :reference "Optometrists and ophthalmologists use atropine for pupil dilation in eye examinations." :summary "* Deadly Nightshade - Plant with highly toxic and hallucinogenic berries. * Belladonna is one of the most toxic plants found in the Western hemisphere. Children have been poisoned by eating as few as three berries. Ingestion of a leaf of the Belladonna can be fatal to an adult. The root of the plant is generally the most toxic part.") :Cannabis (item :name "Cannabis" :summary "Marijuana and Hashish plant.") :Curare (item :name "Curare") "Fertility Herb" (item :name "Fertility Herb") "Fly Agaric" (item :name "Fly Agaric" :summary "Hallucinogenic Mushroom") :Hemlock (item :name "Hemlock") :Henbane (item :name "Henbane" :summary "Hallucinogenic Plant which can be toxic (hen killer)") :Holly (item :name "Holly" :summary "* Holly is a shrub or tree growing up to 25m high. Holly berries are mildly toxic and will cause vomiting and/or diarrhea when ingested by people. However they are extremely important food for numerous species of birds, and also are eaten by other wild animals. * The wood is heavy, hard and white; one traditional use is for chess pieces, with holly for the white pieces, and ebony for the black. * The leaves can be used to make caffeine rich teas.") :Kava (item :name "Kava" :summary "Tranquilizing Leaves") :Lotus (item :name "Lotus") :Mescal (item :name "Mescal") "Hallucinogenic Bean" (item :name "Hallucinogenic Bean") :Mistletoe (item :name "Mistletoe" :summary "* A parasitic plant on the branches of a tree or shrub. The appearance and nature of the fruit's content is very similar or suggestive of human semen and is therefore popular in fertility rites (e.g. kissing under the mistletoe). * It can be used in treating circulatory and respiratory system problems, and cancer. * It is popularly thought to be an antidote for [Poison], though it is sometimes poisonous itself.") "Opium Poppy" (item :name "Opium Poppy" :summary "Flowering plant used in Opium and poppy seeds.") :Orchid (item :name "Orchid") :Peyote (item :name "Peyote" :summary "Hallucinogenic Cactus") :Tobacco (item :name "Tobacco") :Wolfsbane (item :name "Wolfsbane" :summary "* Wolfsbane (aka Aconitum) is a genus of flowering plant belonging to the buttercup family. * Aconitine is a potent neurotoxin. * Oral Poisoning - In a few minutes ingesting a poisonous dose of aconite, marked symptoms supervene. There is a sensation of burning, tingling, and numbness in the mouth, and of burning in the abdomen. After about an hour, there is severe vomiting with much motor weakness. The pulse and respiration steadily fail, death occurring from asphyxia. As in strychnine poisoning, the patient is conscious and clear-minded to the last. The only post-mortem signs are those of asphyxia. The treatment is to empty the stomach by tube or by inducing extreme vomiting. * Contact Poisoning - It may also be easily absorbed through the skin, and poisoning may occur through this route simply by picking the leaves without gloves. The toxin in the sap is absorbed through the skin. From practical experience, the sap oozing from eleven picked leaves will cause cardiac symptoms for a couple of hours. Tingling will start at the point of absorption, and extend up the arm to the shoulder, after which the heart will start to be affected. The tingling will be followed by numbness which is fairly unpleasant."))) :Trees (section :name "Trees" :itemmap (itemmap :Bamboo (item :name "Bamboo") :Birch (item :name "Birch") :Cedar (item :name "Cedar") :Ebony (item :name "Ebony" :summary "* A medium-sized evergreen, reaching 20-25 m tall. The fruit is a small berry 2 cm diameter, similar to a small persimmon. * Ebony heartwood is one of the most intensely black woods known, which, combined with its very high density (it is one of the very few woods that sink in water), fine texture, and ability to polish very smoothly, has made it very valuable as an ornamental wood.") :Larch (item :name "Larch") :Pine (item :name "Pine"))) :Spices (section :name "Spices" :itemmap (itemmap :Salt (item :name "Salt" :summary "A symbol of purity"))) "Fantastic Plants" (section :name "Fantastic Plants" :itemmap (itemmap "Black Lotus" (item :name "Black Lotus" :image "Fantasy/BlackLotus.jpg" :reference "* Blue Lotus - Recent studies have shown Nymphaea caerulea to have psychedelic properties, and may have been used as a sacrament in ancient Egypt and certain ancient South American cultures. Dosages of 5 to 10 grams of the flowers induces slight stimulation, a shift in thought processes, enhanced visual perception, and mild closed-eye visuals." :summary "* Black Lotus is a medium sized blue/black flower that has strong hallucinogenic and magical properties. Eating the petals of the Lotus creates pleasant hallucinations that are strongly addictive over time. The greatest danger of eating lotus petals is that the potency grows from mild euphoria at the tip of the petal to intense hallucinations, madness, and death near the flower. The trick is to only eat the amount that will give you the effect you desire, but the flower is hard to get and the temptation is strong to go back for more. The desperately addicted Lotus-Eaters eventually use too much and go mad or die. * Black Lotus grows only in deep swamps such as those near the city of [Fiaqua] (the Flower on the Water) and must be cultivated to gain its full potential. The Lotus retains its potency for about a month after picking, but the petals wither shortly after being removed, so the flower is typically kept intact despite the dangers.") "Black Rose" (item :name "Black Rose" :reference "* The Black Rose blooms once more! - LeBlanc, Runeterra * Another rose for the garden. - LeBlanc, Runeterra" :summary "* Black roses have often been associated with mystery, hatred, death, dishonor, tragic romance, and the supernatural in different cultures and traditions. In literature and art, they frequently symbolize tragic love or the darker aspects of human emotions. Despite their associations with darkness, black roses can also convey elegance, sophistication, and rebirth in some contexts. This dual symbolism has contributed to their enduring allure and cultural significance." :titles "Rosa Black Baccara") :Devilroot (item :name "Devilroot" :summary "* A rare species of plant recognizable by its forked leaves and crimson forked root. The powdered root is a deadly poison.") :K'Tallah (item :name "K'Tallah" :summary "* A rare swamp plant with gray-green leaves. It is also a highly addictive euphoric that can provide visions of the near future. After a half dozen uses, the user becomes hopelessly addicted and must consume a leaf each day or suffer horrible and ultimately fatal consequences. The first symptoms are stomach pains and the uneasy feeling that some is growing within. Next the snakelike tentrils of new K'Tallah plants sprout from the eyes, ears, and mouth. Death follows quickly. Heavy users, arguably the most wretched folk in existence, claim that leaves plucked from the body of a deceased addict are especially savory.") :Mandrake (item :name "Mandrake" :summary "* A long leaved (nearly a foot long) dark green plant with small greenish-yellow or purple bell-shaped flowers that grow on 3-4 inch stalks. It is best known for the large brown root, running 3 to 4 feet into the ground sometimes single and sometimes forked into two or three distinctive branches which gives the plant a rough resemblance to that of a human monster form. * It was supposed to grow under the feet of a hanged man where his semen dripped on to the earth; this would appear to be the reason for the methods employed by the alchemists who 'projected human seed into animal earth'. It could only be pulled from the ground after performing the necessary rituals. It was advisable to put wax in the ears before one attempted to do this: the mandrake would scream when pulled free and this could cause deafness. * A whole Mandrake root placed in the home, will give the house protection, fertility, and prosperity. Also, where there is Mandrake, demons cannot abide. Money placed beside the root is said to multiply. It was also recommended for discovering treasures, and as an ingredient for charm for pregnancy.") :Morphious (item :name "Morphious" :summary "* A parasitic plant that grows amidst the branches of trees and bushes. The frangrance it produces causes intoxication, drowsiness, and sleep. Those who fall asleep under Morphious will not awake while they can smell the lovely Morphious. Eventually, they die and decompose feeding the plants that the Morphious preys upon. Morpious can be distilled into even more potent intoxicants, sleeping potions and powers." :titles "Euphorica, Mantrap") :Skullcap (item :name "Skullcap" :summary "* A powerful hallucinogenic mushroom with a bone-white cap. It is said to be the cause of the Wildmen's irrational behavior. * Ingesting small amounts cause highly irrational and often violent behavior. Consuming a full dram is usually fatal in minutes.") "Snow Lily" (item :name "Snow Lily" :summary "* A delicate white flower that grows only in the coldest climates. * Consuming it delays the onset of frostbite. Brewed into an elixir, it allows the consumer's body temperature to fall to below freezing with no ill effects.") :Stranglevine (item :name "Stranglevine") :Stenchroot (item :name "Stenchroot" :summary "* A tuber with horribly, noxious smelling sap. When gathered into clay pots, the Stenchroot sap can make nausea inducing grenades.") :Tantalus (item :name "Tantalus" :summary "* A small leafy plant wih a tuberous, heart-shaped root. A powder formed from the dried root can make a powerful aphrodisiac.")) :unitmap (unitmap :Arborian (unit :name "Arborian" :titles "Treefolk, Verdure") :Creep (unit :name "Creep" :summary "* The Creep is a vine growth that lives in [Jungle] Terrain that is not hostile per se, but it's aggressive growth can surround, entrap, and immobilize even giant creatures over time. It often lives in symbiosis with opportunist predators. Fortunately, the Creep only grows during the day.") "Creeping Mold" (unit :name "Creeping Mold" :reference "* I'm a goner already, Daddy. Ain't I? I've got that stuff out of the meteor on me... and I'm gone. Ain't I? - Jordy, Creepshow") :Deadwood (unit :name "Deadwood" :summary "* A corrupted spirit that resembles a twisted humanoid composed of dead decaying wood. Deadwood is created when a woodland area is exposed to powerful corruption. Once established in an area, it begins to absorb life energies from all living creatures around it. All vegetation around will become warped and withered. Living creatures will fall sick developing strange ailments. Meanwhile, the Deadwood grows in power. * Deadwood can control plant life and unliving wood. They cannot be destroyed except by enchanted weapons, fire, or by starving it by destroying the surrounding plant life." :titles "Plant Demon, Wood Grue") "Giant Fisher Plant" (unit :name "Giant Fisher Plant" :summary "* A huge creeper vine plant that covers mulitple nearby trees and has enormous blossoms hanging from high branches. The plant attacks living creatures by dropping vines from the bottom of the blossums that entwine and drag prey into the canaopy above where they die of strangulation or dehydration and are eventually digested. Bones and bits of carcass are dropped below to lure more prey.") :Shambler (unit :name "Shambler" :summary "* An animated pile of decaying vegetation.") :Slime (unit :name "Slime") "Strangle Vine" (unit :name "Strangle Vine" :summary "* A large, creeper vine that waits attacks like a constrictor snake. They typically hang in jungles or caves and strike from above or slowly entwine immobile (e.g. sleeping) targets on the ground.") :Triffid (unit :name "Triffid") "Venus Flytrap, Giant" (unit :name "Venus Flytrap, Giant")))))) (func chapter_microorganisms : base/chapter (chapter :name "Microorganisms" :sectionmap (sectionmap :Diseases (section :name "Diseases" :itemmap (itemmap "Bubonic Plague" (item :name "Bubonic Plague") :Ebola (item :name "Ebola") :Gangrene (item :name "Gangrene") :Prion (item :name "Prion") "Small Pox" (item :name "Small Pox"))) "Fantastic Diseases" (section :name "Fantastic Diseases" :itemmap (itemmap "Corpse Rot" (item :name "Corpse Rot" :summary "* Disease transmitted by the bite of Ghouls/Necrophages. Symptoms include fever, severe weakness, unconsciousness, and a gradual blackening and swelling of the limbs starting at the site of the wound and spreading across the body. The disease only affects humans") "Swamp Fever" (item :name "Swamp Fever" :summary "* A water-borne disease appearing only in hot weather. It causes irrational behavior, constant thirsting and a tendency to lean to one side while walking or standing. The irrational behavior gradually becomes permanent raving madness.") :Yakuk (item :name "Yakuk" :summary "* A disease common in jungle regions, it causes the gradual loss of sight, hearing, smell, taste, and speech, one at a time over a 2 week period. The effect becomes permanent but is not fatal, though the sensory deprivation usually ends in madness.") "Yellow Tinge" (item :name "Yellow Tinge" :summary "* An infectious disease that affects water breathers. The victim's gills slowly become clogged with a sticky, yellow secretion that interferes with breathing can kill if not treated.")))))) (func chapter_underground_creatures : base/chapter (chapter :name "Underground Creatures" :sectionmap (sectionmap :Centipedes (section :name "Centipedes" :unitmap (unitmap "Poisonous Centipede" (unit :name "Poisonous Centipede") "Amazonian Giant Centipede" (unit :name "Amazonian Giant Centipede"))) :Worms (section :name "Worms" :unitmap (unitmap :Maggots (unit :name "Maggots"))) "Fantastic Underground Creatures" (section :name "Fantastic Underground Creatures" :unitmap (unitmap "Bore Worms" (unit :name "Bore Worms" :reference "* Bring me... the Bore Worms. No! Not the BORE WORMS! - Klytus and Princess Aura, Flash Gordon" :summary "* Small worms that dig through flesh as easily as earth. They are attracted to burrowing creatures.") "False Hydra" (unit :name "False Hydra" :summary "* An insane monster that grows under towns can erase memories. It is said that it is born of lies. Perhaps it is a [Curse].") "Land Eel, Giant" (unit :name "Land Eel, Giant" :summary "* Giant, sightless creatures related to the Giant Moray Eel, these creatures burrow underground." :titles "Land Kra") "Slug, Giant" (unit :name "Slug, Giant") "Snail, Giant" (unit :name "Snail, Giant") "Sand Worms" (unit :name "Sand Worms")))))) (func chapter_humanoids : base/chapter (chapter :name "Humanoids" :sectionmap (sectionmap :Humans (section :name "Humans" :unitmap (unitmap "Human Female" (unit :name "Human Female" :summary "* Their extra [Mind] represents their extra need to work the system instead of using force. * Their extra [Will] represents their ability to endure hardship without breaking." :mind "6:1" :will "6:1" :mass "60kg") "Human Male" (unit :name "Human Male" :mind "5:1" :will "5:1" :mass "80kg")))))) (func chapter_humanoids_fantastic : base/chapter (chapter :name "Humanoids, Fantastic" :summary "This book subscribes to a more nuanced version of humanoid creatures than the classic Elves and Dwarves: * Like Great Danes and Poodles are just dogs that have rapidly changed in the face of selective breeding, these beings are still human. * They have minor differences in abilities, but these are cultural. * In this book, their physical and cultural differences are meant to be analogies for modern cultural differences and intolerance. * Languages: ** Each nation has its own language. Most travellers learn many languages in addition to tradespeak. ** Tradespeak - Merchants have created this simple language to facilitate trade. It is a very limited language, but can be used for basic communication if there is no alternative. It uses a simple format with no plurals, conjegation or tense: {Adjective(s)} {Subject Noun} {Adverb(s)} {Verb} {Adjective(s)} {Object Noun}. Examples: Trustworthy me offer 10 healthy sheep. Honorable you please each pay 20 silver. ** Thieves' Cant - A variant on Tradespeak that emphasizes secret or silent communication to mask criminal activity." :sectionmap (sectionmap :Claymores (section :name "Claymores" :summary "* Claymores are a group of mostly female mercenary who wield large Claymore swords. The are tasked with killing demonic Yoma or die trying. * Creation - The Claymores are created to fight the Demonic Yoma. By consuming demon flesh and blood into humans, they are able to create a hybrid that is faster than the source Yoma with their original human combat training and intelligence. * Appearance - The hybridization process changes the human's hair to a light-blond or white, their eyes to silver, and sometimes they develop elf-like ears. * Skills - Even without activating their Yoki power, Claymores are highly skilled fighters with strength and speed exceeding human abilities. * Powers - Claymores are stronger than typical humans and can smell Yoma. By activating the Yoki power within them they can heal themselves or increase their abilities. However, each time they use Yoki power, that power increases until they become like Yoma themselves. As their Yoki power grows, the Claymore undergoes a physical transformation, beginning with their eyes turning gold, at 10% of their power, their faces transforming at 30%, and their bodies changing at 50% by which time they closely resemble Yoma themselves. * Male Claymores - Claymores used to be of both genders, but all the males quickly lost control of their Yoma power and were killed or became Awakened Beings. It is thought that the act of using Yoma powers is similar to sexual satisfaction, so males were unable to resist awakening." :titles "Silver-Eyed Witch" :itemmap (itemmap "Black Card" (item :name "Black Card" :summary "* When a Claymore can no longer control the Yoma power inside and it needs to be put down, it sends its card to another Claymore to finish the job.")) :unitmap (unitmap "Awakened Being" (unit :name "Awakened Being" :summary "* Claymores are in danger of losing control of their powers if they activate more than 80% of their demon strength, changing them into a form of yoma called an 'Awakened Being'. The majority of Claymores are female, as human males who are changed to hybrids tend to 'awaken' more quickly. In an attempt to avoid this fate, Claymores will ask a friend, usually another Claymore, to kill them if they begin to awaken. * Change - When a Claymore's Shadow or Beast exceeds its Spirit it becomes an awakened being. * Physicality - An Awakened Being is a terrifying monstrosity with awesome power and speed. They can also transform their bodies at will, often becoming gigantic and growing weapons from their bodies. * Mentality - Awakened Beings are mentally deranged and often confuse people with those from their memories. They often don't understand that they have changed at all." :titles "Voracious Eater") :Clare (unit :name "Clare" :reference "* I'm Clare, number 47. I've taken Teresa's flesh and Ilena's right arm. I'm the one who's going to take...the head of that one horned monster Priscilla. Forgive me but I have to take your soul too. - Clare, Claymore Manga" :summary "* She is the only known Claymore to have taken the flesh and blood of a fellow Claymore rather than that of a Yoma, making her a 3/4 human and 1/4 Yoma, as opposed to 1/2 human and 1/2 Yoma. As such, she was considered weak and was given the last rank of 47. * Yoki Aura Detection - Like Teresa, Clare has the ability to see Yoki auras. This allows her to predict Yoki attacks against her and avoid them. The more powerful the Yoki enemy the easier it is to predict their actions." :titles "Number 47" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul" :unitabilitymap (unitabilitymap "Demonic Defense" (unitability :name "Demonic Defense") "Demonic Perception" (unitability :name "Demonic Perception"))))) :Miria (unit :name "Miria" :titles "Phantom Miria" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul") "Hyper Speed" (unitpower :name "Hyper Speed" :unitabilitymap (unitabilitymap "After Image" (unitability :name "After Image"))))) "Organization, The" (unit :name "Organization, The" :summary "* The term Claymore is an informal one given by common folk. The Claymore warriors are actually part of a group known only as The Organization. The Organization assigns Claymores to missions, takes payment, and provides for the Claymore's basic needs.") :Teresa (unit :name "Teresa" :summary "* Personality - Before Teresa met Clare, she was a merciless, solitary killer who would accept any assignment without complaint. She seemed to enjoy intimidating the townsfolk and made it sound as if the Organization was responsible for sending Yoma to the towns that failed to pay the required fees. * Nickname - She was nicknamed 'Teresa of the Faint Smile' for the faint smiles that graced her face as she effortlessly slaughtered her enemies. * Skills - Teresa is so skillful, that she rarely activates her Yoki power to fight opponents. * Yoki Aura Detection - Like Clare who has taken her flesh, Teresa has the ability to see Yoki auras. This allows her to predict Yoki attacks against her and avoid them. The more powerful the Yoki enemy the easier it is to predict their actions." :titles "Teresa of the Faint Smile, Number 1" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul" :unitabilitymap (unitabilitymap "Demonic Defense" (unitability :name "Demonic Defense") "Demonic Perception" (unitability :name "Demonic Perception"))))) :Yoma (unit :name "Yoma" :summary "* Yoma are demonic beings that can shapechange into the form of humans. If they eat a human they may take their exact form. If they also eat the brain, they have most of the memories of that person. * Size - Yoma are slightly larger than human size. * Stength - All Yoma are monstrously strong, able to kill most humans in a single blow and tear them limb from limb. * Claws - Yoma have sharp piercing claws that they often use to stab or slice off limbs. * Wings - Rarely, Yoma develop usable wings to fly. * Personality - Yoma consider themselves to be predators among humans, but they are excessively cruel rejoicing in the pain and misery of others.") "Voracious Eater" (unit :name "Voracious Eater" :summary "* Yoma that live for a long time grow to enormous size and need to eat more humans to survive. * Size - Voracious Eaters are hulking giants easily 15ft/3m tall. * Stretching - Voracious Eaters have more control of their bodies and can stretch parts of themselves to create spearlike stabbing weapons that can attack in a large area."))) "Stone Kingdoms" (section :name "Stone Kingdoms" :reference "* Down and down into the deep, Who knows what we'll find beneath, Diamonds, rubys, gold and more, Hidden in the mountain store, Born underground, suckled from a teat of stone, Raised in the dark, the safety of our mountain home, Skin made of iron, steel in our bones, To dig and dig makes us free, Come on brothers sing with me! I am a dwarf and I'm digging a hole, Diggy, diggy hole, diggy, diggy hole, I am a dwarf and I'm digging a hole, Diggy, diggy hole, digging a hole, The sunlight will not reach this low, Deep, deep in the mine, Never seen the blue moon glow, Dwarves won't fly so high, Fill a glass and down some mead! Stuff your bellies at the feast! Stumble home and fall asleep, Dreaming in our mountain keep, Born underground, grown inside a rocky womb, The earth is our cradle; the mountain shall become our tomb, Face us on the battlefield; you will meet your doom, We do not fear what lies beneath, We can never dig too deep, I am a dwarf and I'm digging a hole, Diggy, diggy hole, diggy, diggy hole - Diggy Diggy Hole, Wind Rose" :summary "* The Stone Kingdom is an old race of stout humanoids. They live almost exclusively in subterranean complexes spanning across mountainous regions. They are shorter but much broader than regular humans. * Maximum Body - 1:0 * Morale - Very High * Preferred Skills - Caving, Armor, Melee, Siegecraft, Tradeskills - Blacksmithing, Armorsmithing, Animal Handling, Farming * Personality - They are generally a proud and boisterous folk who use drink and bravado to conceal a grim fatalism. Their obsession with gems and ore sends them ever deeper in their mines, though their long history is filled with the horrors they encountered below. * Units - Heavy Axeman, Heavy Hammerman, Heavy Pickman, Pikeman, Heavy Spearman, Light Archer, Siege Engineer * Svartalfheim * Society - The Stone Kingdom is divided by profession. Warriors are Iron. Miners, builders and other stone workers are Rock. All other civilians are Stone including the nobility which are 'of the people'. Social mobility exists but is rare in practice as most professions are inherited and kept for life. * History - Their civilization used to be much more extensive, but over the millenia of battling goblins and trolls, they have steadily lost territory and suffered horrific loses. If nothing changes, they may eventually face extinction. Their ongoing warfare has hardened the Stone Kingdom and their history is filled with tales of battle and loss. There are also tragic tales of missed opportunites when the war with the goblins could have been won. * Food - Herd animals, mushrooms, roots, fish, and largs crustaceans and insects make up their diet. * Politics - The Stone Kingdom is spread out among distant mountain ranges each with their own Stone King. These kingdoms have become so separated and the trip so treacherous that there is no competition over power between them and they rarely even communicate. Politics amoung local lords, however, is filled with typical castle intrigue and long knives. * Deep Roads - The various Kingdoms are connected by vast underground tunnels called the Deep Roads. The Deep Roads represent a phenomenal achievement of man power and artistry that clearly display the heights of the Stone Kingdom's power. It is also telling, that the current generations lack the manpower to even police these tunnels, let alone construct more. They are now more used by the dark enemies of the Stone Kingdom than the Kingdom itself. * Deep Rivers - Among the Deep Roads are underground rivers that can be traversed with rafts or longboats." :titles "Delvers, Dwarv, Duergar, Dvergar, Dwarves" :unitmap (unitmap "Stone King" (unit :name "Stone King") "Stone Lord" (unit :name "Stone Lord" :summary "* The highest circle of League society, they represent the wealthiest and most influencial families. Many are mostly politicians, but all are expected to lead their troops in battle.") "Iron Knight" (unit :name "Iron Knight" :summary "* Heavy Infantry outfitted in full plate armor. * Plate is extremely expensive, so it is only awarded to the finest warriors and is a symbol of high status. Of course the wealthy can simply buy it.") "Iron Guard" (unit :name "Iron Guard" :summary "* Heavy Pikeman skilled in Phalanx Formation. * Javelins are preferred for short range combat. * The Iron Legion lives in the mountains and has no tradition of horsemanship, so they use heavy phalanx formations to counter enemy cavalry." :titles "Iron Maiden") "Iron Warrior" (unit :name "Iron Warrior" :summary "* Footman with pick, sword or axe and shield. * Throwing axes and Javelins are preferred for short range combat.") "Iron Hammer" (unit :name "Iron Hammer" :summary "* Iron League smiths are renowned as the greatest in the world. * When called to military duty, they carry heavy war hammers and wield them with well though their military training is nominal." :titles "Iron Smith") "Iron Siege Crew" (unit :name "Iron Siege Crew") "Iron Dead Legionnaire" (unit :name "Iron Dead Legionnaire" :summary "* The Stone Kingdom has little tolerance for prisoners. They are either fined and released or sentenced to death in the Dead Legion. The Dead Legion is a unique, fighting force of criminals stationed in abandoned forts deep underground. They are already considered dead and, as final atonement, they are assigned the most hazardous missions and consequently have a high attrition rate. Proof of death in combat while serving in the Dead Legion absolves a person of all crimes including family debts, so it also serves as a way out of bankruptcy.") "Rock Delver" (unit :name "Rock Delver" :summary "* The underground equivalent of a Scout, the Delvers search the deep caverns for ore deposits and enemy strongholds. They are a courageous lot with a short life expectancy.") "Rock Miner" (unit :name "Rock Miner" :reference "Snow White and the 7 Dwarfs" :summary "* Stone Kingdom miners are powerfully strong sappers and cavers. * When called to military duty, they carry military picks and wield them with very well though their other military training is nominal." :titles "Sapper, Stone Miner") "Stone Archivist" (unit :name "Stone Archivist" :summary "* The Stone Kingdom has a long history, and it is the Archivist task to maintain that history on stone tablets. The Stone Kingdom reveres their ancestors like demigods, so the Archivist is also a sort of religious figure. In battle, they act as medics and healers.") "Stone Mason" (unit :name "Stone Mason" :summary "* Stone Masons serve several purposes in society. They are stoneworkers, artisans, scribes, archivists, and religious figures. They are responsible for finishing the walls and tunnels both functionally and artistically. The walls are carved with stories from the archives and serve as a public library for anyone to read. The specific story and artwork being appropriate to the location of the wall.") "Stone Merchant" (unit :name "Stone Merchant" :summary "* Merchants are one of the lowest classes of society. Selling the riches of the Kingdom instead of working with your hands is considered a cowardly profession. The merchants are also the most likely profession that outsiders might encounter.") "Stone Skald" (unit :name "Stone Skald" :summary "* Dwarves love tales of their history, so Skald sing and tell these tales for coin. During battle they play wardrums, anvils, or horns to boost morale."))) "Alfar, Dark" (section :name "Alfar, Dark" :reference "* Norse Dökkálfar (Dark Elf), or Svartalfar (Black Elf) - Subterranean creatures who dwell in the world of Svartalfaheim. Dark elves are often said to be responsible for many of the maladies befalling humanity. In particular, bad dreams are said to be within the domain of the Dökkálfar, as indicated by the German word for nightmare, Albtraum ('Elf-dream'). * Drow - Shetland Islands malicious troll-like creatures * Seven Deadly Sins: Pride" :summary "* Maximum Body - 4 * Preferred Skills - Ranged (Archery), Art, Music, Darkness, Survival * Morale - Normal * Units - Elite Spies, Light Infantry, Heavy Infantry, Elite Light Archers, Heavy Cavalry, Siege Crews * Long ago, Elvish scholars came to the conclusion that the seaons of the world were changing and that the race of man would eventually drive the Elves from the world. The majority grudgingly accepted this as the way of things, but a vocal minority refused to accept their fate. They began searching for the tools to battle back against men. This search led them to release mind shattering demonic forces. The rest of the elves were horrified by this blashphemy and called the Great Hunt to systematically eradicate the renegades and put an end to their abominations. The renegades fled, but the hunters relentlessly pursued them, until the renegades bargained with the Dwarves for asylum in their caverns. These activities created a deep hatred between the Elves and Dark Elves as well as the deep distrust between the Elves and Dwarves." :titles "Dark Elf, Dark Elv, Dökkálfar, Drow, Svartalfar") "Alfar, Light" (section :name "Alfar, Light" :reference "* Seven Deadly Sins: Pride" :summary "* Maximum Body - 4 * Morale - High * Preferred Skills - Ranged (Archery), Art, Music, Wild Magic, Survival * Units - Elite Scouts, Light Infantry, Elite Light Archers, Elite Longbow Archers * Norse Ljósálfar (Light Elf) or Hvítálfar (White Elf) * Personality - Whatever the Sidhe choose to do, they do it with grace and refinement. They have a strong sense of nobility and will not abide dishonorable acts. For this reason, they have little trust in Humans or Uruks. * Biology - Sidhe infants will often wander into the Dreaming to play with fae folk for their childhood years. Some Sidhe never grow up and stay with the fae, but most become teenagers and return to their community. They age and develop very slowly and can live for over 1000 years. * Personalties - Though they seem severe from an outsiders' perspective, this is because of their deep distrust of others. They are actually a very happy people who remember the lessons of the fae to always keep music and joy in their hearts. Unfortunately, their long lives sometimes make them make decisions slowly as well. They are often surprised by rapidly changing circumstances. * Abilities - Alfar have long ears with heightened sensitivity. This makes them keenly aware of intruders. Though their vision is unremarkable, they are accustomed to operating at night especially under moonlight. * Wild Alfar - Traditional Sidhe culture is closely connected to the woods. They live in semi-permanent settlements an live off the land similar to many native peoples. * High Alfar - Some Sidhe have settled down to build beautiful towns of stone and wood. Here they study the arts, sciences, and magick. The two cultures have grown distrustful of each other over their fundamentally different outlooks on life." :titles "Eld, Eldar, Elf, Elv, Elves, Ljósálfar, Sidhe, Sylvan") :Fae (section :name "Fae" :reference "* All the world's a stage, And all the men and women merely players: They have their exits and their entrances - William Shakespere, As You Like It" :summary "* Description - Faeries are creatures of dreams. They are creative imagination personified, stories come to life. They represent ideals and are beyond mortal limitations. They do not age and have no require food or shelter. When they die, they eventually reincarnate in their original form (returning again and again like the seasons). * Nature faeries are intimately connected with nature and are in ways the spiritual manifestations of nature itself. They take on certain aspects of the area in which they are found. Mountain faeries are sturdy, sullen, and strong. Water faeries are mysterious and helpful with a hint of danger. Woodland faeries are good natured but touched with the spirit of the beast. * Location - The Fae folk live in [Arcadia], the ancestral realm of the Fae and in natural settings all over the world. * Personality - The goals of the faeries are mostly incomprehensible to mortals (who they call Children of Dust or Dustlings). Their ability to reincarnate makes them see life and death as cyclical. They see their actions as infinitely repeating, so they play their parts like actors on the stage. Some see themselves as villians or heroes, but all see everyone as characters playing their parts in the grand design. While playing their roles, fae are ritualistic and rigid in their actions since they are playing a game with specific rules (even to the point of death). Clever mortals can use these rules against them. Many Fae have lived for ages, but they only remember the epic repeating patterns that they live and are unconcerned with the fleeting lives of mortals. * On special nights almost all the wilderness falls under the the sway of Fae power. At such times it is best for normal folk to stay locked in their homes. * Chimera - Creatures or items formed from Dreams. They are powerful and dramatic to supernatural beings and dreamers, but they are invisible and have no effect on ordinary non-believers. People wielding make-believe swords fighting pretend monsters can appear rather silly to regular observers. If a chimera performs a feat that cannot be explained away by a viewing non-believer (e.g. riding a chimerical horse), the chimera will immediately vanish. Chimerical damage only affects the spirit, but it will appear as normal damage on supernatural creatures. * Glamour - The whole being of the Fae is suffused with magical energy of Dreams called Glamour. Fae use Glamour to alter the Dreaming and to create Chimera. Glamour is usually invisible ordinary people, but the Fae can sense it instinctively using an ability called 'Kenning'. * Epiphany - Fae seek Glamour constantly, discover mortals who possess and create it, and then somehow wrest, tear, or tease it out of them. When a Fae is present for a moment of creative genius or intense passion, the Fae experiences a moment of intense delight and revelation called an Epiphany. During an Epiphany, truths are revealed, connections made, and lifetimes relived. Epiphanies drive down their Banality and can also cause major changes to personality, court affiliation, or goals. * Banality - The Fae are creatures of dream and wonder. Banality is the force of cold reason, cynicism, and disbelief. If a Fae becomes too ordinary, it becomes overwhelmed by Banality in an event called the Undoing. After that, the Fae forgets its connection to the Dreaming and becomes forever mortal. * Mists - The Fae survived the Scourge of Banality by hiding their Fae nature in mortal form. Part of this disguise it to forget much of the Fae's true nature. When in mortal form, almost anything experienced beyond normal mortal existence is forgotten like a dream. Robbed of their memories, changlings who assume mortal form understandably live frustrated, bitter lives, searching constantly for clues to their true identities. * Cold Iron - Wrought iron is the ultimate sign of Banality to changelings with a history lost in the Iron Age. Its presence makes Fae ill at ease and cold iron weapons cause horrible, smoking wounds that rob changelings of Glamour and threaten their very existence. It is so distasteful to changelings that they can sense cold iron in their immediate presence. Fortunately for the Fae, steel does not have the same affect on them, and primitive wrought iron is rarely used in modern times. A Fae who possesses cold iron receives a -1 penalty to to all actions. * Barter - Money in any form is the ultimate in Banality (the quantification of life), and the Fae will not have anything to do with it. Instead they practice the age old system of Barter, trading goods or services directly. Necessarily, haggling is a required skill among the Fae. * Quests - The idea of a quest if very alluring to the theatrical nature of the Fae. Even mundane activities are made more exciting when turned into a quest and holds off Banality. This does tend to make the Fae seem obsessive about small tasks and will go to great lengths to complete semmingly insignificat tasks. This can appear obsessive compulsive or even insane to others. * Oaths - Like Quests, the Fae take Oaths very seriously. They are pure lasting gifts that they can give to others. Even the chaotic Unseelie are loath to break an oath. Oathbreakers become outcasts. Breaking an oath is a sign of relativism and leads to Banality. * Festivals - The Fae calendar is marked by all sorts of festivals and holidays. The Fae are especially mindful of the seasons, but they don't need a big reason to celebrate. Fancy dress, costumes, drinking, and dancing are favorite activites. ** Imbolc, February 2 - A festival celebrating the balefire surviving the long darkness of winter. At midwinter, couriers called firebrands carry balefire torches to each freehold. If is considered a very bad omen if a balefire is not replenished by the courier by Imbolc. ** Carnival, February 28 - This day during human Mardi Gra, celebrates the relationship between nobles and commoners. Lords dress as jesters and common drunks are dressed as nobles. The public is free to mock the nobles and must dutifully follow the commands of the drunks. This time is meant to show the nobles are humble and understand their people, so no retribution is allowed for any affronts. ** The Greening, April 4 - A loose celebration of spring with flowers and crowns of woven grass. ** Beltaine, May 2 - The formal celebration of Spring and the switch of control from Unseelie to Seelie courts. It is a time of rebirth. Bonfires are lit and passions are let loose. It is considered a good omen for children to be conceived on Beltaine. ** Highsummer Night, July 17 - A night of pranking on humans with competitions for the most outrageous pranks. Nicknamed Pranksgiving. ** Pennons, October 4 - A martial festival with jousts, mock combats, and chimerical beasts. Musicians, artisans, and storytellers also gather to display their talents. ** Samhain, October 31 - On Samhain Eve, the veil between worlds grows thin. It is a solemn time for Fae. It is a time to remember the fallen and the lost. Like Beltaine, the Fae court changes hande, in this case the Unseelie take control. The Unseelie celebrate by mocking the Seelie tournaments and courts. * Coutly Love - Love is one of the their favorite games filled with passion, high romance, and intrigue. It is considered impolite to reject a suitor out of hand, though some may send a suitor on a quest before entertaining the suitor. The courting process is essentially about flirting. It alternately involves granting favors and rejecting the suitor's efforts. The suitor has no rights except what their beloved grants, and proof of ardency is always required. Poems, songs, heroic deeds, wit, cunning, charm, and patience are all necessities of wooing. If a couple ever discover their true love, they swear Oaths of Love to each other and from then on will go to any lengths to protect one another. History * Prehistory - The Fae were born from mortal dreams and mostly dwell in Arcadia in the dreamlands. ** Sundering - As mortals civilizations developed, reason overcomes both fear and wonder, and the Fae began their decline. During the Iron Age, a major shift like an earthquake occurred across Arcadia called the Sundering. Since the Sundering, the pathways to Arcadia became much more difficult and dangeerous and Cold Iron became the bane of Fae existence. Most noble Fae returned to Arcadia never to return while most common Fae were trapped on the mortal plane. ** Shattering - The Fae had been in decline for millenia since the Sundering, but the devastation and hopelessness of Black Plague in the mortal world caused another tremendous breach between the mortal world and Arcadia. The Shattering refers to the breaking of all gates to Arcadia across the world. Physical travel between the realms has since become impossible. ** Scourge - For years after the Shattering, waves of increasing Banality crossed the world, like a rising tide, threatening to slay every Fae remaining on the mortal realm. The only way to survive was hide in the few untouched wildernesses or to merge with human infants and forget their Fae nature. Most Fae could not or would not accept the sacrifice and simply faded away. The remaining few that chose to merge with human infants are called Changelings. ** Changelings - Modern Fae on the mortal world are normal mortals most of the time, but their Fae nature comes out while dreaming. In dreams, they can return to Arcadia. While their mortal mind sleeps, the Fae mind awakens and can act in the mortal body. To those who can see Glamor, the original Fae form is visible. To others only the ordinary mortal form can be seen. Mortal life is a horrid prison to the Fae who must live in mortal drudgery while they slowly age and die. However, they may still create and experience wonder, and it is this touch of dream that the survivors cling to. Those who surrender to Banality, simply never awaken as Fae again and become normal mortals for the rest of their lives. ** Resurgence - For hundreds of years the Changelings lived humble lives without contact with Arcadia. Then in 1969, man landed on the moon which fueled the imagination of nearly every person on Earth. An overwhelming stream of Glamour reopened the pathways to Arcadia and through these pathways a number of nobles returned. ** The Final Season - Though the Fae are cyclical, they see that the Dreaming is slowly dying and eventually there will be no room for Fae in the world. They feel that the world is in the Autumn of its existence and an endless Winter lies ahead. Idealists insist that the Winter must inevitably lead to a glorious Spring, but there is little evidence to support this belief. * Change - Fae are never one thing. They are in constant change. Kind Fae are sometimes cruel. Cruel Fae are sometimes kind. * Courts - Most fae align themselves with either the Seelie or the Unseelie courts. The Seelie are honor tradition, peace, love, and chivalry. The Unseelie mock tradition, bring war and change, and uphold individual freedoms and impulses. Though the courts are very different, they understand that everything has its season. Seelie Courts rule the Fae during the Spring and Summer. Unseelie Courts rule during the Fall and Winter. Seelie Court * The Seelie Court is composed of noble, regal, beautiful faeries who (at times) aid mortals. Though mortals can be seen as irrelevant or annoying. * The Seelie have a reputation as the guardians of fae traditions. They are the peacekeepers, protectors of the weak, and the ideals of chivalry. * They are incomparable masters of music and song. * The Seelie Code ** Death before dishonor - Honor is the most important virtue, the source of all glory. ** Love conquers all - Love lies at the heart of the dreaming. True love transcends all and epitomizes what it means to be Seelie. ** Beauty is life - Beauty is a timeless, objective quality that, while it cannot be defined, is always recognized for itself. ** Never forget a debt - One gift deserves another. The recipient of a gift is obliged to return the favor. Unseelie Court * The Unseelie court is considered more rebellious, more democratic, and more rambunctious (aka murderous). They hold stagnation, repression, narrowmindedness, censorship, weakness, and traditionalism to be the worst crimes. * Where the Seelie dedicate themselves to preserving the traditions of the fae, the Unseelie style themselves as mockers of those traditions. The unseelie see themselves as radical visionaries, bringing about vital change and transformation through whatever means necessary, including violence. * The Unseelie Code ** Change is good - Security does not exist. The slightest of circumstances can transform a king into a peasant. Chaos and discord rule the universe. Adapt or die. ** Honor is a lie - Honor has no place in the modern world. It is a fairy tale constructed to cover the essential emptiness behind most traditions. ** Passion before duty - Passion is the truest state of the fae spirit. Follow your instincts and act on your impulses. Live life to the fullest without regard to the consequences, they will come about regardless of what you do. Youth passes quickly, so have fun while you can. Death can come at any time, so live without regret. Attributes * [[Vulnerable]] to [[Iron]] * +2 [[Dreaming]] * +1 [[Illusion]] * -1 [[Melee Combat]] * -1 [[Close Combat]]" :titles "Daoine maite, Fairies, Fey" :unitmap (unitmap "Bane Spirit" (unit :name "Bane Spirit" :summary "A corrupted Nymph") :Banshee (unit :name "Banshee" :titles "Faerie Woman") :Boggart (unit :name "Boggart" :summary "* A boggart (or bogart) is a household fairy which causes things to disappear, milk to sour, and dogs to go lame. Always malevolent, the boggart will follow its family wherever they flee. * It is said that the boggart crawls into people's beds at night and puts a clammy hand on their faces. Sometimes he strips the bedsheets off them. Sometimes a boggart will also pull on a person's ears. * Hanging a horseshoe on the door of a house is said to keep a boggart away." :titles "Bogart, Bogle, Boggle") :Brownie (unit :name "Brownie" :summary "* Brownies are said to inhabit houses and aid in tasks around the house. However, they do not like to be seen and will usually work at night. * Brownies are highly skilled craftsman and if unobserved or interrupted can perform tasks at extemely high speeds. * Description - They are short with thick downy hair and tend toward plumpness. They have large noses and small eyes. Their hands are large and callused, with gnarled knuckles but are very nimble. * They can be happy helping types, or selfish rumor mongers and schemers. Brownies are born of dreams of the comforts of home and hearth, and dreams of labour and reward. They prefer comfort over fancy things and tend to be plump and short with bushy hair and eyebrows. * Brownies tend to be obsessive compulsive regarding cleaning and chores and find great difficulty leaving anything incomplete or untidy. If a brownie becomes unhappy, it plays nasty tricks on the members of the household. Those include moving and rattling small objects, breaking dishes, leaving muddy little footprints, causing the walls of a house to creak, banging on pots and moaning. * +2 [Tradeskills] ** [Cleaning] ** [Cobbling] ** [Leatherworking] ** [Sewing]" :titles "Domovoi, Tomte, Nisse") :Cat-sith (unit :name "Cat-sith" :reference "* My Plans! Roww! ... Slip through my paws! Roww! ... Just out of reeeeach!... The Hexite Crystal! Roww! - Fallen Feline, Runeterra * Alice: I'm not come back here looking for a fight. Cat: Really? That's a pity. One's certainly looking for you. - Alice: Madness Returns * Here's a tiny brain teaser for a tiny... well for you. - Cat, Alice: Madness Returns * Ah Alice. You can't go home again. No suprise really. Only a very few find the way and most of them don't recognize it when they do. Delusions too die hard. Only the savage regard the endurance of pain as the measure of worth. Forgetting pain is convenient, remembering it agonizing. But recovering the truth is worth the suffering. - Cat, Alice: Madness Returns" :summary "* The cat-sìth is all black with the exception of a white spot on its chest. It is as large as a dog and chooses to display itself with its back arched and bristles erect." :titles "Cheshire Cat, Fairy Cat (pronounced caught shee)") :Changeling (unit :name "Changeling" :summary "* The most unusual Fae are Changelings who are Fae Spirits that reincarnate within mortal children in the womb. These Changeling children usually do not remember their Fae self until an event of self realization called the Chrysalis when they become aware of their Fae heritage. The Chrysalis is a turmultuous time for the Fae that attracts others attuned to the Dreaming. Other Fae are obliged to assist the Changeling in their self-discovery. Since Fae are perpetually reincarnated, their Fae form may be millenia old while their mortal form may be just a child. As Changelings grow older the weight of mortal life tends to make it increasingly difficult to manifest their Fae form. Eventually, they tend to forget they were ever Fae at all, and their Fae form is trapped until their mortal body dies and they can reincarnate again. * Seeming - Changelings appear as normal people most of the time. Their Fae self can become aware accidentally during dreams and with practice can be called at will. When the Fae self is aware, the Changeling appears in their Fae form to other supernatural beings and those with strong imaginations (like young children). To others the Changeling aways appears as a normal person. Changeling activities are often mistaken for sleepwalking or psychotic behavior by normal people.") :Gremlin (unit :name "Gremlin" :reference "* Gremlin originated amongst R.A.F. aviators. The story attempted to explain the accidents which often occurred during their flights. Gremlins were also thought to have enemy sympathies, but investigation revealed that the enemy also had similar problems, so the gremlins were not taking sides in the conflict. In reality, the gremlins were a form of buck passing or deflecting blame." :summary "* Gremlins are generally short and green with rows of small, sharp teeth. * Gremlins have a close affinity with machines, and can intimidate machines into working correctly simply by yelling at it. * All Gremlins cannot resist machinery, tinkering, tearing apart and recreating trying to understand and improve. Despite their affinity for machines, anything they make will always have a small blemish or malfunction that they cannot remedy. Gremlins are obsessed with perfection and are constantly hammering on things to check for defects. Given this, their inability to create a flawless machine is a constant source of frustration. * As well as their knack for machinery, Gremlins are known for swearing continuously. It is virtually impossible for them to prevent an endless stream of curses and blasphemy from issuing forth from their lips, which puts them at something of a social disadvantage. To Gremlins, however, swearing can be considered an art form, and many Gremlins pride themselves on their creative profanity. Gremlins use their profanity and abrasive temperaments to test their fellow Fae as they test machines, to see what their breaking points are. * Preferred Skills - Artifice, Mechanics") :Knocker (unit :name "Knocker" :reference "* Their name comes from the knocking on the mine walls that happens just before cave-ins, actually the creaking of earth and timbers before giving way. To some of the miners, the knockers were malevolent spirits and the knocking was the sound of them hammering at walls and supports to cause the cave-in. To others, who saw them as essentially well-meaning practical jokers, the knocking was their way of warning the miners that a life-threatening collapse was imminent." :summary "* Small [Fae] about two feet tall and grizzled, but not misshapen, they live beneath the ground. Here they wear tiny versions of standard miner's garb and commit random mischief, such as stealing unattended tools and food." :titles "Knackers, Bwca (Welsh), Bucca (Cornish) or Tommyknockers (US)") :Leprechan (unit :name "Leprechan") :Muse (unit :name "Muse" :summary "* A beautiful [Fae] who offers inspiration to an artist to help drive them to further creative genius. However, this inspiration has often resulted in madness and premature death for the artist." :titles "Leanan Sidhe (fairy mistress)") :Nymph (unit :name "Nymph" :summary "Nature beings tied to a specific locale. * Dryad - Trees * Hag - Shadowy Places * Naiad - Streams and Ponds * Oread - Hills and Mountains * Nymphs dislike leaving their natural locations. When situations or politics demand that a Nymph take a leadership role, they draw straws with the short straw forced to assume leadership.") :Pixie (unit :name "Pixie") :Pooka (unit :name "Pooka" :summary "* Overview - Pooka are trickster shapeshifters. They are scoundrels and are perhaps the most charming and congenial of the Fae. Extremely lazy, Pooka hate work and love to play. Though generally well-intentioned, they are deceitful, devious, and more than a little goofy. Mundaneness disturbs them, and they have a particular fear of Banality. * Empathy - Though they seem immature, they are capable of great sadness and empathy, which they try to assuage by telling jokes and playing pranks. Lack of humor mystifies them and usually drives them to 'cheer up' their quarry with more manic pranks. Naturally, Unseelie pranks tend to be sick and twisted. For all their mischief, they have a strong sense of nobility and are loyal to friends and courageous in battle. * Deceitful - Truth is boring to Pooka, so they will pepper it with lies to make it more interesting. Because of their trickster nature, they are actually unable to tell a completely true statement. Though pookas never tell the entire truth, they also never lie completely which is crass and banal. Partially truths and partial lies are what pookas enjoy. * Manipulating - Pooka are masters of manipulation. While their actions appear random and sometimes comical, events seem to play out toward their grand designs. * Unpredictable - Pooka are never one thing. They are usually calm and humorous, but they are very capable of being cunning and cruel and can change moods in an instant. * Limited Shapechange - A pooka naturally has an animal form but may change to human form when no one is watching. They may stay in either form indefinitely with no effort, but a part of them always hints at their true nature. Sometimes a tail or fur remains. Sometimes hair can appear like long ears. Sometimes they hide a large animal tattoo. * Tails - Powerful Pooka have additional tails. The most powerful have nine. They start with 1 tail at level 1 and gain a tail every odd level up to 9 tails at level 17. * Illusion - Pooka are practiced illusionists and love using illusions for pranks and generally harmless fun. Consistent with their nature, Pooka illusions always have some truth mixed with lies. Their illusions always have hidden flaws that the Pooka purposely addes for their own entertainment. * Traps -" :titles "Badger, Fox Spirit, Kitsune, Nine-tailed Fox, Tanuki" :unitpowermap (unitpowermap :Illusion (unitpower :name "Illusion")) :unitskillmap (unitskillmap :Persuasion (unitskill :name "Persuasion"))) :Redcap (unit :name "Redcap" :summary "* Hideous and vile, redcaps are the stuff of nightmares. Their cruel nature makes them rare in Seelie courts. * Description - Redcaps have stocky builds with grayish mottled skin and thick, bandy legs. They have horrid, bloodshot eyes, skeletal noses, and rubbery wrinkled faces. Worst of all are their ghoulish mouths, filled with yellowed, crooked, flat teeth used for grinding their prey to a pulp. * Redcaps are fierce in combat and use their flat teeth to deliver hideous, crushing wounds. They have a special ability to be able to eat enormous quantities of almost anything. * Redcaps are said to murder travelers who stray into their homes and dye their hats with their victims' blood (from which they get their name)." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))))) :Satyr (unit :name "Satyr" :reference "* In mythology they are often associated with sex drive." :summary "* Description - Satyrs are lean and furry with long hair and rarely shave. They have furry legs, cloven hooves, and small horns jutting from their foreheads. * Personality - Satyrs are roguish fae. They speak in riddles and satisfy every lust with abandon. They have little restraint and will act impulsively most of the time. They are shamelessly forward, have fantastic stamina, and are notorious lovers of wine, women, music, drinking, wrestling, bragging, and are ready for every physical pleasure. They roam to the music of pipes and love to dance with the [Nymph]s (with whom they are obsessed, and whom they often pursue). Rarely they will go on raids into villages for women and booty. * Passion's Curse - Being impulsive, Satyrs are subject to rapid mood swings especially when drunk and" :titles "Faun" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Bull Rush" (unitability :name "Bull Rush")))) :unitskillmap (unitskillmap :Performance (unitskill :name "Performance" :unitabilitymap (unitabilitymap "Captivating Song" (unitability :name "Captivating Song")) :unititemmap (unititemmap :Pipes (unititem :name "Pipes")) :unitspecialtymap (unitspecialtymap :Music (unitspecialty :name "Music"))))) :Sprite (unit :name "Sprite"))) "Unique Fae" (section :name "Unique Fae" :unitmap (unitmap "King Oberon" (unit :name "King Oberon" :titles "Seelie King") "Queen Titania" (unit :name "Queen Titania" :titles "Seelie Queen") :Pan (unit :name "Pan") :Puck (unit :name "Puck" :reference "Lord, what fools these mortals be! - Puck, A Midsummer Night's Dream"))) :Curses (section :name "Curses" :unitmap (unitmap "Curse Spirit" (unit :name "Curse Spirit" :reference "* What are cursed spirits to begin with? They're creatures that take shape when cursed energy, leaking from humans builds up like sediment... Compared to non-sorcerers, Jujutsu Sorcerers leak extremely little cursed energy... Jujutsu Sorcerers circulate cursed energy through their bodies well... If all of mankind were Jujutsu Sorcerers, then curses wouldn't be born. Then you could solve it simply by killing all non-sorcerers. Geto, Yuki - Jujutsu Kaisen * Nightmare on Elm Street" :summary "* Curses are manifestations of strong emotions such as love, hate, longing, fear, loneliness, trauma and dread. They are everywhere around us, but they exist on the [Spirit Periphery], so they are invisible except to those with spirit sight. Powerful Curses can effect changes in the physical world or even manifest a physical form. In this way they are similar to Undead spirits. * Creation - Curses are created from the Spirit Realm ([Fade, The]) from desires and compulsions. The stronger the desires and the more people with the same desires, the stronger the curse. * Power - Most Curses are weak and undetectable to those without high Spirit. The power of the Spirit is based on the concentration of negativity, so the most powerful appear in cities and in areas like graveyards, prisons, and asylums. They are defined by the emotions that created them, and seek to expand those emotions. * Curses gather in places with high emotions like schools, hospitals, asylums, prisons, graveyards, torture chambers, refugee camps, etc. * Curses can be exorcised, destroyed with magick, resolved by catharsis, or resolved by therapy." :titles "Bane") :Cursed (unit :name "Cursed" :reference "* Princess Mononoke * Jason Voorhees * Monsterization... is a mental illness... It gets you engulfed in your own desires and traps you in a world your mind creates. It's a special type of mental illness that leads to physical metamorphosis. - Sweet Home" :summary "* A Cursed being is a mortal corrupted by a [Curse Spirit] and usually transformed in a shocking way. * Creation - It is created when a Curse enters a person via a spiritual weakness created by some form of sin, obsession, anger, fear, guilt, hatred, or other strong emotion. The Curse strengthens the person's [Shadow] which will begin appearing to the person to tempt them with their desire. If the person succumbs to temptation, the Curse creates a fantasy world for the person while transforming its body into a twisted mirror of their desire. This transformation is permanent. * Madness - The Cursed being has a distorted view of existence filtered by their desire which has become an obsession. Their inability to discern fantasy from reality makes them exceptionally dangerous, but though the changes to their body cannot be reversed, their mental state can be improved. * Appearance - Cursed appearances are typically horrific though that can be subjective. Each appearance is unique to the individual and is based on the nature of their weakness. * Powers - Cursed powers are unique to the individual and are based on the nature of their weakness." :titles "Corrupted, Corruption, Cursed, Formor, Formori, Freak, Monsterization") "Adoration Curse" (unit :name "Adoration Curse" :summary "* Causes people to follow someone without question.") "Cruelty Curse" (unit :name "Cruelty Curse" :summary "* Causes people to enjoy being cruel to others.") "Envy Curse" (unit :name "Envy Curse" :summary "* Causes people to become intensely envious of others.") "Fear Curse" (unit :name "Fear Curse" :summary "* Causes people to become overwhelmed by fear.") "Generosity Curse" (unit :name "Generosity Curse" :summary "* Causes people to give away everything they possess.") "Greed Curse" (unit :name "Greed Curse" :summary "* Causes people to hoard or steal.") "Grief Curse" (unit :name "Grief Curse" :summary "* Causes people to endure unacceptable treatment.") "Joy Curse" (unit :name "Joy Curse" :summary "* Causes people to become overwhelmed by joy. This intense joy leaves them with no desire to do anything.") "Love Curse" (unit :name "Love Curse" :summary "* Causes people to seek nothing but true love.") "Lust Curse" (unit :name "Lust Curse" :summary "* Causes people to seek unbridled romantic encounters.") "Misery Curse" (unit :name "Misery Curse" :summary "* Causes people to become miserable.") "Rage Curse" (unit :name "Rage Curse" :summary "* Causes people to become enraged.") "Stoic Curse" (unit :name "Stoic Curse" :summary "* Causes people to endure unacceptable treatment.") "Suspicion Curse" (unit :name "Suspicion Curse" :summary "* Causes people to become suspiscious of everyone.") "Trust Curse" (unit :name "Trust Curse" :summary "* Causes people to trust others without reservation."))) :Gnomes (section :name "Gnomes" :reference "Gnomes of Zurich, Jewish Sterotypes (Short, Miserly, Balding, Moneylenders, Jewelers)" :summary "* Physical - Gnomes are a small race of men that have a tendancy to obsess over their chosen fields. * Personality - An obsessive race, Gnomes tend to choose a field of study and specializing deeply becoming leaders in their fields. Favorite areas of pursuit are finance, jewelry, mechanics, traps, artifice, and alchemy. They are sometimes very friendly, but they are extremely possessive of their knowledge and treasures. Their paranoid of thieves and competitors often prevents them from trusting others. * Morale - Normal * Units - Elite Observers, Light Infantry, Light Pikemen, Heavy Pikemen, Light Crossbow, Heavy Crossbow, Light Cavalry, Elite Siege Crews, Balloon Crews, Sorcerous") :Halflings (section :name "Halflings" :reference "Lord of the Rings" :summary "* Morale - Low * Units - Elite Scouts, Elite Spies, Light Infantry, Light Spearmen, Light Archers, Light Pony Cavalry") :Seraphim (section :name "Seraphim" :summary "* Aerie" :titles "Zephyr")))) (func chapter_beastmen : base/chapter (chapter :name "Beastmen" :sectionmap (sectionmap :Draconian (section :name "Draconian" :summary "* Draconians are a bulky reptilian race of humanoids that claim shared ancestry with Greater Dragons. The Draconians are a very old race with a long hostility toward mammals of all kinds which they see as out of control vermin. They see no distinction between the races or cultures of men. * Draconian Code - Draconians have always been a warrior race. They relish battle, but must always live by the Draconian Code of Honor which prevents them from acts of wanton destruction. The code requires them to spare the defenseless. * Draconian Law - Draconian law is particularly harsh: For example, any debtor whose status was lower than that of his creditor is forced into slavery. The death penalty is the punishment for even minor offenses. It is said that Drakon himself, when asked why he had fixed the punishment of death for most offences, answered that he considered these lesser crimes to deserve it, and he had no greater punishment for more important ones." :titles "Drakken" :unitmap (unitmap "Draconian Dragoon" (unit :name "Draconian Dragoon" :image "Fantasy/Draconian.png" :summary "* Elite Draconians are awarded Dractyl steeds. The Dractyl are unwieldy flyers and may only fly short distances with a heavy Draconian soldier."))) :Gryphon (section :name "Gryphon" :summary "* An impressive race of winged, man-like beings. They stand up to seven feet tall, with wingspans in excess of 24 feet. Their bodies are covered with thick feathery down, and they have hawk-like visages and bright, piercing eyes. * Like the birds of prey they resemble, the Gryphons are hunters by nature. They have exceptionally keen vision which enables them to spot the slightest movement at great distances. * Gryphons live in eyries built on cliffsides or at the tops of high trees. Their dwellings resemble great bird's nests composed of woven vines and leafy canopies. * Occassionally the avians will take to adventuring for profit, accepting mercenary posts as scouts, guides, or bouty hunters. The majority, however, would never consider leaving their homes. Gryphons are an independent, strong-willed race that values freedom above all else which can make them difficult employees. * Morale - Normal" :titles "Gryph, Harpy" :unitmap (unitmap "Gryphon Javelineer" (unit :name "Gryphon Javelineer") "Gryphon Light Infantry" (unit :name "Gryphon Light Infantry"))) :Krokan (section :name "Krokan" :summary "* Krokans are heavy, intelligent frog creatures. They appear very similar to enormous bullfrogs. Seated they are about 5ft all around. They possess manipulative fingers, powerful legs, and long tongues. Their weight and leg strength make them dangerous combatants. They are also notorious for attempting to swallow victims alive. * Society - Their culture is tribal and semi-nomadic with many small emcampments both above and below the water. * It is said that a purely land-based version exists that more resemble toads." :titles "Bullywug, Croaker, Froglok" :unitmap (unitmap "Bull Krokan" (unit :name "Bull Krokan" :reference "* I don't believe I require a menu. - Tahm Kench, Runeterra" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Swallow Whole" (unitability :name "Swallow Whole"))))) "Poison Krokan" (unit :name "Poison Krokan" :unitpowermap (unitpowermap :Venomous (unitpower :name "Venomous"))) "Krokan Chemist" (unit :name "Krokan Chemist" :unitpowermap (unitpowermap :Alchemy (unitpower :name "Alchemy"))) "Krokan Shaman" (unit :name "Krokan Shaman") "Krokan Skirmisher" (unit :name "Krokan Skirmisher") "Krokan Trapper" (unit :name "Krokan Trapper"))) :Mantids (section :name "Mantids" :summary "* The Mantids are a warlike, insectoid race. They walk on four legs and have large sickle-like claws with limited dexterity. They are capable of relatively fine work using the mandibles about their mouths. * Civilization - They live in large complexes deep underground where they wage war on other species including other tribes of Mantids. * Combat - They mostly rely on their natural weaponry, but they have been seen using simple spears and axes. There are also many specialized warriors capable of spitting poison or acid or explosives." :titles "Ant Men, Insect Men, Mantis Men") :Mycans (section :name "Mycans" :reference "* Puffcap Peddler: Oh, if mushrooms could talk. Teemo: I'll have what he's having. - Runeterra" :summary "* The Mycans are a fungal race. * Life Cycle - They mostly live underground as a vast fungal network, but during spring months the networks spawns small mushroom men that work to improve their living area and seek mates. At the end of the fall, these mushrooms collapse and break down. Each year, the same personalities are resurrected, but they are born anew and have no memories of their previous life, though all of their memories are permanently stored in the network. * Appearance - Mycans are generally up to 5 feet tall with a narrow stem and a large cone-shaped cap. They move by splitting their stem into 2 or more smaller stems. * Senses - Mycans have no eyes, ears, or mouths. They have a keen sense of smell, and they hear and feel through vibrations, mostly coming through the ground. * Spores - Mycans can 'exhale' hallucinogenic spores to confuse and incapacitate opponents. They can also use their spores to create images and impressions in other creatures. * Communication - Mycans do not speak. Instead they communicate with each other through the mycelial network underground. In fact, they communicate so much information through this network that all Mycans in a colony immediately know everything every other member knows. * Intelligence - Mycans are fairly intelligent, but they are a simple folk and have little interest in things that don't directly affect their lives. They do build simple shelters and are expert farmers. * Personalities - Mycans are generally friendly and quite pleasent to those who do not threaten them. They are grimly militaristic against threats, however. Though they are individuals with their own personalities, Mycans are a colony organism and are not overly concerned about their safety or deaths. They also see time in a more long term way than most creatures." :titles "Fungus Men, Mushrooms, Mushroom Men, Shrooms") :Naga (section :name "Naga" :summary "* The Naga are large serpent people resembling huge cobras with short arms. They stand about 5 feet high, but 2/3 of their length is in their tail behind them. Clans are named after the current clan leader and the Naga use clan name as a last name. Like their snake and crocodile brethren, they are slow moving and lazy except while hunting. Their fangs produce a mild venom, but its lack of potency is a point of embarrassment to the Naga. They prefer the spear as a weapon because they can use it as a walking staff to aid them when they are not waist deep in water (their natural habitat). They sleep with their eyes open which makes them seem to always be on the alert. * Maximum Body - 6" :titles "Lamia, Serpent People" :unitmap (unitmap "Naga Chieftan" (unit :name "Naga Chieftan") "Naga Enforcer" (unit :name "Naga Enforcer") "Naga Hunter" (unit :name "Naga Hunter"))) :Sagittarians (section :name "Sagittarians" :summary "* Maximum Body - 7 * Morale - Normal * Preferred Skills (Sagittarian) - Melee (Spear), Ranged (Javelin, Short Bow)" :titles "Centaur, Minotaur" :unitmap (unitmap "Sagittarian Horse Archer" (unit :name "Sagittarian Horse Archer") "Sagittarian Light Cavalry" (unit :name "Sagittarian Light Cavalry"))) :Saurids (section :name "Saurids" :reference "* Mezoamerican tribes" :summary "* Morale - High * Preferred Skills - Necromancy * Units - Light Infantry, Light Spearmen, Light Archers, Heavy Cavalry (Striders) * Saurids dress in hides and robes and wear feathered ornaments as a symbol of rank." :titles "Iksar, Lizardman, Saurian. Sleestak" :unitmap (unitmap "Saurid Archer" (unit :name "Saurid Archer") "Saurid Hatchetman" (unit :name "Saurid Hatchetman") "Saurid Spearman" (unit :name "Saurid Spearman") "Saurid Swordsman" (unit :name "Saurid Swordsman") "Saurid Heavy Cavalry" (unit :name "Saurid Heavy Cavalry" :summary "* The Saurid ride large Desert Strider lizards into battle."))) :Tauran (section :name "Tauran" :unitmap (unitmap "Tauran Axeman" (unit :name "Tauran Axeman") "Tauran Hammerman" (unit :name "Tauran Hammerman"))) :Stryx (section :name "Stryx" :summary "* A race of man-like beings resembling a cross between a vulture and a horned devil. They stand under six feet tall with a 20 foot wingspan. They excel at gliding and can cover great distances and remain aloft for hours. They have superior nightvision but see poorly in daylight. They feed on carrion and have little appetite for fighting. Their manual dexerity is limited, but they can use simple spears and polearms when necessary using either their hands on land or their feet in the air.") :Tritons (section :name "Tritons" :reference "Little Mermaid" :summary "* The Tritons are group of aquatic species distantly related to man. They are adapted to life underwater, but are still able to breathe air for a few minutes. They have innumerable sub species with drastically different appearances, some human-like, some fish-like, some with tentacles." :titles "Melusine, Mermaid, Merman" :unitmap (unitmap "Merrow Hydromancer" (unit :name "Merrow Hydromancer") "Merrow Necromancer" (unit :name "Merrow Necromancer") "Merrow Soldier" (unit :name "Merrow Soldier" :summary "* The Merrow have sloping shoulders, scaly yellow-green skin and dark deep-set eyes. Their hands and feet are webbed, and their powerful jaws are lined with a double row of sharp teeth. Having both gills and rudimentary lungs, the amphibians are capable of living on land or sea though the land tires them. They are powerful swimmers but are somewhat slow and awkward on land. * Slavers by trade, they prey upon the primitive tribes which dwell along the coasts and islands. Their weapons are mostly designed to capture instead of kill. They also traffic in narcotic herbs, exotic beasts and all manner of contraband. * Merrow tradition states that long ago, a merrow hunting party discovered a great forgotten city in a deep trench. The discovery brought madness and destruction to the merrow city. The survivors of those nights moved from their city, abandoned their gods, and faithfully serve the Old Ones that dwell in that forgotten city of madnesss. Their descendants are known as the Deep Ones. They are primitive, blasphemous, deformed fish creatures and are known to kidnap both Merrow and Humans for slaves and breeding." :titles "Deep One, Deeper, Imrian") "Merrow Slaver" (unit :name "Merrow Slaver") :Siren (unit :name "Siren" :unitskillmap (unitskillmap :Persuasion (unitskill :name "Persuasion"))) :Selkie (unit :name "Selkie" :summary "* A seal that can shed its skin and appear human. In human form, the Selkie can only breathe air. If its seal skin is lost or destroyed, the Selkie cannot resume seal form."))) :Wildman (section :name "Wildman" :reference "Chewbacca" :summary "* The wildmen are close relatives to normal humans but have distinctly animalistic qualities including fur and fangs." :unitmap (unitmap "Jaka Manhunter" (unit :name "Jaka Manhunter" :summary "* The Jaka are a race of intelligent man-like beings with features resembling a cross between man, wolf, and panther. They are a striking people with sleek black fur and yellow/green eyes. * Personality - The Jaka are solitary beings, sullen and introspective in nature. They have been known to become steadfast companions to those they trust, but have also been known to become cold-blooded killers to those who cross them. * Lifestyle - They are cunning and have excellent senses, so they make are superb hunters. They typically live off the land but also trade their extra hides and animal parts for useful gear. Some have extended their tracking and hunting skills to become bounty hunters: tracking and capturing fugitives from justice and living off the bounty.")))))) (func chapter_constructs : base/chapter (chapter :name "Constructs" :sectionmap (sectionmap :Alchemical (section :name "Alchemical" :unitmap (unitmap :Homunculus (unit :name "Homunculus"))) :Animated (section :name "Animated" :summary "* Created though [Alchemy] or [Sympathetic Magic]" :unitmap (unitmap "Animated Armor" (unit :name "Animated Armor") "Animated Furniture" (unit :name "Animated Furniture") "Flying Carpet" (unit :name "Flying Carpet") "Flying Boat" (unit :name "Flying Boat") "Living Statue" (unit :name "Living Statue") "Terra Cotta Warrior" (unit :name "Terra Cotta Warrior"))) :Dreams (section :name "Dreams" :reference "Sandman" :unitmap (unitmap :Apparition (unit :name "Apparition" :summary "* Apparitions are drem entities that are created from terrifying nightmares. As such they seem to be creatures of fear that attempt to strike terror in anyone they encounter. They normally appear as frightful humanoids composed of swirling black vapors, however, they may change their form into anything that will strike fear in their target. Though powerful and terrifying, Apparitions do not actually want to kill their prey. Instead they want to terrify them endlessly, though sometimes this leads to madness or suicide, and the Apparition may accidentally kill its prey. A dead or fearless victim is boring to the Apparition, and they will seek easier prey when frustrated.") :Dream (unit :name "Dream") :Figment (unit :name "Figment" :reference "* Teacups - Beauty and the Beast * Brooms - Fantasia" :summary "* Figments are minor dream entities that are created from imagination. They typically only exist in the Dream Realm where they possess and animate small normally inanimate objects in dreams. They must inhabit a single object or group of like objects, but they are physically weak and are dispelled if the object is destroyed. They do not normally speak, but they can if they so choose. Figments can be summoned into the material world where they inhabit and animate a physical object. They are typically friendly and make excellent companions, familiars, or spies.") :Nightstalker (unit :name "Nightstalker" :reference "* The mara was thought of as an immaterial being, capable of moving through a keyhole or the opening under a door, who seated herself at the chest of a sleeping person and 'rode' him or her, thus causing nightmares. * In Norwegian/Danish, the word for nightmare is mareritt/mareridt, meaning 'mareride'." :summary "* Nightstalkers are predators in the dream world. Their form varies but it is always some kind of terrifying monster with sharp claws. They prey on dreamers and will torment a dreamer through the night until they are exhausted at which point it will slay the dream form and consume it. In the waking world, the victim will appear to have violent nightmares and cannot be awakened. If the dream form is killed, the waking form dies in its sleep, apparently of natural causes though some telltale marks remain." :titles "Dream Killer, Living Nightmare, Mara") :Sandman (unit :name "Sandman"))) :Golems (section :name "Golems" :unitmap (unitmap "Blood Golem" (unit :name "Blood Golem" :summary "* A Blood Golem is created using [Blood Magic] instead of [Artifice]. * A Blood Golem is a large humanoid composed of animated blood. All of its attacks cause [Bleeding] and whenever a [Bleeding] critical inflicts [Damage] on a nearby unit, the Blood Golem may heal a [Damage] or [Critical]. * When created, the summoner must be suffering from at least 4 [Bleeding] criticals from other sources or self-inflicted. These wounds may be bound or the summoner may allow the Blood Golem to draw from the wounds.") "Clay Golem" (unit :name "Clay Golem") "Flesh Golem" (unit :name "Flesh Golem" :reference "Franenstein's Monster" :summary "* A Flesh Golem is created using [Necromancy] instead of [Artifice]." :titles "Corpse Golem") "Iron Golem" (unit :name "Iron Golem") :Colossus (unit :name "Colossus" :reference "* Colossus of Rhodes * Colossus of Sardia * Pygmalion * Talos" :titles "Animated Statue, Stone Golem" :height "30m"))) :Machina (section :name "Machina" :summary "* Created though [Artifice]. These magical constructs a slow and powerful. Their abilities are increased if using rare or expensive materials (e.g. Gold, Meteor Metals, etc.)." :titles "Auton, Clockwork, Mech, Mek, Mekton" :unitmap (unitmap :Automaton (unit :name "Automaton") "Bronze Bull" (unit :name "Bronze Bull") "Bronze Horse" (unit :name "Bronze Horse") "Clockwork Avian" (unit :name "Clockwork Avian") "Clockwork Cobra" (unit :name "Clockwork Cobra" :titles "Iron Cobra") "Clockwork Dragon" (unit :name "Clockwork Dragon" :titles "Iron Dragon") "Clockwork Golem" (unit :name "Clockwork Golem" :titles "Ruin Grader, Ruin Guard") "Clockwork Owl" (unit :name "Clockwork Owl" :reference "* Bubo - Clash of the Titans" :summary "* Clockwork Owls have excellent vision and make fair spys and messengers. However, they are not at all fast, stealthy, or agile, so some feel that they are far from practical.") "Clockwork Minotaur" (unit :name "Clockwork Minotaur" :reference "* Minoton - Sinbad and the Eye of the Tiger") "Clockwork Scorpion" (unit :name "Clockwork Scorpion" :titles "Iron Scorpion") "Clockwork Spider" (unit :name "Clockwork Spider" :titles "Iron Spider, Spiderbot") "Clockwork Steed" (unit :name "Clockwork Steed" :titles "Iron Horse") "Dragon Engine" (unit :name "Dragon Engine" :titles "Steam Engine") "Iron Maiden" (unit :name "Iron Maiden" :summary "* A semi-humanoid automaton whose lower body is a giant spiked maw that engulfs its target. It is used as an intimidation and torture device.") :Juggernaut (unit :name "Juggernaut"))) :Miniatures (section :name "Miniatures" :unitmap (unitmap "Minature Animal" (unit :name "Minature Animal") "Miniature Boat" (unit :name "Miniature Boat") "Miniature House" (unit :name "Miniature House") "Miniature Warrior" (unit :name "Miniature Warrior") "Miniature Worker" (unit :name "Miniature Worker"))) :Phantasms (section :name "Phantasms" :summary "* Phantasms are created through powerful [Illusion]." :unitmap (unitmap "Phantasmal Force" (unit :name "Phantasmal Force") "Phantasmal Mount" (unit :name "Phantasmal Mount") "Phantasmal Monster" (unit :name "Phantasmal Monster") "Phantasm Warrior" (unit :name "Phantasm Warrior")))))) (func chapter_dragons : base/chapter (chapter :name "Dragons" :summary "* Morale - Normal * Units - Individuals * Dragons are ancient beings and remember the time, before men, when their kind ruled the world." :sectionmap (sectionmap "Lesser Dragons" (section :name "Lesser Dragons" :reference "Thank you for nothing, you useless reptile. - Hiccup, How to Train Your Dragon" :unitmap (unitmap :Dractyl (unit :name "Dractyl" :summary "* Dractyl are horse-sized lesser dragons. They have a greyish scaly hide and large membranous wings. They live on cliffs and normally eat insects and vermin but will eat almost anything that does not require too much work. They can be trained as steeds, but they are clumsy flyers and only obey under duress so they cannot be relied on in battle. They have been known to throw their riders from altitudes to escape their servitude.") "Fire Drake" (unit :name "Fire Drake") :Lindwyrm (unit :name "Lindwyrm" :summary "* Lindwyrm are forest serpents that are connected with the forest. Everything around a Lindwyrm slowly grows, supposedly including treasure." :titles "Lindworm") "Spindrift Drake" (unit :name "Spindrift Drake" :summary "* Spindrift Drakes are aquatic, horse-sized, lesser dragons. They hunt the near the surface of large water bodies. Their beautiful, thin, irridescent wings are adapted to swimming, but they are known to launch themselves from the seas and glide close to the surface at high speeds. Their preferred tactic is to burst from the waves, build up speed, and then knock their prey into the water and kill them underwater." :titles "Spindrake") "Storm Drake" (unit :name "Storm Drake" :titles "Azure Drake") :Wurm (unit :name "Wurm") :Wyvern (unit :name "Wyvern"))) "Greater Dragons" (section :name "Greater Dragons" :reference "* Seven Deadly Sins: Greed * Lee: Only I can endure the dragon's fury. Sol: We'll see about that, little man. Lee Sin and Aurelion Sol - Runeterra" :summary "* The greater dragons are apparently the last remnants of a ancient time before man when enormous monsters roamed the world. The greater dragons are immensely powerful, even more than their great size would indicate. Greater dragons are extremely rare and solitary. They all appear to be millenia old, and no young greater dragons have been observed. It is possible that there are no longer any mated pairs of dragons, so the ones observed may be the last of greater dragons. * They tend to live near ley lines (dragon lines) to accumulate magical energy. They further collect precious things to bask in their spiritual energy." :unitmap (unitmap "Celestial Dragon" (unit :name "Celestial Dragon" :image "Fantasy/Dragon_Celestial.png" :reference "Shenron - Dragon Ball" :titles "Gilded Dragon, Gold Dragon, Silver Dragon") "Dragon Turtle" (unit :name "Dragon Turtle" :reference "* Gamera * Lion Turtle - Avatar The Last Airbender" :summary "* Dragon Turtles are enormous turtles that live most of their lives at sea and are sometimes mistaken for small islands. They are extremely long lived and are among the most ancient creatures living. They will occasionally float on the surface so long that plants and even trees grow on them. * Steam Breath - They produce extreme heat inside their bodies that can be expelled as steam, a boiling geyser, or fire." :titles "Zaratan") "Earth Dragon" (unit :name "Earth Dragon" :summary "* Earth Dragons are physically more like worms than typical dragons. * Heat Breath - The body of an Earth Dragon is scorching hot from friction as it moves. If it exhales strongly, that heat is released as a scorching blast. * Earth Moving - They move through sand by breathing in air and sand and blowing it out through the gaps in their long body in a similar way to gills. The air liquifies the surrounding sand and allows the Dragon to slide through the ground at relatively high speeds." :titles "Desert Dragon, Dune Dragon, Earth Wyrm, Sand Dragon, Sand Wyrm") "Forest Dragon" (unit :name "Forest Dragon" :summary "* Poison Spit - Has poison glands in its mouth that let it spit [Poison] like a Cobra. * Poison Cloud - Exhales while emitting poison from its glands to create a deadly poison cloud. This cloud provides cover and can be dropped behind the dragon while flying. * Poison Immunity - The dragon is immune to its own poison." :titles "Green Dragon, Emerald Dragon") "Frost Dragon" (unit :name "Frost Dragon" :image "Fantasy/Dragon_Frost.png" :summary "* Inhales Heat - The Frost Dragon survives by draining heat sources. Its lair is always incredibly cold with its own body temperature matching the surroundings. * Absorb Heat - The body of the Frost Dragon absorbs heat around it creating intense cold around its body. * Cold Immunity - Cold has no effect on Frost Dragons * Heat Vulnerability - Heat attacks overwhelm its heat absorption ability." :titles "Chromium, Ice Dragon, Whiteflame") "Mountain Dragon" (unit :name "Mountain Dragon" :summary "* Red/Orange, Lives in Volcanic regions * Firebreathing: The dragon produces 2 fluids in venom sacs in its neck. When released during an exhale, these combine and ignite to form a napalm-like cloud." :titles "Crimson Dragon, Fire Dragon, Lava Dragon") "Sea Dragon" (unit :name "Sea Dragon" :summary "* Sea dragons are gigantic serpentine sea creatures with lengths over 60 feet. The great jaws of these creatures are lined with 10 inch teeth and can swallow longboats whole. They are the apex predators of the sea and they consume almost everything they encounter. * They are the oldest (along with Dragon Turtles) and largest of the dragon species but also the most primitive. Some have learned to communicate though they have little need to interact with others. Some believe that Sea Dragons may be incredibly ancient, predating almost every other creature of the world. * Sonic Roar - The roar of a Sea Dragon can be heard for leagues. It causes deafness and massive internal damage to anything in front of its maw. Like other sonic attacks, the roar has increased effect underwater." :titles "Sea Serpent") "Shadow Dragon" (unit :name "Shadow Dragon" :image "Fantasy/Dragon_Obsidian.png" :summary "* Spits Acid - The Shadow Dragon can belch stomach acid from its mouth to burn targets. * Acid Cloud - By exhaling while belching acid, the Shadow Dragon can" :titles "Black Dragon, Marsh Dragon, Obsidian Dragon, Swamp Dragon") "Sky Dragon" (unit :name "Sky Dragon" :summary "* Sky Dragons make their homes high in the clouds. Their massive wings allow them to fly without ever landing and they sleep while soaring. They are drawn to storms where their unique metallic scales attract and absorb lightning strikes and static electricity. It is unclear what these massive creatures consume, but their large teeth implies they are carnivorous. * Lightning Breath - When angered, their scales become ionized and they spit a conductive spray that carries enormous electric potential. * Lightning Armor - As might be expected, their scales also carry deadly electric charge which releases on contact. * Lightning Immunity * If forged into armor, their scales absorb electricity while their hide protects the wearer from that same electricity. Scales can also be used as alchemical batteries and magical focuses." :titles "Blue-Eyes White Dragon, Night Fury, Rodan, Slifer the Sky Dragon, Cloud Dragon, Storm Dragon" :unitpowermap (unitpowermap :Electricity (unitpower :name "Electricity" :unitabilitymap (unitabilitymap "Absorb Electricity" (unitability :name "Absorb Electricity"))))) :Underdragon (unit :name "Underdragon" :summary "* Dragons are bursting with magical energies, so even dead dragons can become undead (either purposely or accidentally). Since corpse dragons are no longer living, their normal breath weapon is usually lost, but instead they can exhale a billowing, decaying mist." :titles "Corpse Dragon, Skeletal Dragon, Necrodragon, Undead Dragon, Zombie Dragon"))) "Monstrous Dragons" (section :name "Monstrous Dragons" :unitmap (unitmap :Apophis (unit :name "Apophis" :reference "Egyptian Mythology") :Ladon (unit :name "Ladon") "Midgard Serpent" (unit :name "Midgard Serpent" :reference "Norse Mythology") :Pytho (unit :name "Pytho") :Stoorworm (unit :name "Stoorworm") :Tiamat (unit :name "Tiamat" :reference "Babylonian Mythology" :titles "Avatar of Chaos, Avatar of the Wyrm, The Beast, Mother of All Life")))))) (func chapter_elementals : base/chapter (chapter :name "Elementals" :summary "* All summoned Elementals are tied to their summoning point. If at any time, the elemental cannot trace a continuous line through their element to the summoning point, they are immediately banished back to their home plane. This is easiest for Air and Earth Elementals and hardest for Water and Fire Elementals. The most straightforward way to leverage this weakness is to isolate the summoning point using a different element." :sectionmap (sectionmap "Air Elementals" (section :name "Air Elementals" :unitmap (unitmap "Aero Essence" (unit :name "Aero Essence" :summary "* A mindless, condensed blob of Aero energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Aero Slime, Aerolon, Wind Slime") "Air Elemental" (unit :name "Air Elemental") "Air Elemental Lord" (unit :name "Air Elemental Lord" :summary "* Greater Air Elementals are enormous creatures that can fill the sky. They appear as cloudbanks or can be completely invisible depending on their mood. They have complete mastery over the Air, can perform any Air Power at maximum ability and can cancel any other being attempting to use Air." :unitpowermap (unitpowermap :Air (unitpower :name "Air" :level "20"))) :Jinn (unit :name "Jinn" :summary "* The Jinn are powerful, giant, invisible wind spirits that can take humanoid form. They are driven by their passions and are known to love and hate with extreme intensity. Tales of the Jinn are filled with love, scheming, betrayal, hatred, revenge, murder, retribution, and madness. For the Jinn who do not age, every betrayal can never be forgiven, so revenge never ends in an endless cycle of retributions until all is lost. * Description - Jinn are naturally formless and invisible to mortals, but can will themselves to be visible. The can take any shape but they prefer long snake-like forms or tall, thin mortal forms. * Powers - Invisibility, Flight, Shapeshift, Air * True Name - Jinn keep their true name a secret. They share this name only with those they truly love and trust and commit to do anything for those who know their name until the end of time. The greatest betrayal would be to share this name to be honor bound to another. * Society - Jinn live in large desert tribes with strong family bonds. The greatest of these tribes are Sultanates." :titles "Djinn") :Sylyph (unit :name "Sylyph") :Zephyr (unit :name "Zephyr" :titles "Wind Sprite"))) "Earth Elementals" (section :name "Earth Elementals" :unitmap (unitmap "Earth Elemental" (unit :name "Earth Elemental") "Earth Elemental Lord" (unit :name "Earth Elemental Lord" :summary "* Greater Earth Elementals are enormous creatures that can appear as a mountain or a range of hills. They have complete mastery over the Earth, can perform any Earth Power at maximum ability and can cancel any other being attempting to use Earth." :unitpowermap (unitpowermap :Earth (unitpower :name "Earth" :level "20"))) "Earth Gnome" (unit :name "Earth Gnome") "Earth Sprite" (unit :name "Earth Sprite") "Geo Essence" (unit :name "Geo Essence" :summary "* A mindless, condensed blob of Geo energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Earth Slime, Geo Slime, Geolon") :Monolith (unit :name "Monolith"))) "Fire Elementals" (section :name "Fire Elementals" :unitmap (unitmap :Firebird (unit :name "Firebird" :summary "* Firebirds are Flame spirits that fly. Though they can move through the air with ease, they enjoy igniting combustibles so much that they land frequently to spread the flames." :titles "Ember") "Flame Elemental" (unit :name "Flame Elemental") "Flame Elemental Lord" (unit :name "Flame Elemental Lord" :summary "* Greater Fire Elementals are enormous creatures that can appear as a lava pit or a forest fire. They have complete mastery over the Fire, can perform any Fire Power at maximum ability and can cancel any other being attempting to use Fire." :unitpowermap (unitpowermap :Fire (unitpower :name "Fire" :level "20"))) "Flame Salamander" (unit :name "Flame Salamander" :summary "* Salamanders are pools of flame that vaguely appear in lizard form. They crawl about and split into additional Salamanders if sufficient flammable material is available." :titles "Lava Lizard") "Flame Sprite" (unit :name "Flame Sprite" :titles "Fire Imp") :Ifrit (unit :name "Ifrit" :summary "* The Ifrit are a fiery tribe related to the [Jinn]. They are just as passionate, but are perhaps more sinister." :titles "Efreet") "Pyro Essence" (unit :name "Pyro Essence" :summary "* A mindless, condensed blob of Pyro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Fire Slime, Pyro Slime, Pyrolon"))) "Lightning Elementals" (section :name "Lightning Elementals" :unitmap (unitmap "Electro Essence" (unit :name "Electro Essence" :summary "* A mindless, condensed blob of Electro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Electro Slime, Electrolon, Lightning Slime, Lightning in a Bottle") "Lightning Elemental" (unit :name "Lightning Elemental") "Lightning Elemental Lord" (unit :name "Lightning Elemental Lord") :Raijin (unit :name "Raijin" :titles "God of Lightning, Narukami, Raiden"))) "Water Elementals" (section :name "Water Elementals" :unitmap (unitmap "Hydro Essence" (unit :name "Hydro Essence" :summary "* A mindless, condensed blob of Hydro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Hydro Slime, Hydrolon, Water Slime") :Naiad (unit :name "Naiad" :titles "Nereid, Nyad") :Undine (unit :name "Undine") "Water Elemental" (unit :name "Water Elemental") "Water Elemental Lord" (unit :name "Water Elemental Lord" :summary "* Greater Water Elementals are enormous creatures that can appear as a lake, a whirlpool, or a tidal wave. They have complete mastery over the Water, can perform any Water Power at maximum ability and can cancel any other being attempting to use Fire." :unitpowermap (unitpowermap :Water (unitpower :name "Water" :level "20"))) "Water Sprite" (unit :name "Water Sprite")))))) (func chapter_extra-dimensional : base/chapter (chapter :name "Extra-Dimensional" :sectionmap (sectionmap :Celestine (section :name "Celestine" :summary "* The Angels have been fighting a cold war against the Fiends for millenia. Each side claims their right over the mortal realm, and each side recruits souls to increase their faction's power. * The Archangels are the oldest and most powerful of the Angels. Individually, they can lay waste to armies. * The Aeons are the primal concepts of divinity and are beyond physicality." :titles "Archons, Aeons, Angels, Angelics, Devas, Malaikah, Watchers" :unitmap (unitmap "Aeon Demiurge" (unit :name "Aeon Demiurge") "Aeon Great Archon" (unit :name "Aeon Great Archon") "Aeon Sophia" (unit :name "Aeon Sophia") "Archangel Auriel" (unit :name "Archangel Auriel" :reference "Diablo 3" :summary "* Al'maiesh, the Cord of Hope - Twin whips of burning light." :titles "Archangel of Hope") "Archangel Gabriel" (unit :name "Archangel Gabriel" :summary "* Performs acts of justice and power" :titles "Translation: God is my strength") "Archangel Itherael" (unit :name "Archangel Itherael" :reference "Diablo 3" :summary "* Neither male nor female, Itherael remains neutral at all times. * He always teleport instead of moving. * Talus'ar, the Scroll of Fate - Allows him to predict the actions of others. * Presides over the Library of Fate where possible futures are divined." :titles "Archangel of Fate, Archangel of Balance") "Archangel Jophiel" (unit :name "Archangel Jophiel" :summary "* Expelled Adam and Eve from the Garden of Eden holding a flaming sword and punishes those who transgress against God." :titles "Translation: Beauty of God") "Archangel Malthael" (unit :name "Archangel Malthael" :reference "Diablo 3" :summary "* Wields twin sickle swords and can deflect and redirect enemy attack with only the slightest use of force. * Calad'ar, the Chalice of Wisdom - Allows him to see all things." :titles "Archangel of Wisdom") "Archangel Michael" (unit :name "Archangel Michael" :summary "* Stands up for the children of mankind" :titles "Translation: Who is like God?, Kindness of God") "Archangel Raphael" (unit :name "Archangel Raphael" :summary "* God's healing force" :titles "Translation: It is God who heals") "Archangel Samael" (unit :name "Archangel Samael" :titles "Translation: Venom of God, Angel of Death, Azrael") "Archangel Sandalphon" (unit :name "Archangel Sandalphon" :summary "* Battles Samael and brings mankind together" :titles "Translation: Bringing Together") "Archangel Uriel" (unit :name "Archangel Uriel" :summary "* Leads us to destiny" :titles "Translation: God is my light") "Archangel Tyrael" (unit :name "Archangel Tyrael" :reference "Diablo 3" :summary "* El'durin, the Sword of Justice - Twin whips of burning light." :titles "Archangel of Justice") :Cherubim (unit :name "Cherubim") :Deva (unit :name "Deva") "Fallen Angel" (unit :name "Fallen Angel" :summary "* An angel who loses faith in his/her god. * Its wings change from white to black like a raven's. * Like mortals, their personalities and goals are much more varied than the angels. * Fallen angels are persecuted by other angels for their impurity." :titles "Fallen") :Grace (unit :name "Grace") "Guardian Angel" (unit :name "Guardian Angel") :Irin (unit :name "Irin" :reference "* Irin - In the Book of Enoch, the Watchers, are angels dispatched to Earth to watch over the humans. They soon begin to lust for human women and, at the prodding of their leader Samyaza, defect en masse to illicitly instruct humanity and procreate among them. The offspring of these unions are the Nephilim, savage giants who pillage the earth and endanger humanity. Samyaza and his associates further taught their human charges arts and technologies such as weaponry, cosmetics, mirrors, sorcery, and other techniques that would otherwise be discovered gradually over time by humans, not foisted upon them all at once. Eventually God allows a Great Flood to rid the earth of the Nephilim, but first sends Uriel to warn Noah so as not to eradicate the human race. The Watchers are bound 'in the valleys of the Earth' until Judgment Day." :summary "* Araqiel (also Arakiel, Araqael, Araciel, Arqael, Sarquael, Arkiel, Arkas) taught humans the signs of the earth. However, in the Sibylline Oracles, Araqiel is referred to not as a fallen angel, or Watcher, but as one of the 5 angels who lead the souls of men to judgement, the other 4 being Ramiel, Uriel, Samiel, and Azazel. * Armaros (also Amaros) in Enoch I taught men the resolving of enchantments. * Azazel taught men to make knives, swords, shields, and how to devise ornaments and cosmetics. * Gadreel (or Gader'el) taught the art of cosmetics, the use of weapons and killing blows. It was he who led Eve astray in the garden of eden.[citation needed] * Baraqel (Baraqiel) taught men astrology * Bezaliel mentioned in Enoch I, left out of most translations because of damaged manuscripts and problematic transmission of the text. * Chazaqiel (sometimes Ezeqeel or Cambriel) taught men the signs of the clouds (meteorology). * Kokabiel (also Kakabel, Kochbiel, Kokbiel, Kabaiel, and Kochab), In the Book of Raziel he is a high-ranking, holy angel. In Enoch I, he is a fallen Watcher, resident of the nether realms, and commands 365,000 surrogate spirits to do his bidding. Among other duties, he instructs his fellows in astrology. * Penemue taught mankind the art of writing with ink and paper, and taught the children of men the bitter and the sweet and the secrets of wisdom. (I Enoch 69.8) * Sariel (also Suriel) taught mankind about the courses of the moon (at one time regarded as forbidden knowledge). * Samyaza (also Shemyazaz, Shamazya, Semiaza, Shemhazi, Semyaza and Amezyarak) is one of the leaders of the fall from heaven in Vocabulaire de l' Angelologie. * Shamsiel, once a guardian of Eden as stated in the Zohar, served as one of the two chief aides to the archangel Uriel (the other aide being Hasdiel) when Uriel bore his standard into battle, and is the head of 365 legions of angels and also crowns prayers, accompanying them to the 5th heaven. In Jubilees, he is referred to as one of the Watchers. He is a fallen angel who teaches the signs of the sun. * Yeqon (also Jeqon or Yaqum, he shall rise) was the ringleader who first tempted the other Watchers into having sexual relations with humans. His accomplices were Asbeel, Gadreel, Penemue, and Kasdaye (or Kasadya), who were all identified as individual satans." :titles "The Watchers") :Ophanim (unit :name "Ophanim" :reference "Ezekiel saw the wheel Way up in the middle of the air Ezekiel saw the wheel Way up in the middle of the air And the little wheel run by faith And the big wheel run by the grace of God A wheel in a wheel Way up in the middle of the air" :summary "* Chariots for the Seraphim. * Four eye-covered interlocking wheels" :titles "The Many Eyed Ones") :Seraphim (unit :name "Seraphim" :summary "* Six Winged"))) :Abyssal (section :name "Abyssal" :summary "* Demons are creatures of Chaos from the swirling outer void where reality itself is fluid. Unlike Fiends, there are an infinite number and variety of Demons. Some believe our universe is a tiny light of order in a sea of Demons and Chaos. Like the Chaos that spawned them, demons are creatures of destruction and random mayhem. They delight in carnage and fear and have little concern for their own safety. Though Demons are sometimes cunning, they generally have little patience for communication or study, preferring to take action. They do not create tools or clothing of any kind, though they might be able to use those they pick up (especially weapons). They value free will above all things and will not tolerate servitude including contracts, deals or agreements of any kind. * Demons are dominated by their [Beast]s. * Preferred Skills: [Demonic Power], [Natural Weaponry] * Description - Demons take any number of monstrous forms and are among the most powerful beings in existence. As beings of chaos, their appearance is often unsettling and asymetrical. They eat any living creature including humans though they don't require ordinary sustanence. Most are larger and more muscular than humans and can be enormous. Many have rows of stubby spikes growing from their upper backs, with elongated limbs that end in clawed digits, large fang-filled jaws and pointed ears, giving them a bestial appearance. Some have bat-like wings. Others burrow in the earth. * Personality - Demons are wildly arrogant and destructive and have no sense of consequences for their actions. Unlike Fiends who secretly harbor intense guilt and long for the souls they have lost, Demons are enthralled by their excess. Demons are sustained by chaos; if they are not surrounded by chaos, they will wither and die. Demons care nothing for life, least of all their own; they think only in the moment and cannot tolerate sitting still. They treat everything as if they were in a fictional world where nothing matters except their own immediate gratification. * Control - As beings of chaos, Demons can never be controlled. Attempts to control them damage them instead. * Abilities - Demons have the most varied abilities among all creatures. They generally have great strength, speed, and durability and can regenerate wounds. Some can extend their limbs and digits. All Demons can be identified by their [Demonic Power]." :titles "Demonic" :unitmap (unitmap "Abyssal Horror" (unit :name "Abyssal Horror") "Abyssal Hound" (unit :name "Abyssal Hound" :summary "* Resembles large muscular bulldog/pit bull 3ft at the shoulder. Their eyes pulse a faint red with their heartbeat. They love to chase prey and are completely silent in pursuit. They are aggressive bullies, but will flee a determined foe unless the scent of blood drives them into a murderous frenzy." :titles "Demon Dog") "Abyssal Hunter" (unit :name "Abyssal Hunter") "Chaos Demon" (unit :name "Chaos Demon" :summary "* A Chaos Demon is a creature drawn from the stuff of Chaos. The results of summoning a Chaos Demon are necessarily difficult to predict. Randomly select each Body Part. For each [Hit], add one random ability. For each [Critical Hit], add one ability of your choice. ** Body Parts *** Head **** Headless **** Mindless **** Cunning **** Brilliant *** Mouth **** Mouthless **** Taste *** Ears **** Deaf **** Big Ears **** Sonar *** Eyes **** Blind **** Bug Eyes **** Eye Stalks *** Nose **** Snout *** Body **** Armor **** Acid Blood **** Blob **** Boat **** Mist **** Slime **** Spines *** Arms **** Armless **** Claws **** Hands *** Wings **** Bat Wings **** Bird Wings **** Insect Wings **** Wingless *** Legs **** Caterpillar Legs **** Hopping **** Insect Legs **** Legless **** Slug **** Spider Legs ** Abilities *** Burrowing *** Clairvoyance *** Confusion *** [[Darkness]] *** Darts *** Disease *** Dust Cloud *** Emotion Control *** Empathy *** Ethereal *** Freezing Attack *** Hellfire *** Horde *** Insect Plague *** Lore *** Poison *** Shape Change *** Shock *** Stinger *** Telekinesis *** Web") :Empusa (unit :name "Empusa") :Lilin (unit :name "Lilin") "Mist Demon" (unit :name "Mist Demon") :Pazuzu (unit :name "Pazuzu" :reference "Exorcist, Exorcist II" :summary "Dark Angel of the Four Winds with rotting genitals from which he howls through sharpened teeth over stricken cities." :titles "Lord of Fevers and Plagues") :Orcus (unit :name "Orcus" :reference "John Milton's Paradise Lost") :Ades (unit :name "Ades" :reference "John Milton's Paradise Lost") :Demogorgon (unit :name "Demogorgon" :reference "John Milton's Paradise Lost"))) :Infernal (section :name "Infernal" :reference "* The greatest trick the Devil ever pulled was convincing the world he didn't exist. - Verbal, The Usual Suspects" :summary "* Fiends are dangerous creatures both physically and mentally. They are sometimes mistaken for Demons, but Demons are forces of random destruction while Fiends possess a sinister intellect and seek to install their own order on the mortal realm. * Conflict - Fiends are powerful creatures that have been engaged in a cold war with the Angels for millenia. As in any longstanding dipute, their history is convuluted and both sides maintain conflicting claims why their causes are just. They both seek to recruit souls from the mortal realm to increase their faction's power. The Angels promise protection while the Fiends see this protection as oppressive control. The Fiends promise freedom while the Angels see this as freedom to suffer. Essentially, their conflict is socialism vs. capitalism. * Soul Collection - The prime motivation for fiends is collecting corrupted souls. Fiends cannot corrupt a soul by forcing one to do evil. Instead they must manipulate and tempt. Therefore, fiends spend most of their time on earth in mortal form stalking people, learning their secrets, poisoning their emotions, and gaining their trust in any way they can. The best minions of Hell are never noticed at all. With their powers, fiends could cause tremendous destruction, but that would drive people away. They would have the corpses but not the souls. * Contract - Devil's Bargain. Fiends are willing to engage in contracts with mortals, usually in exchange for their soul but sometimes for lesser mischief. The fiend hierarchy ensures that these contracts are always binding to both parties. Some magi believe they can deal with fiends, learn from them, and not be corrupted themselves. This rarely goes to plan and fiends are more than willing to pit their intelligence against a mage's. * Deceiver - Fiends are deceivers first and foremost. No ability can reveal whether they are telling the truth. * Corrupted - No ability can change them into virtuous beings. They are too far gone to turn. * Tormented - Though fiends appear to be all-powerful embodiments of evil, they are ruled by their [Shadow] and forever tormented by the remnants of their [Spirit]. They are secretly filled with regret and self-loathing and have even been known to strangely act in ways that lead to their own defeat. * Shaitan are the original and most powerful fiends. Most are ancient fallen angels, who through millenia of worship now possess godlike power. * Archfiends are the most powerful sorts of Fiends below the godlike Shaitan. They stand 10 to 20 feet tall and have red or coal black skin. They live in stone castles and observe a medieval heirarchy of princes, princesses, barons, ministers, and knights. They profess undying loyalty to the Shaitan, though, in fact, they crave power, wealth, and position and are throughly unscrupulous and untrustworthy in all their dealings." :titles "Devilish, Devils, Diabolic, Fiends, Shaitan, Shayatin" :unitmap (unitmap :Baphomet (unit :name "Baphomet") "Count Andromalius" (unit :name "Count Andromalius") "Count Bifrons" (unit :name "Count Bifrons") "Count Furfur" (unit :name "Count Furfur") "Count Halphas" (unit :name "Count Halphas") "Count Räum" (unit :name "Count Räum") "Duke Agares" (unit :name "Duke Agares") "Duke Aim" (unit :name "Duke Aim") "Duke Alloces" (unit :name "Duke Alloces") "Duke Amdusias" (unit :name "Duke Amdusias") "Duke Astaroth" (unit :name "Duke Astaroth") "Duke Barbatos" (unit :name "Duke Barbatos") "Duke Bathin" (unit :name "Duke Bathin") "Duke Buné" (unit :name "Duke Buné") "Duke Berith" (unit :name "Duke Berith") "Duke Crocell" (unit :name "Duke Crocell") "Duke Dantalion" (unit :name "Duke Dantalion") "Duke Eligos" (unit :name "Duke Eligos") "Duke Focalor" (unit :name "Duke Focalor") "Duke Gremory" (unit :name "Duke Gremory") "Duke Gusion" (unit :name "Duke Gusion") "Duke Haures" (unit :name "Duke Haures") "Duke Murmur" (unit :name "Duke Murmur") "Duke Sallos" (unit :name "Duke Sallos") "Duke Valefor" (unit :name "Duke Valefor") "Duke Vapula" (unit :name "Duke Vapula") "Duke Vepar" (unit :name "Duke Vepar") "Duke Vual" (unit :name "Duke Vual") "Duke Zepar" (unit :name "Duke Zepar") "Dust Devil" (unit :name "Dust Devil") "Fury Devil" (unit :name "Fury Devil" :titles "Erinyes") :Grimalkin (unit :name "Grimalkin" :reference "* During the early modern period, the name grimalkin, and cats in general, became associated with the devil and witchcraft. Women tried as witches were often accused of having a familiar, frequently a grimalkin." :summary "* The Grimalkin is a small, black, furry devil with glowing eyes and sharp claws. It is wickedly, intelligent but lazy and weak, so it prefers to get involved in the schemes of others. It takes the role of scout, messenger, and advisor. It enjoys providing information that causes suffering and sitting back and watching their handiwork unfold. * The Grimalkin is commonly used as a familiar by black magicians. In order to remain on the mortal plane, it must possess a small animal. It will choose a creature which closely suits its personality, often an old or evil-looking female cat." :titles "Greymalkin, Shadowcat") :Hellhound (unit :name "Hellhound" :summary "* Hellhounds may appear as ordinary large dogs with black coats (usually Dobermans). * In combat, they may take a more monstrous form and may spawn up to 2 additional heads and have been known to breathe fire. * Be aware that Hellhounds only appear as dogs. Like all devils, they are corrupted souls of humanoids and possess a calm, calculating intelligence. They often work as a pack, creating ambushes and using decoys to lure their prey to their doom." :titles "Cereberus, Devil Dog, Fenris Wolf, Garm, Kerberos") :Hellion (unit :name "Hellion" :titles "Hellcat") :Hellspawn (unit :name "Hellspawn" :titles "Lemure") "Ice Devil" (unit :name "Ice Devil") :Imp (unit :name "Imp" :summary "* The Imp is a foot tall, bat-winged minor Devil with a long forked tail that can be used for grasping. Imps can find and squeeze through the tiniest dimensional cracks and are therefore the most common of all of Hell's legions infesting the world. They can speak, but are mostly incoherent, muttering, lunatics. Their flesh is rubbery and their bones are soft, so they can withstand the massive physical abuse that greater devils heap on them. Though physically weak, they are fast flyers with keen vision and make excellent messengers. * Origin - Imps are the Fiend form of cruel children who chose to go to hell to continue their cruelty. Of course, this does not go well for evil child. * Personality - They are clever and may try to design intricate plans, or they may just cause trouble and hope that will please their masters. * Powers - They may communicate mentally with other devils and it is in this way that they are the most useful. Powerful diabolists have been known to capture Imps and cram them into magical bottles. Anyone who possesess the bottle may converse with the Imp inside. Though the Imp is troublesome and somewhat incoherent, it may be used as a go between to converse with greater devils to negotiate for knowledge or power. While channelling greater devils, the Imp becomes immeditately conherent and possesses a dark intelligence that it uses to conspire with its master. * In their home realm, Imps occupy the unenviable position at the bottom of the devil hierarchy. At best, servitors may be employed as scullery workers or menial laborers. Worse they are used as living tools serving as a plunger, polishing, or scrapping instrument. Devils sometimes amuse themselves by squeezing an imp's head into funny faces." :titles "Bottle Imp, Sardonicus") "King Baal Moloch" (unit :name "King Baal Moloch" :summary "* A King of [Devils] with [Godlike] power. * Baal appears as a man with a bull's head. * Worship involves child sacrifice by fire (to Moloch)." :titles "Bael") "King Balam" (unit :name "King Balam") "King Beleth" (unit :name "King Beleth") "King Belial" (unit :name "King Belial") "King Paimon" (unit :name "King Paimon") "King Purson" (unit :name "King Purson") "King Viné" (unit :name "King Viné") "King Zagan" (unit :name "King Zagan") "Knight Furcas" (unit :name "Knight Furcas") "Marquis Amon" (unit :name "Marquis Amon") "Marquis Andras" (unit :name "Marquis Andras") "Marquis Andrealphus" (unit :name "Marquis Andrealphus") "Marquis Cimeies" (unit :name "Marquis Cimeies") "Marquis Decarabia" (unit :name "Marquis Decarabia") "Marquis Leraje" (unit :name "Marquis Leraje") "Marquis Forneus" (unit :name "Marquis Forneus") "Marquis Marchosias" (unit :name "Marquis Marchosias") "Marquis Naberius" (unit :name "Marquis Naberius") "Marquis Oriax" (unit :name "Marquis Oriax" :titles "Orias") "Marquis Phenex" (unit :name "Marquis Phenex") "Marquis Ronové" (unit :name "Marquis Ronové") "Marquis Samigina" (unit :name "Marquis Samigina") "Marquis Shax" (unit :name "Marquis Shax") "Marquis Sabnock" (unit :name "Marquis Sabnock") :Nightmare (unit :name "Nightmare" :titles "Shadowmane") "Pit Fiend" (unit :name "Pit Fiend" :titles "Balrog, Fiend, Lord of the Pit") "Pit Wyrm" (unit :name "Pit Wyrm") "President Amy" (unit :name "President Amy") "President Botis" (unit :name "President Botis") "President Buer" (unit :name "President Buer") "President Caim" (unit :name "President Caim") "President Foras" (unit :name "President Foras") "President Glasya-Labolas" (unit :name "President Glasya-Labolas") "President Haagenti" (unit :name "President Haagenti") "President Malphas" (unit :name "President Malphas") "President Marbas" (unit :name "President Marbas") "President Marax" (unit :name "President Marax") "President Ose" (unit :name "President Ose") "President Valac" (unit :name "President Valac") :Azazel (unit :name "Azazel") "Prince Asmodeus" (unit :name "Prince Asmodeus" :summary "* Spreads lust through the land. Embodies the sin of lust. * Part man part animal hybrid." :titles "Asmoday") "Prince Beelzebub" (unit :name "Prince Beelzebub" :summary "* Fallen angel second only to Lucifer. Demon of pestilences. Consumes everything in his path." :titles "Lord of Gluttony, Lord of Flies, Lord of Flyers") "Prince Belphagor" (unit :name "Prince Belphagor" :summary "* The lord of fire and laziness. Prince of manipulation and deceit. He embodies the sin of sloth. * Formerly the Archangel Belpior, he took no side during Lucifer's rebellion and was cast down for his inaction. * He is a shape changer." :titles "Lord of Sloth") "Prince Gäap" (unit :name "Prince Gäap") "Prince Ipos" (unit :name "Prince Ipos") "Prince Leviathan" (unit :name "Prince Leviathan" :summary "* Swallows whole those consumed with envy. Embodies the sin of envy." :titles "Gates of Hell, Hellmouth, Lord of Envy") "Prince Lucifer" (unit :name "Prince Lucifer" :reference "* The are very few things that I will defend with true passion: medical marijuana, the biblical Satan as a metaphor against tyranny, and motherfucking, goddamn cryptocurrency. - Gilfoyle, Silicon Valley * Guilt is like a bag of fuckin' bricks. All you gotta do is set it down. ... Who are you carrying all those bricks for anyway? God. ... God likes to watch. He's a prankster. .. He gives man instincts ... He sets the rules in opposition. It's the goof of all time. Look but don't touch. Touch but don't taste. Taste but don't swallow. ... And while you're jumping from one foot to the other, what is he doing? He's laughing his sick, fucking ass off. ... He's a sadist. He's an absentee landlord. Worship that? Never. ... Freedom, baby is never having to say you're sorry. - Devil's Advocate" :summary "* The archangel who rebelled and was cast out. He embodies the sin of pride." :titles "Lord of Pride") "Prince Mammon" (unit :name "Prince Mammon" :summary "* Enslaves those who pursue wealth. Embodies the sin of greed." :titles "Lord of Greed") "Prince Orobas" (unit :name "Prince Orobas") "Prince Satan" (unit :name "Prince Satan" :titles "Lord of Wrath") "Prince Seere" (unit :name "Prince Seere") "Prince Sitri" (unit :name "Prince Sitri") "Prince Stolas" (unit :name "Prince Stolas") "Prince Vassago" (unit :name "Prince Vassago") "Shaitan, Devil" (unit :name "Shaitan, Devil") :Succubus (unit :name "Succubus" :summary "* Appearance - A powerful Devil who appears as an alluring person with unearthly beauty. In their true form they have a terrifying regal presense with glowing eyes, sharp fangs, bat-like wings, elegant horns like a tiara, and cloven feet. They have distinct male and female genders, but they have no sexual preference (a soul is a soul after all). * Energy Drain - They seduce people to have intercourse, providing untold pleasures while drawing their energy, often to the point of exhaustion or death. * Illusion - They are masters of [Illusion] and will almost never appear in their true form in the mortal realm. * Strength - They are physically powerful with strength similar to a bear or gorilla, but despite their power, they consider violence to be beneath them and will negotiate or flee if given the chance. * Patience - They are patient, sophisticated, and knowledgeable. Their seduction talents go far beyond sex, and they will often offer aid or information to befriend and manipulate their target. They are in no rush to accomplish their mission." :titles "Incubus, Sex Fiend, Temptress"))) :Flatlands (section :name "Flatlands" :summary "* A bizarre two-dimensional realm." :unitmap (unitmap "Ribbon Guard" (unit :name "Ribbon Guard" :summary "* Ribbons are unusual, two-dimensional entities. They never communicate, but they understand orders and always follow them accurately without concern for their own safety, so they are favored as guards or servants. * Description - They appear as floating banners of fabric of varying colors, but they have no actual depth. They ripple slowly through air or water like snakes and may strike or grapple opponents. They do not seem to eat, sleep or even breathe. It is unclear if they have independent thought or are merely automatons. * Powers: ** [Resistance]: [Resist Impact], [Resist Pierce], [Resist Electricity], [Resist Vacuum], [Resist Radiation], [Immune Vaccuum], [Cannot Eat], [Cannot Sleep] ** [Vulnerability]: [Vulnerable to Slash], [Vulnerable to Fire], [Vulnerable to Cold]"))) :Mirrorlands (section :name "Mirrorlands" :unitmap (unitmap "Mirror Reflection" (unit :name "Mirror Reflection" :summary "* A Mirror Reflection is being from the Mirrorlands that has no personal definition but longs for the definition of others. To this end, they become a mirror image of another being and try to impersonate the person though they lack any memories of the original. It would be practical to dispose of the original, but they are always only a reflection so they would die as well.") "Mirror Shard" (unit :name "Mirror Shard" :summary "* A Mirror Shard is a weaker form of a [Mirror Reflection]. It copies some single aspect of the original but is otherwise an empty shell. This incompleteness drives them mad with desperation. They are always drawn to the those they copy and are usually irrationally destructive. * [Action] [Target]: The Mirror Shard becomes the same [Mass] as the target. Then choose one [Skill] or [Power] to copy. The Mirror Shard gains that Skill/Power and loses all other Skills and Powers. It [Body], [Mind], and [Will] are altered accordingly.")))))) (func chapter_darkling : base/chapter (chapter :name "Darkling" :titles "Goblinoid" :sectionmap (sectionmap :Bugbear (section :name "Bugbear" :reference "* Serial Killer" :summary "* Appearance - Bugbears are the largest of the goblin races. They are 7ft tall, are covered in fur, have long ears, and have long fangs. They have a tough hide and dislike armor. * Personality - Brutal hunters and survivalists. They are butish like other goblins, but they are shrewd hunters and trappers. They are strictly carnivorous and treat everything as prey. They have been known to eat goblin in a pinch and would probably do so more if the flavor agreed with them more. They have little patience and are easily provoked. They are usually encountered alone while hunting or in a goblin nest acting as champion or leader. * Morale - Normal * Units - Skimisher, Trapper, Berserker, Light Axeman, Light Spearman, Light Polearm * Skills - Melee, Spear, Axe, Net, Hunting, Stealth, Survival, Close Combat, Knife * 7ft 400lbs." :titles "Babau, Bogy, Bogey, Bogeyman, Bogill, Boogeyman, Bugaboo") :Caprians (section :name "Caprians" :titles "Goatmen") :Gnolls (section :name "Gnolls" :reference "* Seven Deadly Sins: Sloth * Typical Gnolls... strong to the weak, weak to the strong. - Roi, King's Raid" :summary "* Personality - Slothful by nature, they do anything they can to avoid work in any form. The slave trade comes naturally to gnolls, though they are poor guards. * Morale - Low * Units - Light Infantry, Elite Pikemen, Enslaved Siege Crews * The largest of gnolls can grow to the size of an ogre." :unitmap (unitmap "Gnoll Axeman" (unit :name "Gnoll Axeman" :image "Fantasy/Gnoll_Axeman.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Pike (unititem :name "Pike"))))) "Gnoll Chieftain" (unit :name "Gnoll Chieftain" :summary "* Gnoll leadership is determined through intimidation and power. Gnoll leaders are usually the largest and strongest of their breed. Like bull walruses they maintain a harem of brides, so the position is coveted by upstarts. Challenges to a Chief's rule are usually not fatal, but the loser must put himself at the mercy of the victor. A good leader is expected to accept the subservient gesture, but some victors will commit a political faux pas to permanently remove a rival." :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "7" :unititemmap (unititemmap "War Hammer" (unititem :name "War Hammer"))))) "Gnoll Pikeman" (unit :name "Gnoll Pikeman" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Pike (unititem :name "Pike"))))) "Gnoll Skirmisher" (unit :name "Gnoll Skirmisher" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) "Gnoll Slaver" (unit :name "Gnoll Slaver" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :unititemmap (unititemmap :Net (unititem :name "Net") :Whip (unititem :name "Whip"))))))) :Goblins (section :name "Goblins" :reference "* Seven Deadly Sins: Gluttony * So raise your glass if you are wrong, in all the right ways. All my underdogs, we will never be, never be anything but loud and nitty-gritty, dirty, little freaks - Pink, Raise Your Glass. * Gremlins (1984) * Descent * Nezumi-Kozo * Gollum" :summary "* Description - Goblins are a small, savage, cave-dwelling humanoid species common to many mountainous regions. They live primarily underground and are very sensitive to bright light. They are the most numerous of the humanoid races (far outnumbering humans), though most Goblins are found underground where they wage war with their age old enemies, the Dwarves. These wretched man-like creatures are short and wiry, rarely exceeding 4 feet tall. They have soot-grey skin, large pointed ears, sharp fangs, and distorted features. They are physically weak and lack personal hygene. They do, however, have keen senses including superb night vision. * Personality - Goblins are hedonistic and brash. They are generally quirky and obsessive with their personal interests. This makes them excellent inventors, but they lack patience with details, so their inventions are usually highly flawed especially with regards to safety for which they have no consideration. They seem to have no recognizable morals and have been known to resort to any number of deviant behaviors including torture, cannibalism, and diabolism. They have a particular obsession with eating and will talk about food and preparation endlessly even when not hungry. They prefer knives and cleavers as weapons. They have no restrictions on what they eat, and they do not hold prisoners for long.... Selfish, undisciplined cowards by nature, they only gain confidence in numbers, and they always fight as a mob. Even their allies consider them to be reprehensible and ultimately expendable. The goblins are aware of how their allies and masters view them, so they show no real respect to power and are total anarchists by nature. Many races try to enlist or impress the goblins into service, but these relationships never last, because the goblins are unmanageable. * Preferred Skills - They have excellent manual dexterity and good at Ranged Combat and Thievery. They also have a talent for Kitbashing which they use to supplement their Artifice, Alchemy and Siegecraft. Their reliance on Kitbashing unfortunately makes their inventions extremely unreliable, but the goblins seem to have complete confidence in their own work. * Morale - Low * Units - Light Infantry, Light Spearmen, Light Archers, Elite Worg Cavalry, Siege Crews * History - The goblins once had a sophisticated society and ancient goblins are responsible for most of the finely worked tunnels throughout the land, but they are becoming increasing barbaric from generation to generation." :unitmap (unitmap "Goblin Aeronaut" (unit :name "Goblin Aeronaut" :titles "Goblin Balloonisht, Goblin Flyer, Goblin Kite Rider") "Goblin Artillerist" (unit :name "Goblin Artillerist" :unitskillmap (unitskillmap :Siegecraft (unitskill :name "Siegecraft" :level "3" :unititemmap (unititemmap :Ballista (unititem :name "Ballista") :Catapult (unititem :name "Catapult"))))) "Goblin Captain" (unit :name "Goblin Captain" :image "Fantasy/Goblin_Captain.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Goblin Champion" (unit :name "Goblin Champion") "Goblin Chirurgeon" (unit :name "Goblin Chirurgeon") "Goblin Hunter" (unit :name "Goblin Hunter" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "2" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))) "Goblin King" (unit :name "Goblin King") "Goblin Lord" (unit :name "Goblin Lord") "Goblin Miner" (unit :name "Goblin Miner" :unitskillmap (unitskillmap :Siegecraft (unitskill :name "Siegecraft" :level "2" :unitabilitymap (unitabilitymap :Sapping (unitability :name "Sapping"))))) "Goblin Raider" (unit :name "Goblin Raider" :image "Fantasy/Goblin_Raider.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "2" :unititemmap (unititemmap :Knife (unititem :name "Knife"))))) "Goblin Scout" (unit :name "Goblin Scout" :image "Fantasy/Goblin_Scout.png" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :level "3" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) "Goblin Saboteur" (unit :name "Goblin Saboteur") "Goblin Shaman" (unit :name "Goblin Shaman") "Goblin Soothsayer" (unit :name "Goblin Soothsayer") "Goblin Tinker" (unit :name "Goblin Tinker" :unitpowermap (unitpowermap :Artifice (unitpower :name "Artifice" :level "3")) :unitskillmap (unitskillmap :Mechanics (unitskill :name "Mechanics" :level "3"))) "Goblin War Drummer" (unit :name "Goblin War Drummer"))) :Hobgoblins (section :name "Hobgoblins" :summary "* Description - The military elite of the goblin race. They are a rare genetic throwback to the days when the Goblins were an advanced race. They appear less and less frequently as the Goblins regress to barbarism. * Personality - Brave, militaristic, and orderly, they are everything their goblin kin are not. Highly disciplined, they are considered to be natural leaders in goblin society, rising quickly in goblin ranks. Though goblin prejudices keep them from ultimate leadership, they frequently are the power behind goblin kings. * Preferred Skills - Military, Melee, Strategy * Morale - High * Units - Elite Light Infantry, Light Pikemen, Elite Light Archers, Elite Worg Cavalry (Note: Full units are very rare)" :titles "Hob" :unitmap (unitmap "Hobgoblin Archer" (unit :name "Hobgoblin Archer") "Hobgoblin Cavalry" (unit :name "Hobgoblin Cavalry") "Hobgoblin Lord" (unit :name "Hobgoblin Lord") "Hobgoblin Spearman" (unit :name "Hobgoblin Spearman") "Hobgoblin Strategist" (unit :name "Hobgoblin Strategist") "Hobgoblin Tracker" (unit :name "Hobgoblin Tracker" :summary "* Hobgoblins are reknowned less for their skill (their dogs do the actual tracking) than their tenacity and merciless efficiency. They are employed as scouts, border troops, and to hunt down criminals, dissidents, and escaped slaves.") "Hobgoblin Swordsman" (unit :name "Hobgoblin Swordsman" :image "Fantasy/Hobgoblin_Swordsman.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) :Kobolds (section :name "Kobolds" :summary "* Description - Kobolds are small relatives of goblins. They have bright blue skin and the color Cobalt is named after them. * Personality - Viscious opportunists readily attack anyone perceived as a weaker opponent. Their favorite skill is [Backstab]. * Preferred Skills - Mechanics (Traps), Stealth, Military * Morale - Normal * Units - Scout, Spy, Light Spearmen, Light Wolf Cavalry" :unitmap (unitmap "Kobold Slinger" (unit :name "Kobold Slinger" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))) "Kobold Spearman" (unit :name "Kobold Spearman" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))) "Kobold Trapper" (unit :name "Kobold Trapper" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))))) :Trogladytes (section :name "Trogladytes" :reference "* In choosing the name 'Morlocks', Wells may have been inspired by Moloch, the Caananite god of child sacrifice, with the Eloi analogous to children. Alternatively, he may have also been inspired by the Morlachs, an ethnic group in the Balkans which attracted attention from Western travellers as a perceived archetype of barbarism and backwardness... The Time Traveller speculates that the relationship developed from a class distinction present in his own time: the Morlocks are the working class who were relegated to working and living underground so that the rich upper class could live in luxury on the surface. - H.G. Wells, The Time Machine * The Descent" :summary "* Description - Trogladytes have dull grey-to-white skin, chinless faces, large greyish-red eyes that reflect light, reflecting light, and flaxen hair on the head and back. They are highly adapted to living in the dark with keen sense of hearing and smell but poor eyesight, and they cannot tolerate bright light. They are exceedingly primitive, but they are cunning and have learning to cultivate mushrooms, grubs and fishing pools. They do not bathe and their dens are notorious for their stench. Trogladytes recognize each other by smell. * History - Trogladytes are an offshoot of mankind that lived in large cavern systems but were cut off from the surface. Since then they have adapted to underground life. Sparse living has made them merciless and cannibalistic." :titles "Crawlers, Morlocks") :Uruks (section :name "Uruks" :reference "* Cro-magnon Man, Goths, Huns, Mongols, Vandals * Seven Deadly Sins: Wrath" :summary "* Description - Uruks are a relatively primitive species of barrel-chested humanoids distantly related to Humans. They are sturdy and imposing figures, trained by hard labor and warfare since birth. They range in height from 5 feet to 7 feet tall and typically have yellowish/grey/green skin, red/black/brown eyes, and long black/grey/white hair. Their noses are flat and they have a notably large mouth with uneven teeth. * Personality - Uruks are typically violent, impatient, and crude. They take what they want by force and are difficult to bargain with. Their culture and leaders claim that they are destined to take over the world and take back all that has been taken from them. Now they are consumed with wrath and envy of the achievements of other races and other orc tribes. * Culture - Their civilization is still in a hunter/gatherer stage. They lack the patience and desire to read, cultivate crops, domesticate herd animals, or invent sophisticated equipment. They live a semi-nomadic existence depending on the availability of resources and the charisma of their leaders. Uruk 'kingdoms' are short lived. The race's genius for battle does not extend itself to statecraft, and their conquests inevitably collapse under a struggle for power between rival leaders. Uruk society is completely male dominated. Females are expected to find a male to support them and begin their life's purpose: breeding. Any female of breeding age that has no male protector is considered available to any male that chooses to take her and support her. Other cultures consider this to be rape. Uruks call it marriage. They extend this practice to captured females from other races. * Warfare - Uruks wage constant war on any group near them until they take what is 'rightfully' theirs. When warbands grow large enough, they spill down into neighboring settlements to rape, murder, raid, and pillage. These bands can take on the proportions of a large town or small city, and roll across the countryside leaving burning wreckage in their wake. * Language - Uruks speak the rough and unflattering Uruk tongue, which has no alphabet. Uruk culture and history is passed along in an oral tradition. * Morale - Normal * Preferred Skills - Melee, Rage * Units - Light Infantry, Light Spearmen, Light Archers, Light Cavalry, King * Factions - Skullsplitter, Bonegrinder" :titles "Orc" :unitmap (unitmap "Uruk Butcher" (unit :name "Uruk Butcher" :summary "* Orc Butchers deal in all things meat. They serve as cooks, surgeons, undertakers, and torturers. * They prefer cleavers, hand axes, and knives in combat.") "Uruk-hai Champion" (unit :name "Uruk-hai Champion" :titles "Brawler, Bodyguard") "Uruk Raider" (unit :name "Uruk Raider") "Uruk Shaman" (unit :name "Uruk Shaman" :summary "* Uruk Shamans teach that everything the Uruks once had was stolen by the other races, and urges them on to ever-greater acts of violence and revenge.") "Uruk Taskmaster" (unit :name "Uruk Taskmaster") "Uruk Veteran" (unit :name "Uruk Veteran") "Uruk War Chief" (unit :name "Uruk War Chief") "Uruk Warrior" (unit :name "Uruk Warrior" :image "Fantasy/Orc_Warrior.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3")))))))) (func chapter_giant_races : base/chapter (chapter :name "Giant Races" :sectionmap (sectionmap "Lesser Giants" (section :name "Lesser Giants" :unitmap (unitmap :Ogre (unit :name "Ogre" :summary "* Gluttony, Wrath * Preferred Skills - Close Combat, Hunting * Morale - Low * Units - Elite Heavy Infantry (Note: Full units are very rare) * Description - Ogres appear as huge, overweight, hairless humanoids. * Personality - Ogres are perpetually hungry. However, they are limited by their extremely low intelligence and short tempers." :mind "2:1" :will "3:1" :mass "300kg" :height "3m") :Oni (unit :name "Oni") :Troll (unit :name "Troll" :summary "* Preferred Skills - Close Combat, Hunting * Morale - Normal * Units - Elite Heavy Infantry (Note: Full units are very rare)"))) "Greater Giants" (section :name "Greater Giants" :summary "* Units - Elite Heavy Infantry (Note: Full units are very rare)" :unitmap (unitmap "Cloud Giant" (unit :name "Cloud Giant") :Cyclops (unit :name "Cyclops") "Fire Giant" (unit :name "Fire Giant" :titles "Eldjotunn") "Hill Giant" (unit :name "Hill Giant") "Ice Giant" (unit :name "Ice Giant" :titles "Frost Giant, Jotunn") "Mountain Giant" (unit :name "Mountain Giant") "Stone Giant" (unit :name "Stone Giant") "Storm Giant" (unit :name "Storm Giant"))) "Unique Giants" (section :name "Unique Giants" :unitmap (unitmap :Surtr (unit :name "Surtr" :reference "* Surtr is foretold as being a major figure during the events of Ragnarok; carrying his bright sword, he will go to battle against the Aesir, he will do battle with the major god Freyr, and afterward the flames that he brings forth will engulf the earth." :titles "The Black One") :Ymir (unit :name "Ymir" :reference "* Ymir was the founder of the race of frost giants and an important figure in Norse cosmology. Odin and his brothers killed Ymir, and when Ymir fell the blood from his wounds drowned almost the entire tribe of frost giants or jotuns. Then they used Ymir's body to create Midgard, the earth. His flesh became the earth. His blood formed seas and lakes. From his bones mountains were erected. From his hair grew trees and maggots from his flesh became the race of dwarfs. The gods set Ymir's skull above Ginnungagap and made the sky." :summary "* Jotunheim"))) :Titans (section :name "Titans" :unitmap (unitmap :Atlas (unit :name "Atlas") :Chronos (unit :name "Chronos" :titles "Yog-Sothoth") :Echidna (unit :name "Echidna" :summary "* Mother of Monsters * Children - Cerberus, Chimera, Ethon, Gorgon, Graeae, Gelonus, Ladon, Lernaean Hydra, Nemean Lion, Orthrus, Phaea, Scylla, Sphinx" :titles "Shub-Niggurath") :Gaia (unit :name "Gaia" :titles "Mother Earth, Wyld, Azathoth") :Helios (unit :name "Helios" :titles "The Sun") :Mene (unit :name "Mene" :titles "Selene, The Moon") :Oceanus (unit :name "Oceanus") :Prometheus (unit :name "Prometheus" :titles "The Serpent, Nyarlathotep, Phoenix") :Tartarus (unit :name "Tartarus" :titles "Oblivion") :Typhon (unit :name "Typhon" :summary "* The enemy of Zeus * A vast grisly monster with a hundred snakelike heads that extends in serpentine coils from the waist down.")))))) (func chapter_mythical_beasts : base/chapter (chapter :name "Mythical Beasts" :sectionmap (sectionmap :Beasts (section :name "Beasts" :unitmap (unitmap :Aeroplasm (unit :name "Aeroplasm" :summary "* The Aeroplasm is an unusual 15 foot tall invertibrate that lives entirely in the sky. It floats by means of air bladders filled with hydrogen gas which makes them spectacularly flammable if their bladders are ruptured by fire. They have long tendrils that contain a potent neurotoxin which they use to paralyze the birds and insects that they prey upon. During the Aeroplasm mating season, the males produce a luminous secretion that makes them glow in various colors to attract females. It is said that the sight of hundreds of Aeroplasms glowing in different shades in the night sky is a spectacular sight." :titles "Floating Jellyfish") :Basilisk (unit :name "Basilisk") :Behemoth (unit :name "Behemoth") "Boo Hag" (unit :name "Boo Hag") :Catoblepas (unit :name "Catoblepas" :reference "* The catoblepas (from the Greek 'to look downwards') is a legendary creature from Ethiopia. It is thought to be based on real-life encounters with wildebeest." :summary "* It is said to resemble a cape buffalo, with its head always pointing downwards due to its great weight. Its stare or breath could either turn people into stone, or kill them." :unitpowermap (unitpowermap "Transform Other" (unitpower :name "Transform Other" :unitabilitymap (unitabilitymap :Petrification (unitability :name "Petrification"))))) :Chimera (unit :name "Chimera" :image "Fantasy/Chimera.png") :Chonchon (unit :name "Chonchon") :Cockatrice (unit :name "Cockatrice") :Doppelganger (unit :name "Doppelganger") "Floating Eye" (unit :name "Floating Eye" :titles "Beholder, Evil Eye, Eye Killer, Eye of the Beholder") :Gargoyle (unit :name "Gargoyle") :Griffin (unit :name "Griffin" :image "Fantasy/Griffin.png") "Goblin Spider" (unit :name "Goblin Spider" :summary "* Traditional Japanese folk-lore understood that goblin-spiders had the power to transform from ordinary spiders to assume the form of men when night fell.") :Gorgon (unit :name "Gorgon" :image "Fantasy/Medusa.png" :titles "Medusa" :unitpowermap (unitpowermap "Transform Other" (unitpower :name "Transform Other" :unitabilitymap (unitabilitymap :Petrification (unitability :name "Petrification")))) :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))) :Hippogriff (unit :name "Hippogriff") :Hydra (unit :name "Hydra") :Jabberwocky (unit :name "Jabberwocky") :Kirin (unit :name "Kirin" :titles "Dragon Horse") :Kraken (unit :name "Kraken") :Lamassu (unit :name "Lamassu" :summary "* Protective winged bull or lion; with the head of a human female. Shedu is the male equivalent." :titles "Shedu") :Manticore (unit :name "Manticore" :reference "* Persian Mythology" :summary "* A savage predator with the body of a lion, the tail of a scorpion, and the wings of a bat. * It has rows of razor sharp teeth and will bite off limbs and eat victims whole, bones and all. * Its tail stinger is, of course, poisonous. The poison is not especially deadly, but the shear amount of toxin injected from the large stinger makes survival unlikely. * It also has non-poisonous quills on its tail that can be flung at a target with a tail whip.") :Minotaur (unit :name "Minotaur") :Pegasus (unit :name "Pegasus") :Phoenix (unit :name "Phoenix") "Primal Ooze" (unit :name "Primal Ooze" :titles "Blob, Slime Beast") :Rukh (unit :name "Rukh" :reference "* Rukh Egg - Magic the Gathering * Sindbad observed that when a karkadann spears an elephant on its horn, the elephant’s fat runs into the rhino’s eyes and blinds it; a rukh will then swoop down and carry both combatants off to feed its chicks." :summary "* Appearance - Rukhs are monstrously large birds vaguely similar in a appearance to a vulture. * Feeding - Rukhs are uncontested predators capable of feeding on the largest and most dangerous land animals. They have a particular fondness for giant serpents, elephants, and karkadanns or rhinoceroses. * Intelligence - Rukhs also appear to have some degree of intelligence, using boulders to smash prey." :titles "Roc") "Roc Hatchling" (unit :name "Roc Hatchling") "Sea Horse" (unit :name "Sea Horse") :Sphinx (unit :name "Sphinx" :summary "* Highly intelligent") "Tentacle Terror" (unit :name "Tentacle Terror" :reference "* Cthulu Mythos * Hentai" :summary "* A formless mass that can create writhing tentacles, eyes, and mouths from its body." :titles "Roper, Tentacle Beast") :Terraphant (unit :name "Terraphant" :summary "* A hulking beast the size of an elephant with a head like an octopus.") :Thunderbird (unit :name "Thunderbird" :summary "* The Thunderbird is a large bird with a special affinity for electricity. When a storm is present, the Thunderbirds true power is awakened. * The wings of Thunderbirds generate increasing static electricity with each flap. * Thunder Shield - Touching the Thunderbird triggers an electric shock and a sonic area attack. * Thunderstrike - With a shriek, the Thunderbird calls a lightning strike unto itself which is instantly redirected in the direction it is facing as if the lightning came from its mouth. * Thunderclap - When the Thunderbird claps its wings together a lightning bolt strikes it and produces a deafening sonic area attack around it. * Thunder Storm - By spreading its wings, the Thunderbird calls a lightning strike onto itself which is then split into multiple strikes that rain lightning down below it." :titles "Stormcrow, Stormraptor") :Unicorn (unit :name "Unicorn") :Yeti (unit :name "Yeti") "Wandering Eye" (unit :name "Wandering Eye" :summary "* Thw Wandering Eye is a bizarre, eel-like creature with a single, large, humanoid eye where a mouth and face would normally be. Eyes live in large groups underground and slowly float through the air like schools of fish. Their skin is a dark matte brown while their eye is highly reflective white, so usually the first view of Wandering Eyes is of a dozen disembodied eyes moving and blinking independently of one another in the dark. * Motivation - The Eyes are not intelligent nor malicious. They simply seek food, and will flee if startled or they are losing. * Levitation - Eyes produce a lighter than air gas that is stored in sacs down its body. These allow The creature to float and it can slowly propel itself through the air by making swimming motions. * Confusion - The creature's single, large eye doesn't seem to focus on anything and keeps moving about randomly. When a group of Wandering Eyes are seen, their weird, random eyes cause vertigo, confusion, fear, and sometimes madness. The Wandering Eye somehow feeds on this confusion and will attempt to trap victims and keep them in an intense state of confusion until they expire. * Weakness - Eyes are adjusted to life in the dark and are blinded by bright lights and large fires." :titles "Eye Killer") :Ziz (unit :name "Ziz"))) "Unique Beasts" (section :name "Unique Beasts" :unitmap (unitmap :Cerberus (unit :name "Cerberus") :Charybdis (unit :name "Charybdis" :summary "* Scylla and Charybdis are two sea monsters situated on opposite sides of a narrow channel of water, so close that sailors avoiding Charybdis will pass too close to Scylla and vice versa. * She takes form as a monstrous mouth. She swallows huge amounts of water three times a day and then belches them back out again creating whirlpools.") :Scylla (unit :name "Scylla" :reference "* You consider me the young apprentice...Caught between the Scylla and Charybdis...Hypnotized by you if I should linger...Staring at the ring around your finger - The Police, Wrapped around your Finger" :summary "* Scylla and Charybdis are two sea monsters situated on opposite sides of a narrow channel of water, so close that sailors avoiding Charybdis will pass too close to Scylla and vice versa. * Scylla is a horribly grotesque sea monster, with six long necks equipped with grisly heads, each of which contained three rows of sharp teeth. Her body consisted of twelve canine legs and a fish's tail.")))))) (func chapter_shapeshifters : base/chapter (chapter :name "Shapeshifters" :sectionmap (sectionmap :Lycanthropes (section :name "Lycanthropes" :reference "* Beauty and the Beast * The Howling * Underworld * Wolfen" :summary "* Description - A hereditary trait carried by humans and animals. * Personality - Their savagery is their greatest strength, but it threatens to consume them and leave only rage. * Some lycanthropes are more animal-like and hostile to humans. * [Vulnerability] to [Silver] * Loses control under the moon * Preferred Skills: [Lycanthropy], [Natural Weaponry] !Groups * Black Spirals - [[Corrupted]] Werewolves History * The Impergium - 8,000 years ago, humankind was becoming more organized and began systematically killing wolves or destroying their habitats. The Werewolves born from wolves decided that the humans were out of control and leading the world to chaos. They declared the open hunt (or culling) of humans called the Impergium. The Werewolves born from humans saw their own kin murdered by other Werewolves. Whatever the merits of the Impergium, it triggered a civil war between the Werewolf clans with mounting killings and atrocities. The other shapeshifters tried to stay out of the conflict but were quickly forced to take sides. The conflict only ended after the number of Shapeshifters across the world was decimated, especially those born to wolves. Since then the low birth rate of Shapeshifters has taken many races to the brink of extinction. The Impergium remains as a grim reminder of the dangers of letting ones [Rage] overcome reason. The Werewolves are embarassed by their clans' actions. The other Shapeshifters have never forgiven the Werewolves for their folly. Also, many of the Werewolves born of wolves hold deep hatred for the other Werewolves both for their betrayal and for the current state of the wolves in the world." :unitmap (unitmap :Werebat (unit :name "Werebat") :Werebear (unit :name "Werebear") :Werecat (unit :name "Werecat" :image "ModernFantasy/Lycanthrope_Weretiger.png" :reference "Every time it happens... you tell yourself it's love. But it isn't. It's blood. And death. - Cat People" :titles "Rakshasa, Werepanther, Weretiger") :Werecrow (unit :name "Werecrow" :image "ModernFantasy/Lycanthrope_Tengu.png" :summary "* Able to fly, the Werecrows make terrific scouts and spies. Their overwhelming curiousity is matched only by their tendency to gossip." :titles "Tengu, Wereraven" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Feather Blades" (unitability :name "Feather Blades") "Feather Knives" (unitability :name "Feather Knives")))) :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) :Wererat (unit :name "Wererat" :image "ModernFantasy/Lycanthrope_Wererat.png" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Werespider (unit :name "Werespider" :titles "Anasi, Arachne, Kumo" :unitpowermap (unitpowermap :Illusion (unitpower :name "Illusion" :unitabilitymap (unitabilitymap "Dazzling Beauty" (unitability :name "Dazzling Beauty") "Mirror Image" (unitability :name "Mirror Image"))) :Venomous (unitpower :name "Venomous" :unitabilitymap (unitabilitymap "Poison Bite" (unitability :name "Poison Bite") "Poison Spit" (unitability :name "Poison Spit"))))) :Werewolf (unit :name "Werewolf" :image "ModernFantasy/Lycanthrope_Werewolf.png" :reference "* The crescent moon is a double-edged sword. Be wary, lest it cut you." :titles "French/Old English: Loup-garou, Japanese: Ookami otoko")))))) (func chapter_undead_creatures : base/chapter (chapter :name "Undead Creatures" :reference "* Seven Deadly Sins: Envy" :summary "* Description - The dead are normally at rest, but under certain circumstances their spirits return from the [Spirit Realm] and they rise again. Created through different means, the Undead share a common trait. Their life is artificial, a soulless parody of true life. Above all they envy the life that they lack, and they may only maintain their unlife by taking life from others. * Personality - Despite their reputation, the Undead are not innately evil. They retain at least some of their original personalities, but their new existence often forces them to reevaluate their morals. Most of the more 'ethical' Undead end their own miserable existences. * Spirit - Undead cannot recover Spirit except by stealing it from the living. Slaying the living is always worth 1 extra [Spirit] to any undead. Note: Undead are more connected to the spirit world than the living world and therefore are permanently banished from the living world if their Spirit ever drops to zero. Without a [Spirit], they many never use any [Naturalism] or [Spiritualism] magics. Types * Traumatic death - Focused completely on the trauma of their death, they are drawn to the living and end up reenacting their death with others. - Burning Dead, Drowned, Frozen Dead, Scarecrow, Wendigo. * Incomplete business - These are compelled to attempt to complete their goals. Sometimes the completion of the goal is enough to let them rest. Sometimes they continue endlessly trying to complete an impossible goal. - Shades, Poltergeists * Necromancy - Lich, Mummies, Night Terror, Skeletons, Zombies * Raised by another Undead - Ghoul, Skeleton Crew, Vampire." :titles "Restless, Restless Dead, Risen, Undeath, Unquiet" :sectionmap (sectionmap "Corporeal Undead" (section :name "Corporeal Undead" :summary "* Vulnerable: [Fire], [Impact]" :unitmap (unitmap :Barghest (unit :name "Barghest" :titles "Black Shuck, Ghost Hound") "Burning Dead" (unit :name "Burning Dead" :summary "* The burning dead are those who died by fire. They appear as they did in death (as burning skeletons, burning corpses, or burning ash). * They are consumed by intense pain and confusion and cannot be reasoned with. * They seek help from the living and attempt to embrace them in an attempt to exinquish themselves. This only serves to immolate their victim who will often rise as Burning Dead themselves. Only estinquishing their flames or destroying their remains will put them to rest. * They always attack with a Grab and will do Fire damage each round they hold their victim. * All Melee [Criticals] are [Burning] damage." :unitpowermap (unitpowermap :Fire (unitpower :name "Fire")) :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "6" :unitspecialtymap (unitspecialtymap :Grappling (unitspecialty :name "Grappling"))))) "Dead of Night" (unit :name "Dead of Night" :summary "* The Night Dead are reanimated corpses of thoses who have died in terror in darkness. They are desperate for light but their darkness powers consume light making normal light sources produce a fraction of their normal illumination. Magical light will expose them and stun them. Bathing in light is the only way to free their spirits and end their torment.") "Dead of Winter" (unit :name "Dead of Winter" :reference "* I know what it means to freeze to death, To lose a little life with every breath, To say goodbye to life on earth, And come around again, Lord have mercy on the frozen man - James Taylor, Frozen Man" :summary "* The Frozen Dead are reanimated corpses of thoses who have died by cold or exposure. They are desperate for warmth and seek the living to share an icy embrace. They radiate cold which will douse small fires around them. They are drawn to large heat sources and will happily throw themselves into raging fires. Death by fire is the only way to free their spirits and end their torment." :titles "The Frigid, Frozen Dead, Frozen Man, Ice Man, Snowman" :unitpowermap (unitpowermap :Cold (unitpower :name "Cold"))) :Dhampyr (unit :name "Dhampyr" :reference "* A dhampir in Balkan folklore is the child of a vampire father and a human mother, with vampire powers but none of the weaknesses. A dhampir is believed to have the unique ability to see vampires, even when these are invisible, and is unusually adept at killing them. ** A dhampir is always paid well for his services. The amount of money varies, but there is never bickering over the price. Standard pay for a dhampir may also include a meal or a suit of clothing. Sometimes a dhampir is paid in cattle, jewelry or women. ** Charlatans traveling the regions around the Carpathian Mountains, Balkans and elsewhere in Eastern Europe would claim to be dhampirs. They were believed to be the only ones who could see the spirit and would put on elaborate shows for villages. Once fear, grief and superstition took hold in a village following a recent death, the dhampir would 'come to the rescue'. * Blood: The Last Vampire * Vampire Hunter D * Blade * BloodRayne" :summary "* Dhampyrs, can function both day and night, although they find sunlight uncomfortable. * Dhampyrs are mortal but can live for centuries. Once mature, they age at roughly 1/10 the rate of humans. * They can breed with humans, but not with Kuei-jin or other dhampyrs. * They are not dead, so they must breath, eat, drink, and sleep. They may bleed, and they may die. * By using [Spirit], they can perform feats not possible for humans. They can regain [Spirit] through rest or by eating flesh (usually they cannot by drinking blood). * The [Beast] is weaker in a Dhampyr than in their Vampire kin, but this makes their powers weaker as well.") :Drowned (unit :name "Drowned" :reference "* The Ring" :summary "* The Drowned are the spirits of those who have died by drowning. They are completely fixated on their drowning death and are compelled to reenact the experience with others." :titles "Drowner, Kappa") "Ghost Ship" (unit :name "Ghost Ship" :reference "* Pirates of the Caribbean * The Fog * Pyaray - Elric of Melnibone" :summary "* Ghost Ships are doomed ships crewed by the [Drowned]. When they encounter the living, they are compelled to kill them so they raise again to add to their crew." :titles "Chaos Fleet, Skeleton Crew") :Ghoul (unit :name "Ghoul" :summary "* Description - A ghoul is a reanimated corpse that perpetuates its undead existence by feeding on the living and the dead. They reek of charnel pits and they have shrivelled nightmarish features. Though frail and unhealthy looking, they possess fearsome strength. The teeth and claws also carry [Corpse Rot], an infection that slowly kills the victim if the Ghoul doesn't first. Victims of Ghouls often raise as Ghouls themselves if they are not cured or their corpse is not blessed or destroyed. * Japanese Gaki appear as gaunt-faced monsters with enormous, frog-like mouths and grossly distended bellies. * Morale - High * Units - Mob" :titles "Gaki, Hungry Dead, Necrophage" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "3") "Special Ability" (unitpower :name "Special Ability" :level "2" :unitabilitymap (unitabilitymap :Cannibal (unitability :name "Cannibal") :Savage (unitability :name "Savage"))))) :Lich (unit :name "Lich" :image "Fantasy/Lich.png" :summary "* A lich is a powerful animated corpse created by [Necromancy] through the use of [Lich Form]. The necromaner curses itself to a horrific undead existence in exchange for eternal 'life'. The lich retains most of the abilities of its former life and gains some additional undead powers as well. * Because of their solitary nature, a lich cannot gain social skills nor increase their existing skills. Further these skills have a tendency to degrade the longer the lich exists." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry") :Necromancy (unitpower :name "Necromancy"))) :Mummy (unit :name "Mummy" :reference "The Mummy" :summary "* Created by Ancient Arcane ritual, Mummies are extremely powerful and exceptionally difficult to destroy. * Mummies regain Spirit by sucking the life from their victims through thier mouths, leaving only a descicated husk." :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap :Reanimation (unitability :name "Reanimation"))))) "Night Terror" (unit :name "Night Terror" :reference "* A night terror is a sleep disorder characterized by extreme terror and a temporary inability to regain full consciousness. The subject wakes abruptly usually accompanied by gasping, moaning, or screaming. It is often impossible to fully awaken the person, and after the episode the subject normally settles back to sleep without waking. * Night terrors are distinct from nightmares in several key ways. First, the subject is not fully awake when roused, and even when efforts are made to awaken the sleeper, he/she may continue to experience the night terror for ten to twenty minutes. Unlike nightmares, which occur during REM sleep, night terrors occur during slow-wave sleep, the deepest levels of non-REM sleep. Even if awakened, the subject often cannot remember the episode except for a sense of panic, while nightmares usually can be easily recalled. The subject often has no recollection of the incident. * Unlike nightmares, which are frequently dreams of a frightening nature, night terrors are not dreams. Usually there is no situation or event (scary or otherwise) that is dreamt, but rather the emotion of fear itself is felt. The lack of a dream itself leaves those awakened from a night terror in a state of disorientation much more severe than that caused by a normal nightmare. This can include a short period of amnesia during which the subjects may be unable to recall their names, locations, ages, or any other identifying features of themselves. * Children from age two to six are most prone to night terrors, and they affect about fifteen percent of all children." :summary "* Evil women who died in childbirth and now returned to slay children. * By day it may take the form of a shriveled old woman. At night it becomes a horrific corpse-like creature. In this form it sneaks into houses and sucks the breath from the lips of children, leaving them cold and lifeless. * It can only enter a house into which it has been invited, so during the day it poses as a woeful traveler to gain admittance to houses where babies live. * Night Terrors, being exclusively female, can only reproduce by mating with a male member of another species. The hag often slays her mate. The child born looks like a normal member of her species with black or blue hair and is often given into foster care by the hag disguised as a normal woman. When the young girl reaches puberty, the mother Night Hag might visit the child several times and, after several rituals, transforms her offspring into another hag." :titles "Night Hag") "Pestilence Horse" (unit :name "Pestilence Horse" :summary "* A Pestience Horse is a zombie horse that carries deadly diseases. It's decaying body is not as fast as its original body, but may still trot fairly quickly. It is not as agressive as other undead, instead travelling around spreading disease and fleeing when confronted.") :Scarecrow (unit :name "Scarecrow" :reference "* Headless Horseman * Great Pumpkin * Jack O' Lantern * Pumpkin King" :summary "* A scarecrow is a humanoid mass of twigs, straw, and old clothes that has been animated by an undead spirit. Some are actual scarecrows that have been possessed; others form out of pumpkin patches on moonless nights. Scarecrows hate all living things, but wish to do more than kill. They desire to frighten living beings as much as possible. A scarecrow can be created when someone calls for vengeance before their death. Sometimes they are killed by brigands, other times they starves to death because of blight or drought. The scarecrow then haunts the place of death, not ranging more than a mile from it. Sometimes entire families become scarecrows, and the victims of scarecrows occasionally join the haunting as well. Simply killing the body is not enough to end its haunting, as it reappears from another pumpkin on the next moonless night. To finally destroy a scarecrow, every scrap of every body must be burned, as well as any pumpkins or pumpkin vines. The land must then be tilled and planted with a new crop. Only then are the spirits forced to give up their vengeance and give up the mortal coil. * Scarecrows prefer to play with their prey, sneaking up on them and attempting to terrify them. Scarecrows fight without regard to their own safety, as they know they are likely to return on another night if destroyed.") "Skeletal Dragon" (unit :name "Skeletal Dragon") "Skeletal Knight" (unit :name "Skeletal Knight" :summary "* Morale - High" :titles "Death Knight" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Riding (unitskill :name "Riding"))) :Skeleton (unit :name "Skeleton" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :level "1" :unititemmap (unititemmap "Round Shield" (unititem :name "Round Shield"))))) "Skeleton Warrior" (unit :name "Skeleton Warrior" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :level "3" :unititemmap (unititemmap "Breast Plate" (unititem :name "Breast Plate") "Round Shield" (unititem :name "Round Shield"))))) "Slayer Dead" (unit :name "Slayer Dead" :reference "* Jason Voorhees * Nightmare on Elm Street * Vinland Saga" :summary "* Slayer Dead are the spirits of those who have lived and died a life of killing. They are completely fixated on killing others in the same way they killed in life. Most were warriors who revelled in slaughter. Some were serial killers. Large numbers of them can appear when battles are fought near Ley Lines." :titles "Murderous Dead, War Dead") :Wendigo (unit :name "Wendigo" :summary "* Wendigoes are the result of cannibalism in the forests of the north. It is a curse that causes the death of the person, and later they return as a huge cunning beast with the desire to consume human flesh. Wendigoes are thin and seven to ten feet tall, their hearts are made of ice and their claws are icicles. They are [Resistant] to [Cold] and often appear in the middle of a snowstorm to steal their victims." :titles "Abominable Snowman, Yeti") :Wight (unit :name "Wight" :summary "* A Wight is an animated corpse like a zombie, but its eyes burn fiercely, showing their deep hatred of the living. They continue to pursue their goals in life, but these goals are always twisted into hatred and revenge against the living. * Wights are usually highly intelligent or cunning and have the patience to carefully plan their murders. Wights enjoy killing as well as inflicting pain and fear on their victims who they believe deserve what they get. * A Wight is created when an extremely driven, evil person is on the verge of death. Before death, it makes a bargain with a demonic force, and returns to unlife as a Wight. * Wights retain most of their abilities while living. Powerful Wights can be as powerful as Liches. In fact, the necromantic study of Wights led to the necromantic rituals responsible for Mummies and Liches.") :Zombie (unit :name "Zombie" :summary "* Zombies are nearly mindless animated corpses. * They act irrationally and attack all living creatures with no sense of self preservation. * They have +2 Body, but because the do not protect themselves they suffer 2x criticals." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "2") "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage"))))))) "Noncorporeal Undead" (section :name "Noncorporeal Undead" :unitmap (unitmap :Haunt (unit :name "Haunt" :reference "* The Sixth Sense * Beetlejuice" :summary "* Haunts are lesser undead that remain near the places and people from their living life instead of moving on. Haunts attempt to interact with the living to maintain a semblance of their former lives. Haunts are generally not malicious, but their interactions inadvertently drain the [Will] of others over time. There are also cases of Haunts who impersonate loved ones to purposely drain their [Will].") :Lemure (unit :name "Lemure" :summary "* The wandering and vengeful spirits of those not afforded proper burial or funeral rites." :titles "Larvae, Lemur") "Lost Soul" (unit :name "Lost Soul") :Phantom (unit :name "Phantom" :summary "* Phantoms are the remnants of those who were lost in the Astral/Dream Realm. The Astral Realm is the realm of imagination, so those trapped here are gradually driven mad. Therefore, Phantoms have varying and unpredictable insanities.") :Poltergeist (unit :name "Poltergeist") :Reaper (unit :name "Reaper" :reference "Charon the Ferryman" :summary "* Reapers are dark, hooded entities that are terrifying to behold. Their arms are skeletal though though the rest of their bodies appear to be made of solid blackess. They carry large scythes which they can use to deadly effect. Their purpose appears to be to escort the sould of the recently dead to the afterlife, and their presense almost always means someone has died or will die soon.") :Shade (unit :name "Shade" :reference "The Ring" :summary "* Description - lank and ghastly beings with no feet, floating suspended above the ground. * Shades are the spirits of those who died in suicide, accident, murder, or wrongful execution. They are bound to this plane by the anger they felt at their deaths. * Suicide and accident victims attempt to compel those most like their former selves to die in the same manner. * Murder and wrongful death victims attempt to revenge themselves upon the killer or his descendents." :titles "Aghast, Ghast, Ghastly, Shoryo") :Shadow (unit :name "Shadow") :Sluagh (unit :name "Sluagh" :reference "* The spirits of the sinners, or generally evil people who were welcome in neither heaven nor hell. * They were seen to fly in groups like flocks of birds, coming from the west, and were known to try to enter the house of a dying person in an effort to carry the soul away with them. West-facing windows were sometimes kept closed to keep them out. Some consider the Sluagh to also carry with them the souls of innocent people who were kidnapped by these destructive spirits." :summary "* The Sluagh are thin, pale, snake-like, and grotesque, though they remain strangely compelling. They favor archaic, intricate, black clothing. Their joints can dislocate allowing them to slither our of bonds and into disquieting shapes. * They may only speak in whispers and dislike any social situations except among their own kind. They prefer to overserve other from hidden corners, and the secrets they obtain are their stock and trade.") :Spectre (unit :name "Spectre" :reference "* Cenobites from Hellraiser" :summary "* A Spectre is a malevolent Wraith that has been so traumatized that it is has become completely obscessed with its suffering and reenacting that suffering with others. The Spectre has fallen completely under the controlled of it's [Shadow].") "Spectral Horse" (unit :name "Spectral Horse") :Will-O-Wisp (unit :name "Will-O-Wisp") :Wraith (unit :name "Wraith" :summary "* Wraiths normally exist in the [Underworld] where their numbers are legion. * Those with strong connections to the world of the living can walk among the living but are [Invisible] and [Ethereal] and can indistinctly see the living world through the [Shroud]. Skilled Wraiths may even temporarily breech the [Shroud]. !Abilities * Keening * Manifestation * Poltergeist * Possession" :titles "Ghost"))) :Vampires (section :name "Vampires" :reference "* Dracula * I died... so many years ago. You can make me feel like it isn't so. ... I know, I should go, but I follow you like a man possessed. There's a traitor here beneath my breast, and it hurts me more than you've ever guessed. If my heart could beat, it would break my chest. But I can see, that you're unimpressed, so leave me be and let me rest in peace. Let me get some sleep. Let me take my love and bury it six feet deep. - Spike, Buff the Vampire Slayer * Cause I’ve made some real big mistakes. But you make the worst one look fine. I should’ve known it was strange. You only come out at night. I used to think I was smart. But you made me look so naïve. The way you sold me for parts. As you sunk your teeth into me, oh. Bloodsucker, dreamcrusher. Bleeding me dry like a damn vampire - Olivia Rodrigo, Vampire * Victor: I need you to understand something very, very clearly. The place we're going, if you repeat in front of them that she knows about a 'thing', she's dead. Everyone she knows is dead. Anyone she might have texted is dead. So you're going to have to learn from this exact second, how to keep a secret. There's a little show we have to put on. You might call it a sort of masquerade that we all have to live into, that none of this is real. Never in your life did you think this is real, and is has been the entire time. So learn to lie to your girlfriend if you want to live. Nelli G: Or if you want to live. Jasper: That too. - L.A By Night * Annabelle: You seem reasonable. Why do you follow their orders?... Jasper: I follow his orders because if I don't, I get left in that sun that hurts so much... I work with them because if I don't, I get introduced to the dawn. I do a lot of things, so I get to keep living... It's a game we all play, so we get to keep doing this. Talking, living, walking. - L.A By Night" :summary "* Description - Among most powerful and feared of all undead, Vampires are among the oldest known undead creatures with legends that go back to the first intelligent humans. They possess the abilities that they had in life as well as gaining unique vampiric powers. * Feeding - Vampires regain Spirit only by drinking the blood of the living. Some Eastern Vampires eat the flesh of the living instead. As the Spirit of a Vampire decreases, the Vampire becomes more savage and beastial. * Morale - Normal, Low vs. Fire and Sunlight. Ironically, the one thing that truly terrifies these eternal, murderous beings is the end of their own cursed lives. * Vulnerability to Fire - The cleansing touch of Fire will rapidly consume a Vampire. * Vulnerability to Sunlight - The cleansing touch of Sunlight will ignite a Vampire on Fire. During daylight hours, Vampires fall into a deathlike sleep. Contrary to some sources, arificial sunlight has no effect on them. * Vulnerability to Silver - The cleansing touch of Silver will ignite a Vampire on Fire. Even their reflection is destroyed by Silver. Contrary to some sources, non-silver mirrors still reflect the image of a Vampire. * Immunity to Bleeding - Vampire blood can move on its own and will not leave the body without force. * Biology - Vampires are created when one Vampire drains a person to the brink of death and then feeds their own blood to the victim. This is called: The Embrace. At this moment, the victim has a chance to reject the Embrace, and die peacefully. If the victim accepts the Embrace, the blood will rapidly reach the victim's heart and the transformation to Vampire will immediately begin. * Nature - There is much conjecture about how a Vampire functions, but it is certain that the blood of a Vampire is the source of its unnatural existence. Some believe that the blood itself is a form of evil, magical, parasite centered on the heart that animates the Vampire's body. * Masquerade - During the day, Vampires are completely vulnerable. Therefore, they avoid drawing attention to themselves. They pretend to be normal people while manipulating from behind the scenes. Vampires appear as near perfect humans, but this too is a mask. Vampires pretend at being sophisticated and refined, but always behind this is their true, savage, bestial nature. * Sire - The vampire's creator. * Childer - The relationship of a vampire to a Sire. * Book of Nod - The vampiric history/bible. * Antitribu - Those who choose to oppose their clan, joining the Camarilla or Sabbat respectively." :titles "Cainite, Kindred, Leech, Lick" :sectionmap (sectionmap "Vampires, Elder" (section :name "Vampires, Elder" :unitmap (unitmap :Kali (unit :name "Kali" :summary "* Tzimisce Methuselah") :Set (unit :name "Set" :summary "* Setite Methuselah"))) "Vampires, Anarchs" (section :name "Vampires, Anarchs" :summary "* The strict caste system of the Camarilla does not favor new Vampires. Many newly embraced reject the machinations of the elders and live as they can on the fringe. Anarchs rely on each other to protect themselves from the actions of the Camarilla and the Sabbat. The larger organizations treat Anarchs like homeless people, largely ignoring them unless they get in their way. The Anarchs understand that the other groups are bound by rules, and they will use this to their advantage. In any situation, the Anarchs are wild cards, potentially able to shift a result one way or the other. The Anarchs have one crucial advantage over the Camarilla and Sabbat: they have nothing to lose.") "Vampires, Camarilla" (section :name "Vampires, Camarilla" :titles "Neophyte, Elder, Prince, Sheriff" :unitmap (unitmap :Brujah (unit :name "Brujah" :titles "Bully, Bruiser" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Strength (unitpower :name "Strength"))) :Gangrel (unit :name "Gangrel" :titles "Animal, Protector" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Animalism (unitpower :name "Animalism"))) :Malkavian (unit :name "Malkavian" :summary "* Cursed by Madness * Malkalv - The philosophic, antedeluvian sire of their clan. When he was destroyed with the First City. his childer began to gain the signature Madness. Some say his spirit continues through his blood and connects his childer. Others propose the preposterous notion that Malkav was a an embraced Angel. * Kinship - Unlike other tribes, the Malkavians have a natural understanding and kinship toward each other. It is rare that they outright betray one another." :titles "Jester, Maniac, Nutcase, Prankster, Psychotic" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Dominiation (unitpower :name "Dominiation") :Senses (unitpower :name "Senses") :Madness (unitpower :name "Madness")) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Nosferatu (unit :name "Nosferatu" :titles "Sewer Rat" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Invisibility (unitpower :name "Invisibility")) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Toreador (unit :name "Toreador" :reference "* We come into this stale and plain stale world. So we spend our time, searching for that one sublime revelation. To fill the void. To lose ourselves in beauty and perfection. Beauty can be elegant, seductive, full of pleasure, Raw, Violent, Lethal. Let me help us find it. To lose ourselves. Come closer. I am a beautiful way to die. - Vampire: Bloodlines 2 * She'll only come out at nights. The lean and hungry type... I wouldn't if I were you. I know what she can do. She's deadly man, she could really rip your world apart. Mind over matter. Ooh, the beauty is there but a beast is in the heart. Oh, here she comes. Watch out boy she'll chew you up. Oh, here she comes. She's a maneater. - Hall and Oates/No Hard Feelings, Maneater" :summary "* Beauty is both a blessing and a curse * Toreadors were key to founding the Camarilla and are among the most powerful and influencial clans. * The Roses in the Garden - The Toreador who are obscessed with politics, conspiring on casual walks. * Founder - It is said that the Clan's founder, Arikel was a mortal painter and/or sculptress and twin sister of Malkav in the First City. Famed throughout the lands for her work, after her Embrace she painted a mural on which the past, present and future of Kindred society was depicted. When Caine saw a terrible future for his race, he cursed her with the affliction that affects Toreador today – the art that she loved most dearly would now be her obsession and distraction above all things. * Weakness - Fascination" :titles "Artists, Clan of Roses, Degenerate, Gossips, Obsessives" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Quickness (unitpower :name "Quickness") :Senses (unitpower :name "Senses") :Presence (unitpower :name "Presence"))) :Tremere (unit :name "Tremere" :image "ModernFantasy/Vampire_Tremere.png" :summary "* The Tremere is the second youngest clan having appeared in the Dark Ages. * History - The Tremere began as House Tremere, mages of the Order of Hermes named for their leader and founder, Tremere. At the end of the first millennium, the members of House Tremere realized the Hermetic arts were failing and found its immortality potions no longer working. House Tremere undertook numerous experiments, but it was Goratrix who devised a solution in his investigation of vampires. In 1022, Goratrix invited Tremere and six of the founder's closest advisers to participate in the completed ritual, which promised true immortality. Whether Goratrix knew what would happen is known only by him and, perhaps, Tremere, but at the completion of the ritual the participants fell unconscious and were reborn as vampires, their avatars destroyed and magical abilities lost. The mages had gained their immortality but lost the power they lived for. In time, the Tzimisce made war against House Tremere in retribution for the Fiends that had been made part of Goratrix's experiments. The Order of Hermes also became suspicious of diabolical practices being performed by the increasingly secretive House. In 1037 Tremere gathered the seven newly-made Cainites and forced the blood bond upon them. He then declared to them that House Tremere would be restructured with a new pyramid hierarchy, placing himself at the top as Primus of House and clan Tremere and his seven closest followers forming the Inner Council of Seven directly under him. They would slowly begin Embracing the rest of the House, with each initiate being bound to the Inner Council to ensure their loyalty. In time, all members of House Tremere would die or become vampires. While Tremere and Etrius pursued their own research throughout Europe in converting the hermetic arts into Thaumaturgy, Goratrix once again returned to his laboratories with his apprentices at hand. After years of experimentation on captured Tzimisce, Nosferatu, and Gangrel, he succeeded in creating a Gargoyle in 1121, and by 1125 the hybrids were serving as shock troops against the Fiends. Nevertheless, the Tremere found themselves third-class citizens among the undead. Whatever boldness Tremere had shown in entering the night was ignored by the staunchly traditionalist clans, and they were often forced from cities by princes who did not look kindly on their presumption. As he and Etrius rapidly acquired more vampiric lore they discovered the history of Caine and the Antediluvians, as well as the benefits of diablerie. Seeking to establish themselves as a clan proper, the Tremere sought a clan founder to diablerize and settled on Saulot, the enigmatic founder of the Salubri clan. In 1133, Tremere and the Inner Council discovered Saulot's tomb in the Anatolian desert. Tremere diablerized the Antediluvian and promptly entered torpor, leaving the Inner Council to lead the clan and destroy the remaining Salubri. As with everything else that the Tremere had done to this point, the result was a mixed blessing. The Tremere were entrenched in many Cainite courts, their services as mages making them indispensable to princes across Europe. They were now accepted as one of the Low Clans, albeit considered usurpers, distrusted warlocks, and known diablerists. In the early years of the 21st century, the Intellegence agencies of the United States managed to gain access to SchreckNet and gained firsthand knowledge of the existence of a race of undead bloodsuckers that were spread in all corners of the world. Sharing their knowledge with other intelligence agencies, the united secret services contacted the Vatican, whom they knew to have experience fighting the undead. After years of careful research, the Second Inquisition had targeted Vienna as the 'capital of vampires' and prepared a strike against their headquarters. In 2008, a united USSOCOM and Vatican ESOG force stormed the Vienna Chantry of Clan Tremere and destroyed it, blaming it to an ISIS terror attack to the public. London, Las Vegas, Paris, and Marseilles were largely cleared of vampiric activity, with numerous captured vampires being placed in black sites and experimented upon to discover their weaknesses. The Inner Council of Seven were slain and their Blood Bonds shattered. Since then the once monolithic Tremere structure has completely fallen apart." :titles "Blood Sorcerer, Broken Clan, Pyramid, Usurpers, Warlock, Witch" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") "Blood Magic" (unitpower :name "Blood Magic"))) :Ventrue (unit :name "Ventrue" :titles "Bluebloods, Manipulator, Know-it-all" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Domination (unitpower :name "Domination") :Toughness (unitpower :name "Toughness")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))))) "Vampires, Sabbat" (section :name "Vampires, Sabbat" :unitmap (unitmap :Lasombra (unit :name "Lasombra" :image "ModernFantasy/Vampire_Lasombra.png" :titles "Dark Priest" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))) :Tzimisce (unit :name "Tzimisce" :image "ModernFantasy/Vampire_Tzimisce.png" :reference "The Tzimisce take pleasure in shaping themselves into a variety of inhuman forms. Distended skulls, elongated fingers, polychromatic mottling are often displayed to demonstrate their alien superiority." :summary "* The Tzimisce's extensive use of Fleshcraft upon themselves, their servants, and their foes, have made them the most bizarre and alien of the Vampire clans. Fortunately, they are solitary by nature preferring isolated locale to practice their horrid techniques on their hapless prey. * Examples: Backroom Surgeon, Carny Folk, Dracula, Inquisitor, Kali, Mortician, Nazi Scientist, Tatoo Artist, Toturer, Vivisectionist" :titles "Monster, Alien" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Fleshcraft (unitpower :name "Fleshcraft")) :unitskillmap (unitskillmap :Intimidation (unitskill :name "Intimidation"))))) "Vampires, Independent" (section :name "Vampires, Independent" :unitmap (unitmap :Kuei-Jin (unit :name "Kuei-Jin") :Setite (unit :name "Setite" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism"))))))))))
nx/tactics/books/bestiary / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Bestiary" :image "FloraAndFauna.jpg" :chaptermap (base/chaptermap "Bestiary Overview" (chapter_bestiary_overview) "Amphibians" (chapter_amphibians) "Arthropods" (chapter_arthropods) "Avians" (chapter_avians) "Mammals/Marsupials" (chapter_mammals_marsupials) "Marine Creatures" (chapter_marine_creatures) "Reptiles" (chapter_reptiles) "Plants" (chapter_plants) "Microorganisms" (chapter_microorganisms) "Underground Creatures" (chapter_underground_creatures) "Humanoids" (chapter_humanoids) "Humanoids, Fantastic" (chapter_humanoids_fantastic) "Beastmen" (chapter_beastmen) "Constructs" (chapter_constructs) "Dragons" (chapter_dragons) "Elementals" (chapter_elementals) "Extra-Dimensional" (chapter_extra-dimensional) "Darkling" (chapter_darkling) "Giant Races" (chapter_giant_races) "Mythical Beasts" (chapter_mythical_beasts) "Shapeshifters" (chapter_shapeshifters) "Undead Creatures" (chapter_undead_creatures) )))
nx/tactics/books/bestiary / chapter_bestiary_overview
Description:
Function Name:
  • chapter_bestiary_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_bestiary_overview : base/chapter (chapter :name "Bestiary Overview" :sectionmap (sectionmap "Why Tactics: Bestiary?" (section :name "Why Tactics: Bestiary?"))))
nx/tactics/books/bestiary / chapter_amphibians
Description:
Function Name:
  • chapter_amphibians
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_amphibians : base/chapter (chapter :name "Amphibians" :sectionmap (sectionmap "Common Amphibians" (section :name "Common Amphibians" :unitmap (unitmap :Frog (unit :name "Frog") :Salamander (unit :name "Salamander") :Toad (unit :name "Toad"))) "Fantastic Amphibians" (section :name "Fantastic Amphibians" :unitmap (unitmap "Frog, Giant" (unit :name "Frog, Giant") "Toad, Giant" (unit :name "Toad, Giant") "Toad, Giant Poisonous" (unit :name "Toad, Giant Poisonous"))))))
nx/tactics/books/bestiary / chapter_arthropods
Description:
Function Name:
  • chapter_arthropods
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_arthropods : base/chapter (chapter :name "Arthropods" :sectionmap (sectionmap :Ants (section :name "Ants" :unitmap (unitmap "Army Ants" (unit :name "Army Ants") "Black Ants" (unit :name "Black Ants") "Fire Ants" (unit :name "Fire Ants") "Red Ants" (unit :name "Red Ants"))) :Arachnids (section :name "Arachnids" :unitmap (unitmap :Scorpion (unit :name "Scorpion") "Canopy Spider" (unit :name "Canopy Spider") :Tarantula (unit :name "Tarantula"))) :Bees (section :name "Bees" :unitmap (unitmap "Honey Bees" (unit :name "Honey Bees") "Killer Bees" (unit :name "Killer Bees") :Wasp (unit :name "Wasp"))) :Beetles (section :name "Beetles" :unitmap (unitmap "Bombardier Beetle" (unit :name "Bombardier Beetle") "Carrion Beetle" (unit :name "Carrion Beetle") "Fire Beetle" (unit :name "Fire Beetle") "Stag Beetle" (unit :name "Stag Beetle"))) "Flying Insects" (section :name "Flying Insects" :unitmap (unitmap :Firefly (unit :name "Firefly" :titles "Lightning Bug") :Horsefly (unit :name "Horsefly") "Praying Mantis" (unit :name "Praying Mantis"))) "Fantastic Arthropods" (section :name "Fantastic Arthropods" :unitmap (unitmap "Ant, Giant" (unit :name "Ant, Giant") "Ant, Huge" (unit :name "Ant, Huge") "Ant, Huge Fire" (unit :name "Ant, Huge Fire") "Ant Lion, Giant" (unit :name "Ant Lion, Giant") "Ant Lion, Huge" (unit :name "Ant Lion, Huge") "Beetle, Giant" (unit :name "Beetle, Giant") "Beetle, Giant Pincher" (unit :name "Beetle, Giant Pincher") "Beetle, Giant Rinoceros" (unit :name "Beetle, Giant Rinoceros") "Beetle, Hugh" (unit :name "Beetle, Hugh") "Beetle, Hugh Fire" (unit :name "Beetle, Hugh Fire") "Caterpillar, Giant" (unit :name "Caterpillar, Giant") "Centipede, Giant" (unit :name "Centipede, Giant") "Centipede, Hugh Poisonous" (unit :name "Centipede, Hugh Poisonous") "Cockroach, Giant" (unit :name "Cockroach, Giant") "Dragonfly, Giant" (unit :name "Dragonfly, Giant") "Dragonfly, Huge" (unit :name "Dragonfly, Huge") "Fire Bug" (unit :name "Fire Bug") "Firefly, Huge" (unit :name "Firefly, Huge") "Lightning Bug, Huge" (unit :name "Lightning Bug, Huge") "Mantis, Giant" (unit :name "Mantis, Giant") "Mantis, Huge" (unit :name "Mantis, Huge") "Mosquito, Giant" (unit :name "Mosquito, Giant") "Mosquito, Huge" (unit :name "Mosquito, Huge") "Scarab, Huge" (unit :name "Scarab, Huge") "Scorpion, Giant" (unit :name "Scorpion, Giant") "Scorpion, Huge" (unit :name "Scorpion, Huge") "Spider, Giant" (unit :name "Spider, Giant") "Spider, Huge" (unit :name "Spider, Huge") "Spider, Huge Spitting" (unit :name "Spider, Huge Spitting") "Spider, Huge Trap Door" (unit :name "Spider, Huge Trap Door") "Spider, Huge Water" (unit :name "Spider, Huge Water") "Spider, Phase" (unit :name "Spider, Phase" :titles "Dimension Spider") :Vasp (unit :name "Vasp" :summary "* The Vasp is a giant predatory insectoid. They stand 10 feet tall with segmented bodies covered with metallic scales. Despite their size and ungainly appearance, they are surprisingly quick and can leap 30 feet. * Vasps are solitary nocturnal creatures that usually attack by leaping on its victim, pining it to the ground, and stinging it to death with its tail. Its stinger exudes a caustic venom that slowly dissolves the internal organs. While the toxin is taking effect, the Vasp wraps it prey in a silky cocoon and drags it back to its lair." :mass "250kg" :height "3m") "Wasp, Huge" (unit :name "Wasp, Huge") "Wasp, Parasite" (unit :name "Wasp, Parasite") "Worm, Giant" (unit :name "Worm, Giant") "Worm, Giant Sand" (unit :name "Worm, Giant Sand"))))))
nx/tactics/books/bestiary / chapter_avians
Description:
Function Name:
  • chapter_avians
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_avians : base/chapter (chapter :name "Avians" :sectionmap (sectionmap :Birds (section :name "Birds" :unitmap (unitmap :Crane (unit :name "Crane") :Eagle (unit :name "Eagle") :Falcon (unit :name "Falcon") :Hawk (unit :name "Hawk") :Owl (unit :name "Owl") :Parrot (unit :name "Parrot") :Raven (unit :name "Raven") :Shrike (unit :name "Shrike") :Vulture (unit :name "Vulture"))) "Fantastic Avians" (section :name "Fantastic Avians" :unitmap (unitmap :Hekler (unit :name "Hekler" :summary "* The Hekler is a pestiferous variety of bird identified by its spiked plummage and awful, shrill cry they produce when hungry. Heklers have the annoying habit of following travellers scrounging for handouts and leftovers. They are extremely persistent and will pursue their victims for miles, swawking incessently. Worse, the call is audible for two miles and is known to attract predatory beasts. If fed, they become silent while they eat, providing an opportunity to escape." :titles "Nag-Bird") "Iron Shrike" (unit :name "Iron Shrike" :summary "* A long beaked bird with metallic plumage. Their metallic feathers make them very hardy but also poor flyers. They hunt by diving at full speed from high altitudes and impaling their prey on their dagger-like beaks.") "Sky Jelly" (unit :name "Sky Jelly") "Sky Pufferfish" (unit :name "Sky Pufferfish") "Sky Shark" (unit :name "Sky Shark") "Sky Squid" (unit :name "Sky Squid") :Skyfish (unit :name "Skyfish" :summary "* Skyfish have developed their flotation bladders to hold lighter than air gases. Their bodies and bones are porous and very lightweight, so they are somewhat more vulnerable to impact damage. If their flotation bladder is ruptured, they will sink. Some skyfish have adapted to live at very high altitudes to avoid predators.") "Winged Viper" (unit :name "Winged Viper" :summary "* A snake with feathered wings and a mildly poisonous bite. They are generally small but can grow to 10 feet. They feed on small creatures, but will attack larger targets when hungry or disturbed."))))))
nx/tactics/books/bestiary / chapter_mammals_marsupials
Description:
Function Name:
  • chapter_mammals_marsupials
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_mammals_marsupials : base/chapter (chapter :name "Mammals/Marsupials" :sectionmap (sectionmap :Apes (section :name "Apes" :unitmap (unitmap :Ape (unit :name "Ape") :Baboon (unit :name "Baboon") :Chimpanzee (unit :name "Chimpanzee") :Gibbon (unit :name "Gibbon") :Gorilla (unit :name "Gorilla") :Orangutan (unit :name "Orangutan"))) :Bats (section :name "Bats" :unitmap (unitmap "Fruit Bat" (unit :name "Fruit Bat") "Vampire Bat" (unit :name "Vampire Bat"))) :Bears (section :name "Bears" :unitmap (unitmap "Black Bear" (unit :name "Black Bear") "Brown Bear" (unit :name "Brown Bear") "Grizzly Bear" (unit :name "Grizzly Bear" :reference "* It has been estimated that a bite from a grizzly could crush a bowling ball." :mass "600kg") "Polar Bear" (unit :name "Polar Bear"))) :Cats (section :name "Cats" :unitmap (unitmap :Bobcat (unit :name "Bobcat") :Cheetah (unit :name "Cheetah") :Cougar (unit :name "Cougar") "House cat" (unit :name "House cat") :Jaguar (unit :name "Jaguar") :Leopard (unit :name "Leopard" :titles "Panther, King Leopard - a [Large] Leopard with distinctive patterns of spots." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "4" :unitabilitymap (unitabilitymap "Neck Bite" (unitability :name "Neck Bite") :Pounce (unitability :name "Pounce")))) :unitskillmap (unitskillmap :Survival (unitskill :name "Survival" :level "3" :unitabilitymap (unitabilitymap "Jungle Survival" (unitability :name "Jungle Survival"))))) :Lion (unit :name "Lion") :Lynx (unit :name "Lynx") :Panther (unit :name "Panther") :Tiger (unit :name "Tiger" :summary "Tora") :Wildcat (unit :name "Wildcat"))) :Canines (section :name "Canines" :unitmap (unitmap :Akita (unit :name "Akita") :Bloodhound (unit :name "Bloodhound") :Doberman (unit :name "Doberman") "German Shepherd" (unit :name "German Shepherd" :mass "40kg") "Guard Dog" (unit :name "Guard Dog") :Husky (unit :name "Husky") "Mad Dog" (unit :name "Mad Dog") :Sheepdog (unit :name "Sheepdog") "War Dog" (unit :name "War Dog") "Wild Dog" (unit :name "Wild Dog") :Wolf (unit :name "Wolf" :summary "* Hearing - The upper range of a wolfs' hearing is upwards of 80 kHz. The upper range of humans is only 20 kHz. A wolf can hear up to 6 miles away in forest and 10 miles in open areas, including some high-pitched sounds that a human can't hear. Even when it sleeps, a wolf's ears stand straight up so it can catch sounds. Unlike humans, wolves can easily tell what direction sound is coming from by turning their ears from side to side. * Smell - The wolf's sense of smell is about 100 times better than a human's. It can smell prey more than a mile away if the wind is right. It can sense an animal three days after it's gone. Wolves finished a test to locate hidden food in five minutes that domestic dogs took over an hour to finish. * Vision - Beyond a short distance their vision must be somewhat blurred. Nevertheless, wolves can see shapes and, especially, movement over long distances, and their peripheral vision is extremely accurate. They are able to detect even the slightest movements of very small animals, such as a mosquito, at a distance of more than ten feet. There is some controversy as to whether wolves see in color or black and white. Regardless, it is unlikely that they see the various hues of the spectrum as humans see them, because the physical makeup of the eye is different. Nighttime vision for wolves is many times better than human vision in the day or night. Wolves can actually see much better and even much more clearly at night. The eyes of the wolf are like most predators, with a sight-field of nearly 180 degrees and pointed forward." :titles "Lone Wolf"))) :Elephants (section :name "Elephants" :unitmap (unitmap "African Elephant" (unit :name "African Elephant" :speed "40kph" :mass "10tons") "Asian Elephant" (unit :name "Asian Elephant" :speed "40kph" :mass "5tons") "Rogue Elephant" (unit :name "Rogue Elephant") "War Elephant" (unit :name "War Elephant"))) "Herd Animals" (section :name "Herd Animals" :unitmap (unitmap :Bison (unit :name "Bison") :Camel (unit :name "Camel" :reference "* Trot: 10mph / 16kph * Canter 17mph / 27kph * Gallop 22mph / 35kph (10km+) * Gallop 25mph / 40kph (1km burst) * These speeds are consistent with a horse. In terms of war, camels are probably superior given their better stamina and load capacity." :speed "35kph") :Cattle (unit :name "Cattle") :Deer (unit :name "Deer") "Draft Horse" (unit :name "Draft Horse" :mass "800kg") :Elk (unit :name "Elk") :Moose (unit :name "Moose") :Reindeer (unit :name "Reindeer") :Horse (unit :name "Horse" :reference "* Trot: 10mph / 16kph (Cataphracts) * Canter 12mph / 19kph (Heavy Cavalry, Cataphracts Charge) * Gallop 20mph / 32kph (Light Cavalry, Heavy Cavalry Charge) * Gallop 25mph / 40kph (1km burst) * The U.S. Calvary in 1941 recommended that the collective weight of rider and gear not exceed 20% of the total weight of the horse." :titles "Charger, Courser, Draft, Maverick, Pony, Stallion, War Horse" :speed "32kph" :mass "600kg"))) :Marsupials (section :name "Marsupials" :unitmap (unitmap :Kangaroo (unit :name "Kangaroo") :Koala (unit :name "Koala") :Opossum (unit :name "Opossum"))) :Rodents (section :name "Rodents" :unitmap (unitmap :Beaver (unit :name "Beaver") :Gerbil (unit :name "Gerbil") :Ferret (unit :name "Ferret") :Hamster (unit :name "Hamster") "Huge Rat" (unit :name "Huge Rat" :reference "* What about the R.O.U.S.'s? Rodents Of Unusual Size? I don't think they exist. Raghh! - Westley, Buttercup, and ROUS - The Princess Bride") :Mouse (unit :name "Mouse") "Plague Rat" (unit :name "Plague Rat") :Rabbit (unit :name "Rabbit") "Rabid Rat" (unit :name "Rabid Rat") :Rat (unit :name "Rat") "Sewer Rat" (unit :name "Sewer Rat"))) :Swine (section :name "Swine" :unitmap (unitmap :Boar (unit :name "Boar") :Pig (unit :name "Pig") :Razorback (unit :name "Razorback") :Warthog (unit :name "Warthog") "Wild Boar" (unit :name "Wild Boar"))) "Other Mammals" (section :name "Other Mammals" :unitmap (unitmap :Badger (unit :name "Badger") :Donkey (unit :name "Donkey") :Mule (unit :name "Mule") :Hippopotamus (unit :name "Hippopotamus" :mass "1.5tons") :Hyena (unit :name "Hyena") :Porcupine (unit :name "Porcupine" :titles "Hedgehog") :Rhinoceros (unit :name "Rhinoceros" :titles "Black Rhino, White Rhino") :Weasel (unit :name "Weasel") :Wolverine (unit :name "Wolverine"))) "Fantastic Mammals" (section :name "Fantastic Mammals" :unitmap (unitmap "Bat, Huge" (unit :name "Bat, Huge") "Boar, Great" (unit :name "Boar, Great") "Ferret, Keen" (unit :name "Ferret, Keen" :summary "* These furred scavengers are hoarders and theives by nature robbing nests and homes alike. They have uncanny manual dexterity and are natural thieves able to squeeze into tight places, evade detection, and untie knots. * If caputured at infancy, they can be raised as pets and taught to steal for its master. For this reason, they are valuable to professional thieves. * With training they can be taught to pick pockets and even pick simple locks." :mass "2kg" :length ".5m") "Rat, Bog" (unit :name "Rat, Bog") "Rat, Crypt" (unit :name "Rat, Crypt") "Rat, Plague" (unit :name "Rat, Plague") :Terrorphant (unit :name "Terrorphant" :summary "* A giant, carnivorous elephant. An evily, intelligent alpha predator.") :Terrorpotmus (unit :name "Terrorpotmus" :summary "* A giant, carnivorous hippopotamus. An keenly intelligent alpha predator.") "Wolf, Dire" (unit :name "Wolf, Dire") "Wolf, Warg" (unit :name "Wolf, Warg") "Wolverine, Huge" (unit :name "Wolverine, Huge"))))))
nx/tactics/books/bestiary / chapter_marine_creatures
Description:
Function Name:
  • chapter_marine_creatures
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_marine_creatures : base/chapter (chapter :name "Marine Creatures" :sectionmap (sectionmap :Crustaceans (section :name "Crustaceans" :unitmap (unitmap :Crab (unit :name "Crab") "Giant Clam" (unit :name "Giant Clam") "King Crab" (unit :name "King Crab") :Lobster (unit :name "Lobster"))) :Fish (section :name "Fish" :unitmap (unitmap "Alligator Gar" (unit :name "Alligator Gar") :Barracuda (unit :name "Barracuda") :Eel (unit :name "Eel") "Electic Eel" (unit :name "Electic Eel") "Manta Ray" (unit :name "Manta Ray") "Moray Eel" (unit :name "Moray Eel") :Piranha (unit :name "Piranha") "Sting Ray" (unit :name "Sting Ray"))) "Marine Mammals" (section :name "Marine Mammals" :unitmap (unitmap "Blue Whale" (unit :name "Blue Whale") :Dolphin (unit :name "Dolphin" :reference "Man had always assumed that he was more intelligent than dolphins because he had a achieved so much: the wheel, New York, Wars. Whilst all the dolphins had ever done was muck about in the water having a good time. But conversely, the dolphin thought they were more intelligent than man for precisely same reasonse. - Hitchhikers Guide to the Galaxy") "Killer Whale" (unit :name "Killer Whale") "Sea Elephant" (unit :name "Sea Elephant") "Sea Lion" (unit :name "Sea Lion") :Seal (unit :name "Seal") "Sperm Whale" (unit :name "Sperm Whale"))) :Sharks (section :name "Sharks" :unitmap (unitmap "Great White Shark" (unit :name "Great White Shark" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))) :Senses (unitpower :name "Senses" :unitabilitymap (unitabilitymap "Blood Scent" (unitability :name "Blood Scent") "Electromagnetic Vision" (unitability :name "Electromagnetic Vision"))))) "Tiger Shark" (unit :name "Tiger Shark" :unitpowermap (unitpowermap :Senses (unitpower :name "Senses" :unitabilitymap (unitabilitymap "Blood Scent" (unitability :name "Blood Scent") "Electromagnetic Vision" (unitability :name "Electromagnetic Vision"))))))) "Other Marine" (section :name "Other Marine" :unitmap (unitmap :Coral (unit :name "Coral") :Octopus (unit :name "Octopus") "Giant Octopus" (unit :name "Giant Octopus") :Squid (unit :name "Squid") "Giant Squid" (unit :name "Giant Squid"))) "Fantastic Marine Creatures" (section :name "Fantastic Marine Creatures" :unitmap (unitmap "Crab, Giant" (unit :name "Crab, Giant") "Maray Eel, Giant" (unit :name "Maray Eel, Giant" :summary "* Giant, sightless eels native to deep undersea caves and grottos. These aggressive predators measure over 20 feet and have rows of sharp jagged teeth." :titles "Kra") "Kingfisher, Giant" (unit :name "Kingfisher, Giant") "Lamprey, Huge" (unit :name "Lamprey, Huge") "Octopus, Giant" (unit :name "Octopus, Giant") "Red Tide" (unit :name "Red Tide") "Sea Serpent" (unit :name "Sea Serpent") "Seahorse, Huge" (unit :name "Seahorse, Huge") "Shark, Megalodon" (unit :name "Shark, Megalodon"))))))
nx/tactics/books/bestiary / chapter_reptiles
Description:
Function Name:
  • chapter_reptiles
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_reptiles : base/chapter (chapter :name "Reptiles" :sectionmap (sectionmap :Alligators/Crocodiles (section :name "Alligators/Crocodiles" :unitmap (unitmap :Alligator (unit :name "Alligator") :Crocodile (unit :name "Crocodile") "Emperor Crocodile" (unit :name "Emperor Crocodile"))) :Lizards (section :name "Lizards" :unitmap (unitmap "Komodo Dragon" (unit :name "Komodo Dragon") :Lizard (unit :name "Lizard"))) :Snakes (section :name "Snakes" :unitmap (unitmap :Anaconda (unit :name "Anaconda" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Swallow Whole" (unitability :name "Swallow Whole"))))) :Asp (unit :name "Asp" :reference "Asps. Very dangerous. You go first. - Raiders of the Lost Ark") "Black Mamba" (unit :name "Black Mamba" :summary "* The black mamba receives its name from the black coloration inside of its mouth, rather than their skin color which is a gray to olive tone. The black mamba is the fastest moving snake in the world, capable of moving up to 20 km/h(12.5 mph). However it uses this speed to evade danger, rather than catch prey. * Black mambas are among the ten most venomous snakes in the world. A single bite may inject enough venom to kill from 20-40 grown men. When cornered, they will readily attack. In fact, many snake experts have cited the black mamba as the world's most aggressive snake, noting tendency to actively attack without provocation. When warding off a threat, the black mamba usually delivers multiple strikes, injecting its potent neuro-and cardiotoxin with each strike, often attacking the body or head, unlike most other snakes. * Black mambas tend to live in their lairs for long periods of time, which are often vacated insect mounds or hollow trees. Black mambas are diurnal snakes that hunt prey actively day or night. * The black mamba is more than 3 times as venomous as the Cape Cobra, over 5 times as venomous as the King cobra and about 40 times as venomous as the Gaboon viper. Black mamba venom contains powerful, rapid-acting neurotoxins and cardiotoxins. The initial symptom of the bite is local pain in the bite area, although not as severe as snakes with hemotoxins. The victim then experiences a tingling sensation in the extremities, drooping eyelids, tunnel vision, sweating, excessive salivation, and lack of muscle control (specifically the mouth and tongue). If the victim does not receive medical attention, symptoms rapidly progress to nausea, shortness of breath, confusion, and paralysis. Eventually, the victim experiences convulsions, respiratory failure, and coma, and dies due to suffocation resulting from paralysis of the muscles used for breathing. Without treatment the mortality rate is 100%, the highest among all venomous snakes in the world.") "Boa Constrictor" (unit :name "Boa Constrictor") :Cobra (unit :name "Cobra") "King Cobra" (unit :name "King Cobra") :Python (unit :name "Python") :Viper (unit :name "Viper"))) :Toads (section :name "Toads" :unitmap (unitmap "Poisonous Toad" (unit :name "Poisonous Toad"))) "Fantastic Reptiles" (section :name "Fantastic Reptiles" :unitmap (unitmap :Balizard (unit :name "Balizard" :summary "* A large, magical variety of lizard that survives in arctic climates. Its body temperature matches the surrounding. It has a special form of gaze ability where it can draw heat from any target it is facing into its nose and mouth. It uses this ability to freeze opponents before eating their icy remains.") "Crocodile, Giant" (unit :name "Crocodile, Giant") "Desert Strider" (unit :name "Desert Strider" :summary "* Striders are large bipedal desert creatures resembling a cross between a lizard and a flightless bird. Striders are perfectly acclimated to desert life. They can go for months without water, have protective lenses over their eyes, and actually process sunlight to supplement the insects and reptiles they normally consume. Conversely, they cannot survive outside a desert environment.") "Lizard, Giant" (unit :name "Lizard, Giant") "Serpent, Great" (unit :name "Serpent, Great") "Snake, Crypt Cobra" (unit :name "Snake, Crypt Cobra") "Snake, Swaying Cobra" (unit :name "Snake, Swaying Cobra" :summary "* This seemingly normal Cobra has the enhanced ability to hypnotise its victim. * Hypnotism - By slowly swaying back and forth and removing all hostile intent from its mind, the Cobra creates the illusion that it is peaceful and harmless. Its victim becomes enthralled and simply watches as the Cobra slowly advances. When the Cobra is face to face with its victim, it attacks with lightning speed to bite the face or throat to deposit its venom near the victim's brain." :titles "Hypnotic Cobra") "Tortoise, Giant" (unit :name "Tortoise, Giant"))))))
nx/tactics/books/bestiary / chapter_plants
Description:
Function Name:
  • chapter_plants
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_plants : base/chapter (chapter :name "Plants" :sectionmap (sectionmap :Herbs (section :name "Herbs" :summary "* Acacia - aka gum arabic. Protection, Psychic Powers. Burn with sandalwood to open psychic centers. Parts used: dried gum, leaves, wood * Aconite - aka wolfsbane, monkshood, blue rocket *POISON* Don't ingest. Protection, Invisibility. Use this herb with great caution to consecrate the athame or ritual knife. Make an infusion with the leaves or root to banish prior energy from magickal blades and to infuse it with protection. The root or leaves may be burned as incense for the same purpose. Gather the fresh flowers to make a tincture to refresh the power of the knives. Use an infusion as a magickal wash for ritual tools or sacred space. Brings protection and magickal watchfulness against negative energies in ritual. Wash a new cauldron in the infusion or burn aconite in its first fire. Used to invoke Hecate. Wrap the seed in a lizard skin and carry to become invisible at will. Used to poison arrow tips in early times. Also as protection from and a cure for werewolves. * African Violet - Spirituality, Protection. Promotes spirituality when grown in the home. * Agaric - aka magic mushroom, redcap, death angel, death cap Fertility. Place on the altar or in the bedroom to increase fertility. * Agrimony - aka Church steeples, cocklebur, stickwort, sticklewort Protection, Sleep. Agrimony is best known for its sleep-inducing qualities, therefore it is excellent in dream pillows, especially mixed with mugwort. Enhances magickal healing. A wash or oil increases effectiveness of all forms of ritual healing, psychic healing, or distance healing. Anoint hands with oil to cleanse auras. Creates a barrier against negative energies. Use if you feel to be under psychic attack. A counter-magick herb, it not only breaks hexes, but sends them back to the hexer. * Alfalfa - Prosperity, Anti-hunger, Money. Brings in money and protects against financial misfortune. Harvest a small quantity at the full moon. Dry and burn in the cauldron. Place ashes in an magickal amulet. * Allspice - Money, Luck, Healing. * Almond - Money, Prosperity, Wisdom. Use oil, wash, or incense to anoint magickal wands or ritual candlesticks. (Almond wood makes excellent wands, especially for use in love magick). Excellent herbs for handfastings or other rituals of union. Also good for overcoming alcohol dependency. Almonds, leaves, and wood may be used in money magick. Placing almonds in your pocket will lead you to treasures. Aloe -- aka burn plant, medicine plant Protection, Luck. Guards against evil influences and prevents household accidents. Plant aloe on the graves of loved ones to promote a peaceful existence until the deceased is reborn. Use for success in the world. Prevents feelings of loneliness. Aloes, Wood -- aka Lignum aloes Love, Spirituality. Althea -- aka marshmallow, sweet weed, wymote Protection, Psychic Powers. Burn as incense or carry as a sachet for a good psychic power stimulator. A good 'spirit puller.' It draws good spirits into workings and rituals when placed on the altar. An aphrodisiac -- make an oil from seeds gathered under the full moon to use on the genitals. An amulet made of the leaf or root worn near the genitals will accomplish the same ends. Alyssum -- aka Alison, Madwort Protection, Moderating Anger Amaranth -- Love-lies-bleeding, red cockscomb, velvet flower Healing, Protection, Invisibility. Used in pagan burial ritutals. Mends a broken heart. Anemone -- aka Meadow Anemone, Wind Flower, Pasque Flower Health, Protection, Healing. Use the blossoms in all healing rituals. Grow red anemones in the garden to protect the garden and the home. Wrap flowers in a red cloth and wear or carry to prevent disease. Use the flowers to color Ostara eggs. Anemone (Wood) -- aka crowfoot, windflower Healing.Used to invoke elemental air. Maturing flower is ideal nesting place for faeries. A charm against fevers. Use during rituals of death and dying. Angelica -- aka archangel, masterwort Exorcism, Protection, Healing, Visions. Use in all protection and exorcism incenses. Angelica protects in two ways: it creates a barrier against negative energy and fills you with good, radiant energy. Removes curses, hexes, or spells that have been cast against you. Enhances the aura. Gives a joyful outlook on life. Anise Seed -- aka aniseed, anneys Protection. Purification. Youth. Deals with inner, personal issues related to lack of fulfillment. Helps one to become more open to happiness and enjoy company of others. Put in dream pillows to protect from nightmares. Brings protection when traveling in the astral. Include anise in handfasting and wedding cakes. Anise, Star -- aka Chinese anise Use to consecrate ritual cups and chalices. Powdered stars may be used as incense to invoke your Deities or banish negative energy. Used in death and dying rituals. Apple -- aka Silver bough, silver branch, tree of love Love, Healing, Garden Magick, Immortality. Use apple branches to make wands ideally suited for emotional and love magick. The apple branch will gain one admittance to the faery underworld. For healing, cut an apple into three pieces, rub on the afflicted part of the body, and bury outside. Do this during the waning moon to banish illness. Apples can be used for poppets or the apple wood carved into a poppet. Powder dried seeds and bark to burn as incense. (Caution: more than a few apple seeds can be poisonous). Apples are associated with the dead and Samhain, which is often called the Feast of Apples. Apricot -- Love. Use juice in love spells or potions. Eat fruit to obtain a sweet disposition. Leaves and flowers can be added to love sachets and the pits carried to attract love. Arabic Gum -- aka Arabic, Egyptian gum, Indian gum Purifies negativity and evil. Add to incense for good vibrations.See Acacia. Arbutus -- Exorcism, Protection. Protects little children. Arrow Root -- Increases one's good fortune and makes opportunity more visible on the horizon. Asafoetida -- aka Devil's dung, food of the gods Exorcism, Purification, Protection. Horrid odor. Use with caution. Used by those seeking the mysteries of the Horned God. Helps us break free of our negative desires. Increases the power of any ritual. Ash aka Nion Protection, Prosperity, Sea Rituals, Health. The Teutonic World Tree, Yggdrasil, is said to be an ash tree. An ash staff wards off evil. Healing wands should be made of ash wood. Carve poppets from the roots of the ash tree. Burning ash at Yule brings prosperity. Carry the leaves to gain love. Aspen -- Eloquence, Anti-Theft. Aster -- aka China Aster, Michaelmas Daisy, Starwort Use in love sachets, or carry the bloom to win love. Grow in the garden with a wish for love. Avens -- aka bennet, blessed herb, clove root, golden star, harefoot Exorcism, Purification, Love. Brings protection to the home, kindred, and self. A whole root is needed for an amulet. Burn ground or cut root to promote blessings and keep out negativity. Avocado -- aka alligator pear Love, Beauty, Lust. Grow a plant from the pit of an avocado to bring love into it. Wands made from avocado wood make potent all-purpose instruments. Bachelor's Buttons -- aka devil's flower, red campion Love. Women wear this flower on their breast to attract love. Balm, Lemon -- aka bee balm, lemon basalm, melissa, sweet balm, sweet melissa Love. Success. Healing, especially for those with mental or nervous disorders. Use in love charms and spells to attract a partner. Opens one to the divine love of the Goddess. Gives energy to make one more desirable to the opposite sex. Balm of Gilead -- aka balsam tree Love, Manifestations, Protection, Healing. Carry the buds to mend a broken heart. Also steep them in red wine for a love potion. One of the best forms of magickal oils to be used to dress candles in magickal healing. Bamboo -- Protection, Luck, Hex-Breaking, Wishes. Excellent for magick wands, representing all four elements. 'Growing up from the earth through water, it passes through the sky as it reaches toward the fire of the Sun.' Crush the wood to a powder and burn for protection -- or grow by the house for good fortune. Banana -- Fertility. Cures impotency. Use leaves, flowers, and fruits in prosperity and money spells. Banyan -- aka Indian fig tree, vada tree Luck. Barley -- Love, Healing, Protection. Use the grain or barley water in love spells. Basil -- aka Witches herb, American dittany, St. Joseph's herb Love, Exorcism, Wealth, Flying, Protection. Causes sympathy between two people and soothes tempers between lovers. Add to love sachets and incenses. Place in cash register or on doorsill of business to attract customers. Use when invoking elemental salamanders or communing with dragons. Also used for courage. Bay -- aka bay laurel, laurel, sweet bay Protection, Psychic Powers, Healing, Purification, Strength. Used in clairvoyance and wisdom brews. Place leaves under pillow for prophetic dreams. Burn to cause vision. Attracts love and romance. Use to consecrate musical instruments. Bay leaves impart strength to athletes. Write wishes on bay leaves and burn. Bean -- Protection, Exorcism, Wart Charming, Reconciliations, Potency, Love. Used in rattles, they scare away bad spirits. Rub a dried bean on warts during the waning Moon. As you do so, say 'As this bean decays, So wort, fall away!' Bedstraw -- Worn or carried to attract love. Beech -- Wishes Beet -- Love. Use as an ink in love magick, also as a blood substitute. Belladonna -- aka banewort, witches berry, sorcerer's berry, deadly nightshade, death's herb, devil's cherries *Poison* Highly toxic. All parts of the plant are extremely poisonous. Encourages astral projection and produces visions, but belladonna is best avoided. A primary ingredient in flying ointments. Used in funeral rituals to aspurge the circle, helping the deceased to let go and move forward. Used to invoke Circe. Gather berries when they are ripe (around Samhain.) Store with onyx. Medicinally, it has been used as a sedative. As every part of the plant is extremely poisonous, neither leaves, berries, nor root should be handled if there are any cuts or abrasions on the hands. The root is the most poisonous, the leaves and flowers less so, and the berries, except to children, least of all. It is said that an adult may eat two or three berries without injury, but dangerous symptoms appear if more are taken, and it is wiser not to attempt the experiment. Though so powerful in its action on the human body, the plant seems to affect some of the lower animals but little. Rabbits, sheep, goats and swine eat the leaves with impunity, and birds often eat the seeds without any apparent effect, but cats and dogs are very susceptible to the poison. -- Grieve's Modern Herbal Benzoin -- Purification, Prosperity. Provides focus. Enhances concentration. Useful in astral travel (protects spirit while travelling). Promotes generosity. Brings increased success to any magickal working or to attain magickal goals. Used as a base for incense. Make an incense of benzoin, cinnamon, and basil to attract customers to your place of business. Bergamot, Orange -- aka orange mint, bergamot Money. Put leaves in wallet or purse to attract money. Rub fresh leaves on money before spending. Be-Still -- aka trumpet flower, yellow oleander *POISON* Wear beans as a talisan to attract luck. Betony, Wood -- aka bishopwort, lousewort, purple betony Protection, Purification, Love. Placed under the pillow, it shields the sleeper from dreams. Throw in the Midsummer fire and jump through the smoke to purify the body. Very powerful in its ability to protect against dark and negative energy. Birch -- Protection, Exorcism, Purification. The traditional broom of the witch is made from birch twigs. Since birch is sacred to Thor, it is best to take the bark after the tree has been kissed by Thor, that is, hit by lightning. A circular grove of oak trees is among the most magickal of sites. Bistort -- aka dragonwort, snakeweed, sweet dock Psychic Powers, Fertility. Carry bistort if you wish to conceive. Burn with frankincense to increase psychic powers or when using divination. Add to money and wealth incenses. Bittersweet -- Protection, Healing Blackberry -- Healing, Money, Protection. Bake blackberry pies at Lammas. Use leaves and berries in spells of wealth. Dry fruit and powder it for use in magickal healing potions. Weave pentagrams from the brambles to hang in the home for protection. Bladderwrack -- aka kelp, sea spirit, seawrack Protection, Sea Spells, Wind Spells, Money, Psychic Powers. Fill a small jar with whiskey, add kelp and cap tightly. Place in kitchen window to ensure a steady flow of money in the household. Bleeding Heart -- Love. When grown, the plant brings love. If growing indoors, plant a penny in the soil to offset negative vibrations. (For some reason, this plant emits negativity when grown indoors -- maybe because love needs freedom to grow?) Lore: crush the flower. If the juice is red, your love has a heart full of love for you. If it is white, he or she does not. Bloodroot -- aka king root, red root *POISON* Love, Protection, Purification. Wear or carry the root to draw love and to avert evil spells and negativity. Bluebell -- aka harebell Luck, Truth. Anyone who wears a bluebell is compelled to tell the truth in all matters. Plant on graves. Comforts those left behind. Blueberry -- aka bilberry Protection. Keeping blueberries under the doormat will keep away undesirables. Eat blueberry pie when under attack. This gets the protection inside you and increases the herb's protectiveness. Blue Flag -- aka iris, liver lily, poison lily, flag lily, fleur-de-lys *POISON* Money. Carry the root for financial gain. Place in cash registers to increase business. Bodhi -- aka bo-tree, peepul tree, pipul Fertility, Protection, Wisdom, Meditation. Boneset -- aka Indian sage, feverwort, sweating plant, teasel, wood boneset Protection. Exorcism. Borage -- Courage. Drink a tea for psychic powers. No matter how difficult the times, borage will always lift spirits. Bracken -- Healing, Rain Magick, Prophetic Dreams. If bracken is burned outside, rain will fall. Place the root under the pillow and solutions to problems will appear in dreams. Also used for fertility and protection. Brazil Nut -- Carry as a talisman for love. Briony -- aka wild hops, wild vine, wood vine, gout root, mad root, snake grape Image Magick, Money, Protection.Often used as a substitute for the rare mandrake root in poppet magick. Money placed near briony root will increase, as long as it is left there. Hang in houses to protect against bad weather. Bromeliad -- aka chameleon star, Earth star Protection, Money. Grow in the home for protection, money, and luxuries. Broom -- aka besom, basam, broom tops, Irish broom, Scotch broom *POISON* Purification, Protection, Wind Spells, Divination. Makes an excellent ritual or handfasting broom. Use to create sacred space. Blooms bring good fortune and plenty. To raise the winds, throw broom into the air while invoking the spirits of the Air. To calm the winds, burn broom and bury the ashes. An infusion sprinkled throughout the house exorcises poltergists. Buchu -- aka buku, oval buchu, short buchu Psychic Powers, Prophetic Dreams. Drink to foretell the future. Mix with frankincense and burn before sleep for prophetic dreams (only a small amount in the bedroom). Buckthorn -- Protection, Exorcism, Wishes, Legal Matters. Buckwheat -- aka beechwheat, French wheat, Saracen corn Money, Protection. Form magick circles with the flour for protection. Add a few grains to money incenses and keep in the kitchen to guard against poverty. Burdock -- aka beggar's buttons, cockleburr, great burdock Protection, Healing Cactus -- Protection, Chastity. Cactus spines are used in witches bottles for protection. Carry or bury to release their protective powers. Calamus -- aka myrtle flag, sweet cane, sedge, sweet flag, sweet grass, sweet sedge *POISON* Luck, Healing, Money, Protection. String beads and wear for healing. Use powdered root in incenses and sachets. Used to strengthen and bind spells. Growing the plant brings good luck. Camellia -- Brings riches and luxury. Place fresh blossoms in water on altar during money and prosperity riches. Camphor -- Chastity, Health, Divination. A bag of camphor hung around the neck keeps flus and colds away. Use in divinatory incenses. Caraway -- Protection, Lust, Health, Anti-Theft, Mental Powers. Any object which holds some caraway seeds is theft-free. Induces lust when baked into breads, cookies, or cakes. The seeds strengthen the memory. Cardamom -- Lust, Love. Add ground seeds to warmed wine for a quick lust potion. Bake in apple pies and add to sachets and incenses to induce love. Carnation -- aka jove's flower, gillies, gilliflower, sops-in-wine Protection, Strength, Healing. Use in all-purpose protection spells. Gives strength and energy to the sick. Place fresh carnation on the altar during healing spells and add dried flowers to healing sachets and incenses. Carob -- aka caroba, carobina, carobinha Protection, Health. Wear or carry. Carrot -- Fertility, Lust. Women should eat the seeds to become pregnant. Eat carrots to promote lust and cure impotence. Cascara Sagrada -- aka sacred bark Legal Matters, Money, Protection. Sprinkle infusion around your home before going to court. It will help you win your case. Cashew -- Money. Castor -- aka palma christi, palms christi root *POISON* Protection. Catnip -- aka catmint, cat's wort, field balm, nepeta, nip, catnep Cat Magick, Love, Beauty, Happiness. Give to your cat to create a psychic bond between the two of you. Use in love sachets with rose petals. Attracts good spirits and great luck. Used in beauty and happiness spells. Large pressed leaves are used for bookmarks in magickal texts. Mix with dragon's blood in an incense to rid oneself of bad habits or behavioral problems. Cattail -- Lust. Carry if you don't like sex, but want to. Cedar -- Healing, Purification, Money, Protection. The smoke is purifying and chases away bad dreams. Keep a piece in the wallet to draw money and in all money incenses. Add to love sachets and Burn for psychic powers. Celandine -- aka devil's milk, kenning wort, swallow-wort, tetterwort Protection, Escape, Happiness, Legal Matters. Aids in escaping unwarranted imprisonment or entrapment. Wear next to the skin and replace every three days. Cures depression, brings happiness when worn. Wear to court to win the favor of the jury. Celery -- Mental Powers, Lust, Psychic Powers. Chew seeds to aid concentration or in dream pillows to induce sleep. Burned with orris root, seeds increase psychic powers. Eat stalk to induce lust. Centaury -- aka christ's ladder, feverwort Burn to drive off snakes. Chamomile -- aka ground apple, roman camomile, maythn, whig plant Money, Sleep, Love, Purification. Sprinkle around property to remove curses and spells cast against you. Cherry -- aka sweet cherry Love, Divination. Chestnut -- Love. Chickweed -- aka adder's mouth, starweed, starwort, stitchwort, tongue grass Fertility, Love Chicory -- aka succory, wild cherry, wild succory Removing Obstacles, Invisibility, Favors, Frugality. Carry to remove all obstacles that might crop up in your life. Rub juice on body to obtain favors from great persons. Chili Pepper -- aka red pepper Fidelity, Hex Breaking, Love. China Berry -- *POISON* Carry seeds for luck and to bring change into your life. Chrysanthemum -- aka mum Protection. Promotes mental health. Use in rituals of death and dying. Cinnamon -- aka sweet wood Spirituality, Success, Healing, Power, Psychic Powers, Lust, Protection, Love. Empower with tourmaline. Enhancing skills of prophecy through channeling, working through an oracle, or through divination. When burned as an incense, it raises high spiritual vibrations. Aids in healing. Draws money. Stimulates psychic power and produces protective vibrations. Great in sachets and amulets. Cinquefoil -- aka crampweed, five finger blossom, five finger grass, goosegrass, silverweed, potentilla The five points of the leaves represent love, money, health, power, and wisdom. If carried, all these will be granted. Good for love magick and to promote an abundant harvest. Contains the energy to manifest one's ideas. An ingredient in mediaeval flying ointments. Citron -- Psychic Powers, Healing. Clove -- Protection, Exorcism, Love, Money. Burn as an incense. Worn or carried, they attract the opposite sex. Clover -- aka shamrock, trefoil, three-leaved grass Protection, Love, Money, Fidelity, Exorcism, Success. Coconut -- Purification, Protection, Chastity Coffee -- Ritual stimulant. Aztec, Mayan, and Incan peoples all revered the berry of this plant. Cohosh, Black -- aka black snake root, bugbane, squawroot Love, Courage, Protection, Potency Coltsfoot -- aka ass's foot, British tobacco, bull's foot, butterbur, Coughwort Use in love sachets and spells of peace and tranquility. Love, Visions. Columbine -- Love, Courage. Rub on hands for courage and daring or carry it. Seeds can be used in love perfume. Pulverize seeds and rub on hands to attract love. Practitioners of animal magick, those working with eagles (aquila=eagle), or those wishing to invoke the protection of deity through the realm of birds may work with this herb. Comfrey -- aka boneset, bruisewort, knit back, knit bone, slippery root Good for any magickal healing. Worn or carried, it ensures safety during travel. The root is used in money spells. Copal -- Love, Purification. Added to love and purification incenses. A piece of copal can represent the heart in poppets. Coriander -- aka Chinese parsley, cilantro Love, Health, Healing. Used in love sachets and spells. Add the powdered seeds to warm wine to make a lust potion. Protects gardeners and all in their households. Gather at harvest and hang in the home for protection. The seeds promote peace between people who are unable to get along. Use it in drinks or crushed in incense. Helps one find romance and is an excellent herb to add to an elixir when the Great Rite is celebrated. Throw instead of rice at handfastings or add to the handfasting cake. Corn -- aka maize, seed of seeds, sacred mother Protection, Luck, Divination. Represents fertility and is used to invoke Mother Earth. Used at Mabon and Lammas in ritual, it teaches the mystery of life, death, and rebirth. Cornflower -- aka blue bottle, bluecap, bluet Patron herb of herbalists. Blue leaves make a lovely ink for Book of Shadows. Cotton -- Luck, Healing, Protection, Rain, Fishing Magick. Place cotton on an aching tooth to take away pain. Planted or scattered in yard, it keeps ghosts away. Burning cotton causes rain. Cowslip -- aka arthritica, fairy cup, lady's key, buckles Healing, Youth, Treasure Finding. Place it beneath the front porch to discourage visitors. Preserves youth, and restores it when lost. The odor is healing, and holding a bunch will locate hidden treasure. Sacred to Freya, and can be used to invoke her. Some believe the path to Freya will lead one to earthbound treasures and abundance. Crocus -- Burn in a censor with alum to see a vision of the thief who robbed you. Love, Visions. Cucumber -- aka cowcucumber Chastity, Healing, Fertility. Cooling and soothing to the psyche. Slices laid on eyes assists astral travel. Fruit hinders lust. Peel on head relieves pain of headache. Cumin -- aka cumino, cumino aigro Protection, Fidelity, Exorcism, Anti-theft. Burned with frankincense for protection and scattered on the floor (sometimes with salt) to drive out evil. Used in love spells. When given to a lover, promotes fidelity. Cumin seed steeped in wine makes a lust potion. Curry -- Protection. Burn the specific plant, not the mixture of spices, to repel evil at night. Cyclamen -- aka groundbread, sow bread, swine bread Fertility, Protection, Happiness, Lust. Add to handfasting or wedding cake. Cypress -- aka Tree of Death Longevity, Healing, Comfort, Protection. Wear at time of crisis. Taken to funerals, eases grief and calms mind. Throw a sprig of cypress into a grave to give the deceased luck and love in the hereafter. Daffodil -- Love, Fertility, Luck Daisy -- Lust, Luck Damiana -- Lust, Love, Visions Dandelion -- Divination, Wishes, Calling Spirits Deerstongue -- Lust, Psychic Powers Dill -- Protection, Money, Lust, Luck Dock -- Healing, Fertility, Money Dogbane -- Use the flowers in magickal love mixtures. Dogwood -- Wishes, Protection. Keeps writings and meetings secret, therefore is an excellent herb for the Book of Shadows. An oil of the flowers is priceless in sealing letters and keeping unintended eyes from secret writings. Powdered flowers and dried bark may be used as incense. Place the sap of the dogwood onto a handkerchief on Midsummer Eve. This will grant any wish you have as long as you carry it faithfully. Dogwood leaves or wood can be placed in protective amulets. Dragon's Blood -- Love, Protection, Exorcism, Potency. Used in homemade magickal inks. Burn the resin to entice errant lovers to return. A stick placed under the pillow will cure impotency. A powerful protectant when sprinkled around the house or burned as incense. A pinch added to to other incenses will increase their potency. Dulse -- Lust, Harmony Dutchman's Britches -- Love Ebony -- Protection, Power Echinacea -- Strengthening Spells Edelwiess -- Invisibility, Bullet-Proofing Elder -- Exorcism, Protection, Healing, Prosperity, Peace Elecampane -- Love, Protection, Psychic Powers Elm -- Love Endive -- Love, Lust Eucalyptus -- Healing, Protection Eyebright -- Mental Powers, Psychic Powers Fennel -- Protection, Healing, Purification Fenugreek -- Money Fern -- Rain Making, Protection, Luck, Riches, Health, Exorcism Feverfew -- Protection Fig -- Divination, Fertility, Love Figwort -- Health, Protection Flax -- Money, Protection, Beauty, Psychic Powers, Healing Fleabane -- Exorcism, Protection, Chastity Foxglove -- aka deadmen's bells, dog's finger, fairy thimbles, fox bells, witches bells, witches thimbles *POISON* Protection. Brings true magick to your garden by attracting faeries and plant devas. Assists in communion with the Underworld. Collect the juice of the herb under a favorable moon sign. Mark the very center of your circle with the juice and wait there to see the realm of faery. Frankincense -- Protection, Exorcism, Spirituality Gardenia -- Love, Peace, Healing, Spirituality Garlic -- Protection, Healing, Exorcism, Lust, Anti-Theft Gentian -- Love, Power Geranium -- Fertility, Love, Health, Protection Ginger -- Love, Money, Success, Power Ginseng -- Love, Wishes, Healing, Beauty, Protection, Lust Goats Rue -- Healing, Health Goldenrod -- Money, Divination Goldenseal -- Healing, Money Gorse -- Protection, Money Gotu Kola -- Meditation Gourd -- Protection Grain -- Protection Grape -- Fertility, Garden Magick, Mental Powers, Money Grass -- Psychic Powers, Protection Ground Ivy -- Divination Groundsel -- Health, Healing Hawthorn -- Fertility, Chastity, Fishing Magick, Happiness Hazel -- Luck, Fertility, Anti-Lightning, Protection, Wishes Heather -- aka heath Protection, Rain Making, Luck. Robert Graves said heather is a suitable tree for the inititation of Scottish witches. Brings one in touch with divinity and increases physical beauty. Wearing an amulet of the wood will bring a long physical life and put one in touch with the truly immortal soul. A valuable herb for those who pursue initiatory paths. Unfolds the inner self. Carried, it will guard against rape or other violent crimes or just to bring good luck. (White heather is best here.) When burned with fern will attract rain. Heliotrope -- Exorcism, Prophetic Dreams, Healing, Wealth, Invisibility Hellebore, Black -- aka Melampode *Poison* Protection. Provides an aura or mantle of invisibility. The safest use of this herb is to place pieces of the root or dried berries in an amulet or magick pouch. Used to bless farm animals and pets. Good for working with familiars -- but please don't breathe the fumes or ingest! Hemlock -- aka herb bennet, poison parsley, spotted hemlock, water parsley *Poison* Destroys sexual drive. Induces astral projection. Juice rubbed on magickal blades empower and purify them.Used in medievel flying ointments. Hemp -- Healing, Love, Vision, Meditation Henbane -- aka black nightshade, devil's eye, henbells, poison tobacco, hogsbean *Poison* A love-bringing herb when worn. Traditionally used in ointments and brews. Induces delirium. Used with wisdom, it could be an excellent herb for consecrating ceremonial vessels. Attracts hares, therefore would be an excellent herb for those who raise rabbits. Henna -- Healing. Place on forehead to relieve headache. Attracts love if worn near the heart. Protects from illness and from evil eye. A body adornment originating in the Mediterranean. Modern witches use as a ritual adornment, especially for the Great Rite and other important ritual occasions. Henna mixed with olive oil, massaged on the penis at the rising and setting suns promotes virility. Hibiscus -- Lust, Love, Divination Hickory -- Legal Matters High John the Conqueror -- Money, Love, Success, Happiness Holly -- Protection, Anti-Lightning, Luck, Dream Magick. One of the best protective herbs. The wood of the holly is very well suited for the handle of the ritual knife as it both attracts and repels energies. It is powerful when defense is needed in circle while preserving the gentleness within it. Holly water is sprinkled on newborn babies to protect them. Carried by men, it promotes luck. (Ivy is the corresponding plant of luck for women). Decorate the house with it at Yule for good luck. After midnight on a Friday, without making a sound, gather nine holly leaves, preferably from a non-spiny plant (one that has smooth leaves). Wrap these up in a white cloth using nine knots to tie the ends together. Place this beneath your pillow, and your dreams will come true. -- Cunningham's Encyclopedia of Magickal Herbs Honesty -- Money, Repelling Monsters Honeysuckle -- aka goat's leaf, woodbine Money, Psychic Powers, Protection. Ring green candles with honeysuckle flowers to attract money or place them in a vase in the house for the same purpose. Lightly crush flowers and rub on forehead to heighten psychic powers. The extracted oil is best for increasing spiritual sight. It enhances understanding of images and impressions collected in the astral. Connects one with the mysteries of the Cauldron of Cerridwen. In ritual, dried, powdered bark may be used as incense. Hops -- Healing, Sleep Horehound -- Protection, Mental Powers, Exorcism, Healing Horse Chestnut -- Money, Healing Horseradish -- Purification, Exorcism Horsetail -- Snake Charming, Fertility Houseleek -- Luck, Protection, Love Huckleberry -- Luck, Protection, Dream Magick, Hex Breaking Hyacinth -- Love, Protection, Happiness Hydrangea -- Hex Breaking Hyssop -- Purification, Protection Indian Paint Brush -- Love Iris -- Purification, Wisdom Irish Moss -- Money, Luck, Protection Ivy -- Protection, Healing Jasmine -- Love, Money, Prophetic Dreams Jobs Tears -- Healing, Wishes, Luck Joe Pye Weed -- Love, Respect Juniper -- Protection, Anti-Theft, Love, Exorcism, Health Kava-Kava -- Visions, Protection, Luck Knotweed -- Binding, Health Lady's Mantle -- Love Lady's Slipper -- Protection Larch -- Protection, Anti-Theft Larkspur -- Health, Protection Lavender -- Love, Protection, Sleep, Chastity (with rosemary), Longevity, Purification, Happiness, Peace Leek -- Love, Protection, Exorcism Lemon -- Longevity, Purification, Love, Friendship Lemongrass -- Repel Snakes, Lust, Psychic Powers Lemon Verbena -- Purification, Love Lettuce -- Chastity, Protection, Love, Divination, Sleep Licorice -- Love, Lust, Fidelity Life Everlasting -- Longevity, Health, Healing Lilac -- Exorcism, Protection Lily -- Protection, Breaking Love Spells Lily of the Valley -- Mental Powers, Happiness Lime -- Healing, Love, Protection Linden -- Protection, Immortality, Luck, Love, Sleep Liverwort -- Protection, Love Loosestrife -- Peace, Protection Lotus -- Protection, Lock-Opening Lovage -- Love Love Seed -- Friendship, Love Lucky Hand -- Employment, Luck, Protection, Money, Travel Mace -- Psychic Powers, Mental Powers Magnolia -- Fidelity Maidenhair -- Beauty, Love Male Fern -- Luck, Love Mallow -- Love, Protection, Exorcism Mandrake -- aka herb of Circe, witches mannikin, wild lemon, sorceror's root *Poison* Protection, Love, Money, Fertility, Health. Few herbs are as steeped in magickal lore as mandrake. It is associated with the most intense practices of magick and especially well suited for love magick. It has great power as a visionary herb. It empowers visions, providing the impetus to bring them into manifestation. It intensifies the magick of any situation. A whole mandrake root placed in the home will bring protection and prosperity. Carried, it will attract love. The human shape of the root makes it well suited for use as poppet. (Substitute ash roots, apples, root of the briony, or the American may apple if the cost is prohibitive). To activate a dried mandrake, place it on the altar undisturbed for three days. Then place it in warm water overnight. The root will then be activated and ready for any magickal purpose. Maple -- Love, Longevity, Money Marigold -- aka calendula, drunkard, marybud, marygold Protection, Prophetic Dreams, Legal Matters, Psychic Powers. Aids visionary sight and helps find stolen property by producing a vision of the thief in the mind and the location of the stolen property. Dried petals may be used alone or mixed with dried incense to consecrate divination tools. Petals may be macerated in sunflower oil to make an oil of consecration. Adds a special, loving magick to rituals of death and dying. Carry marigold petals with a bay leaf to quiet gossip. Marjoram -- Protection, Love, Happiness, Health, Money Mastic -- Psychic Powers, Manifestations, Lust May Apple -- aka American mandrake, duck's foot, hog apple, racoon berry *Poison* Money. Generally used as a substitution for European (true) mandrake. Its uses are practically identical, although the may apple is not related to the true mandrake. Meadow Rue -- Divination Meadowsweet -- Love, Divination, Peace, Happiness Mesquite -- Healing Mimosa -- Protection, Love, Prophetic Dreams, Purification Mint -- Money, Love, Lust, Healing, Exorcism, Travel, Protection Mistletoe -- aka Witches broom, Thunderbesom, Holy wood, Golden bough Protection, Love, Hunting, Fertility, Health, Exorcism. Moonwort -- Money, Love Moss -- Luck, Money Mugwort -- aka Artemis herb, Artemisia, Felon herb, Muggons, Naughty Man, Sailor's Tobacco, St. John's Plant Strength, Psychic Powers, Protection, Prophetic Dreams, Healing, Astral Projection. Use a wash or the oil to consecrate or anoint crystal balls or any tool of divination. Produces visionary dreams and is a prime ingredient in dream pillows. Keeps one safe from dark forces. Protects children. Incense brings protection. Carried, it brings loved ones safely home from journeys. A tonic for the soul, it keeps us aware of our spiritual direction. Burn with sandalwood or wormwood during scrying sessions. A mugwort infusion sweetened with honey will enhance divination. Carried, it also increases lust and fertility. Mulberry -- Protection, Strength Mullein -- Courage, Protection, Health, Love, Divination, Exorcism Mustard -- Fertility, Protection, Mental Powers Myrrh -- Protection, Exorcism, Healing, Spirituality Myrtle -- Love, Fertility, Youth, Peace, Money Nettle -- Exorcism, Protection, Healing, Lust Norfolk Island Pine -- Protection, Anti-Hunger Nuts -- Fertility, Prosperity, Love, Luck Oak -- Protection, Health, Money, Healing, Potency, Fertility, Luck Oats -- Money Olive -- Healing, Peace, Fertility, Potency, Protection, Lust Onion -- Protection, Exorcism, Healing, Money, Prophetic Dreams, Lust Orange -- Love, Divination, Luck, Money Orchid -- Love Oregon Grape -- Money, Prosperity Orris -- aka Florentine Iris, Queen Elizabeth Root Love, Protection, Divination. The root is used to find and hold love. The root powder is known as Love Drawing Powder. Protects from evil spirits. The roots and leaves hung in the house and added to the bath are good for personal protection. Make a pendulum with a small piece of the wood. Palm, Date -- Fertility, Potency Pansy -- Love, Rain Magick, Love, Divination Papaya -- Love, Protection Parsley -- Love, Protection, Purification Passion Flower -- Peace, Sleep, Friendship Patchouly -- Money, Fertility, Lust Pea -- Money, Love Peach -- Love, Exorcism, Longevity, Fertility, Wishes Pear -- Lust, Love Pecan -- Money, Employment Pennyroyal -- Strength, Protection, Peace Peony -- Protection, Exorcism Pepper -- Protection, Exorcism Peppermint -- Purification, Sleep, Love, Healing, Psychic Powers Periwinkle -- aka Sorcerer's Violet, Blue Buttons *POISON* Patron herb of Wiccans. Love, Lust, Mental Powers, Money, Protection. Best when gathered when the moon is one night old, nine nights old, 11 nights old, 13 nights old, or 30 nights old. The dried flowers may be added to any magickal mixture to enhance the working. Banishes negative energy. Makes one feel desirable. Add dried flowers or root to amulets to bring necessary changes to one's life to attract a loving partner. Plant on graves of children. Helps grieving parents heal from their loss. Keeps memory of lost child alive without unhealthy attachments. Persimmon -- Healing, Lust Pimento -- Love Pine -- Healing, Fertility, Protection, Exorcism, Money Pineapple -- Luck, Money, Chastity Pistachio -- Breaking Love Spells Plum -- Healing Poke -- Courage, Hex Breaking Pomegranate -- Divination, Luck, Wishes, Wealth, Fertility Poplar -- Money, Flying Poppy -- Fertility, Love, Sleep, Money, Luck, Invisibility Potato -- Image Magick, Healing Prickly Ash -- Love Primrose -- Protection, Love Purslane -- Sleep, Love, Luck, Protection, Happiness Quince -- Protection, Love, Happiness Radish -- Protection, Lust Ragweed -- Courage Raspberry -- Protection, Love Rattlesnake Root -- Protection, Money Rhubarb -- Protection, Fidelity Rice -- Protection, Fidelity Roots -- Protection, Power, Divination Rose -- Love, Psychic Powers, Healing, Love, Divination, Luck, Protection Rosemary -- Protection, Love, Lust, Mental Powers, Exorcism, Purification, Healing, Sleep, Youth Rowan -- Psychic Powers, Healing, Protection, Success Rue -- Healing, Health, Mental Powers, Exorcism, Love Rye -- Love, Fertility Saffron -- Love, Healing, Happiness, Wind Raising, Lust, Strength, Psychic Powers Sage -- Immortality, Longevity, Wisdom, Protection, Wishes Sagebrush -- Purification, Exorcism St. John's Wort -- Health, Power, Protection, Strength, Love, Divination, Happiness Sandalwood -- Protection, Healing, Exorcism, Spirituality Sarsaparilla -- Love, Money Sassafras -- Health, Money Savory, Summer -- Mental Powers Skullcap -- Love, Fidelity, Peace Senna -- Love Sesame -- Money, Lust Shallot -- Purification Skunk Cabbage -- Legal Matters Slippery Elm -- Halts Gossip Snakeroot -- Luck, Money Snakeroot, Black -- Love, Lust, Money Snapdragon -- Protection Solomon's Seal -- Protection, Exorcism Sorrel Wood -- Healing, Health Southern Wood -- Love, Lust, Protection Spanish Moss -- Protection Spearmint -- Healing, Love, Mental Powers Spiderwort -- Love Spikenard -- Love Star Anise -- Psychic Powers, Luck Strawberry -- Love, Luck Sugar Cane -- Love, Lust Sunflower -- Fertility, Wishes, Health, Wisdom Sweetgrass -- Calling Spirits Sweetpea -- Friendship, Chastity, Courage, Strength Tansy -- Health, Longevity Tea -- Riches, Courage, Strength Thistle -- Strength, Protection, Hex Breaking, Healing Thistle, Holy -- Purification, Hex Breaking Thistle, Milk -- Snake enraging Thyme -- Health, Healing, Sleep, Psychic Powers, Love, Purification, Courage Toadflax -- Protection, Hex Breaking Toadstool -- Rain Making Tobacco -- Healing, Purification Tonka Bean -- aka Coumaria Nut, Tonqua, Tonquin Bean *DO NOT CONSUME. BELIEVED TO CAUSE CANCER* Love. Money. Courage. Wishes. Used extensively in love sachets and mixtures, and carried to attract love. Also worn or carried to attract money, bring luck, grant courage, and ward off illness. Turmeric -- Purification Turnip -- Protection, Ending Relationships Uva Ursa -- Psychic Workings Valerian -- Love, Sleep, Purification, Protection Vanilla -- Love, Lust, Mental Powers Venus Flytrap -- Protection, Love Vervain -- The Witches Herb. Love, Protection, Purification, Peace, Money, Youth, Chastity, Sleep. Healing. Empowers any magick, especially love spells. Enhances the dreaming process and is recommended for dream quests. Used to consecrate and empower any ritual tools. Protects from negative emotions and depression. Used in house and home blessings. Turns back negativity. In love spells: add to recipes to attract mates, find true love, achieve sexual fulfilment, work sexual magick, an for bringing extra bliss on the wedding night. The herb of poets, singers, and bards. Inspires artistry. Instills a love of learning. Best when gathered at Midsummer. Vetch, Giant -- Fidelity Vetivert -- Love, Hex Breaking, Luck, Money, Anti-Theft Violet -- Protection, Love, Lust, Luck, Wishes, Peace, Healing Walnut -- Health, Mental Powers, Infertility, Wishes Wheat -- Fertility, Money Willow -- Love, Divination, Protection, Healing Wintergreen -- Protection, Healing, Hex Breaking Witch Hazel -- Protection, Chastity Wolf's Bane -- see Aconite Wood Rose -- Luck Woodruff -- Victory, Protection, Money Wormwood -- Psychic Powers, Protection, Love, Calling Spirits Yarrow -- Courage, Love, Psychic Powers, Exorcism Yellow Evening Primrose -- Hunting Yerba Mate -- Fidelity, Love, Lust Yerba Santa -- Beauty, Healing, Psychic Powers, Protection Yucca -- Transmutation, Protection, Purification" :itemmap (itemmap :Belladonna (item :name "Belladonna" :reference "Optometrists and ophthalmologists use atropine for pupil dilation in eye examinations." :summary "* Deadly Nightshade - Plant with highly toxic and hallucinogenic berries. * Belladonna is one of the most toxic plants found in the Western hemisphere. Children have been poisoned by eating as few as three berries. Ingestion of a leaf of the Belladonna can be fatal to an adult. The root of the plant is generally the most toxic part.") :Cannabis (item :name "Cannabis" :summary "Marijuana and Hashish plant.") :Curare (item :name "Curare") "Fertility Herb" (item :name "Fertility Herb") "Fly Agaric" (item :name "Fly Agaric" :summary "Hallucinogenic Mushroom") :Hemlock (item :name "Hemlock") :Henbane (item :name "Henbane" :summary "Hallucinogenic Plant which can be toxic (hen killer)") :Holly (item :name "Holly" :summary "* Holly is a shrub or tree growing up to 25m high. Holly berries are mildly toxic and will cause vomiting and/or diarrhea when ingested by people. However they are extremely important food for numerous species of birds, and also are eaten by other wild animals. * The wood is heavy, hard and white; one traditional use is for chess pieces, with holly for the white pieces, and ebony for the black. * The leaves can be used to make caffeine rich teas.") :Kava (item :name "Kava" :summary "Tranquilizing Leaves") :Lotus (item :name "Lotus") :Mescal (item :name "Mescal") "Hallucinogenic Bean" (item :name "Hallucinogenic Bean") :Mistletoe (item :name "Mistletoe" :summary "* A parasitic plant on the branches of a tree or shrub. The appearance and nature of the fruit's content is very similar or suggestive of human semen and is therefore popular in fertility rites (e.g. kissing under the mistletoe). * It can be used in treating circulatory and respiratory system problems, and cancer. * It is popularly thought to be an antidote for [Poison], though it is sometimes poisonous itself.") "Opium Poppy" (item :name "Opium Poppy" :summary "Flowering plant used in Opium and poppy seeds.") :Orchid (item :name "Orchid") :Peyote (item :name "Peyote" :summary "Hallucinogenic Cactus") :Tobacco (item :name "Tobacco") :Wolfsbane (item :name "Wolfsbane" :summary "* Wolfsbane (aka Aconitum) is a genus of flowering plant belonging to the buttercup family. * Aconitine is a potent neurotoxin. * Oral Poisoning - In a few minutes ingesting a poisonous dose of aconite, marked symptoms supervene. There is a sensation of burning, tingling, and numbness in the mouth, and of burning in the abdomen. After about an hour, there is severe vomiting with much motor weakness. The pulse and respiration steadily fail, death occurring from asphyxia. As in strychnine poisoning, the patient is conscious and clear-minded to the last. The only post-mortem signs are those of asphyxia. The treatment is to empty the stomach by tube or by inducing extreme vomiting. * Contact Poisoning - It may also be easily absorbed through the skin, and poisoning may occur through this route simply by picking the leaves without gloves. The toxin in the sap is absorbed through the skin. From practical experience, the sap oozing from eleven picked leaves will cause cardiac symptoms for a couple of hours. Tingling will start at the point of absorption, and extend up the arm to the shoulder, after which the heart will start to be affected. The tingling will be followed by numbness which is fairly unpleasant."))) :Trees (section :name "Trees" :itemmap (itemmap :Bamboo (item :name "Bamboo") :Birch (item :name "Birch") :Cedar (item :name "Cedar") :Ebony (item :name "Ebony" :summary "* A medium-sized evergreen, reaching 20-25 m tall. The fruit is a small berry 2 cm diameter, similar to a small persimmon. * Ebony heartwood is one of the most intensely black woods known, which, combined with its very high density (it is one of the very few woods that sink in water), fine texture, and ability to polish very smoothly, has made it very valuable as an ornamental wood.") :Larch (item :name "Larch") :Pine (item :name "Pine"))) :Spices (section :name "Spices" :itemmap (itemmap :Salt (item :name "Salt" :summary "A symbol of purity"))) "Fantastic Plants" (section :name "Fantastic Plants" :itemmap (itemmap "Black Lotus" (item :name "Black Lotus" :image "Fantasy/BlackLotus.jpg" :reference "* Blue Lotus - Recent studies have shown Nymphaea caerulea to have psychedelic properties, and may have been used as a sacrament in ancient Egypt and certain ancient South American cultures. Dosages of 5 to 10 grams of the flowers induces slight stimulation, a shift in thought processes, enhanced visual perception, and mild closed-eye visuals." :summary "* Black Lotus is a medium sized blue/black flower that has strong hallucinogenic and magical properties. Eating the petals of the Lotus creates pleasant hallucinations that are strongly addictive over time. The greatest danger of eating lotus petals is that the potency grows from mild euphoria at the tip of the petal to intense hallucinations, madness, and death near the flower. The trick is to only eat the amount that will give you the effect you desire, but the flower is hard to get and the temptation is strong to go back for more. The desperately addicted Lotus-Eaters eventually use too much and go mad or die. * Black Lotus grows only in deep swamps such as those near the city of [Fiaqua] (the Flower on the Water) and must be cultivated to gain its full potential. The Lotus retains its potency for about a month after picking, but the petals wither shortly after being removed, so the flower is typically kept intact despite the dangers.") "Black Rose" (item :name "Black Rose" :reference "* The Black Rose blooms once more! - LeBlanc, Runeterra * Another rose for the garden. - LeBlanc, Runeterra" :summary "* Black roses have often been associated with mystery, hatred, death, dishonor, tragic romance, and the supernatural in different cultures and traditions. In literature and art, they frequently symbolize tragic love or the darker aspects of human emotions. Despite their associations with darkness, black roses can also convey elegance, sophistication, and rebirth in some contexts. This dual symbolism has contributed to their enduring allure and cultural significance." :titles "Rosa Black Baccara") :Devilroot (item :name "Devilroot" :summary "* A rare species of plant recognizable by its forked leaves and crimson forked root. The powdered root is a deadly poison.") :K'Tallah (item :name "K'Tallah" :summary "* A rare swamp plant with gray-green leaves. It is also a highly addictive euphoric that can provide visions of the near future. After a half dozen uses, the user becomes hopelessly addicted and must consume a leaf each day or suffer horrible and ultimately fatal consequences. The first symptoms are stomach pains and the uneasy feeling that some is growing within. Next the snakelike tentrils of new K'Tallah plants sprout from the eyes, ears, and mouth. Death follows quickly. Heavy users, arguably the most wretched folk in existence, claim that leaves plucked from the body of a deceased addict are especially savory.") :Mandrake (item :name "Mandrake" :summary "* A long leaved (nearly a foot long) dark green plant with small greenish-yellow or purple bell-shaped flowers that grow on 3-4 inch stalks. It is best known for the large brown root, running 3 to 4 feet into the ground sometimes single and sometimes forked into two or three distinctive branches which gives the plant a rough resemblance to that of a human monster form. * It was supposed to grow under the feet of a hanged man where his semen dripped on to the earth; this would appear to be the reason for the methods employed by the alchemists who 'projected human seed into animal earth'. It could only be pulled from the ground after performing the necessary rituals. It was advisable to put wax in the ears before one attempted to do this: the mandrake would scream when pulled free and this could cause deafness. * A whole Mandrake root placed in the home, will give the house protection, fertility, and prosperity. Also, where there is Mandrake, demons cannot abide. Money placed beside the root is said to multiply. It was also recommended for discovering treasures, and as an ingredient for charm for pregnancy.") :Morphious (item :name "Morphious" :summary "* A parasitic plant that grows amidst the branches of trees and bushes. The frangrance it produces causes intoxication, drowsiness, and sleep. Those who fall asleep under Morphious will not awake while they can smell the lovely Morphious. Eventually, they die and decompose feeding the plants that the Morphious preys upon. Morpious can be distilled into even more potent intoxicants, sleeping potions and powers." :titles "Euphorica, Mantrap") :Skullcap (item :name "Skullcap" :summary "* A powerful hallucinogenic mushroom with a bone-white cap. It is said to be the cause of the Wildmen's irrational behavior. * Ingesting small amounts cause highly irrational and often violent behavior. Consuming a full dram is usually fatal in minutes.") "Snow Lily" (item :name "Snow Lily" :summary "* A delicate white flower that grows only in the coldest climates. * Consuming it delays the onset of frostbite. Brewed into an elixir, it allows the consumer's body temperature to fall to below freezing with no ill effects.") :Stranglevine (item :name "Stranglevine") :Stenchroot (item :name "Stenchroot" :summary "* A tuber with horribly, noxious smelling sap. When gathered into clay pots, the Stenchroot sap can make nausea inducing grenades.") :Tantalus (item :name "Tantalus" :summary "* A small leafy plant wih a tuberous, heart-shaped root. A powder formed from the dried root can make a powerful aphrodisiac.")) :unitmap (unitmap :Arborian (unit :name "Arborian" :titles "Treefolk, Verdure") :Creep (unit :name "Creep" :summary "* The Creep is a vine growth that lives in [Jungle] Terrain that is not hostile per se, but it's aggressive growth can surround, entrap, and immobilize even giant creatures over time. It often lives in symbiosis with opportunist predators. Fortunately, the Creep only grows during the day.") "Creeping Mold" (unit :name "Creeping Mold" :reference "* I'm a goner already, Daddy. Ain't I? I've got that stuff out of the meteor on me... and I'm gone. Ain't I? - Jordy, Creepshow") :Deadwood (unit :name "Deadwood" :summary "* A corrupted spirit that resembles a twisted humanoid composed of dead decaying wood. Deadwood is created when a woodland area is exposed to powerful corruption. Once established in an area, it begins to absorb life energies from all living creatures around it. All vegetation around will become warped and withered. Living creatures will fall sick developing strange ailments. Meanwhile, the Deadwood grows in power. * Deadwood can control plant life and unliving wood. They cannot be destroyed except by enchanted weapons, fire, or by starving it by destroying the surrounding plant life." :titles "Plant Demon, Wood Grue") "Giant Fisher Plant" (unit :name "Giant Fisher Plant" :summary "* A huge creeper vine plant that covers mulitple nearby trees and has enormous blossoms hanging from high branches. The plant attacks living creatures by dropping vines from the bottom of the blossums that entwine and drag prey into the canaopy above where they die of strangulation or dehydration and are eventually digested. Bones and bits of carcass are dropped below to lure more prey.") :Shambler (unit :name "Shambler" :summary "* An animated pile of decaying vegetation.") :Slime (unit :name "Slime") "Strangle Vine" (unit :name "Strangle Vine" :summary "* A large, creeper vine that waits attacks like a constrictor snake. They typically hang in jungles or caves and strike from above or slowly entwine immobile (e.g. sleeping) targets on the ground.") :Triffid (unit :name "Triffid") "Venus Flytrap, Giant" (unit :name "Venus Flytrap, Giant"))))))
nx/tactics/books/bestiary / chapter_microorganisms
Description:
Function Name:
  • chapter_microorganisms
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_microorganisms : base/chapter (chapter :name "Microorganisms" :sectionmap (sectionmap :Diseases (section :name "Diseases" :itemmap (itemmap "Bubonic Plague" (item :name "Bubonic Plague") :Ebola (item :name "Ebola") :Gangrene (item :name "Gangrene") :Prion (item :name "Prion") "Small Pox" (item :name "Small Pox"))) "Fantastic Diseases" (section :name "Fantastic Diseases" :itemmap (itemmap "Corpse Rot" (item :name "Corpse Rot" :summary "* Disease transmitted by the bite of Ghouls/Necrophages. Symptoms include fever, severe weakness, unconsciousness, and a gradual blackening and swelling of the limbs starting at the site of the wound and spreading across the body. The disease only affects humans") "Swamp Fever" (item :name "Swamp Fever" :summary "* A water-borne disease appearing only in hot weather. It causes irrational behavior, constant thirsting and a tendency to lean to one side while walking or standing. The irrational behavior gradually becomes permanent raving madness.") :Yakuk (item :name "Yakuk" :summary "* A disease common in jungle regions, it causes the gradual loss of sight, hearing, smell, taste, and speech, one at a time over a 2 week period. The effect becomes permanent but is not fatal, though the sensory deprivation usually ends in madness.") "Yellow Tinge" (item :name "Yellow Tinge" :summary "* An infectious disease that affects water breathers. The victim's gills slowly become clogged with a sticky, yellow secretion that interferes with breathing can kill if not treated."))))))
nx/tactics/books/bestiary / chapter_underground_creatures
Description:
Function Name:
  • chapter_underground_creatures
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_underground_creatures : base/chapter (chapter :name "Underground Creatures" :sectionmap (sectionmap :Centipedes (section :name "Centipedes" :unitmap (unitmap "Poisonous Centipede" (unit :name "Poisonous Centipede") "Amazonian Giant Centipede" (unit :name "Amazonian Giant Centipede"))) :Worms (section :name "Worms" :unitmap (unitmap :Maggots (unit :name "Maggots"))) "Fantastic Underground Creatures" (section :name "Fantastic Underground Creatures" :unitmap (unitmap "Bore Worms" (unit :name "Bore Worms" :reference "* Bring me... the Bore Worms. No! Not the BORE WORMS! - Klytus and Princess Aura, Flash Gordon" :summary "* Small worms that dig through flesh as easily as earth. They are attracted to burrowing creatures.") "False Hydra" (unit :name "False Hydra" :summary "* An insane monster that grows under towns can erase memories. It is said that it is born of lies. Perhaps it is a [Curse].") "Land Eel, Giant" (unit :name "Land Eel, Giant" :summary "* Giant, sightless creatures related to the Giant Moray Eel, these creatures burrow underground." :titles "Land Kra") "Slug, Giant" (unit :name "Slug, Giant") "Snail, Giant" (unit :name "Snail, Giant") "Sand Worms" (unit :name "Sand Worms"))))))
nx/tactics/books/bestiary / chapter_humanoids
Description:
Function Name:
  • chapter_humanoids
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_humanoids : base/chapter (chapter :name "Humanoids" :sectionmap (sectionmap :Humans (section :name "Humans" :unitmap (unitmap "Human Female" (unit :name "Human Female" :summary "* Their extra [Mind] represents their extra need to work the system instead of using force. * Their extra [Will] represents their ability to endure hardship without breaking." :mind "6:1" :will "6:1" :mass "60kg") "Human Male" (unit :name "Human Male" :mind "5:1" :will "5:1" :mass "80kg"))))))
nx/tactics/books/bestiary / chapter_humanoids_fantastic
Description:
Function Name:
  • chapter_humanoids_fantastic
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_humanoids_fantastic : base/chapter (chapter :name "Humanoids, Fantastic" :summary "This book subscribes to a more nuanced version of humanoid creatures than the classic Elves and Dwarves: * Like Great Danes and Poodles are just dogs that have rapidly changed in the face of selective breeding, these beings are still human. * They have minor differences in abilities, but these are cultural. * In this book, their physical and cultural differences are meant to be analogies for modern cultural differences and intolerance. * Languages: ** Each nation has its own language. Most travellers learn many languages in addition to tradespeak. ** Tradespeak - Merchants have created this simple language to facilitate trade. It is a very limited language, but can be used for basic communication if there is no alternative. It uses a simple format with no plurals, conjegation or tense: {Adjective(s)} {Subject Noun} {Adverb(s)} {Verb} {Adjective(s)} {Object Noun}. Examples: Trustworthy me offer 10 healthy sheep. Honorable you please each pay 20 silver. ** Thieves' Cant - A variant on Tradespeak that emphasizes secret or silent communication to mask criminal activity." :sectionmap (sectionmap :Claymores (section :name "Claymores" :summary "* Claymores are a group of mostly female mercenary who wield large Claymore swords. The are tasked with killing demonic Yoma or die trying. * Creation - The Claymores are created to fight the Demonic Yoma. By consuming demon flesh and blood into humans, they are able to create a hybrid that is faster than the source Yoma with their original human combat training and intelligence. * Appearance - The hybridization process changes the human's hair to a light-blond or white, their eyes to silver, and sometimes they develop elf-like ears. * Skills - Even without activating their Yoki power, Claymores are highly skilled fighters with strength and speed exceeding human abilities. * Powers - Claymores are stronger than typical humans and can smell Yoma. By activating the Yoki power within them they can heal themselves or increase their abilities. However, each time they use Yoki power, that power increases until they become like Yoma themselves. As their Yoki power grows, the Claymore undergoes a physical transformation, beginning with their eyes turning gold, at 10% of their power, their faces transforming at 30%, and their bodies changing at 50% by which time they closely resemble Yoma themselves. * Male Claymores - Claymores used to be of both genders, but all the males quickly lost control of their Yoma power and were killed or became Awakened Beings. It is thought that the act of using Yoma powers is similar to sexual satisfaction, so males were unable to resist awakening." :titles "Silver-Eyed Witch" :itemmap (itemmap "Black Card" (item :name "Black Card" :summary "* When a Claymore can no longer control the Yoma power inside and it needs to be put down, it sends its card to another Claymore to finish the job.")) :unitmap (unitmap "Awakened Being" (unit :name "Awakened Being" :summary "* Claymores are in danger of losing control of their powers if they activate more than 80% of their demon strength, changing them into a form of yoma called an 'Awakened Being'. The majority of Claymores are female, as human males who are changed to hybrids tend to 'awaken' more quickly. In an attempt to avoid this fate, Claymores will ask a friend, usually another Claymore, to kill them if they begin to awaken. * Change - When a Claymore's Shadow or Beast exceeds its Spirit it becomes an awakened being. * Physicality - An Awakened Being is a terrifying monstrosity with awesome power and speed. They can also transform their bodies at will, often becoming gigantic and growing weapons from their bodies. * Mentality - Awakened Beings are mentally deranged and often confuse people with those from their memories. They often don't understand that they have changed at all." :titles "Voracious Eater") :Clare (unit :name "Clare" :reference "* I'm Clare, number 47. I've taken Teresa's flesh and Ilena's right arm. I'm the one who's going to take...the head of that one horned monster Priscilla. Forgive me but I have to take your soul too. - Clare, Claymore Manga" :summary "* She is the only known Claymore to have taken the flesh and blood of a fellow Claymore rather than that of a Yoma, making her a 3/4 human and 1/4 Yoma, as opposed to 1/2 human and 1/2 Yoma. As such, she was considered weak and was given the last rank of 47. * Yoki Aura Detection - Like Teresa, Clare has the ability to see Yoki auras. This allows her to predict Yoki attacks against her and avoid them. The more powerful the Yoki enemy the easier it is to predict their actions." :titles "Number 47" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul" :unitabilitymap (unitabilitymap "Demonic Defense" (unitability :name "Demonic Defense") "Demonic Perception" (unitability :name "Demonic Perception"))))) :Miria (unit :name "Miria" :titles "Phantom Miria" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul") "Hyper Speed" (unitpower :name "Hyper Speed" :unitabilitymap (unitabilitymap "After Image" (unitability :name "After Image"))))) "Organization, The" (unit :name "Organization, The" :summary "* The term Claymore is an informal one given by common folk. The Claymore warriors are actually part of a group known only as The Organization. The Organization assigns Claymores to missions, takes payment, and provides for the Claymore's basic needs.") :Teresa (unit :name "Teresa" :summary "* Personality - Before Teresa met Clare, she was a merciless, solitary killer who would accept any assignment without complaint. She seemed to enjoy intimidating the townsfolk and made it sound as if the Organization was responsible for sending Yoma to the towns that failed to pay the required fees. * Nickname - She was nicknamed 'Teresa of the Faint Smile' for the faint smiles that graced her face as she effortlessly slaughtered her enemies. * Skills - Teresa is so skillful, that she rarely activates her Yoki power to fight opponents. * Yoki Aura Detection - Like Clare who has taken her flesh, Teresa has the ability to see Yoki auras. This allows her to predict Yoki attacks against her and avoid them. The more powerful the Yoki enemy the easier it is to predict their actions." :titles "Teresa of the Faint Smile, Number 1" :unitpowermap (unitpowermap "Demon Soul" (unitpower :name "Demon Soul" :unitabilitymap (unitabilitymap "Demonic Defense" (unitability :name "Demonic Defense") "Demonic Perception" (unitability :name "Demonic Perception"))))) :Yoma (unit :name "Yoma" :summary "* Yoma are demonic beings that can shapechange into the form of humans. If they eat a human they may take their exact form. If they also eat the brain, they have most of the memories of that person. * Size - Yoma are slightly larger than human size. * Stength - All Yoma are monstrously strong, able to kill most humans in a single blow and tear them limb from limb. * Claws - Yoma have sharp piercing claws that they often use to stab or slice off limbs. * Wings - Rarely, Yoma develop usable wings to fly. * Personality - Yoma consider themselves to be predators among humans, but they are excessively cruel rejoicing in the pain and misery of others.") "Voracious Eater" (unit :name "Voracious Eater" :summary "* Yoma that live for a long time grow to enormous size and need to eat more humans to survive. * Size - Voracious Eaters are hulking giants easily 15ft/3m tall. * Stretching - Voracious Eaters have more control of their bodies and can stretch parts of themselves to create spearlike stabbing weapons that can attack in a large area."))) "Stone Kingdoms" (section :name "Stone Kingdoms" :reference "* Down and down into the deep, Who knows what we'll find beneath, Diamonds, rubys, gold and more, Hidden in the mountain store, Born underground, suckled from a teat of stone, Raised in the dark, the safety of our mountain home, Skin made of iron, steel in our bones, To dig and dig makes us free, Come on brothers sing with me! I am a dwarf and I'm digging a hole, Diggy, diggy hole, diggy, diggy hole, I am a dwarf and I'm digging a hole, Diggy, diggy hole, digging a hole, The sunlight will not reach this low, Deep, deep in the mine, Never seen the blue moon glow, Dwarves won't fly so high, Fill a glass and down some mead! Stuff your bellies at the feast! Stumble home and fall asleep, Dreaming in our mountain keep, Born underground, grown inside a rocky womb, The earth is our cradle; the mountain shall become our tomb, Face us on the battlefield; you will meet your doom, We do not fear what lies beneath, We can never dig too deep, I am a dwarf and I'm digging a hole, Diggy, diggy hole, diggy, diggy hole - Diggy Diggy Hole, Wind Rose" :summary "* The Stone Kingdom is an old race of stout humanoids. They live almost exclusively in subterranean complexes spanning across mountainous regions. They are shorter but much broader than regular humans. * Maximum Body - 1:0 * Morale - Very High * Preferred Skills - Caving, Armor, Melee, Siegecraft, Tradeskills - Blacksmithing, Armorsmithing, Animal Handling, Farming * Personality - They are generally a proud and boisterous folk who use drink and bravado to conceal a grim fatalism. Their obsession with gems and ore sends them ever deeper in their mines, though their long history is filled with the horrors they encountered below. * Units - Heavy Axeman, Heavy Hammerman, Heavy Pickman, Pikeman, Heavy Spearman, Light Archer, Siege Engineer * Svartalfheim * Society - The Stone Kingdom is divided by profession. Warriors are Iron. Miners, builders and other stone workers are Rock. All other civilians are Stone including the nobility which are 'of the people'. Social mobility exists but is rare in practice as most professions are inherited and kept for life. * History - Their civilization used to be much more extensive, but over the millenia of battling goblins and trolls, they have steadily lost territory and suffered horrific loses. If nothing changes, they may eventually face extinction. Their ongoing warfare has hardened the Stone Kingdom and their history is filled with tales of battle and loss. There are also tragic tales of missed opportunites when the war with the goblins could have been won. * Food - Herd animals, mushrooms, roots, fish, and largs crustaceans and insects make up their diet. * Politics - The Stone Kingdom is spread out among distant mountain ranges each with their own Stone King. These kingdoms have become so separated and the trip so treacherous that there is no competition over power between them and they rarely even communicate. Politics amoung local lords, however, is filled with typical castle intrigue and long knives. * Deep Roads - The various Kingdoms are connected by vast underground tunnels called the Deep Roads. The Deep Roads represent a phenomenal achievement of man power and artistry that clearly display the heights of the Stone Kingdom's power. It is also telling, that the current generations lack the manpower to even police these tunnels, let alone construct more. They are now more used by the dark enemies of the Stone Kingdom than the Kingdom itself. * Deep Rivers - Among the Deep Roads are underground rivers that can be traversed with rafts or longboats." :titles "Delvers, Dwarv, Duergar, Dvergar, Dwarves" :unitmap (unitmap "Stone King" (unit :name "Stone King") "Stone Lord" (unit :name "Stone Lord" :summary "* The highest circle of League society, they represent the wealthiest and most influencial families. Many are mostly politicians, but all are expected to lead their troops in battle.") "Iron Knight" (unit :name "Iron Knight" :summary "* Heavy Infantry outfitted in full plate armor. * Plate is extremely expensive, so it is only awarded to the finest warriors and is a symbol of high status. Of course the wealthy can simply buy it.") "Iron Guard" (unit :name "Iron Guard" :summary "* Heavy Pikeman skilled in Phalanx Formation. * Javelins are preferred for short range combat. * The Iron Legion lives in the mountains and has no tradition of horsemanship, so they use heavy phalanx formations to counter enemy cavalry." :titles "Iron Maiden") "Iron Warrior" (unit :name "Iron Warrior" :summary "* Footman with pick, sword or axe and shield. * Throwing axes and Javelins are preferred for short range combat.") "Iron Hammer" (unit :name "Iron Hammer" :summary "* Iron League smiths are renowned as the greatest in the world. * When called to military duty, they carry heavy war hammers and wield them with well though their military training is nominal." :titles "Iron Smith") "Iron Siege Crew" (unit :name "Iron Siege Crew") "Iron Dead Legionnaire" (unit :name "Iron Dead Legionnaire" :summary "* The Stone Kingdom has little tolerance for prisoners. They are either fined and released or sentenced to death in the Dead Legion. The Dead Legion is a unique, fighting force of criminals stationed in abandoned forts deep underground. They are already considered dead and, as final atonement, they are assigned the most hazardous missions and consequently have a high attrition rate. Proof of death in combat while serving in the Dead Legion absolves a person of all crimes including family debts, so it also serves as a way out of bankruptcy.") "Rock Delver" (unit :name "Rock Delver" :summary "* The underground equivalent of a Scout, the Delvers search the deep caverns for ore deposits and enemy strongholds. They are a courageous lot with a short life expectancy.") "Rock Miner" (unit :name "Rock Miner" :reference "Snow White and the 7 Dwarfs" :summary "* Stone Kingdom miners are powerfully strong sappers and cavers. * When called to military duty, they carry military picks and wield them with very well though their other military training is nominal." :titles "Sapper, Stone Miner") "Stone Archivist" (unit :name "Stone Archivist" :summary "* The Stone Kingdom has a long history, and it is the Archivist task to maintain that history on stone tablets. The Stone Kingdom reveres their ancestors like demigods, so the Archivist is also a sort of religious figure. In battle, they act as medics and healers.") "Stone Mason" (unit :name "Stone Mason" :summary "* Stone Masons serve several purposes in society. They are stoneworkers, artisans, scribes, archivists, and religious figures. They are responsible for finishing the walls and tunnels both functionally and artistically. The walls are carved with stories from the archives and serve as a public library for anyone to read. The specific story and artwork being appropriate to the location of the wall.") "Stone Merchant" (unit :name "Stone Merchant" :summary "* Merchants are one of the lowest classes of society. Selling the riches of the Kingdom instead of working with your hands is considered a cowardly profession. The merchants are also the most likely profession that outsiders might encounter.") "Stone Skald" (unit :name "Stone Skald" :summary "* Dwarves love tales of their history, so Skald sing and tell these tales for coin. During battle they play wardrums, anvils, or horns to boost morale."))) "Alfar, Dark" (section :name "Alfar, Dark" :reference "* Norse Dökkálfar (Dark Elf), or Svartalfar (Black Elf) - Subterranean creatures who dwell in the world of Svartalfaheim. Dark elves are often said to be responsible for many of the maladies befalling humanity. In particular, bad dreams are said to be within the domain of the Dökkálfar, as indicated by the German word for nightmare, Albtraum ('Elf-dream'). * Drow - Shetland Islands malicious troll-like creatures * Seven Deadly Sins: Pride" :summary "* Maximum Body - 4 * Preferred Skills - Ranged (Archery), Art, Music, Darkness, Survival * Morale - Normal * Units - Elite Spies, Light Infantry, Heavy Infantry, Elite Light Archers, Heavy Cavalry, Siege Crews * Long ago, Elvish scholars came to the conclusion that the seaons of the world were changing and that the race of man would eventually drive the Elves from the world. The majority grudgingly accepted this as the way of things, but a vocal minority refused to accept their fate. They began searching for the tools to battle back against men. This search led them to release mind shattering demonic forces. The rest of the elves were horrified by this blashphemy and called the Great Hunt to systematically eradicate the renegades and put an end to their abominations. The renegades fled, but the hunters relentlessly pursued them, until the renegades bargained with the Dwarves for asylum in their caverns. These activities created a deep hatred between the Elves and Dark Elves as well as the deep distrust between the Elves and Dwarves." :titles "Dark Elf, Dark Elv, Dökkálfar, Drow, Svartalfar") "Alfar, Light" (section :name "Alfar, Light" :reference "* Seven Deadly Sins: Pride" :summary "* Maximum Body - 4 * Morale - High * Preferred Skills - Ranged (Archery), Art, Music, Wild Magic, Survival * Units - Elite Scouts, Light Infantry, Elite Light Archers, Elite Longbow Archers * Norse Ljósálfar (Light Elf) or Hvítálfar (White Elf) * Personality - Whatever the Sidhe choose to do, they do it with grace and refinement. They have a strong sense of nobility and will not abide dishonorable acts. For this reason, they have little trust in Humans or Uruks. * Biology - Sidhe infants will often wander into the Dreaming to play with fae folk for their childhood years. Some Sidhe never grow up and stay with the fae, but most become teenagers and return to their community. They age and develop very slowly and can live for over 1000 years. * Personalties - Though they seem severe from an outsiders' perspective, this is because of their deep distrust of others. They are actually a very happy people who remember the lessons of the fae to always keep music and joy in their hearts. Unfortunately, their long lives sometimes make them make decisions slowly as well. They are often surprised by rapidly changing circumstances. * Abilities - Alfar have long ears with heightened sensitivity. This makes them keenly aware of intruders. Though their vision is unremarkable, they are accustomed to operating at night especially under moonlight. * Wild Alfar - Traditional Sidhe culture is closely connected to the woods. They live in semi-permanent settlements an live off the land similar to many native peoples. * High Alfar - Some Sidhe have settled down to build beautiful towns of stone and wood. Here they study the arts, sciences, and magick. The two cultures have grown distrustful of each other over their fundamentally different outlooks on life." :titles "Eld, Eldar, Elf, Elv, Elves, Ljósálfar, Sidhe, Sylvan") :Fae (section :name "Fae" :reference "* All the world's a stage, And all the men and women merely players: They have their exits and their entrances - William Shakespere, As You Like It" :summary "* Description - Faeries are creatures of dreams. They are creative imagination personified, stories come to life. They represent ideals and are beyond mortal limitations. They do not age and have no require food or shelter. When they die, they eventually reincarnate in their original form (returning again and again like the seasons). * Nature faeries are intimately connected with nature and are in ways the spiritual manifestations of nature itself. They take on certain aspects of the area in which they are found. Mountain faeries are sturdy, sullen, and strong. Water faeries are mysterious and helpful with a hint of danger. Woodland faeries are good natured but touched with the spirit of the beast. * Location - The Fae folk live in [Arcadia], the ancestral realm of the Fae and in natural settings all over the world. * Personality - The goals of the faeries are mostly incomprehensible to mortals (who they call Children of Dust or Dustlings). Their ability to reincarnate makes them see life and death as cyclical. They see their actions as infinitely repeating, so they play their parts like actors on the stage. Some see themselves as villians or heroes, but all see everyone as characters playing their parts in the grand design. While playing their roles, fae are ritualistic and rigid in their actions since they are playing a game with specific rules (even to the point of death). Clever mortals can use these rules against them. Many Fae have lived for ages, but they only remember the epic repeating patterns that they live and are unconcerned with the fleeting lives of mortals. * On special nights almost all the wilderness falls under the the sway of Fae power. At such times it is best for normal folk to stay locked in their homes. * Chimera - Creatures or items formed from Dreams. They are powerful and dramatic to supernatural beings and dreamers, but they are invisible and have no effect on ordinary non-believers. People wielding make-believe swords fighting pretend monsters can appear rather silly to regular observers. If a chimera performs a feat that cannot be explained away by a viewing non-believer (e.g. riding a chimerical horse), the chimera will immediately vanish. Chimerical damage only affects the spirit, but it will appear as normal damage on supernatural creatures. * Glamour - The whole being of the Fae is suffused with magical energy of Dreams called Glamour. Fae use Glamour to alter the Dreaming and to create Chimera. Glamour is usually invisible ordinary people, but the Fae can sense it instinctively using an ability called 'Kenning'. * Epiphany - Fae seek Glamour constantly, discover mortals who possess and create it, and then somehow wrest, tear, or tease it out of them. When a Fae is present for a moment of creative genius or intense passion, the Fae experiences a moment of intense delight and revelation called an Epiphany. During an Epiphany, truths are revealed, connections made, and lifetimes relived. Epiphanies drive down their Banality and can also cause major changes to personality, court affiliation, or goals. * Banality - The Fae are creatures of dream and wonder. Banality is the force of cold reason, cynicism, and disbelief. If a Fae becomes too ordinary, it becomes overwhelmed by Banality in an event called the Undoing. After that, the Fae forgets its connection to the Dreaming and becomes forever mortal. * Mists - The Fae survived the Scourge of Banality by hiding their Fae nature in mortal form. Part of this disguise it to forget much of the Fae's true nature. When in mortal form, almost anything experienced beyond normal mortal existence is forgotten like a dream. Robbed of their memories, changlings who assume mortal form understandably live frustrated, bitter lives, searching constantly for clues to their true identities. * Cold Iron - Wrought iron is the ultimate sign of Banality to changelings with a history lost in the Iron Age. Its presence makes Fae ill at ease and cold iron weapons cause horrible, smoking wounds that rob changelings of Glamour and threaten their very existence. It is so distasteful to changelings that they can sense cold iron in their immediate presence. Fortunately for the Fae, steel does not have the same affect on them, and primitive wrought iron is rarely used in modern times. A Fae who possesses cold iron receives a -1 penalty to to all actions. * Barter - Money in any form is the ultimate in Banality (the quantification of life), and the Fae will not have anything to do with it. Instead they practice the age old system of Barter, trading goods or services directly. Necessarily, haggling is a required skill among the Fae. * Quests - The idea of a quest if very alluring to the theatrical nature of the Fae. Even mundane activities are made more exciting when turned into a quest and holds off Banality. This does tend to make the Fae seem obsessive about small tasks and will go to great lengths to complete semmingly insignificat tasks. This can appear obsessive compulsive or even insane to others. * Oaths - Like Quests, the Fae take Oaths very seriously. They are pure lasting gifts that they can give to others. Even the chaotic Unseelie are loath to break an oath. Oathbreakers become outcasts. Breaking an oath is a sign of relativism and leads to Banality. * Festivals - The Fae calendar is marked by all sorts of festivals and holidays. The Fae are especially mindful of the seasons, but they don't need a big reason to celebrate. Fancy dress, costumes, drinking, and dancing are favorite activites. ** Imbolc, February 2 - A festival celebrating the balefire surviving the long darkness of winter. At midwinter, couriers called firebrands carry balefire torches to each freehold. If is considered a very bad omen if a balefire is not replenished by the courier by Imbolc. ** Carnival, February 28 - This day during human Mardi Gra, celebrates the relationship between nobles and commoners. Lords dress as jesters and common drunks are dressed as nobles. The public is free to mock the nobles and must dutifully follow the commands of the drunks. This time is meant to show the nobles are humble and understand their people, so no retribution is allowed for any affronts. ** The Greening, April 4 - A loose celebration of spring with flowers and crowns of woven grass. ** Beltaine, May 2 - The formal celebration of Spring and the switch of control from Unseelie to Seelie courts. It is a time of rebirth. Bonfires are lit and passions are let loose. It is considered a good omen for children to be conceived on Beltaine. ** Highsummer Night, July 17 - A night of pranking on humans with competitions for the most outrageous pranks. Nicknamed Pranksgiving. ** Pennons, October 4 - A martial festival with jousts, mock combats, and chimerical beasts. Musicians, artisans, and storytellers also gather to display their talents. ** Samhain, October 31 - On Samhain Eve, the veil between worlds grows thin. It is a solemn time for Fae. It is a time to remember the fallen and the lost. Like Beltaine, the Fae court changes hande, in this case the Unseelie take control. The Unseelie celebrate by mocking the Seelie tournaments and courts. * Coutly Love - Love is one of the their favorite games filled with passion, high romance, and intrigue. It is considered impolite to reject a suitor out of hand, though some may send a suitor on a quest before entertaining the suitor. The courting process is essentially about flirting. It alternately involves granting favors and rejecting the suitor's efforts. The suitor has no rights except what their beloved grants, and proof of ardency is always required. Poems, songs, heroic deeds, wit, cunning, charm, and patience are all necessities of wooing. If a couple ever discover their true love, they swear Oaths of Love to each other and from then on will go to any lengths to protect one another. History * Prehistory - The Fae were born from mortal dreams and mostly dwell in Arcadia in the dreamlands. ** Sundering - As mortals civilizations developed, reason overcomes both fear and wonder, and the Fae began their decline. During the Iron Age, a major shift like an earthquake occurred across Arcadia called the Sundering. Since the Sundering, the pathways to Arcadia became much more difficult and dangeerous and Cold Iron became the bane of Fae existence. Most noble Fae returned to Arcadia never to return while most common Fae were trapped on the mortal plane. ** Shattering - The Fae had been in decline for millenia since the Sundering, but the devastation and hopelessness of Black Plague in the mortal world caused another tremendous breach between the mortal world and Arcadia. The Shattering refers to the breaking of all gates to Arcadia across the world. Physical travel between the realms has since become impossible. ** Scourge - For years after the Shattering, waves of increasing Banality crossed the world, like a rising tide, threatening to slay every Fae remaining on the mortal realm. The only way to survive was hide in the few untouched wildernesses or to merge with human infants and forget their Fae nature. Most Fae could not or would not accept the sacrifice and simply faded away. The remaining few that chose to merge with human infants are called Changelings. ** Changelings - Modern Fae on the mortal world are normal mortals most of the time, but their Fae nature comes out while dreaming. In dreams, they can return to Arcadia. While their mortal mind sleeps, the Fae mind awakens and can act in the mortal body. To those who can see Glamor, the original Fae form is visible. To others only the ordinary mortal form can be seen. Mortal life is a horrid prison to the Fae who must live in mortal drudgery while they slowly age and die. However, they may still create and experience wonder, and it is this touch of dream that the survivors cling to. Those who surrender to Banality, simply never awaken as Fae again and become normal mortals for the rest of their lives. ** Resurgence - For hundreds of years the Changelings lived humble lives without contact with Arcadia. Then in 1969, man landed on the moon which fueled the imagination of nearly every person on Earth. An overwhelming stream of Glamour reopened the pathways to Arcadia and through these pathways a number of nobles returned. ** The Final Season - Though the Fae are cyclical, they see that the Dreaming is slowly dying and eventually there will be no room for Fae in the world. They feel that the world is in the Autumn of its existence and an endless Winter lies ahead. Idealists insist that the Winter must inevitably lead to a glorious Spring, but there is little evidence to support this belief. * Change - Fae are never one thing. They are in constant change. Kind Fae are sometimes cruel. Cruel Fae are sometimes kind. * Courts - Most fae align themselves with either the Seelie or the Unseelie courts. The Seelie are honor tradition, peace, love, and chivalry. The Unseelie mock tradition, bring war and change, and uphold individual freedoms and impulses. Though the courts are very different, they understand that everything has its season. Seelie Courts rule the Fae during the Spring and Summer. Unseelie Courts rule during the Fall and Winter. Seelie Court * The Seelie Court is composed of noble, regal, beautiful faeries who (at times) aid mortals. Though mortals can be seen as irrelevant or annoying. * The Seelie have a reputation as the guardians of fae traditions. They are the peacekeepers, protectors of the weak, and the ideals of chivalry. * They are incomparable masters of music and song. * The Seelie Code ** Death before dishonor - Honor is the most important virtue, the source of all glory. ** Love conquers all - Love lies at the heart of the dreaming. True love transcends all and epitomizes what it means to be Seelie. ** Beauty is life - Beauty is a timeless, objective quality that, while it cannot be defined, is always recognized for itself. ** Never forget a debt - One gift deserves another. The recipient of a gift is obliged to return the favor. Unseelie Court * The Unseelie court is considered more rebellious, more democratic, and more rambunctious (aka murderous). They hold stagnation, repression, narrowmindedness, censorship, weakness, and traditionalism to be the worst crimes. * Where the Seelie dedicate themselves to preserving the traditions of the fae, the Unseelie style themselves as mockers of those traditions. The unseelie see themselves as radical visionaries, bringing about vital change and transformation through whatever means necessary, including violence. * The Unseelie Code ** Change is good - Security does not exist. The slightest of circumstances can transform a king into a peasant. Chaos and discord rule the universe. Adapt or die. ** Honor is a lie - Honor has no place in the modern world. It is a fairy tale constructed to cover the essential emptiness behind most traditions. ** Passion before duty - Passion is the truest state of the fae spirit. Follow your instincts and act on your impulses. Live life to the fullest without regard to the consequences, they will come about regardless of what you do. Youth passes quickly, so have fun while you can. Death can come at any time, so live without regret. Attributes * [[Vulnerable]] to [[Iron]] * +2 [[Dreaming]] * +1 [[Illusion]] * -1 [[Melee Combat]] * -1 [[Close Combat]]" :titles "Daoine maite, Fairies, Fey" :unitmap (unitmap "Bane Spirit" (unit :name "Bane Spirit" :summary "A corrupted Nymph") :Banshee (unit :name "Banshee" :titles "Faerie Woman") :Boggart (unit :name "Boggart" :summary "* A boggart (or bogart) is a household fairy which causes things to disappear, milk to sour, and dogs to go lame. Always malevolent, the boggart will follow its family wherever they flee. * It is said that the boggart crawls into people's beds at night and puts a clammy hand on their faces. Sometimes he strips the bedsheets off them. Sometimes a boggart will also pull on a person's ears. * Hanging a horseshoe on the door of a house is said to keep a boggart away." :titles "Bogart, Bogle, Boggle") :Brownie (unit :name "Brownie" :summary "* Brownies are said to inhabit houses and aid in tasks around the house. However, they do not like to be seen and will usually work at night. * Brownies are highly skilled craftsman and if unobserved or interrupted can perform tasks at extemely high speeds. * Description - They are short with thick downy hair and tend toward plumpness. They have large noses and small eyes. Their hands are large and callused, with gnarled knuckles but are very nimble. * They can be happy helping types, or selfish rumor mongers and schemers. Brownies are born of dreams of the comforts of home and hearth, and dreams of labour and reward. They prefer comfort over fancy things and tend to be plump and short with bushy hair and eyebrows. * Brownies tend to be obsessive compulsive regarding cleaning and chores and find great difficulty leaving anything incomplete or untidy. If a brownie becomes unhappy, it plays nasty tricks on the members of the household. Those include moving and rattling small objects, breaking dishes, leaving muddy little footprints, causing the walls of a house to creak, banging on pots and moaning. * +2 [Tradeskills] ** [Cleaning] ** [Cobbling] ** [Leatherworking] ** [Sewing]" :titles "Domovoi, Tomte, Nisse") :Cat-sith (unit :name "Cat-sith" :reference "* My Plans! Roww! ... Slip through my paws! Roww! ... Just out of reeeeach!... The Hexite Crystal! Roww! - Fallen Feline, Runeterra * Alice: I'm not come back here looking for a fight. Cat: Really? That's a pity. One's certainly looking for you. - Alice: Madness Returns * Here's a tiny brain teaser for a tiny... well for you. - Cat, Alice: Madness Returns * Ah Alice. You can't go home again. No suprise really. Only a very few find the way and most of them don't recognize it when they do. Delusions too die hard. Only the savage regard the endurance of pain as the measure of worth. Forgetting pain is convenient, remembering it agonizing. But recovering the truth is worth the suffering. - Cat, Alice: Madness Returns" :summary "* The cat-sìth is all black with the exception of a white spot on its chest. It is as large as a dog and chooses to display itself with its back arched and bristles erect." :titles "Cheshire Cat, Fairy Cat (pronounced caught shee)") :Changeling (unit :name "Changeling" :summary "* The most unusual Fae are Changelings who are Fae Spirits that reincarnate within mortal children in the womb. These Changeling children usually do not remember their Fae self until an event of self realization called the Chrysalis when they become aware of their Fae heritage. The Chrysalis is a turmultuous time for the Fae that attracts others attuned to the Dreaming. Other Fae are obliged to assist the Changeling in their self-discovery. Since Fae are perpetually reincarnated, their Fae form may be millenia old while their mortal form may be just a child. As Changelings grow older the weight of mortal life tends to make it increasingly difficult to manifest their Fae form. Eventually, they tend to forget they were ever Fae at all, and their Fae form is trapped until their mortal body dies and they can reincarnate again. * Seeming - Changelings appear as normal people most of the time. Their Fae self can become aware accidentally during dreams and with practice can be called at will. When the Fae self is aware, the Changeling appears in their Fae form to other supernatural beings and those with strong imaginations (like young children). To others the Changeling aways appears as a normal person. Changeling activities are often mistaken for sleepwalking or psychotic behavior by normal people.") :Gremlin (unit :name "Gremlin" :reference "* Gremlin originated amongst R.A.F. aviators. The story attempted to explain the accidents which often occurred during their flights. Gremlins were also thought to have enemy sympathies, but investigation revealed that the enemy also had similar problems, so the gremlins were not taking sides in the conflict. In reality, the gremlins were a form of buck passing or deflecting blame." :summary "* Gremlins are generally short and green with rows of small, sharp teeth. * Gremlins have a close affinity with machines, and can intimidate machines into working correctly simply by yelling at it. * All Gremlins cannot resist machinery, tinkering, tearing apart and recreating trying to understand and improve. Despite their affinity for machines, anything they make will always have a small blemish or malfunction that they cannot remedy. Gremlins are obsessed with perfection and are constantly hammering on things to check for defects. Given this, their inability to create a flawless machine is a constant source of frustration. * As well as their knack for machinery, Gremlins are known for swearing continuously. It is virtually impossible for them to prevent an endless stream of curses and blasphemy from issuing forth from their lips, which puts them at something of a social disadvantage. To Gremlins, however, swearing can be considered an art form, and many Gremlins pride themselves on their creative profanity. Gremlins use their profanity and abrasive temperaments to test their fellow Fae as they test machines, to see what their breaking points are. * Preferred Skills - Artifice, Mechanics") :Knocker (unit :name "Knocker" :reference "* Their name comes from the knocking on the mine walls that happens just before cave-ins, actually the creaking of earth and timbers before giving way. To some of the miners, the knockers were malevolent spirits and the knocking was the sound of them hammering at walls and supports to cause the cave-in. To others, who saw them as essentially well-meaning practical jokers, the knocking was their way of warning the miners that a life-threatening collapse was imminent." :summary "* Small [Fae] about two feet tall and grizzled, but not misshapen, they live beneath the ground. Here they wear tiny versions of standard miner's garb and commit random mischief, such as stealing unattended tools and food." :titles "Knackers, Bwca (Welsh), Bucca (Cornish) or Tommyknockers (US)") :Leprechan (unit :name "Leprechan") :Muse (unit :name "Muse" :summary "* A beautiful [Fae] who offers inspiration to an artist to help drive them to further creative genius. However, this inspiration has often resulted in madness and premature death for the artist." :titles "Leanan Sidhe (fairy mistress)") :Nymph (unit :name "Nymph" :summary "Nature beings tied to a specific locale. * Dryad - Trees * Hag - Shadowy Places * Naiad - Streams and Ponds * Oread - Hills and Mountains * Nymphs dislike leaving their natural locations. When situations or politics demand that a Nymph take a leadership role, they draw straws with the short straw forced to assume leadership.") :Pixie (unit :name "Pixie") :Pooka (unit :name "Pooka" :summary "* Overview - Pooka are trickster shapeshifters. They are scoundrels and are perhaps the most charming and congenial of the Fae. Extremely lazy, Pooka hate work and love to play. Though generally well-intentioned, they are deceitful, devious, and more than a little goofy. Mundaneness disturbs them, and they have a particular fear of Banality. * Empathy - Though they seem immature, they are capable of great sadness and empathy, which they try to assuage by telling jokes and playing pranks. Lack of humor mystifies them and usually drives them to 'cheer up' their quarry with more manic pranks. Naturally, Unseelie pranks tend to be sick and twisted. For all their mischief, they have a strong sense of nobility and are loyal to friends and courageous in battle. * Deceitful - Truth is boring to Pooka, so they will pepper it with lies to make it more interesting. Because of their trickster nature, they are actually unable to tell a completely true statement. Though pookas never tell the entire truth, they also never lie completely which is crass and banal. Partially truths and partial lies are what pookas enjoy. * Manipulating - Pooka are masters of manipulation. While their actions appear random and sometimes comical, events seem to play out toward their grand designs. * Unpredictable - Pooka are never one thing. They are usually calm and humorous, but they are very capable of being cunning and cruel and can change moods in an instant. * Limited Shapechange - A pooka naturally has an animal form but may change to human form when no one is watching. They may stay in either form indefinitely with no effort, but a part of them always hints at their true nature. Sometimes a tail or fur remains. Sometimes hair can appear like long ears. Sometimes they hide a large animal tattoo. * Tails - Powerful Pooka have additional tails. The most powerful have nine. They start with 1 tail at level 1 and gain a tail every odd level up to 9 tails at level 17. * Illusion - Pooka are practiced illusionists and love using illusions for pranks and generally harmless fun. Consistent with their nature, Pooka illusions always have some truth mixed with lies. Their illusions always have hidden flaws that the Pooka purposely addes for their own entertainment. * Traps -" :titles "Badger, Fox Spirit, Kitsune, Nine-tailed Fox, Tanuki" :unitpowermap (unitpowermap :Illusion (unitpower :name "Illusion")) :unitskillmap (unitskillmap :Persuasion (unitskill :name "Persuasion"))) :Redcap (unit :name "Redcap" :summary "* Hideous and vile, redcaps are the stuff of nightmares. Their cruel nature makes them rare in Seelie courts. * Description - Redcaps have stocky builds with grayish mottled skin and thick, bandy legs. They have horrid, bloodshot eyes, skeletal noses, and rubbery wrinkled faces. Worst of all are their ghoulish mouths, filled with yellowed, crooked, flat teeth used for grinding their prey to a pulp. * Redcaps are fierce in combat and use their flat teeth to deliver hideous, crushing wounds. They have a special ability to be able to eat enormous quantities of almost anything. * Redcaps are said to murder travelers who stray into their homes and dye their hats with their victims' blood (from which they get their name)." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))))) :Satyr (unit :name "Satyr" :reference "* In mythology they are often associated with sex drive." :summary "* Description - Satyrs are lean and furry with long hair and rarely shave. They have furry legs, cloven hooves, and small horns jutting from their foreheads. * Personality - Satyrs are roguish fae. They speak in riddles and satisfy every lust with abandon. They have little restraint and will act impulsively most of the time. They are shamelessly forward, have fantastic stamina, and are notorious lovers of wine, women, music, drinking, wrestling, bragging, and are ready for every physical pleasure. They roam to the music of pipes and love to dance with the [Nymph]s (with whom they are obsessed, and whom they often pursue). Rarely they will go on raids into villages for women and booty. * Passion's Curse - Being impulsive, Satyrs are subject to rapid mood swings especially when drunk and" :titles "Faun" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Bull Rush" (unitability :name "Bull Rush")))) :unitskillmap (unitskillmap :Performance (unitskill :name "Performance" :unitabilitymap (unitabilitymap "Captivating Song" (unitability :name "Captivating Song")) :unititemmap (unititemmap :Pipes (unititem :name "Pipes")) :unitspecialtymap (unitspecialtymap :Music (unitspecialty :name "Music"))))) :Sprite (unit :name "Sprite"))) "Unique Fae" (section :name "Unique Fae" :unitmap (unitmap "King Oberon" (unit :name "King Oberon" :titles "Seelie King") "Queen Titania" (unit :name "Queen Titania" :titles "Seelie Queen") :Pan (unit :name "Pan") :Puck (unit :name "Puck" :reference "Lord, what fools these mortals be! - Puck, A Midsummer Night's Dream"))) :Curses (section :name "Curses" :unitmap (unitmap "Curse Spirit" (unit :name "Curse Spirit" :reference "* What are cursed spirits to begin with? They're creatures that take shape when cursed energy, leaking from humans builds up like sediment... Compared to non-sorcerers, Jujutsu Sorcerers leak extremely little cursed energy... Jujutsu Sorcerers circulate cursed energy through their bodies well... If all of mankind were Jujutsu Sorcerers, then curses wouldn't be born. Then you could solve it simply by killing all non-sorcerers. Geto, Yuki - Jujutsu Kaisen * Nightmare on Elm Street" :summary "* Curses are manifestations of strong emotions such as love, hate, longing, fear, loneliness, trauma and dread. They are everywhere around us, but they exist on the [Spirit Periphery], so they are invisible except to those with spirit sight. Powerful Curses can effect changes in the physical world or even manifest a physical form. In this way they are similar to Undead spirits. * Creation - Curses are created from the Spirit Realm ([Fade, The]) from desires and compulsions. The stronger the desires and the more people with the same desires, the stronger the curse. * Power - Most Curses are weak and undetectable to those without high Spirit. The power of the Spirit is based on the concentration of negativity, so the most powerful appear in cities and in areas like graveyards, prisons, and asylums. They are defined by the emotions that created them, and seek to expand those emotions. * Curses gather in places with high emotions like schools, hospitals, asylums, prisons, graveyards, torture chambers, refugee camps, etc. * Curses can be exorcised, destroyed with magick, resolved by catharsis, or resolved by therapy." :titles "Bane") :Cursed (unit :name "Cursed" :reference "* Princess Mononoke * Jason Voorhees * Monsterization... is a mental illness... It gets you engulfed in your own desires and traps you in a world your mind creates. It's a special type of mental illness that leads to physical metamorphosis. - Sweet Home" :summary "* A Cursed being is a mortal corrupted by a [Curse Spirit] and usually transformed in a shocking way. * Creation - It is created when a Curse enters a person via a spiritual weakness created by some form of sin, obsession, anger, fear, guilt, hatred, or other strong emotion. The Curse strengthens the person's [Shadow] which will begin appearing to the person to tempt them with their desire. If the person succumbs to temptation, the Curse creates a fantasy world for the person while transforming its body into a twisted mirror of their desire. This transformation is permanent. * Madness - The Cursed being has a distorted view of existence filtered by their desire which has become an obsession. Their inability to discern fantasy from reality makes them exceptionally dangerous, but though the changes to their body cannot be reversed, their mental state can be improved. * Appearance - Cursed appearances are typically horrific though that can be subjective. Each appearance is unique to the individual and is based on the nature of their weakness. * Powers - Cursed powers are unique to the individual and are based on the nature of their weakness." :titles "Corrupted, Corruption, Cursed, Formor, Formori, Freak, Monsterization") "Adoration Curse" (unit :name "Adoration Curse" :summary "* Causes people to follow someone without question.") "Cruelty Curse" (unit :name "Cruelty Curse" :summary "* Causes people to enjoy being cruel to others.") "Envy Curse" (unit :name "Envy Curse" :summary "* Causes people to become intensely envious of others.") "Fear Curse" (unit :name "Fear Curse" :summary "* Causes people to become overwhelmed by fear.") "Generosity Curse" (unit :name "Generosity Curse" :summary "* Causes people to give away everything they possess.") "Greed Curse" (unit :name "Greed Curse" :summary "* Causes people to hoard or steal.") "Grief Curse" (unit :name "Grief Curse" :summary "* Causes people to endure unacceptable treatment.") "Joy Curse" (unit :name "Joy Curse" :summary "* Causes people to become overwhelmed by joy. This intense joy leaves them with no desire to do anything.") "Love Curse" (unit :name "Love Curse" :summary "* Causes people to seek nothing but true love.") "Lust Curse" (unit :name "Lust Curse" :summary "* Causes people to seek unbridled romantic encounters.") "Misery Curse" (unit :name "Misery Curse" :summary "* Causes people to become miserable.") "Rage Curse" (unit :name "Rage Curse" :summary "* Causes people to become enraged.") "Stoic Curse" (unit :name "Stoic Curse" :summary "* Causes people to endure unacceptable treatment.") "Suspicion Curse" (unit :name "Suspicion Curse" :summary "* Causes people to become suspiscious of everyone.") "Trust Curse" (unit :name "Trust Curse" :summary "* Causes people to trust others without reservation."))) :Gnomes (section :name "Gnomes" :reference "Gnomes of Zurich, Jewish Sterotypes (Short, Miserly, Balding, Moneylenders, Jewelers)" :summary "* Physical - Gnomes are a small race of men that have a tendancy to obsess over their chosen fields. * Personality - An obsessive race, Gnomes tend to choose a field of study and specializing deeply becoming leaders in their fields. Favorite areas of pursuit are finance, jewelry, mechanics, traps, artifice, and alchemy. They are sometimes very friendly, but they are extremely possessive of their knowledge and treasures. Their paranoid of thieves and competitors often prevents them from trusting others. * Morale - Normal * Units - Elite Observers, Light Infantry, Light Pikemen, Heavy Pikemen, Light Crossbow, Heavy Crossbow, Light Cavalry, Elite Siege Crews, Balloon Crews, Sorcerous") :Halflings (section :name "Halflings" :reference "Lord of the Rings" :summary "* Morale - Low * Units - Elite Scouts, Elite Spies, Light Infantry, Light Spearmen, Light Archers, Light Pony Cavalry") :Seraphim (section :name "Seraphim" :summary "* Aerie" :titles "Zephyr"))))
nx/tactics/books/bestiary / chapter_beastmen
Description:
Function Name:
  • chapter_beastmen
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_beastmen : base/chapter (chapter :name "Beastmen" :sectionmap (sectionmap :Draconian (section :name "Draconian" :summary "* Draconians are a bulky reptilian race of humanoids that claim shared ancestry with Greater Dragons. The Draconians are a very old race with a long hostility toward mammals of all kinds which they see as out of control vermin. They see no distinction between the races or cultures of men. * Draconian Code - Draconians have always been a warrior race. They relish battle, but must always live by the Draconian Code of Honor which prevents them from acts of wanton destruction. The code requires them to spare the defenseless. * Draconian Law - Draconian law is particularly harsh: For example, any debtor whose status was lower than that of his creditor is forced into slavery. The death penalty is the punishment for even minor offenses. It is said that Drakon himself, when asked why he had fixed the punishment of death for most offences, answered that he considered these lesser crimes to deserve it, and he had no greater punishment for more important ones." :titles "Drakken" :unitmap (unitmap "Draconian Dragoon" (unit :name "Draconian Dragoon" :image "Fantasy/Draconian.png" :summary "* Elite Draconians are awarded Dractyl steeds. The Dractyl are unwieldy flyers and may only fly short distances with a heavy Draconian soldier."))) :Gryphon (section :name "Gryphon" :summary "* An impressive race of winged, man-like beings. They stand up to seven feet tall, with wingspans in excess of 24 feet. Their bodies are covered with thick feathery down, and they have hawk-like visages and bright, piercing eyes. * Like the birds of prey they resemble, the Gryphons are hunters by nature. They have exceptionally keen vision which enables them to spot the slightest movement at great distances. * Gryphons live in eyries built on cliffsides or at the tops of high trees. Their dwellings resemble great bird's nests composed of woven vines and leafy canopies. * Occassionally the avians will take to adventuring for profit, accepting mercenary posts as scouts, guides, or bouty hunters. The majority, however, would never consider leaving their homes. Gryphons are an independent, strong-willed race that values freedom above all else which can make them difficult employees. * Morale - Normal" :titles "Gryph, Harpy" :unitmap (unitmap "Gryphon Javelineer" (unit :name "Gryphon Javelineer") "Gryphon Light Infantry" (unit :name "Gryphon Light Infantry"))) :Krokan (section :name "Krokan" :summary "* Krokans are heavy, intelligent frog creatures. They appear very similar to enormous bullfrogs. Seated they are about 5ft all around. They possess manipulative fingers, powerful legs, and long tongues. Their weight and leg strength make them dangerous combatants. They are also notorious for attempting to swallow victims alive. * Society - Their culture is tribal and semi-nomadic with many small emcampments both above and below the water. * It is said that a purely land-based version exists that more resemble toads." :titles "Bullywug, Croaker, Froglok" :unitmap (unitmap "Bull Krokan" (unit :name "Bull Krokan" :reference "* I don't believe I require a menu. - Tahm Kench, Runeterra" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Swallow Whole" (unitability :name "Swallow Whole"))))) "Poison Krokan" (unit :name "Poison Krokan" :unitpowermap (unitpowermap :Venomous (unitpower :name "Venomous"))) "Krokan Chemist" (unit :name "Krokan Chemist" :unitpowermap (unitpowermap :Alchemy (unitpower :name "Alchemy"))) "Krokan Shaman" (unit :name "Krokan Shaman") "Krokan Skirmisher" (unit :name "Krokan Skirmisher") "Krokan Trapper" (unit :name "Krokan Trapper"))) :Mantids (section :name "Mantids" :summary "* The Mantids are a warlike, insectoid race. They walk on four legs and have large sickle-like claws with limited dexterity. They are capable of relatively fine work using the mandibles about their mouths. * Civilization - They live in large complexes deep underground where they wage war on other species including other tribes of Mantids. * Combat - They mostly rely on their natural weaponry, but they have been seen using simple spears and axes. There are also many specialized warriors capable of spitting poison or acid or explosives." :titles "Ant Men, Insect Men, Mantis Men") :Mycans (section :name "Mycans" :reference "* Puffcap Peddler: Oh, if mushrooms could talk. Teemo: I'll have what he's having. - Runeterra" :summary "* The Mycans are a fungal race. * Life Cycle - They mostly live underground as a vast fungal network, but during spring months the networks spawns small mushroom men that work to improve their living area and seek mates. At the end of the fall, these mushrooms collapse and break down. Each year, the same personalities are resurrected, but they are born anew and have no memories of their previous life, though all of their memories are permanently stored in the network. * Appearance - Mycans are generally up to 5 feet tall with a narrow stem and a large cone-shaped cap. They move by splitting their stem into 2 or more smaller stems. * Senses - Mycans have no eyes, ears, or mouths. They have a keen sense of smell, and they hear and feel through vibrations, mostly coming through the ground. * Spores - Mycans can 'exhale' hallucinogenic spores to confuse and incapacitate opponents. They can also use their spores to create images and impressions in other creatures. * Communication - Mycans do not speak. Instead they communicate with each other through the mycelial network underground. In fact, they communicate so much information through this network that all Mycans in a colony immediately know everything every other member knows. * Intelligence - Mycans are fairly intelligent, but they are a simple folk and have little interest in things that don't directly affect their lives. They do build simple shelters and are expert farmers. * Personalities - Mycans are generally friendly and quite pleasent to those who do not threaten them. They are grimly militaristic against threats, however. Though they are individuals with their own personalities, Mycans are a colony organism and are not overly concerned about their safety or deaths. They also see time in a more long term way than most creatures." :titles "Fungus Men, Mushrooms, Mushroom Men, Shrooms") :Naga (section :name "Naga" :summary "* The Naga are large serpent people resembling huge cobras with short arms. They stand about 5 feet high, but 2/3 of their length is in their tail behind them. Clans are named after the current clan leader and the Naga use clan name as a last name. Like their snake and crocodile brethren, they are slow moving and lazy except while hunting. Their fangs produce a mild venom, but its lack of potency is a point of embarrassment to the Naga. They prefer the spear as a weapon because they can use it as a walking staff to aid them when they are not waist deep in water (their natural habitat). They sleep with their eyes open which makes them seem to always be on the alert. * Maximum Body - 6" :titles "Lamia, Serpent People" :unitmap (unitmap "Naga Chieftan" (unit :name "Naga Chieftan") "Naga Enforcer" (unit :name "Naga Enforcer") "Naga Hunter" (unit :name "Naga Hunter"))) :Sagittarians (section :name "Sagittarians" :summary "* Maximum Body - 7 * Morale - Normal * Preferred Skills (Sagittarian) - Melee (Spear), Ranged (Javelin, Short Bow)" :titles "Centaur, Minotaur" :unitmap (unitmap "Sagittarian Horse Archer" (unit :name "Sagittarian Horse Archer") "Sagittarian Light Cavalry" (unit :name "Sagittarian Light Cavalry"))) :Saurids (section :name "Saurids" :reference "* Mezoamerican tribes" :summary "* Morale - High * Preferred Skills - Necromancy * Units - Light Infantry, Light Spearmen, Light Archers, Heavy Cavalry (Striders) * Saurids dress in hides and robes and wear feathered ornaments as a symbol of rank." :titles "Iksar, Lizardman, Saurian. Sleestak" :unitmap (unitmap "Saurid Archer" (unit :name "Saurid Archer") "Saurid Hatchetman" (unit :name "Saurid Hatchetman") "Saurid Spearman" (unit :name "Saurid Spearman") "Saurid Swordsman" (unit :name "Saurid Swordsman") "Saurid Heavy Cavalry" (unit :name "Saurid Heavy Cavalry" :summary "* The Saurid ride large Desert Strider lizards into battle."))) :Tauran (section :name "Tauran" :unitmap (unitmap "Tauran Axeman" (unit :name "Tauran Axeman") "Tauran Hammerman" (unit :name "Tauran Hammerman"))) :Stryx (section :name "Stryx" :summary "* A race of man-like beings resembling a cross between a vulture and a horned devil. They stand under six feet tall with a 20 foot wingspan. They excel at gliding and can cover great distances and remain aloft for hours. They have superior nightvision but see poorly in daylight. They feed on carrion and have little appetite for fighting. Their manual dexerity is limited, but they can use simple spears and polearms when necessary using either their hands on land or their feet in the air.") :Tritons (section :name "Tritons" :reference "Little Mermaid" :summary "* The Tritons are group of aquatic species distantly related to man. They are adapted to life underwater, but are still able to breathe air for a few minutes. They have innumerable sub species with drastically different appearances, some human-like, some fish-like, some with tentacles." :titles "Melusine, Mermaid, Merman" :unitmap (unitmap "Merrow Hydromancer" (unit :name "Merrow Hydromancer") "Merrow Necromancer" (unit :name "Merrow Necromancer") "Merrow Soldier" (unit :name "Merrow Soldier" :summary "* The Merrow have sloping shoulders, scaly yellow-green skin and dark deep-set eyes. Their hands and feet are webbed, and their powerful jaws are lined with a double row of sharp teeth. Having both gills and rudimentary lungs, the amphibians are capable of living on land or sea though the land tires them. They are powerful swimmers but are somewhat slow and awkward on land. * Slavers by trade, they prey upon the primitive tribes which dwell along the coasts and islands. Their weapons are mostly designed to capture instead of kill. They also traffic in narcotic herbs, exotic beasts and all manner of contraband. * Merrow tradition states that long ago, a merrow hunting party discovered a great forgotten city in a deep trench. The discovery brought madness and destruction to the merrow city. The survivors of those nights moved from their city, abandoned their gods, and faithfully serve the Old Ones that dwell in that forgotten city of madnesss. Their descendants are known as the Deep Ones. They are primitive, blasphemous, deformed fish creatures and are known to kidnap both Merrow and Humans for slaves and breeding." :titles "Deep One, Deeper, Imrian") "Merrow Slaver" (unit :name "Merrow Slaver") :Siren (unit :name "Siren" :unitskillmap (unitskillmap :Persuasion (unitskill :name "Persuasion"))) :Selkie (unit :name "Selkie" :summary "* A seal that can shed its skin and appear human. In human form, the Selkie can only breathe air. If its seal skin is lost or destroyed, the Selkie cannot resume seal form."))) :Wildman (section :name "Wildman" :reference "Chewbacca" :summary "* The wildmen are close relatives to normal humans but have distinctly animalistic qualities including fur and fangs." :unitmap (unitmap "Jaka Manhunter" (unit :name "Jaka Manhunter" :summary "* The Jaka are a race of intelligent man-like beings with features resembling a cross between man, wolf, and panther. They are a striking people with sleek black fur and yellow/green eyes. * Personality - The Jaka are solitary beings, sullen and introspective in nature. They have been known to become steadfast companions to those they trust, but have also been known to become cold-blooded killers to those who cross them. * Lifestyle - They are cunning and have excellent senses, so they make are superb hunters. They typically live off the land but also trade their extra hides and animal parts for useful gear. Some have extended their tracking and hunting skills to become bounty hunters: tracking and capturing fugitives from justice and living off the bounty."))))))
nx/tactics/books/bestiary / chapter_constructs
Description:
Function Name:
  • chapter_constructs
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_constructs : base/chapter (chapter :name "Constructs" :sectionmap (sectionmap :Alchemical (section :name "Alchemical" :unitmap (unitmap :Homunculus (unit :name "Homunculus"))) :Animated (section :name "Animated" :summary "* Created though [Alchemy] or [Sympathetic Magic]" :unitmap (unitmap "Animated Armor" (unit :name "Animated Armor") "Animated Furniture" (unit :name "Animated Furniture") "Flying Carpet" (unit :name "Flying Carpet") "Flying Boat" (unit :name "Flying Boat") "Living Statue" (unit :name "Living Statue") "Terra Cotta Warrior" (unit :name "Terra Cotta Warrior"))) :Dreams (section :name "Dreams" :reference "Sandman" :unitmap (unitmap :Apparition (unit :name "Apparition" :summary "* Apparitions are drem entities that are created from terrifying nightmares. As such they seem to be creatures of fear that attempt to strike terror in anyone they encounter. They normally appear as frightful humanoids composed of swirling black vapors, however, they may change their form into anything that will strike fear in their target. Though powerful and terrifying, Apparitions do not actually want to kill their prey. Instead they want to terrify them endlessly, though sometimes this leads to madness or suicide, and the Apparition may accidentally kill its prey. A dead or fearless victim is boring to the Apparition, and they will seek easier prey when frustrated.") :Dream (unit :name "Dream") :Figment (unit :name "Figment" :reference "* Teacups - Beauty and the Beast * Brooms - Fantasia" :summary "* Figments are minor dream entities that are created from imagination. They typically only exist in the Dream Realm where they possess and animate small normally inanimate objects in dreams. They must inhabit a single object or group of like objects, but they are physically weak and are dispelled if the object is destroyed. They do not normally speak, but they can if they so choose. Figments can be summoned into the material world where they inhabit and animate a physical object. They are typically friendly and make excellent companions, familiars, or spies.") :Nightstalker (unit :name "Nightstalker" :reference "* The mara was thought of as an immaterial being, capable of moving through a keyhole or the opening under a door, who seated herself at the chest of a sleeping person and 'rode' him or her, thus causing nightmares. * In Norwegian/Danish, the word for nightmare is mareritt/mareridt, meaning 'mareride'." :summary "* Nightstalkers are predators in the dream world. Their form varies but it is always some kind of terrifying monster with sharp claws. They prey on dreamers and will torment a dreamer through the night until they are exhausted at which point it will slay the dream form and consume it. In the waking world, the victim will appear to have violent nightmares and cannot be awakened. If the dream form is killed, the waking form dies in its sleep, apparently of natural causes though some telltale marks remain." :titles "Dream Killer, Living Nightmare, Mara") :Sandman (unit :name "Sandman"))) :Golems (section :name "Golems" :unitmap (unitmap "Blood Golem" (unit :name "Blood Golem" :summary "* A Blood Golem is created using [Blood Magic] instead of [Artifice]. * A Blood Golem is a large humanoid composed of animated blood. All of its attacks cause [Bleeding] and whenever a [Bleeding] critical inflicts [Damage] on a nearby unit, the Blood Golem may heal a [Damage] or [Critical]. * When created, the summoner must be suffering from at least 4 [Bleeding] criticals from other sources or self-inflicted. These wounds may be bound or the summoner may allow the Blood Golem to draw from the wounds.") "Clay Golem" (unit :name "Clay Golem") "Flesh Golem" (unit :name "Flesh Golem" :reference "Franenstein's Monster" :summary "* A Flesh Golem is created using [Necromancy] instead of [Artifice]." :titles "Corpse Golem") "Iron Golem" (unit :name "Iron Golem") :Colossus (unit :name "Colossus" :reference "* Colossus of Rhodes * Colossus of Sardia * Pygmalion * Talos" :titles "Animated Statue, Stone Golem" :height "30m"))) :Machina (section :name "Machina" :summary "* Created though [Artifice]. These magical constructs a slow and powerful. Their abilities are increased if using rare or expensive materials (e.g. Gold, Meteor Metals, etc.)." :titles "Auton, Clockwork, Mech, Mek, Mekton" :unitmap (unitmap :Automaton (unit :name "Automaton") "Bronze Bull" (unit :name "Bronze Bull") "Bronze Horse" (unit :name "Bronze Horse") "Clockwork Avian" (unit :name "Clockwork Avian") "Clockwork Cobra" (unit :name "Clockwork Cobra" :titles "Iron Cobra") "Clockwork Dragon" (unit :name "Clockwork Dragon" :titles "Iron Dragon") "Clockwork Golem" (unit :name "Clockwork Golem" :titles "Ruin Grader, Ruin Guard") "Clockwork Owl" (unit :name "Clockwork Owl" :reference "* Bubo - Clash of the Titans" :summary "* Clockwork Owls have excellent vision and make fair spys and messengers. However, they are not at all fast, stealthy, or agile, so some feel that they are far from practical.") "Clockwork Minotaur" (unit :name "Clockwork Minotaur" :reference "* Minoton - Sinbad and the Eye of the Tiger") "Clockwork Scorpion" (unit :name "Clockwork Scorpion" :titles "Iron Scorpion") "Clockwork Spider" (unit :name "Clockwork Spider" :titles "Iron Spider, Spiderbot") "Clockwork Steed" (unit :name "Clockwork Steed" :titles "Iron Horse") "Dragon Engine" (unit :name "Dragon Engine" :titles "Steam Engine") "Iron Maiden" (unit :name "Iron Maiden" :summary "* A semi-humanoid automaton whose lower body is a giant spiked maw that engulfs its target. It is used as an intimidation and torture device.") :Juggernaut (unit :name "Juggernaut"))) :Miniatures (section :name "Miniatures" :unitmap (unitmap "Minature Animal" (unit :name "Minature Animal") "Miniature Boat" (unit :name "Miniature Boat") "Miniature House" (unit :name "Miniature House") "Miniature Warrior" (unit :name "Miniature Warrior") "Miniature Worker" (unit :name "Miniature Worker"))) :Phantasms (section :name "Phantasms" :summary "* Phantasms are created through powerful [Illusion]." :unitmap (unitmap "Phantasmal Force" (unit :name "Phantasmal Force") "Phantasmal Mount" (unit :name "Phantasmal Mount") "Phantasmal Monster" (unit :name "Phantasmal Monster") "Phantasm Warrior" (unit :name "Phantasm Warrior"))))))
nx/tactics/books/bestiary / chapter_dragons
Description:
Function Name:
  • chapter_dragons
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_dragons : base/chapter (chapter :name "Dragons" :summary "* Morale - Normal * Units - Individuals * Dragons are ancient beings and remember the time, before men, when their kind ruled the world." :sectionmap (sectionmap "Lesser Dragons" (section :name "Lesser Dragons" :reference "Thank you for nothing, you useless reptile. - Hiccup, How to Train Your Dragon" :unitmap (unitmap :Dractyl (unit :name "Dractyl" :summary "* Dractyl are horse-sized lesser dragons. They have a greyish scaly hide and large membranous wings. They live on cliffs and normally eat insects and vermin but will eat almost anything that does not require too much work. They can be trained as steeds, but they are clumsy flyers and only obey under duress so they cannot be relied on in battle. They have been known to throw their riders from altitudes to escape their servitude.") "Fire Drake" (unit :name "Fire Drake") :Lindwyrm (unit :name "Lindwyrm" :summary "* Lindwyrm are forest serpents that are connected with the forest. Everything around a Lindwyrm slowly grows, supposedly including treasure." :titles "Lindworm") "Spindrift Drake" (unit :name "Spindrift Drake" :summary "* Spindrift Drakes are aquatic, horse-sized, lesser dragons. They hunt the near the surface of large water bodies. Their beautiful, thin, irridescent wings are adapted to swimming, but they are known to launch themselves from the seas and glide close to the surface at high speeds. Their preferred tactic is to burst from the waves, build up speed, and then knock their prey into the water and kill them underwater." :titles "Spindrake") "Storm Drake" (unit :name "Storm Drake" :titles "Azure Drake") :Wurm (unit :name "Wurm") :Wyvern (unit :name "Wyvern"))) "Greater Dragons" (section :name "Greater Dragons" :reference "* Seven Deadly Sins: Greed * Lee: Only I can endure the dragon's fury. Sol: We'll see about that, little man. Lee Sin and Aurelion Sol - Runeterra" :summary "* The greater dragons are apparently the last remnants of a ancient time before man when enormous monsters roamed the world. The greater dragons are immensely powerful, even more than their great size would indicate. Greater dragons are extremely rare and solitary. They all appear to be millenia old, and no young greater dragons have been observed. It is possible that there are no longer any mated pairs of dragons, so the ones observed may be the last of greater dragons. * They tend to live near ley lines (dragon lines) to accumulate magical energy. They further collect precious things to bask in their spiritual energy." :unitmap (unitmap "Celestial Dragon" (unit :name "Celestial Dragon" :image "Fantasy/Dragon_Celestial.png" :reference "Shenron - Dragon Ball" :titles "Gilded Dragon, Gold Dragon, Silver Dragon") "Dragon Turtle" (unit :name "Dragon Turtle" :reference "* Gamera * Lion Turtle - Avatar The Last Airbender" :summary "* Dragon Turtles are enormous turtles that live most of their lives at sea and are sometimes mistaken for small islands. They are extremely long lived and are among the most ancient creatures living. They will occasionally float on the surface so long that plants and even trees grow on them. * Steam Breath - They produce extreme heat inside their bodies that can be expelled as steam, a boiling geyser, or fire." :titles "Zaratan") "Earth Dragon" (unit :name "Earth Dragon" :summary "* Earth Dragons are physically more like worms than typical dragons. * Heat Breath - The body of an Earth Dragon is scorching hot from friction as it moves. If it exhales strongly, that heat is released as a scorching blast. * Earth Moving - They move through sand by breathing in air and sand and blowing it out through the gaps in their long body in a similar way to gills. The air liquifies the surrounding sand and allows the Dragon to slide through the ground at relatively high speeds." :titles "Desert Dragon, Dune Dragon, Earth Wyrm, Sand Dragon, Sand Wyrm") "Forest Dragon" (unit :name "Forest Dragon" :summary "* Poison Spit - Has poison glands in its mouth that let it spit [Poison] like a Cobra. * Poison Cloud - Exhales while emitting poison from its glands to create a deadly poison cloud. This cloud provides cover and can be dropped behind the dragon while flying. * Poison Immunity - The dragon is immune to its own poison." :titles "Green Dragon, Emerald Dragon") "Frost Dragon" (unit :name "Frost Dragon" :image "Fantasy/Dragon_Frost.png" :summary "* Inhales Heat - The Frost Dragon survives by draining heat sources. Its lair is always incredibly cold with its own body temperature matching the surroundings. * Absorb Heat - The body of the Frost Dragon absorbs heat around it creating intense cold around its body. * Cold Immunity - Cold has no effect on Frost Dragons * Heat Vulnerability - Heat attacks overwhelm its heat absorption ability." :titles "Chromium, Ice Dragon, Whiteflame") "Mountain Dragon" (unit :name "Mountain Dragon" :summary "* Red/Orange, Lives in Volcanic regions * Firebreathing: The dragon produces 2 fluids in venom sacs in its neck. When released during an exhale, these combine and ignite to form a napalm-like cloud." :titles "Crimson Dragon, Fire Dragon, Lava Dragon") "Sea Dragon" (unit :name "Sea Dragon" :summary "* Sea dragons are gigantic serpentine sea creatures with lengths over 60 feet. The great jaws of these creatures are lined with 10 inch teeth and can swallow longboats whole. They are the apex predators of the sea and they consume almost everything they encounter. * They are the oldest (along with Dragon Turtles) and largest of the dragon species but also the most primitive. Some have learned to communicate though they have little need to interact with others. Some believe that Sea Dragons may be incredibly ancient, predating almost every other creature of the world. * Sonic Roar - The roar of a Sea Dragon can be heard for leagues. It causes deafness and massive internal damage to anything in front of its maw. Like other sonic attacks, the roar has increased effect underwater." :titles "Sea Serpent") "Shadow Dragon" (unit :name "Shadow Dragon" :image "Fantasy/Dragon_Obsidian.png" :summary "* Spits Acid - The Shadow Dragon can belch stomach acid from its mouth to burn targets. * Acid Cloud - By exhaling while belching acid, the Shadow Dragon can" :titles "Black Dragon, Marsh Dragon, Obsidian Dragon, Swamp Dragon") "Sky Dragon" (unit :name "Sky Dragon" :summary "* Sky Dragons make their homes high in the clouds. Their massive wings allow them to fly without ever landing and they sleep while soaring. They are drawn to storms where their unique metallic scales attract and absorb lightning strikes and static electricity. It is unclear what these massive creatures consume, but their large teeth implies they are carnivorous. * Lightning Breath - When angered, their scales become ionized and they spit a conductive spray that carries enormous electric potential. * Lightning Armor - As might be expected, their scales also carry deadly electric charge which releases on contact. * Lightning Immunity * If forged into armor, their scales absorb electricity while their hide protects the wearer from that same electricity. Scales can also be used as alchemical batteries and magical focuses." :titles "Blue-Eyes White Dragon, Night Fury, Rodan, Slifer the Sky Dragon, Cloud Dragon, Storm Dragon" :unitpowermap (unitpowermap :Electricity (unitpower :name "Electricity" :unitabilitymap (unitabilitymap "Absorb Electricity" (unitability :name "Absorb Electricity"))))) :Underdragon (unit :name "Underdragon" :summary "* Dragons are bursting with magical energies, so even dead dragons can become undead (either purposely or accidentally). Since corpse dragons are no longer living, their normal breath weapon is usually lost, but instead they can exhale a billowing, decaying mist." :titles "Corpse Dragon, Skeletal Dragon, Necrodragon, Undead Dragon, Zombie Dragon"))) "Monstrous Dragons" (section :name "Monstrous Dragons" :unitmap (unitmap :Apophis (unit :name "Apophis" :reference "Egyptian Mythology") :Ladon (unit :name "Ladon") "Midgard Serpent" (unit :name "Midgard Serpent" :reference "Norse Mythology") :Pytho (unit :name "Pytho") :Stoorworm (unit :name "Stoorworm") :Tiamat (unit :name "Tiamat" :reference "Babylonian Mythology" :titles "Avatar of Chaos, Avatar of the Wyrm, The Beast, Mother of All Life"))))))
nx/tactics/books/bestiary / chapter_elementals
Description:
Function Name:
  • chapter_elementals
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_elementals : base/chapter (chapter :name "Elementals" :summary "* All summoned Elementals are tied to their summoning point. If at any time, the elemental cannot trace a continuous line through their element to the summoning point, they are immediately banished back to their home plane. This is easiest for Air and Earth Elementals and hardest for Water and Fire Elementals. The most straightforward way to leverage this weakness is to isolate the summoning point using a different element." :sectionmap (sectionmap "Air Elementals" (section :name "Air Elementals" :unitmap (unitmap "Aero Essence" (unit :name "Aero Essence" :summary "* A mindless, condensed blob of Aero energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Aero Slime, Aerolon, Wind Slime") "Air Elemental" (unit :name "Air Elemental") "Air Elemental Lord" (unit :name "Air Elemental Lord" :summary "* Greater Air Elementals are enormous creatures that can fill the sky. They appear as cloudbanks or can be completely invisible depending on their mood. They have complete mastery over the Air, can perform any Air Power at maximum ability and can cancel any other being attempting to use Air." :unitpowermap (unitpowermap :Air (unitpower :name "Air" :level "20"))) :Jinn (unit :name "Jinn" :summary "* The Jinn are powerful, giant, invisible wind spirits that can take humanoid form. They are driven by their passions and are known to love and hate with extreme intensity. Tales of the Jinn are filled with love, scheming, betrayal, hatred, revenge, murder, retribution, and madness. For the Jinn who do not age, every betrayal can never be forgiven, so revenge never ends in an endless cycle of retributions until all is lost. * Description - Jinn are naturally formless and invisible to mortals, but can will themselves to be visible. The can take any shape but they prefer long snake-like forms or tall, thin mortal forms. * Powers - Invisibility, Flight, Shapeshift, Air * True Name - Jinn keep their true name a secret. They share this name only with those they truly love and trust and commit to do anything for those who know their name until the end of time. The greatest betrayal would be to share this name to be honor bound to another. * Society - Jinn live in large desert tribes with strong family bonds. The greatest of these tribes are Sultanates." :titles "Djinn") :Sylyph (unit :name "Sylyph") :Zephyr (unit :name "Zephyr" :titles "Wind Sprite"))) "Earth Elementals" (section :name "Earth Elementals" :unitmap (unitmap "Earth Elemental" (unit :name "Earth Elemental") "Earth Elemental Lord" (unit :name "Earth Elemental Lord" :summary "* Greater Earth Elementals are enormous creatures that can appear as a mountain or a range of hills. They have complete mastery over the Earth, can perform any Earth Power at maximum ability and can cancel any other being attempting to use Earth." :unitpowermap (unitpowermap :Earth (unitpower :name "Earth" :level "20"))) "Earth Gnome" (unit :name "Earth Gnome") "Earth Sprite" (unit :name "Earth Sprite") "Geo Essence" (unit :name "Geo Essence" :summary "* A mindless, condensed blob of Geo energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Earth Slime, Geo Slime, Geolon") :Monolith (unit :name "Monolith"))) "Fire Elementals" (section :name "Fire Elementals" :unitmap (unitmap :Firebird (unit :name "Firebird" :summary "* Firebirds are Flame spirits that fly. Though they can move through the air with ease, they enjoy igniting combustibles so much that they land frequently to spread the flames." :titles "Ember") "Flame Elemental" (unit :name "Flame Elemental") "Flame Elemental Lord" (unit :name "Flame Elemental Lord" :summary "* Greater Fire Elementals are enormous creatures that can appear as a lava pit or a forest fire. They have complete mastery over the Fire, can perform any Fire Power at maximum ability and can cancel any other being attempting to use Fire." :unitpowermap (unitpowermap :Fire (unitpower :name "Fire" :level "20"))) "Flame Salamander" (unit :name "Flame Salamander" :summary "* Salamanders are pools of flame that vaguely appear in lizard form. They crawl about and split into additional Salamanders if sufficient flammable material is available." :titles "Lava Lizard") "Flame Sprite" (unit :name "Flame Sprite" :titles "Fire Imp") :Ifrit (unit :name "Ifrit" :summary "* The Ifrit are a fiery tribe related to the [Jinn]. They are just as passionate, but are perhaps more sinister." :titles "Efreet") "Pyro Essence" (unit :name "Pyro Essence" :summary "* A mindless, condensed blob of Pyro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Fire Slime, Pyro Slime, Pyrolon"))) "Lightning Elementals" (section :name "Lightning Elementals" :unitmap (unitmap "Electro Essence" (unit :name "Electro Essence" :summary "* A mindless, condensed blob of Electro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Electro Slime, Electrolon, Lightning Slime, Lightning in a Bottle") "Lightning Elemental" (unit :name "Lightning Elemental") "Lightning Elemental Lord" (unit :name "Lightning Elemental Lord") :Raijin (unit :name "Raijin" :titles "God of Lightning, Narukami, Raiden"))) "Water Elementals" (section :name "Water Elementals" :unitmap (unitmap "Hydro Essence" (unit :name "Hydro Essence" :summary "* A mindless, condensed blob of Hydro energy. * Since slimes store magical energy they are highly sought after by mages and alchemists." :titles "Hydro Slime, Hydrolon, Water Slime") :Naiad (unit :name "Naiad" :titles "Nereid, Nyad") :Undine (unit :name "Undine") "Water Elemental" (unit :name "Water Elemental") "Water Elemental Lord" (unit :name "Water Elemental Lord" :summary "* Greater Water Elementals are enormous creatures that can appear as a lake, a whirlpool, or a tidal wave. They have complete mastery over the Water, can perform any Water Power at maximum ability and can cancel any other being attempting to use Fire." :unitpowermap (unitpowermap :Water (unitpower :name "Water" :level "20"))) "Water Sprite" (unit :name "Water Sprite"))))))
nx/tactics/books/bestiary / chapter_extra-dimensional
Description:
Function Name:
  • chapter_extra-dimensional
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_extra-dimensional : base/chapter (chapter :name "Extra-Dimensional" :sectionmap (sectionmap :Celestine (section :name "Celestine" :summary "* The Angels have been fighting a cold war against the Fiends for millenia. Each side claims their right over the mortal realm, and each side recruits souls to increase their faction's power. * The Archangels are the oldest and most powerful of the Angels. Individually, they can lay waste to armies. * The Aeons are the primal concepts of divinity and are beyond physicality." :titles "Archons, Aeons, Angels, Angelics, Devas, Malaikah, Watchers" :unitmap (unitmap "Aeon Demiurge" (unit :name "Aeon Demiurge") "Aeon Great Archon" (unit :name "Aeon Great Archon") "Aeon Sophia" (unit :name "Aeon Sophia") "Archangel Auriel" (unit :name "Archangel Auriel" :reference "Diablo 3" :summary "* Al'maiesh, the Cord of Hope - Twin whips of burning light." :titles "Archangel of Hope") "Archangel Gabriel" (unit :name "Archangel Gabriel" :summary "* Performs acts of justice and power" :titles "Translation: God is my strength") "Archangel Itherael" (unit :name "Archangel Itherael" :reference "Diablo 3" :summary "* Neither male nor female, Itherael remains neutral at all times. * He always teleport instead of moving. * Talus'ar, the Scroll of Fate - Allows him to predict the actions of others. * Presides over the Library of Fate where possible futures are divined." :titles "Archangel of Fate, Archangel of Balance") "Archangel Jophiel" (unit :name "Archangel Jophiel" :summary "* Expelled Adam and Eve from the Garden of Eden holding a flaming sword and punishes those who transgress against God." :titles "Translation: Beauty of God") "Archangel Malthael" (unit :name "Archangel Malthael" :reference "Diablo 3" :summary "* Wields twin sickle swords and can deflect and redirect enemy attack with only the slightest use of force. * Calad'ar, the Chalice of Wisdom - Allows him to see all things." :titles "Archangel of Wisdom") "Archangel Michael" (unit :name "Archangel Michael" :summary "* Stands up for the children of mankind" :titles "Translation: Who is like God?, Kindness of God") "Archangel Raphael" (unit :name "Archangel Raphael" :summary "* God's healing force" :titles "Translation: It is God who heals") "Archangel Samael" (unit :name "Archangel Samael" :titles "Translation: Venom of God, Angel of Death, Azrael") "Archangel Sandalphon" (unit :name "Archangel Sandalphon" :summary "* Battles Samael and brings mankind together" :titles "Translation: Bringing Together") "Archangel Uriel" (unit :name "Archangel Uriel" :summary "* Leads us to destiny" :titles "Translation: God is my light") "Archangel Tyrael" (unit :name "Archangel Tyrael" :reference "Diablo 3" :summary "* El'durin, the Sword of Justice - Twin whips of burning light." :titles "Archangel of Justice") :Cherubim (unit :name "Cherubim") :Deva (unit :name "Deva") "Fallen Angel" (unit :name "Fallen Angel" :summary "* An angel who loses faith in his/her god. * Its wings change from white to black like a raven's. * Like mortals, their personalities and goals are much more varied than the angels. * Fallen angels are persecuted by other angels for their impurity." :titles "Fallen") :Grace (unit :name "Grace") "Guardian Angel" (unit :name "Guardian Angel") :Irin (unit :name "Irin" :reference "* Irin - In the Book of Enoch, the Watchers, are angels dispatched to Earth to watch over the humans. They soon begin to lust for human women and, at the prodding of their leader Samyaza, defect en masse to illicitly instruct humanity and procreate among them. The offspring of these unions are the Nephilim, savage giants who pillage the earth and endanger humanity. Samyaza and his associates further taught their human charges arts and technologies such as weaponry, cosmetics, mirrors, sorcery, and other techniques that would otherwise be discovered gradually over time by humans, not foisted upon them all at once. Eventually God allows a Great Flood to rid the earth of the Nephilim, but first sends Uriel to warn Noah so as not to eradicate the human race. The Watchers are bound 'in the valleys of the Earth' until Judgment Day." :summary "* Araqiel (also Arakiel, Araqael, Araciel, Arqael, Sarquael, Arkiel, Arkas) taught humans the signs of the earth. However, in the Sibylline Oracles, Araqiel is referred to not as a fallen angel, or Watcher, but as one of the 5 angels who lead the souls of men to judgement, the other 4 being Ramiel, Uriel, Samiel, and Azazel. * Armaros (also Amaros) in Enoch I taught men the resolving of enchantments. * Azazel taught men to make knives, swords, shields, and how to devise ornaments and cosmetics. * Gadreel (or Gader'el) taught the art of cosmetics, the use of weapons and killing blows. It was he who led Eve astray in the garden of eden.[citation needed] * Baraqel (Baraqiel) taught men astrology * Bezaliel mentioned in Enoch I, left out of most translations because of damaged manuscripts and problematic transmission of the text. * Chazaqiel (sometimes Ezeqeel or Cambriel) taught men the signs of the clouds (meteorology). * Kokabiel (also Kakabel, Kochbiel, Kokbiel, Kabaiel, and Kochab), In the Book of Raziel he is a high-ranking, holy angel. In Enoch I, he is a fallen Watcher, resident of the nether realms, and commands 365,000 surrogate spirits to do his bidding. Among other duties, he instructs his fellows in astrology. * Penemue taught mankind the art of writing with ink and paper, and taught the children of men the bitter and the sweet and the secrets of wisdom. (I Enoch 69.8) * Sariel (also Suriel) taught mankind about the courses of the moon (at one time regarded as forbidden knowledge). * Samyaza (also Shemyazaz, Shamazya, Semiaza, Shemhazi, Semyaza and Amezyarak) is one of the leaders of the fall from heaven in Vocabulaire de l' Angelologie. * Shamsiel, once a guardian of Eden as stated in the Zohar, served as one of the two chief aides to the archangel Uriel (the other aide being Hasdiel) when Uriel bore his standard into battle, and is the head of 365 legions of angels and also crowns prayers, accompanying them to the 5th heaven. In Jubilees, he is referred to as one of the Watchers. He is a fallen angel who teaches the signs of the sun. * Yeqon (also Jeqon or Yaqum, he shall rise) was the ringleader who first tempted the other Watchers into having sexual relations with humans. His accomplices were Asbeel, Gadreel, Penemue, and Kasdaye (or Kasadya), who were all identified as individual satans." :titles "The Watchers") :Ophanim (unit :name "Ophanim" :reference "Ezekiel saw the wheel Way up in the middle of the air Ezekiel saw the wheel Way up in the middle of the air And the little wheel run by faith And the big wheel run by the grace of God A wheel in a wheel Way up in the middle of the air" :summary "* Chariots for the Seraphim. * Four eye-covered interlocking wheels" :titles "The Many Eyed Ones") :Seraphim (unit :name "Seraphim" :summary "* Six Winged"))) :Abyssal (section :name "Abyssal" :summary "* Demons are creatures of Chaos from the swirling outer void where reality itself is fluid. Unlike Fiends, there are an infinite number and variety of Demons. Some believe our universe is a tiny light of order in a sea of Demons and Chaos. Like the Chaos that spawned them, demons are creatures of destruction and random mayhem. They delight in carnage and fear and have little concern for their own safety. Though Demons are sometimes cunning, they generally have little patience for communication or study, preferring to take action. They do not create tools or clothing of any kind, though they might be able to use those they pick up (especially weapons). They value free will above all things and will not tolerate servitude including contracts, deals or agreements of any kind. * Demons are dominated by their [Beast]s. * Preferred Skills: [Demonic Power], [Natural Weaponry] * Description - Demons take any number of monstrous forms and are among the most powerful beings in existence. As beings of chaos, their appearance is often unsettling and asymetrical. They eat any living creature including humans though they don't require ordinary sustanence. Most are larger and more muscular than humans and can be enormous. Many have rows of stubby spikes growing from their upper backs, with elongated limbs that end in clawed digits, large fang-filled jaws and pointed ears, giving them a bestial appearance. Some have bat-like wings. Others burrow in the earth. * Personality - Demons are wildly arrogant and destructive and have no sense of consequences for their actions. Unlike Fiends who secretly harbor intense guilt and long for the souls they have lost, Demons are enthralled by their excess. Demons are sustained by chaos; if they are not surrounded by chaos, they will wither and die. Demons care nothing for life, least of all their own; they think only in the moment and cannot tolerate sitting still. They treat everything as if they were in a fictional world where nothing matters except their own immediate gratification. * Control - As beings of chaos, Demons can never be controlled. Attempts to control them damage them instead. * Abilities - Demons have the most varied abilities among all creatures. They generally have great strength, speed, and durability and can regenerate wounds. Some can extend their limbs and digits. All Demons can be identified by their [Demonic Power]." :titles "Demonic" :unitmap (unitmap "Abyssal Horror" (unit :name "Abyssal Horror") "Abyssal Hound" (unit :name "Abyssal Hound" :summary "* Resembles large muscular bulldog/pit bull 3ft at the shoulder. Their eyes pulse a faint red with their heartbeat. They love to chase prey and are completely silent in pursuit. They are aggressive bullies, but will flee a determined foe unless the scent of blood drives them into a murderous frenzy." :titles "Demon Dog") "Abyssal Hunter" (unit :name "Abyssal Hunter") "Chaos Demon" (unit :name "Chaos Demon" :summary "* A Chaos Demon is a creature drawn from the stuff of Chaos. The results of summoning a Chaos Demon are necessarily difficult to predict. Randomly select each Body Part. For each [Hit], add one random ability. For each [Critical Hit], add one ability of your choice. ** Body Parts *** Head **** Headless **** Mindless **** Cunning **** Brilliant *** Mouth **** Mouthless **** Taste *** Ears **** Deaf **** Big Ears **** Sonar *** Eyes **** Blind **** Bug Eyes **** Eye Stalks *** Nose **** Snout *** Body **** Armor **** Acid Blood **** Blob **** Boat **** Mist **** Slime **** Spines *** Arms **** Armless **** Claws **** Hands *** Wings **** Bat Wings **** Bird Wings **** Insect Wings **** Wingless *** Legs **** Caterpillar Legs **** Hopping **** Insect Legs **** Legless **** Slug **** Spider Legs ** Abilities *** Burrowing *** Clairvoyance *** Confusion *** [[Darkness]] *** Darts *** Disease *** Dust Cloud *** Emotion Control *** Empathy *** Ethereal *** Freezing Attack *** Hellfire *** Horde *** Insect Plague *** Lore *** Poison *** Shape Change *** Shock *** Stinger *** Telekinesis *** Web") :Empusa (unit :name "Empusa") :Lilin (unit :name "Lilin") "Mist Demon" (unit :name "Mist Demon") :Pazuzu (unit :name "Pazuzu" :reference "Exorcist, Exorcist II" :summary "Dark Angel of the Four Winds with rotting genitals from which he howls through sharpened teeth over stricken cities." :titles "Lord of Fevers and Plagues") :Orcus (unit :name "Orcus" :reference "John Milton's Paradise Lost") :Ades (unit :name "Ades" :reference "John Milton's Paradise Lost") :Demogorgon (unit :name "Demogorgon" :reference "John Milton's Paradise Lost"))) :Infernal (section :name "Infernal" :reference "* The greatest trick the Devil ever pulled was convincing the world he didn't exist. - Verbal, The Usual Suspects" :summary "* Fiends are dangerous creatures both physically and mentally. They are sometimes mistaken for Demons, but Demons are forces of random destruction while Fiends possess a sinister intellect and seek to install their own order on the mortal realm. * Conflict - Fiends are powerful creatures that have been engaged in a cold war with the Angels for millenia. As in any longstanding dipute, their history is convuluted and both sides maintain conflicting claims why their causes are just. They both seek to recruit souls from the mortal realm to increase their faction's power. The Angels promise protection while the Fiends see this protection as oppressive control. The Fiends promise freedom while the Angels see this as freedom to suffer. Essentially, their conflict is socialism vs. capitalism. * Soul Collection - The prime motivation for fiends is collecting corrupted souls. Fiends cannot corrupt a soul by forcing one to do evil. Instead they must manipulate and tempt. Therefore, fiends spend most of their time on earth in mortal form stalking people, learning their secrets, poisoning their emotions, and gaining their trust in any way they can. The best minions of Hell are never noticed at all. With their powers, fiends could cause tremendous destruction, but that would drive people away. They would have the corpses but not the souls. * Contract - Devil's Bargain. Fiends are willing to engage in contracts with mortals, usually in exchange for their soul but sometimes for lesser mischief. The fiend hierarchy ensures that these contracts are always binding to both parties. Some magi believe they can deal with fiends, learn from them, and not be corrupted themselves. This rarely goes to plan and fiends are more than willing to pit their intelligence against a mage's. * Deceiver - Fiends are deceivers first and foremost. No ability can reveal whether they are telling the truth. * Corrupted - No ability can change them into virtuous beings. They are too far gone to turn. * Tormented - Though fiends appear to be all-powerful embodiments of evil, they are ruled by their [Shadow] and forever tormented by the remnants of their [Spirit]. They are secretly filled with regret and self-loathing and have even been known to strangely act in ways that lead to their own defeat. * Shaitan are the original and most powerful fiends. Most are ancient fallen angels, who through millenia of worship now possess godlike power. * Archfiends are the most powerful sorts of Fiends below the godlike Shaitan. They stand 10 to 20 feet tall and have red or coal black skin. They live in stone castles and observe a medieval heirarchy of princes, princesses, barons, ministers, and knights. They profess undying loyalty to the Shaitan, though, in fact, they crave power, wealth, and position and are throughly unscrupulous and untrustworthy in all their dealings." :titles "Devilish, Devils, Diabolic, Fiends, Shaitan, Shayatin" :unitmap (unitmap :Baphomet (unit :name "Baphomet") "Count Andromalius" (unit :name "Count Andromalius") "Count Bifrons" (unit :name "Count Bifrons") "Count Furfur" (unit :name "Count Furfur") "Count Halphas" (unit :name "Count Halphas") "Count Räum" (unit :name "Count Räum") "Duke Agares" (unit :name "Duke Agares") "Duke Aim" (unit :name "Duke Aim") "Duke Alloces" (unit :name "Duke Alloces") "Duke Amdusias" (unit :name "Duke Amdusias") "Duke Astaroth" (unit :name "Duke Astaroth") "Duke Barbatos" (unit :name "Duke Barbatos") "Duke Bathin" (unit :name "Duke Bathin") "Duke Buné" (unit :name "Duke Buné") "Duke Berith" (unit :name "Duke Berith") "Duke Crocell" (unit :name "Duke Crocell") "Duke Dantalion" (unit :name "Duke Dantalion") "Duke Eligos" (unit :name "Duke Eligos") "Duke Focalor" (unit :name "Duke Focalor") "Duke Gremory" (unit :name "Duke Gremory") "Duke Gusion" (unit :name "Duke Gusion") "Duke Haures" (unit :name "Duke Haures") "Duke Murmur" (unit :name "Duke Murmur") "Duke Sallos" (unit :name "Duke Sallos") "Duke Valefor" (unit :name "Duke Valefor") "Duke Vapula" (unit :name "Duke Vapula") "Duke Vepar" (unit :name "Duke Vepar") "Duke Vual" (unit :name "Duke Vual") "Duke Zepar" (unit :name "Duke Zepar") "Dust Devil" (unit :name "Dust Devil") "Fury Devil" (unit :name "Fury Devil" :titles "Erinyes") :Grimalkin (unit :name "Grimalkin" :reference "* During the early modern period, the name grimalkin, and cats in general, became associated with the devil and witchcraft. Women tried as witches were often accused of having a familiar, frequently a grimalkin." :summary "* The Grimalkin is a small, black, furry devil with glowing eyes and sharp claws. It is wickedly, intelligent but lazy and weak, so it prefers to get involved in the schemes of others. It takes the role of scout, messenger, and advisor. It enjoys providing information that causes suffering and sitting back and watching their handiwork unfold. * The Grimalkin is commonly used as a familiar by black magicians. In order to remain on the mortal plane, it must possess a small animal. It will choose a creature which closely suits its personality, often an old or evil-looking female cat." :titles "Greymalkin, Shadowcat") :Hellhound (unit :name "Hellhound" :summary "* Hellhounds may appear as ordinary large dogs with black coats (usually Dobermans). * In combat, they may take a more monstrous form and may spawn up to 2 additional heads and have been known to breathe fire. * Be aware that Hellhounds only appear as dogs. Like all devils, they are corrupted souls of humanoids and possess a calm, calculating intelligence. They often work as a pack, creating ambushes and using decoys to lure their prey to their doom." :titles "Cereberus, Devil Dog, Fenris Wolf, Garm, Kerberos") :Hellion (unit :name "Hellion" :titles "Hellcat") :Hellspawn (unit :name "Hellspawn" :titles "Lemure") "Ice Devil" (unit :name "Ice Devil") :Imp (unit :name "Imp" :summary "* The Imp is a foot tall, bat-winged minor Devil with a long forked tail that can be used for grasping. Imps can find and squeeze through the tiniest dimensional cracks and are therefore the most common of all of Hell's legions infesting the world. They can speak, but are mostly incoherent, muttering, lunatics. Their flesh is rubbery and their bones are soft, so they can withstand the massive physical abuse that greater devils heap on them. Though physically weak, they are fast flyers with keen vision and make excellent messengers. * Origin - Imps are the Fiend form of cruel children who chose to go to hell to continue their cruelty. Of course, this does not go well for evil child. * Personality - They are clever and may try to design intricate plans, or they may just cause trouble and hope that will please their masters. * Powers - They may communicate mentally with other devils and it is in this way that they are the most useful. Powerful diabolists have been known to capture Imps and cram them into magical bottles. Anyone who possesess the bottle may converse with the Imp inside. Though the Imp is troublesome and somewhat incoherent, it may be used as a go between to converse with greater devils to negotiate for knowledge or power. While channelling greater devils, the Imp becomes immeditately conherent and possesses a dark intelligence that it uses to conspire with its master. * In their home realm, Imps occupy the unenviable position at the bottom of the devil hierarchy. At best, servitors may be employed as scullery workers or menial laborers. Worse they are used as living tools serving as a plunger, polishing, or scrapping instrument. Devils sometimes amuse themselves by squeezing an imp's head into funny faces." :titles "Bottle Imp, Sardonicus") "King Baal Moloch" (unit :name "King Baal Moloch" :summary "* A King of [Devils] with [Godlike] power. * Baal appears as a man with a bull's head. * Worship involves child sacrifice by fire (to Moloch)." :titles "Bael") "King Balam" (unit :name "King Balam") "King Beleth" (unit :name "King Beleth") "King Belial" (unit :name "King Belial") "King Paimon" (unit :name "King Paimon") "King Purson" (unit :name "King Purson") "King Viné" (unit :name "King Viné") "King Zagan" (unit :name "King Zagan") "Knight Furcas" (unit :name "Knight Furcas") "Marquis Amon" (unit :name "Marquis Amon") "Marquis Andras" (unit :name "Marquis Andras") "Marquis Andrealphus" (unit :name "Marquis Andrealphus") "Marquis Cimeies" (unit :name "Marquis Cimeies") "Marquis Decarabia" (unit :name "Marquis Decarabia") "Marquis Leraje" (unit :name "Marquis Leraje") "Marquis Forneus" (unit :name "Marquis Forneus") "Marquis Marchosias" (unit :name "Marquis Marchosias") "Marquis Naberius" (unit :name "Marquis Naberius") "Marquis Oriax" (unit :name "Marquis Oriax" :titles "Orias") "Marquis Phenex" (unit :name "Marquis Phenex") "Marquis Ronové" (unit :name "Marquis Ronové") "Marquis Samigina" (unit :name "Marquis Samigina") "Marquis Shax" (unit :name "Marquis Shax") "Marquis Sabnock" (unit :name "Marquis Sabnock") :Nightmare (unit :name "Nightmare" :titles "Shadowmane") "Pit Fiend" (unit :name "Pit Fiend" :titles "Balrog, Fiend, Lord of the Pit") "Pit Wyrm" (unit :name "Pit Wyrm") "President Amy" (unit :name "President Amy") "President Botis" (unit :name "President Botis") "President Buer" (unit :name "President Buer") "President Caim" (unit :name "President Caim") "President Foras" (unit :name "President Foras") "President Glasya-Labolas" (unit :name "President Glasya-Labolas") "President Haagenti" (unit :name "President Haagenti") "President Malphas" (unit :name "President Malphas") "President Marbas" (unit :name "President Marbas") "President Marax" (unit :name "President Marax") "President Ose" (unit :name "President Ose") "President Valac" (unit :name "President Valac") :Azazel (unit :name "Azazel") "Prince Asmodeus" (unit :name "Prince Asmodeus" :summary "* Spreads lust through the land. Embodies the sin of lust. * Part man part animal hybrid." :titles "Asmoday") "Prince Beelzebub" (unit :name "Prince Beelzebub" :summary "* Fallen angel second only to Lucifer. Demon of pestilences. Consumes everything in his path." :titles "Lord of Gluttony, Lord of Flies, Lord of Flyers") "Prince Belphagor" (unit :name "Prince Belphagor" :summary "* The lord of fire and laziness. Prince of manipulation and deceit. He embodies the sin of sloth. * Formerly the Archangel Belpior, he took no side during Lucifer's rebellion and was cast down for his inaction. * He is a shape changer." :titles "Lord of Sloth") "Prince Gäap" (unit :name "Prince Gäap") "Prince Ipos" (unit :name "Prince Ipos") "Prince Leviathan" (unit :name "Prince Leviathan" :summary "* Swallows whole those consumed with envy. Embodies the sin of envy." :titles "Gates of Hell, Hellmouth, Lord of Envy") "Prince Lucifer" (unit :name "Prince Lucifer" :reference "* The are very few things that I will defend with true passion: medical marijuana, the biblical Satan as a metaphor against tyranny, and motherfucking, goddamn cryptocurrency. - Gilfoyle, Silicon Valley * Guilt is like a bag of fuckin' bricks. All you gotta do is set it down. ... Who are you carrying all those bricks for anyway? God. ... God likes to watch. He's a prankster. .. He gives man instincts ... He sets the rules in opposition. It's the goof of all time. Look but don't touch. Touch but don't taste. Taste but don't swallow. ... And while you're jumping from one foot to the other, what is he doing? He's laughing his sick, fucking ass off. ... He's a sadist. He's an absentee landlord. Worship that? Never. ... Freedom, baby is never having to say you're sorry. - Devil's Advocate" :summary "* The archangel who rebelled and was cast out. He embodies the sin of pride." :titles "Lord of Pride") "Prince Mammon" (unit :name "Prince Mammon" :summary "* Enslaves those who pursue wealth. Embodies the sin of greed." :titles "Lord of Greed") "Prince Orobas" (unit :name "Prince Orobas") "Prince Satan" (unit :name "Prince Satan" :titles "Lord of Wrath") "Prince Seere" (unit :name "Prince Seere") "Prince Sitri" (unit :name "Prince Sitri") "Prince Stolas" (unit :name "Prince Stolas") "Prince Vassago" (unit :name "Prince Vassago") "Shaitan, Devil" (unit :name "Shaitan, Devil") :Succubus (unit :name "Succubus" :summary "* Appearance - A powerful Devil who appears as an alluring person with unearthly beauty. In their true form they have a terrifying regal presense with glowing eyes, sharp fangs, bat-like wings, elegant horns like a tiara, and cloven feet. They have distinct male and female genders, but they have no sexual preference (a soul is a soul after all). * Energy Drain - They seduce people to have intercourse, providing untold pleasures while drawing their energy, often to the point of exhaustion or death. * Illusion - They are masters of [Illusion] and will almost never appear in their true form in the mortal realm. * Strength - They are physically powerful with strength similar to a bear or gorilla, but despite their power, they consider violence to be beneath them and will negotiate or flee if given the chance. * Patience - They are patient, sophisticated, and knowledgeable. Their seduction talents go far beyond sex, and they will often offer aid or information to befriend and manipulate their target. They are in no rush to accomplish their mission." :titles "Incubus, Sex Fiend, Temptress"))) :Flatlands (section :name "Flatlands" :summary "* A bizarre two-dimensional realm." :unitmap (unitmap "Ribbon Guard" (unit :name "Ribbon Guard" :summary "* Ribbons are unusual, two-dimensional entities. They never communicate, but they understand orders and always follow them accurately without concern for their own safety, so they are favored as guards or servants. * Description - They appear as floating banners of fabric of varying colors, but they have no actual depth. They ripple slowly through air or water like snakes and may strike or grapple opponents. They do not seem to eat, sleep or even breathe. It is unclear if they have independent thought or are merely automatons. * Powers: ** [Resistance]: [Resist Impact], [Resist Pierce], [Resist Electricity], [Resist Vacuum], [Resist Radiation], [Immune Vaccuum], [Cannot Eat], [Cannot Sleep] ** [Vulnerability]: [Vulnerable to Slash], [Vulnerable to Fire], [Vulnerable to Cold]"))) :Mirrorlands (section :name "Mirrorlands" :unitmap (unitmap "Mirror Reflection" (unit :name "Mirror Reflection" :summary "* A Mirror Reflection is being from the Mirrorlands that has no personal definition but longs for the definition of others. To this end, they become a mirror image of another being and try to impersonate the person though they lack any memories of the original. It would be practical to dispose of the original, but they are always only a reflection so they would die as well.") "Mirror Shard" (unit :name "Mirror Shard" :summary "* A Mirror Shard is a weaker form of a [Mirror Reflection]. It copies some single aspect of the original but is otherwise an empty shell. This incompleteness drives them mad with desperation. They are always drawn to the those they copy and are usually irrationally destructive. * [Action] [Target]: The Mirror Shard becomes the same [Mass] as the target. Then choose one [Skill] or [Power] to copy. The Mirror Shard gains that Skill/Power and loses all other Skills and Powers. It [Body], [Mind], and [Will] are altered accordingly."))))))
nx/tactics/books/bestiary / chapter_darkling
Description:
Function Name:
  • chapter_darkling
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_darkling : base/chapter (chapter :name "Darkling" :titles "Goblinoid" :sectionmap (sectionmap :Bugbear (section :name "Bugbear" :reference "* Serial Killer" :summary "* Appearance - Bugbears are the largest of the goblin races. They are 7ft tall, are covered in fur, have long ears, and have long fangs. They have a tough hide and dislike armor. * Personality - Brutal hunters and survivalists. They are butish like other goblins, but they are shrewd hunters and trappers. They are strictly carnivorous and treat everything as prey. They have been known to eat goblin in a pinch and would probably do so more if the flavor agreed with them more. They have little patience and are easily provoked. They are usually encountered alone while hunting or in a goblin nest acting as champion or leader. * Morale - Normal * Units - Skimisher, Trapper, Berserker, Light Axeman, Light Spearman, Light Polearm * Skills - Melee, Spear, Axe, Net, Hunting, Stealth, Survival, Close Combat, Knife * 7ft 400lbs." :titles "Babau, Bogy, Bogey, Bogeyman, Bogill, Boogeyman, Bugaboo") :Caprians (section :name "Caprians" :titles "Goatmen") :Gnolls (section :name "Gnolls" :reference "* Seven Deadly Sins: Sloth * Typical Gnolls... strong to the weak, weak to the strong. - Roi, King's Raid" :summary "* Personality - Slothful by nature, they do anything they can to avoid work in any form. The slave trade comes naturally to gnolls, though they are poor guards. * Morale - Low * Units - Light Infantry, Elite Pikemen, Enslaved Siege Crews * The largest of gnolls can grow to the size of an ogre." :unitmap (unitmap "Gnoll Axeman" (unit :name "Gnoll Axeman" :image "Fantasy/Gnoll_Axeman.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Pike (unititem :name "Pike"))))) "Gnoll Chieftain" (unit :name "Gnoll Chieftain" :summary "* Gnoll leadership is determined through intimidation and power. Gnoll leaders are usually the largest and strongest of their breed. Like bull walruses they maintain a harem of brides, so the position is coveted by upstarts. Challenges to a Chief's rule are usually not fatal, but the loser must put himself at the mercy of the victor. A good leader is expected to accept the subservient gesture, but some victors will commit a political faux pas to permanently remove a rival." :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "7" :unititemmap (unititemmap "War Hammer" (unititem :name "War Hammer"))))) "Gnoll Pikeman" (unit :name "Gnoll Pikeman" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Pike (unititem :name "Pike"))))) "Gnoll Skirmisher" (unit :name "Gnoll Skirmisher" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) "Gnoll Slaver" (unit :name "Gnoll Slaver" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :unititemmap (unititemmap :Net (unititem :name "Net") :Whip (unititem :name "Whip"))))))) :Goblins (section :name "Goblins" :reference "* Seven Deadly Sins: Gluttony * So raise your glass if you are wrong, in all the right ways. All my underdogs, we will never be, never be anything but loud and nitty-gritty, dirty, little freaks - Pink, Raise Your Glass. * Gremlins (1984) * Descent * Nezumi-Kozo * Gollum" :summary "* Description - Goblins are a small, savage, cave-dwelling humanoid species common to many mountainous regions. They live primarily underground and are very sensitive to bright light. They are the most numerous of the humanoid races (far outnumbering humans), though most Goblins are found underground where they wage war with their age old enemies, the Dwarves. These wretched man-like creatures are short and wiry, rarely exceeding 4 feet tall. They have soot-grey skin, large pointed ears, sharp fangs, and distorted features. They are physically weak and lack personal hygene. They do, however, have keen senses including superb night vision. * Personality - Goblins are hedonistic and brash. They are generally quirky and obsessive with their personal interests. This makes them excellent inventors, but they lack patience with details, so their inventions are usually highly flawed especially with regards to safety for which they have no consideration. They seem to have no recognizable morals and have been known to resort to any number of deviant behaviors including torture, cannibalism, and diabolism. They have a particular obsession with eating and will talk about food and preparation endlessly even when not hungry. They prefer knives and cleavers as weapons. They have no restrictions on what they eat, and they do not hold prisoners for long.... Selfish, undisciplined cowards by nature, they only gain confidence in numbers, and they always fight as a mob. Even their allies consider them to be reprehensible and ultimately expendable. The goblins are aware of how their allies and masters view them, so they show no real respect to power and are total anarchists by nature. Many races try to enlist or impress the goblins into service, but these relationships never last, because the goblins are unmanageable. * Preferred Skills - They have excellent manual dexterity and good at Ranged Combat and Thievery. They also have a talent for Kitbashing which they use to supplement their Artifice, Alchemy and Siegecraft. Their reliance on Kitbashing unfortunately makes their inventions extremely unreliable, but the goblins seem to have complete confidence in their own work. * Morale - Low * Units - Light Infantry, Light Spearmen, Light Archers, Elite Worg Cavalry, Siege Crews * History - The goblins once had a sophisticated society and ancient goblins are responsible for most of the finely worked tunnels throughout the land, but they are becoming increasing barbaric from generation to generation." :unitmap (unitmap "Goblin Aeronaut" (unit :name "Goblin Aeronaut" :titles "Goblin Balloonisht, Goblin Flyer, Goblin Kite Rider") "Goblin Artillerist" (unit :name "Goblin Artillerist" :unitskillmap (unitskillmap :Siegecraft (unitskill :name "Siegecraft" :level "3" :unititemmap (unititemmap :Ballista (unititem :name "Ballista") :Catapult (unititem :name "Catapult"))))) "Goblin Captain" (unit :name "Goblin Captain" :image "Fantasy/Goblin_Captain.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Goblin Champion" (unit :name "Goblin Champion") "Goblin Chirurgeon" (unit :name "Goblin Chirurgeon") "Goblin Hunter" (unit :name "Goblin Hunter" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "2" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))) "Goblin King" (unit :name "Goblin King") "Goblin Lord" (unit :name "Goblin Lord") "Goblin Miner" (unit :name "Goblin Miner" :unitskillmap (unitskillmap :Siegecraft (unitskill :name "Siegecraft" :level "2" :unitabilitymap (unitabilitymap :Sapping (unitability :name "Sapping"))))) "Goblin Raider" (unit :name "Goblin Raider" :image "Fantasy/Goblin_Raider.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "2" :unititemmap (unititemmap :Knife (unititem :name "Knife"))))) "Goblin Scout" (unit :name "Goblin Scout" :image "Fantasy/Goblin_Scout.png" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :level "3" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) "Goblin Saboteur" (unit :name "Goblin Saboteur") "Goblin Shaman" (unit :name "Goblin Shaman") "Goblin Soothsayer" (unit :name "Goblin Soothsayer") "Goblin Tinker" (unit :name "Goblin Tinker" :unitpowermap (unitpowermap :Artifice (unitpower :name "Artifice" :level "3")) :unitskillmap (unitskillmap :Mechanics (unitskill :name "Mechanics" :level "3"))) "Goblin War Drummer" (unit :name "Goblin War Drummer"))) :Hobgoblins (section :name "Hobgoblins" :summary "* Description - The military elite of the goblin race. They are a rare genetic throwback to the days when the Goblins were an advanced race. They appear less and less frequently as the Goblins regress to barbarism. * Personality - Brave, militaristic, and orderly, they are everything their goblin kin are not. Highly disciplined, they are considered to be natural leaders in goblin society, rising quickly in goblin ranks. Though goblin prejudices keep them from ultimate leadership, they frequently are the power behind goblin kings. * Preferred Skills - Military, Melee, Strategy * Morale - High * Units - Elite Light Infantry, Light Pikemen, Elite Light Archers, Elite Worg Cavalry (Note: Full units are very rare)" :titles "Hob" :unitmap (unitmap "Hobgoblin Archer" (unit :name "Hobgoblin Archer") "Hobgoblin Cavalry" (unit :name "Hobgoblin Cavalry") "Hobgoblin Lord" (unit :name "Hobgoblin Lord") "Hobgoblin Spearman" (unit :name "Hobgoblin Spearman") "Hobgoblin Strategist" (unit :name "Hobgoblin Strategist") "Hobgoblin Tracker" (unit :name "Hobgoblin Tracker" :summary "* Hobgoblins are reknowned less for their skill (their dogs do the actual tracking) than their tenacity and merciless efficiency. They are employed as scouts, border troops, and to hunt down criminals, dissidents, and escaped slaves.") "Hobgoblin Swordsman" (unit :name "Hobgoblin Swordsman" :image "Fantasy/Hobgoblin_Swordsman.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) :Kobolds (section :name "Kobolds" :summary "* Description - Kobolds are small relatives of goblins. They have bright blue skin and the color Cobalt is named after them. * Personality - Viscious opportunists readily attack anyone perceived as a weaker opponent. Their favorite skill is [Backstab]. * Preferred Skills - Mechanics (Traps), Stealth, Military * Morale - Normal * Units - Scout, Spy, Light Spearmen, Light Wolf Cavalry" :unitmap (unitmap "Kobold Slinger" (unit :name "Kobold Slinger" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))) "Kobold Spearman" (unit :name "Kobold Spearman" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))) "Kobold Trapper" (unit :name "Kobold Trapper" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "1"))))) :Trogladytes (section :name "Trogladytes" :reference "* In choosing the name 'Morlocks', Wells may have been inspired by Moloch, the Caananite god of child sacrifice, with the Eloi analogous to children. Alternatively, he may have also been inspired by the Morlachs, an ethnic group in the Balkans which attracted attention from Western travellers as a perceived archetype of barbarism and backwardness... The Time Traveller speculates that the relationship developed from a class distinction present in his own time: the Morlocks are the working class who were relegated to working and living underground so that the rich upper class could live in luxury on the surface. - H.G. Wells, The Time Machine * The Descent" :summary "* Description - Trogladytes have dull grey-to-white skin, chinless faces, large greyish-red eyes that reflect light, reflecting light, and flaxen hair on the head and back. They are highly adapted to living in the dark with keen sense of hearing and smell but poor eyesight, and they cannot tolerate bright light. They are exceedingly primitive, but they are cunning and have learning to cultivate mushrooms, grubs and fishing pools. They do not bathe and their dens are notorious for their stench. Trogladytes recognize each other by smell. * History - Trogladytes are an offshoot of mankind that lived in large cavern systems but were cut off from the surface. Since then they have adapted to underground life. Sparse living has made them merciless and cannibalistic." :titles "Crawlers, Morlocks") :Uruks (section :name "Uruks" :reference "* Cro-magnon Man, Goths, Huns, Mongols, Vandals * Seven Deadly Sins: Wrath" :summary "* Description - Uruks are a relatively primitive species of barrel-chested humanoids distantly related to Humans. They are sturdy and imposing figures, trained by hard labor and warfare since birth. They range in height from 5 feet to 7 feet tall and typically have yellowish/grey/green skin, red/black/brown eyes, and long black/grey/white hair. Their noses are flat and they have a notably large mouth with uneven teeth. * Personality - Uruks are typically violent, impatient, and crude. They take what they want by force and are difficult to bargain with. Their culture and leaders claim that they are destined to take over the world and take back all that has been taken from them. Now they are consumed with wrath and envy of the achievements of other races and other orc tribes. * Culture - Their civilization is still in a hunter/gatherer stage. They lack the patience and desire to read, cultivate crops, domesticate herd animals, or invent sophisticated equipment. They live a semi-nomadic existence depending on the availability of resources and the charisma of their leaders. Uruk 'kingdoms' are short lived. The race's genius for battle does not extend itself to statecraft, and their conquests inevitably collapse under a struggle for power between rival leaders. Uruk society is completely male dominated. Females are expected to find a male to support them and begin their life's purpose: breeding. Any female of breeding age that has no male protector is considered available to any male that chooses to take her and support her. Other cultures consider this to be rape. Uruks call it marriage. They extend this practice to captured females from other races. * Warfare - Uruks wage constant war on any group near them until they take what is 'rightfully' theirs. When warbands grow large enough, they spill down into neighboring settlements to rape, murder, raid, and pillage. These bands can take on the proportions of a large town or small city, and roll across the countryside leaving burning wreckage in their wake. * Language - Uruks speak the rough and unflattering Uruk tongue, which has no alphabet. Uruk culture and history is passed along in an oral tradition. * Morale - Normal * Preferred Skills - Melee, Rage * Units - Light Infantry, Light Spearmen, Light Archers, Light Cavalry, King * Factions - Skullsplitter, Bonegrinder" :titles "Orc" :unitmap (unitmap "Uruk Butcher" (unit :name "Uruk Butcher" :summary "* Orc Butchers deal in all things meat. They serve as cooks, surgeons, undertakers, and torturers. * They prefer cleavers, hand axes, and knives in combat.") "Uruk-hai Champion" (unit :name "Uruk-hai Champion" :titles "Brawler, Bodyguard") "Uruk Raider" (unit :name "Uruk Raider") "Uruk Shaman" (unit :name "Uruk Shaman" :summary "* Uruk Shamans teach that everything the Uruks once had was stolen by the other races, and urges them on to ever-greater acts of violence and revenge.") "Uruk Taskmaster" (unit :name "Uruk Taskmaster") "Uruk Veteran" (unit :name "Uruk Veteran") "Uruk War Chief" (unit :name "Uruk War Chief") "Uruk Warrior" (unit :name "Uruk Warrior" :image "Fantasy/Orc_Warrior.png" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))))))
nx/tactics/books/bestiary / chapter_giant_races
Description:
Function Name:
  • chapter_giant_races
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_giant_races : base/chapter (chapter :name "Giant Races" :sectionmap (sectionmap "Lesser Giants" (section :name "Lesser Giants" :unitmap (unitmap :Ogre (unit :name "Ogre" :summary "* Gluttony, Wrath * Preferred Skills - Close Combat, Hunting * Morale - Low * Units - Elite Heavy Infantry (Note: Full units are very rare) * Description - Ogres appear as huge, overweight, hairless humanoids. * Personality - Ogres are perpetually hungry. However, they are limited by their extremely low intelligence and short tempers." :mind "2:1" :will "3:1" :mass "300kg" :height "3m") :Oni (unit :name "Oni") :Troll (unit :name "Troll" :summary "* Preferred Skills - Close Combat, Hunting * Morale - Normal * Units - Elite Heavy Infantry (Note: Full units are very rare)"))) "Greater Giants" (section :name "Greater Giants" :summary "* Units - Elite Heavy Infantry (Note: Full units are very rare)" :unitmap (unitmap "Cloud Giant" (unit :name "Cloud Giant") :Cyclops (unit :name "Cyclops") "Fire Giant" (unit :name "Fire Giant" :titles "Eldjotunn") "Hill Giant" (unit :name "Hill Giant") "Ice Giant" (unit :name "Ice Giant" :titles "Frost Giant, Jotunn") "Mountain Giant" (unit :name "Mountain Giant") "Stone Giant" (unit :name "Stone Giant") "Storm Giant" (unit :name "Storm Giant"))) "Unique Giants" (section :name "Unique Giants" :unitmap (unitmap :Surtr (unit :name "Surtr" :reference "* Surtr is foretold as being a major figure during the events of Ragnarok; carrying his bright sword, he will go to battle against the Aesir, he will do battle with the major god Freyr, and afterward the flames that he brings forth will engulf the earth." :titles "The Black One") :Ymir (unit :name "Ymir" :reference "* Ymir was the founder of the race of frost giants and an important figure in Norse cosmology. Odin and his brothers killed Ymir, and when Ymir fell the blood from his wounds drowned almost the entire tribe of frost giants or jotuns. Then they used Ymir's body to create Midgard, the earth. His flesh became the earth. His blood formed seas and lakes. From his bones mountains were erected. From his hair grew trees and maggots from his flesh became the race of dwarfs. The gods set Ymir's skull above Ginnungagap and made the sky." :summary "* Jotunheim"))) :Titans (section :name "Titans" :unitmap (unitmap :Atlas (unit :name "Atlas") :Chronos (unit :name "Chronos" :titles "Yog-Sothoth") :Echidna (unit :name "Echidna" :summary "* Mother of Monsters * Children - Cerberus, Chimera, Ethon, Gorgon, Graeae, Gelonus, Ladon, Lernaean Hydra, Nemean Lion, Orthrus, Phaea, Scylla, Sphinx" :titles "Shub-Niggurath") :Gaia (unit :name "Gaia" :titles "Mother Earth, Wyld, Azathoth") :Helios (unit :name "Helios" :titles "The Sun") :Mene (unit :name "Mene" :titles "Selene, The Moon") :Oceanus (unit :name "Oceanus") :Prometheus (unit :name "Prometheus" :titles "The Serpent, Nyarlathotep, Phoenix") :Tartarus (unit :name "Tartarus" :titles "Oblivion") :Typhon (unit :name "Typhon" :summary "* The enemy of Zeus * A vast grisly monster with a hundred snakelike heads that extends in serpentine coils from the waist down."))))))
nx/tactics/books/bestiary / chapter_mythical_beasts
Description:
Function Name:
  • chapter_mythical_beasts
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_mythical_beasts : base/chapter (chapter :name "Mythical Beasts" :sectionmap (sectionmap :Beasts (section :name "Beasts" :unitmap (unitmap :Aeroplasm (unit :name "Aeroplasm" :summary "* The Aeroplasm is an unusual 15 foot tall invertibrate that lives entirely in the sky. It floats by means of air bladders filled with hydrogen gas which makes them spectacularly flammable if their bladders are ruptured by fire. They have long tendrils that contain a potent neurotoxin which they use to paralyze the birds and insects that they prey upon. During the Aeroplasm mating season, the males produce a luminous secretion that makes them glow in various colors to attract females. It is said that the sight of hundreds of Aeroplasms glowing in different shades in the night sky is a spectacular sight." :titles "Floating Jellyfish") :Basilisk (unit :name "Basilisk") :Behemoth (unit :name "Behemoth") "Boo Hag" (unit :name "Boo Hag") :Catoblepas (unit :name "Catoblepas" :reference "* The catoblepas (from the Greek 'to look downwards') is a legendary creature from Ethiopia. It is thought to be based on real-life encounters with wildebeest." :summary "* It is said to resemble a cape buffalo, with its head always pointing downwards due to its great weight. Its stare or breath could either turn people into stone, or kill them." :unitpowermap (unitpowermap "Transform Other" (unitpower :name "Transform Other" :unitabilitymap (unitabilitymap :Petrification (unitability :name "Petrification"))))) :Chimera (unit :name "Chimera" :image "Fantasy/Chimera.png") :Chonchon (unit :name "Chonchon") :Cockatrice (unit :name "Cockatrice") :Doppelganger (unit :name "Doppelganger") "Floating Eye" (unit :name "Floating Eye" :titles "Beholder, Evil Eye, Eye Killer, Eye of the Beholder") :Gargoyle (unit :name "Gargoyle") :Griffin (unit :name "Griffin" :image "Fantasy/Griffin.png") "Goblin Spider" (unit :name "Goblin Spider" :summary "* Traditional Japanese folk-lore understood that goblin-spiders had the power to transform from ordinary spiders to assume the form of men when night fell.") :Gorgon (unit :name "Gorgon" :image "Fantasy/Medusa.png" :titles "Medusa" :unitpowermap (unitpowermap "Transform Other" (unitpower :name "Transform Other" :unitabilitymap (unitabilitymap :Petrification (unitability :name "Petrification")))) :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))) :Hippogriff (unit :name "Hippogriff") :Hydra (unit :name "Hydra") :Jabberwocky (unit :name "Jabberwocky") :Kirin (unit :name "Kirin" :titles "Dragon Horse") :Kraken (unit :name "Kraken") :Lamassu (unit :name "Lamassu" :summary "* Protective winged bull or lion; with the head of a human female. Shedu is the male equivalent." :titles "Shedu") :Manticore (unit :name "Manticore" :reference "* Persian Mythology" :summary "* A savage predator with the body of a lion, the tail of a scorpion, and the wings of a bat. * It has rows of razor sharp teeth and will bite off limbs and eat victims whole, bones and all. * Its tail stinger is, of course, poisonous. The poison is not especially deadly, but the shear amount of toxin injected from the large stinger makes survival unlikely. * It also has non-poisonous quills on its tail that can be flung at a target with a tail whip.") :Minotaur (unit :name "Minotaur") :Pegasus (unit :name "Pegasus") :Phoenix (unit :name "Phoenix") "Primal Ooze" (unit :name "Primal Ooze" :titles "Blob, Slime Beast") :Rukh (unit :name "Rukh" :reference "* Rukh Egg - Magic the Gathering * Sindbad observed that when a karkadann spears an elephant on its horn, the elephant’s fat runs into the rhino’s eyes and blinds it; a rukh will then swoop down and carry both combatants off to feed its chicks." :summary "* Appearance - Rukhs are monstrously large birds vaguely similar in a appearance to a vulture. * Feeding - Rukhs are uncontested predators capable of feeding on the largest and most dangerous land animals. They have a particular fondness for giant serpents, elephants, and karkadanns or rhinoceroses. * Intelligence - Rukhs also appear to have some degree of intelligence, using boulders to smash prey." :titles "Roc") "Roc Hatchling" (unit :name "Roc Hatchling") "Sea Horse" (unit :name "Sea Horse") :Sphinx (unit :name "Sphinx" :summary "* Highly intelligent") "Tentacle Terror" (unit :name "Tentacle Terror" :reference "* Cthulu Mythos * Hentai" :summary "* A formless mass that can create writhing tentacles, eyes, and mouths from its body." :titles "Roper, Tentacle Beast") :Terraphant (unit :name "Terraphant" :summary "* A hulking beast the size of an elephant with a head like an octopus.") :Thunderbird (unit :name "Thunderbird" :summary "* The Thunderbird is a large bird with a special affinity for electricity. When a storm is present, the Thunderbirds true power is awakened. * The wings of Thunderbirds generate increasing static electricity with each flap. * Thunder Shield - Touching the Thunderbird triggers an electric shock and a sonic area attack. * Thunderstrike - With a shriek, the Thunderbird calls a lightning strike unto itself which is instantly redirected in the direction it is facing as if the lightning came from its mouth. * Thunderclap - When the Thunderbird claps its wings together a lightning bolt strikes it and produces a deafening sonic area attack around it. * Thunder Storm - By spreading its wings, the Thunderbird calls a lightning strike onto itself which is then split into multiple strikes that rain lightning down below it." :titles "Stormcrow, Stormraptor") :Unicorn (unit :name "Unicorn") :Yeti (unit :name "Yeti") "Wandering Eye" (unit :name "Wandering Eye" :summary "* Thw Wandering Eye is a bizarre, eel-like creature with a single, large, humanoid eye where a mouth and face would normally be. Eyes live in large groups underground and slowly float through the air like schools of fish. Their skin is a dark matte brown while their eye is highly reflective white, so usually the first view of Wandering Eyes is of a dozen disembodied eyes moving and blinking independently of one another in the dark. * Motivation - The Eyes are not intelligent nor malicious. They simply seek food, and will flee if startled or they are losing. * Levitation - Eyes produce a lighter than air gas that is stored in sacs down its body. These allow The creature to float and it can slowly propel itself through the air by making swimming motions. * Confusion - The creature's single, large eye doesn't seem to focus on anything and keeps moving about randomly. When a group of Wandering Eyes are seen, their weird, random eyes cause vertigo, confusion, fear, and sometimes madness. The Wandering Eye somehow feeds on this confusion and will attempt to trap victims and keep them in an intense state of confusion until they expire. * Weakness - Eyes are adjusted to life in the dark and are blinded by bright lights and large fires." :titles "Eye Killer") :Ziz (unit :name "Ziz"))) "Unique Beasts" (section :name "Unique Beasts" :unitmap (unitmap :Cerberus (unit :name "Cerberus") :Charybdis (unit :name "Charybdis" :summary "* Scylla and Charybdis are two sea monsters situated on opposite sides of a narrow channel of water, so close that sailors avoiding Charybdis will pass too close to Scylla and vice versa. * She takes form as a monstrous mouth. She swallows huge amounts of water three times a day and then belches them back out again creating whirlpools.") :Scylla (unit :name "Scylla" :reference "* You consider me the young apprentice...Caught between the Scylla and Charybdis...Hypnotized by you if I should linger...Staring at the ring around your finger - The Police, Wrapped around your Finger" :summary "* Scylla and Charybdis are two sea monsters situated on opposite sides of a narrow channel of water, so close that sailors avoiding Charybdis will pass too close to Scylla and vice versa. * Scylla is a horribly grotesque sea monster, with six long necks equipped with grisly heads, each of which contained three rows of sharp teeth. Her body consisted of twelve canine legs and a fish's tail."))))))
nx/tactics/books/bestiary / chapter_shapeshifters
Description:
Function Name:
  • chapter_shapeshifters
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_shapeshifters : base/chapter (chapter :name "Shapeshifters" :sectionmap (sectionmap :Lycanthropes (section :name "Lycanthropes" :reference "* Beauty and the Beast * The Howling * Underworld * Wolfen" :summary "* Description - A hereditary trait carried by humans and animals. * Personality - Their savagery is their greatest strength, but it threatens to consume them and leave only rage. * Some lycanthropes are more animal-like and hostile to humans. * [Vulnerability] to [Silver] * Loses control under the moon * Preferred Skills: [Lycanthropy], [Natural Weaponry] !Groups * Black Spirals - [[Corrupted]] Werewolves History * The Impergium - 8,000 years ago, humankind was becoming more organized and began systematically killing wolves or destroying their habitats. The Werewolves born from wolves decided that the humans were out of control and leading the world to chaos. They declared the open hunt (or culling) of humans called the Impergium. The Werewolves born from humans saw their own kin murdered by other Werewolves. Whatever the merits of the Impergium, it triggered a civil war between the Werewolf clans with mounting killings and atrocities. The other shapeshifters tried to stay out of the conflict but were quickly forced to take sides. The conflict only ended after the number of Shapeshifters across the world was decimated, especially those born to wolves. Since then the low birth rate of Shapeshifters has taken many races to the brink of extinction. The Impergium remains as a grim reminder of the dangers of letting ones [Rage] overcome reason. The Werewolves are embarassed by their clans' actions. The other Shapeshifters have never forgiven the Werewolves for their folly. Also, many of the Werewolves born of wolves hold deep hatred for the other Werewolves both for their betrayal and for the current state of the wolves in the world." :unitmap (unitmap :Werebat (unit :name "Werebat") :Werebear (unit :name "Werebear") :Werecat (unit :name "Werecat" :image "ModernFantasy/Lycanthrope_Weretiger.png" :reference "Every time it happens... you tell yourself it's love. But it isn't. It's blood. And death. - Cat People" :titles "Rakshasa, Werepanther, Weretiger") :Werecrow (unit :name "Werecrow" :image "ModernFantasy/Lycanthrope_Tengu.png" :summary "* Able to fly, the Werecrows make terrific scouts and spies. Their overwhelming curiousity is matched only by their tendency to gossip." :titles "Tengu, Wereraven" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Feather Blades" (unitability :name "Feather Blades") "Feather Knives" (unitability :name "Feather Knives")))) :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting" :unitabilitymap (unitabilitymap :Scouting (unitability :name "Scouting"))))) :Wererat (unit :name "Wererat" :image "ModernFantasy/Lycanthrope_Wererat.png" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Werespider (unit :name "Werespider" :titles "Anasi, Arachne, Kumo" :unitpowermap (unitpowermap :Illusion (unitpower :name "Illusion" :unitabilitymap (unitabilitymap "Dazzling Beauty" (unitability :name "Dazzling Beauty") "Mirror Image" (unitability :name "Mirror Image"))) :Venomous (unitpower :name "Venomous" :unitabilitymap (unitabilitymap "Poison Bite" (unitability :name "Poison Bite") "Poison Spit" (unitability :name "Poison Spit"))))) :Werewolf (unit :name "Werewolf" :image "ModernFantasy/Lycanthrope_Werewolf.png" :reference "* The crescent moon is a double-edged sword. Be wary, lest it cut you." :titles "French/Old English: Loup-garou, Japanese: Ookami otoko"))))))
nx/tactics/books/bestiary / chapter_undead_creatures
Description:
Function Name:
  • chapter_undead_creatures
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_undead_creatures : base/chapter (chapter :name "Undead Creatures" :reference "* Seven Deadly Sins: Envy" :summary "* Description - The dead are normally at rest, but under certain circumstances their spirits return from the [Spirit Realm] and they rise again. Created through different means, the Undead share a common trait. Their life is artificial, a soulless parody of true life. Above all they envy the life that they lack, and they may only maintain their unlife by taking life from others. * Personality - Despite their reputation, the Undead are not innately evil. They retain at least some of their original personalities, but their new existence often forces them to reevaluate their morals. Most of the more 'ethical' Undead end their own miserable existences. * Spirit - Undead cannot recover Spirit except by stealing it from the living. Slaying the living is always worth 1 extra [Spirit] to any undead. Note: Undead are more connected to the spirit world than the living world and therefore are permanently banished from the living world if their Spirit ever drops to zero. Without a [Spirit], they many never use any [Naturalism] or [Spiritualism] magics. Types * Traumatic death - Focused completely on the trauma of their death, they are drawn to the living and end up reenacting their death with others. - Burning Dead, Drowned, Frozen Dead, Scarecrow, Wendigo. * Incomplete business - These are compelled to attempt to complete their goals. Sometimes the completion of the goal is enough to let them rest. Sometimes they continue endlessly trying to complete an impossible goal. - Shades, Poltergeists * Necromancy - Lich, Mummies, Night Terror, Skeletons, Zombies * Raised by another Undead - Ghoul, Skeleton Crew, Vampire." :titles "Restless, Restless Dead, Risen, Undeath, Unquiet" :sectionmap (sectionmap "Corporeal Undead" (section :name "Corporeal Undead" :summary "* Vulnerable: [Fire], [Impact]" :unitmap (unitmap :Barghest (unit :name "Barghest" :titles "Black Shuck, Ghost Hound") "Burning Dead" (unit :name "Burning Dead" :summary "* The burning dead are those who died by fire. They appear as they did in death (as burning skeletons, burning corpses, or burning ash). * They are consumed by intense pain and confusion and cannot be reasoned with. * They seek help from the living and attempt to embrace them in an attempt to exinquish themselves. This only serves to immolate their victim who will often rise as Burning Dead themselves. Only estinquishing their flames or destroying their remains will put them to rest. * They always attack with a Grab and will do Fire damage each round they hold their victim. * All Melee [Criticals] are [Burning] damage." :unitpowermap (unitpowermap :Fire (unitpower :name "Fire")) :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "6" :unitspecialtymap (unitspecialtymap :Grappling (unitspecialty :name "Grappling"))))) "Dead of Night" (unit :name "Dead of Night" :summary "* The Night Dead are reanimated corpses of thoses who have died in terror in darkness. They are desperate for light but their darkness powers consume light making normal light sources produce a fraction of their normal illumination. Magical light will expose them and stun them. Bathing in light is the only way to free their spirits and end their torment.") "Dead of Winter" (unit :name "Dead of Winter" :reference "* I know what it means to freeze to death, To lose a little life with every breath, To say goodbye to life on earth, And come around again, Lord have mercy on the frozen man - James Taylor, Frozen Man" :summary "* The Frozen Dead are reanimated corpses of thoses who have died by cold or exposure. They are desperate for warmth and seek the living to share an icy embrace. They radiate cold which will douse small fires around them. They are drawn to large heat sources and will happily throw themselves into raging fires. Death by fire is the only way to free their spirits and end their torment." :titles "The Frigid, Frozen Dead, Frozen Man, Ice Man, Snowman" :unitpowermap (unitpowermap :Cold (unitpower :name "Cold"))) :Dhampyr (unit :name "Dhampyr" :reference "* A dhampir in Balkan folklore is the child of a vampire father and a human mother, with vampire powers but none of the weaknesses. A dhampir is believed to have the unique ability to see vampires, even when these are invisible, and is unusually adept at killing them. ** A dhampir is always paid well for his services. The amount of money varies, but there is never bickering over the price. Standard pay for a dhampir may also include a meal or a suit of clothing. Sometimes a dhampir is paid in cattle, jewelry or women. ** Charlatans traveling the regions around the Carpathian Mountains, Balkans and elsewhere in Eastern Europe would claim to be dhampirs. They were believed to be the only ones who could see the spirit and would put on elaborate shows for villages. Once fear, grief and superstition took hold in a village following a recent death, the dhampir would 'come to the rescue'. * Blood: The Last Vampire * Vampire Hunter D * Blade * BloodRayne" :summary "* Dhampyrs, can function both day and night, although they find sunlight uncomfortable. * Dhampyrs are mortal but can live for centuries. Once mature, they age at roughly 1/10 the rate of humans. * They can breed with humans, but not with Kuei-jin or other dhampyrs. * They are not dead, so they must breath, eat, drink, and sleep. They may bleed, and they may die. * By using [Spirit], they can perform feats not possible for humans. They can regain [Spirit] through rest or by eating flesh (usually they cannot by drinking blood). * The [Beast] is weaker in a Dhampyr than in their Vampire kin, but this makes their powers weaker as well.") :Drowned (unit :name "Drowned" :reference "* The Ring" :summary "* The Drowned are the spirits of those who have died by drowning. They are completely fixated on their drowning death and are compelled to reenact the experience with others." :titles "Drowner, Kappa") "Ghost Ship" (unit :name "Ghost Ship" :reference "* Pirates of the Caribbean * The Fog * Pyaray - Elric of Melnibone" :summary "* Ghost Ships are doomed ships crewed by the [Drowned]. When they encounter the living, they are compelled to kill them so they raise again to add to their crew." :titles "Chaos Fleet, Skeleton Crew") :Ghoul (unit :name "Ghoul" :summary "* Description - A ghoul is a reanimated corpse that perpetuates its undead existence by feeding on the living and the dead. They reek of charnel pits and they have shrivelled nightmarish features. Though frail and unhealthy looking, they possess fearsome strength. The teeth and claws also carry [Corpse Rot], an infection that slowly kills the victim if the Ghoul doesn't first. Victims of Ghouls often raise as Ghouls themselves if they are not cured or their corpse is not blessed or destroyed. * Japanese Gaki appear as gaunt-faced monsters with enormous, frog-like mouths and grossly distended bellies. * Morale - High * Units - Mob" :titles "Gaki, Hungry Dead, Necrophage" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "3") "Special Ability" (unitpower :name "Special Ability" :level "2" :unitabilitymap (unitabilitymap :Cannibal (unitability :name "Cannibal") :Savage (unitability :name "Savage"))))) :Lich (unit :name "Lich" :image "Fantasy/Lich.png" :summary "* A lich is a powerful animated corpse created by [Necromancy] through the use of [Lich Form]. The necromaner curses itself to a horrific undead existence in exchange for eternal 'life'. The lich retains most of the abilities of its former life and gains some additional undead powers as well. * Because of their solitary nature, a lich cannot gain social skills nor increase their existing skills. Further these skills have a tendency to degrade the longer the lich exists." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry") :Necromancy (unitpower :name "Necromancy"))) :Mummy (unit :name "Mummy" :reference "The Mummy" :summary "* Created by Ancient Arcane ritual, Mummies are extremely powerful and exceptionally difficult to destroy. * Mummies regain Spirit by sucking the life from their victims through thier mouths, leaving only a descicated husk." :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap :Reanimation (unitability :name "Reanimation"))))) "Night Terror" (unit :name "Night Terror" :reference "* A night terror is a sleep disorder characterized by extreme terror and a temporary inability to regain full consciousness. The subject wakes abruptly usually accompanied by gasping, moaning, or screaming. It is often impossible to fully awaken the person, and after the episode the subject normally settles back to sleep without waking. * Night terrors are distinct from nightmares in several key ways. First, the subject is not fully awake when roused, and even when efforts are made to awaken the sleeper, he/she may continue to experience the night terror for ten to twenty minutes. Unlike nightmares, which occur during REM sleep, night terrors occur during slow-wave sleep, the deepest levels of non-REM sleep. Even if awakened, the subject often cannot remember the episode except for a sense of panic, while nightmares usually can be easily recalled. The subject often has no recollection of the incident. * Unlike nightmares, which are frequently dreams of a frightening nature, night terrors are not dreams. Usually there is no situation or event (scary or otherwise) that is dreamt, but rather the emotion of fear itself is felt. The lack of a dream itself leaves those awakened from a night terror in a state of disorientation much more severe than that caused by a normal nightmare. This can include a short period of amnesia during which the subjects may be unable to recall their names, locations, ages, or any other identifying features of themselves. * Children from age two to six are most prone to night terrors, and they affect about fifteen percent of all children." :summary "* Evil women who died in childbirth and now returned to slay children. * By day it may take the form of a shriveled old woman. At night it becomes a horrific corpse-like creature. In this form it sneaks into houses and sucks the breath from the lips of children, leaving them cold and lifeless. * It can only enter a house into which it has been invited, so during the day it poses as a woeful traveler to gain admittance to houses where babies live. * Night Terrors, being exclusively female, can only reproduce by mating with a male member of another species. The hag often slays her mate. The child born looks like a normal member of her species with black or blue hair and is often given into foster care by the hag disguised as a normal woman. When the young girl reaches puberty, the mother Night Hag might visit the child several times and, after several rituals, transforms her offspring into another hag." :titles "Night Hag") "Pestilence Horse" (unit :name "Pestilence Horse" :summary "* A Pestience Horse is a zombie horse that carries deadly diseases. It's decaying body is not as fast as its original body, but may still trot fairly quickly. It is not as agressive as other undead, instead travelling around spreading disease and fleeing when confronted.") :Scarecrow (unit :name "Scarecrow" :reference "* Headless Horseman * Great Pumpkin * Jack O' Lantern * Pumpkin King" :summary "* A scarecrow is a humanoid mass of twigs, straw, and old clothes that has been animated by an undead spirit. Some are actual scarecrows that have been possessed; others form out of pumpkin patches on moonless nights. Scarecrows hate all living things, but wish to do more than kill. They desire to frighten living beings as much as possible. A scarecrow can be created when someone calls for vengeance before their death. Sometimes they are killed by brigands, other times they starves to death because of blight or drought. The scarecrow then haunts the place of death, not ranging more than a mile from it. Sometimes entire families become scarecrows, and the victims of scarecrows occasionally join the haunting as well. Simply killing the body is not enough to end its haunting, as it reappears from another pumpkin on the next moonless night. To finally destroy a scarecrow, every scrap of every body must be burned, as well as any pumpkins or pumpkin vines. The land must then be tilled and planted with a new crop. Only then are the spirits forced to give up their vengeance and give up the mortal coil. * Scarecrows prefer to play with their prey, sneaking up on them and attempting to terrify them. Scarecrows fight without regard to their own safety, as they know they are likely to return on another night if destroyed.") "Skeletal Dragon" (unit :name "Skeletal Dragon") "Skeletal Knight" (unit :name "Skeletal Knight" :summary "* Morale - High" :titles "Death Knight" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Riding (unitskill :name "Riding"))) :Skeleton (unit :name "Skeleton" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :level "1" :unititemmap (unititemmap "Round Shield" (unititem :name "Round Shield"))))) "Skeleton Warrior" (unit :name "Skeleton Warrior" :unitpowermap (unitpowermap "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage") :Skeletal (unitability :name "Skeletal")))) :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :level "3" :unititemmap (unititemmap "Breast Plate" (unititem :name "Breast Plate") "Round Shield" (unititem :name "Round Shield"))))) "Slayer Dead" (unit :name "Slayer Dead" :reference "* Jason Voorhees * Nightmare on Elm Street * Vinland Saga" :summary "* Slayer Dead are the spirits of those who have lived and died a life of killing. They are completely fixated on killing others in the same way they killed in life. Most were warriors who revelled in slaughter. Some were serial killers. Large numbers of them can appear when battles are fought near Ley Lines." :titles "Murderous Dead, War Dead") :Wendigo (unit :name "Wendigo" :summary "* Wendigoes are the result of cannibalism in the forests of the north. It is a curse that causes the death of the person, and later they return as a huge cunning beast with the desire to consume human flesh. Wendigoes are thin and seven to ten feet tall, their hearts are made of ice and their claws are icicles. They are [Resistant] to [Cold] and often appear in the middle of a snowstorm to steal their victims." :titles "Abominable Snowman, Yeti") :Wight (unit :name "Wight" :summary "* A Wight is an animated corpse like a zombie, but its eyes burn fiercely, showing their deep hatred of the living. They continue to pursue their goals in life, but these goals are always twisted into hatred and revenge against the living. * Wights are usually highly intelligent or cunning and have the patience to carefully plan their murders. Wights enjoy killing as well as inflicting pain and fear on their victims who they believe deserve what they get. * A Wight is created when an extremely driven, evil person is on the verge of death. Before death, it makes a bargain with a demonic force, and returns to unlife as a Wight. * Wights retain most of their abilities while living. Powerful Wights can be as powerful as Liches. In fact, the necromantic study of Wights led to the necromantic rituals responsible for Mummies and Liches.") :Zombie (unit :name "Zombie" :summary "* Zombies are nearly mindless animated corpses. * They act irrationally and attack all living creatures with no sense of self preservation. * They have +2 Body, but because the do not protect themselves they suffer 2x criticals." :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :level "2") "Special Ability" (unitpower :name "Special Ability" :unitabilitymap (unitabilitymap :Mindless (unitability :name "Mindless") :Savage (unitability :name "Savage"))))))) "Noncorporeal Undead" (section :name "Noncorporeal Undead" :unitmap (unitmap :Haunt (unit :name "Haunt" :reference "* The Sixth Sense * Beetlejuice" :summary "* Haunts are lesser undead that remain near the places and people from their living life instead of moving on. Haunts attempt to interact with the living to maintain a semblance of their former lives. Haunts are generally not malicious, but their interactions inadvertently drain the [Will] of others over time. There are also cases of Haunts who impersonate loved ones to purposely drain their [Will].") :Lemure (unit :name "Lemure" :summary "* The wandering and vengeful spirits of those not afforded proper burial or funeral rites." :titles "Larvae, Lemur") "Lost Soul" (unit :name "Lost Soul") :Phantom (unit :name "Phantom" :summary "* Phantoms are the remnants of those who were lost in the Astral/Dream Realm. The Astral Realm is the realm of imagination, so those trapped here are gradually driven mad. Therefore, Phantoms have varying and unpredictable insanities.") :Poltergeist (unit :name "Poltergeist") :Reaper (unit :name "Reaper" :reference "Charon the Ferryman" :summary "* Reapers are dark, hooded entities that are terrifying to behold. Their arms are skeletal though though the rest of their bodies appear to be made of solid blackess. They carry large scythes which they can use to deadly effect. Their purpose appears to be to escort the sould of the recently dead to the afterlife, and their presense almost always means someone has died or will die soon.") :Shade (unit :name "Shade" :reference "The Ring" :summary "* Description - lank and ghastly beings with no feet, floating suspended above the ground. * Shades are the spirits of those who died in suicide, accident, murder, or wrongful execution. They are bound to this plane by the anger they felt at their deaths. * Suicide and accident victims attempt to compel those most like their former selves to die in the same manner. * Murder and wrongful death victims attempt to revenge themselves upon the killer or his descendents." :titles "Aghast, Ghast, Ghastly, Shoryo") :Shadow (unit :name "Shadow") :Sluagh (unit :name "Sluagh" :reference "* The spirits of the sinners, or generally evil people who were welcome in neither heaven nor hell. * They were seen to fly in groups like flocks of birds, coming from the west, and were known to try to enter the house of a dying person in an effort to carry the soul away with them. West-facing windows were sometimes kept closed to keep them out. Some consider the Sluagh to also carry with them the souls of innocent people who were kidnapped by these destructive spirits." :summary "* The Sluagh are thin, pale, snake-like, and grotesque, though they remain strangely compelling. They favor archaic, intricate, black clothing. Their joints can dislocate allowing them to slither our of bonds and into disquieting shapes. * They may only speak in whispers and dislike any social situations except among their own kind. They prefer to overserve other from hidden corners, and the secrets they obtain are their stock and trade.") :Spectre (unit :name "Spectre" :reference "* Cenobites from Hellraiser" :summary "* A Spectre is a malevolent Wraith that has been so traumatized that it is has become completely obscessed with its suffering and reenacting that suffering with others. The Spectre has fallen completely under the controlled of it's [Shadow].") "Spectral Horse" (unit :name "Spectral Horse") :Will-O-Wisp (unit :name "Will-O-Wisp") :Wraith (unit :name "Wraith" :summary "* Wraiths normally exist in the [Underworld] where their numbers are legion. * Those with strong connections to the world of the living can walk among the living but are [Invisible] and [Ethereal] and can indistinctly see the living world through the [Shroud]. Skilled Wraiths may even temporarily breech the [Shroud]. !Abilities * Keening * Manifestation * Poltergeist * Possession" :titles "Ghost"))) :Vampires (section :name "Vampires" :reference "* Dracula * I died... so many years ago. You can make me feel like it isn't so. ... I know, I should go, but I follow you like a man possessed. There's a traitor here beneath my breast, and it hurts me more than you've ever guessed. If my heart could beat, it would break my chest. But I can see, that you're unimpressed, so leave me be and let me rest in peace. Let me get some sleep. Let me take my love and bury it six feet deep. - Spike, Buff the Vampire Slayer * Cause I’ve made some real big mistakes. But you make the worst one look fine. I should’ve known it was strange. You only come out at night. I used to think I was smart. But you made me look so naïve. The way you sold me for parts. As you sunk your teeth into me, oh. Bloodsucker, dreamcrusher. Bleeding me dry like a damn vampire - Olivia Rodrigo, Vampire * Victor: I need you to understand something very, very clearly. The place we're going, if you repeat in front of them that she knows about a 'thing', she's dead. Everyone she knows is dead. Anyone she might have texted is dead. So you're going to have to learn from this exact second, how to keep a secret. There's a little show we have to put on. You might call it a sort of masquerade that we all have to live into, that none of this is real. Never in your life did you think this is real, and is has been the entire time. So learn to lie to your girlfriend if you want to live. Nelli G: Or if you want to live. Jasper: That too. - L.A By Night * Annabelle: You seem reasonable. Why do you follow their orders?... Jasper: I follow his orders because if I don't, I get left in that sun that hurts so much... I work with them because if I don't, I get introduced to the dawn. I do a lot of things, so I get to keep living... It's a game we all play, so we get to keep doing this. Talking, living, walking. - L.A By Night" :summary "* Description - Among most powerful and feared of all undead, Vampires are among the oldest known undead creatures with legends that go back to the first intelligent humans. They possess the abilities that they had in life as well as gaining unique vampiric powers. * Feeding - Vampires regain Spirit only by drinking the blood of the living. Some Eastern Vampires eat the flesh of the living instead. As the Spirit of a Vampire decreases, the Vampire becomes more savage and beastial. * Morale - Normal, Low vs. Fire and Sunlight. Ironically, the one thing that truly terrifies these eternal, murderous beings is the end of their own cursed lives. * Vulnerability to Fire - The cleansing touch of Fire will rapidly consume a Vampire. * Vulnerability to Sunlight - The cleansing touch of Sunlight will ignite a Vampire on Fire. During daylight hours, Vampires fall into a deathlike sleep. Contrary to some sources, arificial sunlight has no effect on them. * Vulnerability to Silver - The cleansing touch of Silver will ignite a Vampire on Fire. Even their reflection is destroyed by Silver. Contrary to some sources, non-silver mirrors still reflect the image of a Vampire. * Immunity to Bleeding - Vampire blood can move on its own and will not leave the body without force. * Biology - Vampires are created when one Vampire drains a person to the brink of death and then feeds their own blood to the victim. This is called: The Embrace. At this moment, the victim has a chance to reject the Embrace, and die peacefully. If the victim accepts the Embrace, the blood will rapidly reach the victim's heart and the transformation to Vampire will immediately begin. * Nature - There is much conjecture about how a Vampire functions, but it is certain that the blood of a Vampire is the source of its unnatural existence. Some believe that the blood itself is a form of evil, magical, parasite centered on the heart that animates the Vampire's body. * Masquerade - During the day, Vampires are completely vulnerable. Therefore, they avoid drawing attention to themselves. They pretend to be normal people while manipulating from behind the scenes. Vampires appear as near perfect humans, but this too is a mask. Vampires pretend at being sophisticated and refined, but always behind this is their true, savage, bestial nature. * Sire - The vampire's creator. * Childer - The relationship of a vampire to a Sire. * Book of Nod - The vampiric history/bible. * Antitribu - Those who choose to oppose their clan, joining the Camarilla or Sabbat respectively." :titles "Cainite, Kindred, Leech, Lick" :sectionmap (sectionmap "Vampires, Elder" (section :name "Vampires, Elder" :unitmap (unitmap :Kali (unit :name "Kali" :summary "* Tzimisce Methuselah") :Set (unit :name "Set" :summary "* Setite Methuselah"))) "Vampires, Anarchs" (section :name "Vampires, Anarchs" :summary "* The strict caste system of the Camarilla does not favor new Vampires. Many newly embraced reject the machinations of the elders and live as they can on the fringe. Anarchs rely on each other to protect themselves from the actions of the Camarilla and the Sabbat. The larger organizations treat Anarchs like homeless people, largely ignoring them unless they get in their way. The Anarchs understand that the other groups are bound by rules, and they will use this to their advantage. In any situation, the Anarchs are wild cards, potentially able to shift a result one way or the other. The Anarchs have one crucial advantage over the Camarilla and Sabbat: they have nothing to lose.") "Vampires, Camarilla" (section :name "Vampires, Camarilla" :titles "Neophyte, Elder, Prince, Sheriff" :unitmap (unitmap :Brujah (unit :name "Brujah" :titles "Bully, Bruiser" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Strength (unitpower :name "Strength"))) :Gangrel (unit :name "Gangrel" :titles "Animal, Protector" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Animalism (unitpower :name "Animalism"))) :Malkavian (unit :name "Malkavian" :summary "* Cursed by Madness * Malkalv - The philosophic, antedeluvian sire of their clan. When he was destroyed with the First City. his childer began to gain the signature Madness. Some say his spirit continues through his blood and connects his childer. Others propose the preposterous notion that Malkav was a an embraced Angel. * Kinship - Unlike other tribes, the Malkavians have a natural understanding and kinship toward each other. It is rare that they outright betray one another." :titles "Jester, Maniac, Nutcase, Prankster, Psychotic" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Dominiation (unitpower :name "Dominiation") :Senses (unitpower :name "Senses") :Madness (unitpower :name "Madness")) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Nosferatu (unit :name "Nosferatu" :titles "Sewer Rat" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Invisibility (unitpower :name "Invisibility")) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Toreador (unit :name "Toreador" :reference "* We come into this stale and plain stale world. So we spend our time, searching for that one sublime revelation. To fill the void. To lose ourselves in beauty and perfection. Beauty can be elegant, seductive, full of pleasure, Raw, Violent, Lethal. Let me help us find it. To lose ourselves. Come closer. I am a beautiful way to die. - Vampire: Bloodlines 2 * She'll only come out at nights. The lean and hungry type... I wouldn't if I were you. I know what she can do. She's deadly man, she could really rip your world apart. Mind over matter. Ooh, the beauty is there but a beast is in the heart. Oh, here she comes. Watch out boy she'll chew you up. Oh, here she comes. She's a maneater. - Hall and Oates/No Hard Feelings, Maneater" :summary "* Beauty is both a blessing and a curse * Toreadors were key to founding the Camarilla and are among the most powerful and influencial clans. * The Roses in the Garden - The Toreador who are obscessed with politics, conspiring on casual walks. * Founder - It is said that the Clan's founder, Arikel was a mortal painter and/or sculptress and twin sister of Malkav in the First City. Famed throughout the lands for her work, after her Embrace she painted a mural on which the past, present and future of Kindred society was depicted. When Caine saw a terrible future for his race, he cursed her with the affliction that affects Toreador today – the art that she loved most dearly would now be her obsession and distraction above all things. * Weakness - Fascination" :titles "Artists, Clan of Roses, Degenerate, Gossips, Obsessives" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Quickness (unitpower :name "Quickness") :Senses (unitpower :name "Senses") :Presence (unitpower :name "Presence"))) :Tremere (unit :name "Tremere" :image "ModernFantasy/Vampire_Tremere.png" :summary "* The Tremere is the second youngest clan having appeared in the Dark Ages. * History - The Tremere began as House Tremere, mages of the Order of Hermes named for their leader and founder, Tremere. At the end of the first millennium, the members of House Tremere realized the Hermetic arts were failing and found its immortality potions no longer working. House Tremere undertook numerous experiments, but it was Goratrix who devised a solution in his investigation of vampires. In 1022, Goratrix invited Tremere and six of the founder's closest advisers to participate in the completed ritual, which promised true immortality. Whether Goratrix knew what would happen is known only by him and, perhaps, Tremere, but at the completion of the ritual the participants fell unconscious and were reborn as vampires, their avatars destroyed and magical abilities lost. The mages had gained their immortality but lost the power they lived for. In time, the Tzimisce made war against House Tremere in retribution for the Fiends that had been made part of Goratrix's experiments. The Order of Hermes also became suspicious of diabolical practices being performed by the increasingly secretive House. In 1037 Tremere gathered the seven newly-made Cainites and forced the blood bond upon them. He then declared to them that House Tremere would be restructured with a new pyramid hierarchy, placing himself at the top as Primus of House and clan Tremere and his seven closest followers forming the Inner Council of Seven directly under him. They would slowly begin Embracing the rest of the House, with each initiate being bound to the Inner Council to ensure their loyalty. In time, all members of House Tremere would die or become vampires. While Tremere and Etrius pursued their own research throughout Europe in converting the hermetic arts into Thaumaturgy, Goratrix once again returned to his laboratories with his apprentices at hand. After years of experimentation on captured Tzimisce, Nosferatu, and Gangrel, he succeeded in creating a Gargoyle in 1121, and by 1125 the hybrids were serving as shock troops against the Fiends. Nevertheless, the Tremere found themselves third-class citizens among the undead. Whatever boldness Tremere had shown in entering the night was ignored by the staunchly traditionalist clans, and they were often forced from cities by princes who did not look kindly on their presumption. As he and Etrius rapidly acquired more vampiric lore they discovered the history of Caine and the Antediluvians, as well as the benefits of diablerie. Seeking to establish themselves as a clan proper, the Tremere sought a clan founder to diablerize and settled on Saulot, the enigmatic founder of the Salubri clan. In 1133, Tremere and the Inner Council discovered Saulot's tomb in the Anatolian desert. Tremere diablerized the Antediluvian and promptly entered torpor, leaving the Inner Council to lead the clan and destroy the remaining Salubri. As with everything else that the Tremere had done to this point, the result was a mixed blessing. The Tremere were entrenched in many Cainite courts, their services as mages making them indispensable to princes across Europe. They were now accepted as one of the Low Clans, albeit considered usurpers, distrusted warlocks, and known diablerists. In the early years of the 21st century, the Intellegence agencies of the United States managed to gain access to SchreckNet and gained firsthand knowledge of the existence of a race of undead bloodsuckers that were spread in all corners of the world. Sharing their knowledge with other intelligence agencies, the united secret services contacted the Vatican, whom they knew to have experience fighting the undead. After years of careful research, the Second Inquisition had targeted Vienna as the 'capital of vampires' and prepared a strike against their headquarters. In 2008, a united USSOCOM and Vatican ESOG force stormed the Vienna Chantry of Clan Tremere and destroyed it, blaming it to an ISIS terror attack to the public. London, Las Vegas, Paris, and Marseilles were largely cleared of vampiric activity, with numerous captured vampires being placed in black sites and experimented upon to discover their weaknesses. The Inner Council of Seven were slain and their Blood Bonds shattered. Since then the once monolithic Tremere structure has completely fallen apart." :titles "Blood Sorcerer, Broken Clan, Pyramid, Usurpers, Warlock, Witch" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") "Blood Magic" (unitpower :name "Blood Magic"))) :Ventrue (unit :name "Ventrue" :titles "Bluebloods, Manipulator, Know-it-all" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Domination (unitpower :name "Domination") :Toughness (unitpower :name "Toughness")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))))) "Vampires, Sabbat" (section :name "Vampires, Sabbat" :unitmap (unitmap :Lasombra (unit :name "Lasombra" :image "ModernFantasy/Vampire_Lasombra.png" :titles "Dark Priest" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))) :Tzimisce (unit :name "Tzimisce" :image "ModernFantasy/Vampire_Tzimisce.png" :reference "The Tzimisce take pleasure in shaping themselves into a variety of inhuman forms. Distended skulls, elongated fingers, polychromatic mottling are often displayed to demonstrate their alien superiority." :summary "* The Tzimisce's extensive use of Fleshcraft upon themselves, their servants, and their foes, have made them the most bizarre and alien of the Vampire clans. Fortunately, they are solitary by nature preferring isolated locale to practice their horrid techniques on their hapless prey. * Examples: Backroom Surgeon, Carny Folk, Dracula, Inquisitor, Kali, Mortician, Nazi Scientist, Tatoo Artist, Toturer, Vivisectionist" :titles "Monster, Alien" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism") :Fleshcraft (unitpower :name "Fleshcraft")) :unitskillmap (unitskillmap :Intimidation (unitskill :name "Intimidation"))))) "Vampires, Independent" (section :name "Vampires, Independent" :unitmap (unitmap :Kuei-Jin (unit :name "Kuei-Jin") :Setite (unit :name "Setite" :unitpowermap (unitpowermap :Vampirism (unitpower :name "Vampirism"))))))))))
nx/tactics/books/characters
Description:
Package Name:
  • nx/tactics/books/characters
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_characters_overview, chapter_creating_characters, chapter_character_archetypes, chapter_storytelling, chapter_sets, chapter_props, chapter_cast
Source Code:
  • (package nx/tactics/books/characters :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Characters" :image "Characters.jpg" :chaptermap (base/chaptermap "Characters Overview" (chapter_characters_overview) "Creating Characters" (chapter_creating_characters) "Character Archetypes" (chapter_character_archetypes) "Storytelling" (chapter_storytelling) "Sets" (chapter_sets) "Props" (chapter_props) "Cast" (chapter_cast) ))) (func chapter_characters_overview : base/chapter (chapter :name "Characters Overview" :sectionmap (sectionmap "Why Tactics: Characters and Stories?" (section :name "Why Tactics: Characters and Stories?")))) (func chapter_creating_characters : base/chapter (chapter :name "Creating Characters" :summary "* Attributes * Skills * Equipment * Personality * History * Friends and Family ** Dependents * Enemies ** Hunted" :sectionmap (sectionmap "Friends and Family" (section :name "Friends and Family" :rulemap (rulemap :Adult (rule :name "Adult") :Animal (rule :name "Animal") :Child (rule :name "Child") :Couple (rule :name "Couple") :Co-worker (rule :name "Co-worker") "Emergency Worker" (rule :name "Emergency Worker") :Family (rule :name "Family") :Friend (rule :name "Friend") :Kid (rule :name "Kid") "Love Interest" (rule :name "Love Interest") :Pet (rule :name "Pet") :Relative (rule :name "Relative") "Senior Citizen" (rule :name "Senior Citizen") "Store Employee" (rule :name "Store Employee") :Teenager (rule :name "Teenager"))) "Character Rules" (section :name "Character Rules" :rulemap (rulemap :Beast (rule :name "Beast" :reference "* The Krell forgot one deadly danger - their own subconscious hate and lust for destruction. The beast. The mindless primitive! - Morbius, Forbidden Planet * Guilty! Guilty! My evil self is at that door, and I have no power to stop it! - Morbius, Forbidden Planet" :summary "* Caged Beast - The Beast is a savage, nearly mindless, latent personality. It is normally powerless, contained by the [Mind] in civilized men. It can, however, gain power and even dominance in those with weak minds or those who cultivate it such as from [Berserker], [Lycanthropy], or [Vampirism]. * Succumb to the Beast - Whenever a unit's [Mind] is reduced to 0 or is lowered below its Beast rating, roll Beast vs. [Mind]. If the Beast wins, it gains control of the unit until [Mind] exceeds Beast again (if ever). * Fight or Flight - While the Beast is dominant, the unit gains +1 to all Melee or Close Combat attack rolls. It also always uses its Beast rating instead of [Mind]. Unfortunately, it may only use [Physical Skills]. When in combat, it will always attack the closest target (friend or foe) with Melee or Close Combat. Because the Beast is easily surprised, all [Retreat]s against it are doubled." :titles "Id, Reptile Brain, Yang") :Shadow (rule :name "Shadow" :reference "* Hello darkness, my old friend. I've come to talk to you again. - Simon and Garfunkle, Sound of Silence * Anyone who fights with monsters should take care that he does not in the process become a monster. And if you gaze for long into an abyss, the abyss gazes also into you. - Friedrich Nietzsche, Beyond Good and Evil * Hannibal Lecter * Even if I wanted to go, my schedule wouldn't allow it. 4:00, wallow in self pity; 4:30, stare into the abyss; 5:00, solve world hunger, tell no one; 5:30, jazzercize; 6:30, dinner with me - I can't cancel that again; 7:00, wrestle with my self-loathing... I'm booked. Of course, if I bump the loathing to 9, I could still be done in time to lay in bed, stare at the ceiling and slip slowly into madness. But what would I wear? - Grinch, The Gringe Who Stole Christmas * If once you start down the dark path, forever will it dominate your destiny - Yoda, Star Wars: The Empire Strikes Back * A farmer comes home one day to find ... everything that he loved, taken from him. His children. One can only imagine the pit of despair, the hours of Job-like lamentations, the burden of existence. He makes a promise to himself in those dark hours. A life's work erupts from his knotted mind... Years go by... The farmer, who is no longer a farmer, sees the wreckage that he has left in his wake. It is now he who burns. It is he who slaughters, ... and he knows in his heart, he must pay. - Red Reddington, The Blacklist * No one escapes their shadow. - Zed, Runeterra * When I find out someone murdered an innocent person, or sold somebody heroin, or did some graffiti, and I kill that person with my bare hands, their eyeballs popping out of their skulls... You think THAT gives ME pleasure?... Well, it does!... What separates us from the other killers, is we only kill bad people. Usually... Unless there's a mistake. Now, do I sound like a fucking maniac? - Vigilante, Peacemaker" :summary "* Lurking Shadow - The Shadow is a devious, sociopathic, latent personality. It is normally powerless, surpressed by the [Spirit] in civilized men. It can, however, gain power and even dominance in those with weak wills or those who cultivate it such as from [Corruption], [Darkness], [Fleshcraft], [Intimidation], or [Necromancy]. * Cruel and Unusual - The Shadow silently observes all that the person experiences. It has nothing but contempt for others as well as the [Spirit] that keeps it contained. As the manifestation of the unit's dark dreams, twisted desires, and bizarre megalomania, the Shadow reinforces its own superiority by exerting power over others. Manipulating, dominating, and causing physical or emotional pain is a siren's call that the Shadow cannot refuse. * Consumed by Shadow - Whenever a unit's [Spirit] is lowered to 0 or below its Shadow rating, roll Shadow vs. [Spirit]. If the Shadow wins, it gains control of the unit until [Spirit] exceeds Shadow again (if ever). * Rising Shadow - While the Shadow is dominant, the person always uses its Shadow rating instead of [Spirit]. The Shadow will always act toward its, usually immediate, self interest. It will usually not aid its allies in any way. Because the Shadow is self absorbed, all [Retreats] against it are doubled, but failure feeds its insecurities, so retreat is emotionally devastating and can lead to the [Spirit] taking charge again." :titles "Darkness, Darkside, Pedophile, Sadist, Serial Killer, Sociopath, Yin") :Banality (rule :name "Banality" :summary "* Banality is the grip of the mundane, day-to-day world. It is the opposite of Art and creativity. Banality encourages us to perform mindless, repetitive tasks without creativity or expression. Watching television is the ultimate expression of Banality. * If Banality exceeds [Spirit], all Artistic or Magical skills are reduced by the difference between Banality and [Spirit]."))) :Personalities (section :name "Personalities" :summary "Positive * Adventurous - Someone who is adventurous enjoys adventure and takes risks. * Affectionate - Someone who is affectionate shows their love for other people. * Ambitious - A person who is ambitious wants to be successful in their career, studies, sport. * Brave - A brave person wants to do difficult or challenging things and is not afraid. * Chatty - Someone who is chatty enjoys talking to other people a lot. * Cheerful - A cheerful person smiles a lot and is happy. * Confident - Confident people feel sure about their own ability and present themselves well to other people. * Creative - Someone who is creative is very good at designing or making things. * Determined - A determined person makes a definite decision and does not give up. * Easy-going - Someone who is easy-going is quite relaxed and accepts things as they are. * Enthusiastic - Someone who is enthusiastic shows lots of interest in something and is very positive about it. * Frank - Someone who is frank is honest and direct in what they say. * Friendly - A friendly person always talks to other people and perhaps helps them too. * Funny - Someone who is funny makes people laugh. * Generous - A generous person is kind to other people, may give presents or lend money. * Hard-working - Someone who is hard working always puts a lot of effort into their work. * Helpful - A helpful person is always happy to help other people. * Honest - An honest person tells the truth and never steals or cheats. * Imaginative - An imaginative person has good ideas or is good at creating stories or artwork. * Intelligent - Someone who is intelligent is good at learning. This person may think about things in a logical way. * Kind - A kind person cares about other people and behaves positively towards them. * Loyal - Someone who is loyal will always support his or her friends. * Meticulous - A meticulous person pays careful attention to detail, probably has a tidy house and neat handwriting! * Modest - Someone who is modest does not show off about his or her abilities or possessions. * Optimistic - An optimistic person has a positive view of life and expects good things to happen. * Outgoing - An outgoing person is very sociable. * Patient - Someone who is patient does not get annoyed or frustrated easily and has time for other people. * Reliable - A person who is reliable can always be trusted to do what is required. * Sensible - A person who is sensible makes decisions based on reason/logic, does not take risks. * Sensitive - A sensitive person is very aware of other people’s feelings, can be easily hurt emotionally * Sincere - A sincere person is honest in their relationships with others and says what they think or feel. * Sociable - Someone who is sociable loves chatting with other people. * Sympathetic - Someone who is sympathetic understands other people’s problems very well. * Thoughtful - Someone who is thoughtful always thinks of other people, remembers birthdays and sends a card! * Trustworthy - A trustworthy person is someone you can rely on to be honest. Negative * Arrogant - An arrogant person thinks they are very important and behaves in a overly proud way. * Big-headed - Someone who is big-headed talks a lot about how good they are, this person is too proud. * Bossy - A bossy person is always telling other people what to do. * Childish - Someone who is childish is silly or behaves like a child when they should behave like an adult. * Clumsy - A clumsy person knocks things over a lot and is not careful. * Cruel - Someone who is cruel is extremely unkind to other people or animals. * Defensive - Someone who is defensive behaves in a way that suggests they believe other people are criticising them. * Dishonest - A dishonest person tells lies or tricks other people. * Fussy - A fussy person wants everything to be done in a particular way, they are picky/choosy. * Grumpy - Someone who is grumpy is easily annoyed, in a bad mood. * Gullible - It is easy to trick someone who is gullible. This person believes something that most people would not believe, being naive * Impolite - An impolite person is rude. * Inconsiderate - Someone who is inconsiderate does not think about other people, quite selfish. * Indecisive - An indecisive person finds it difficult to make decisions. * Inflexible - Someone who is inflexible is unwilling to change their opinion or the way they do things. * Insecure - An insecure person does not have confidence in themselves or their relationship with other people. * Jealous - A jealous person feels angry or unhappy because they wish they had something that somebody else has. * Lazy - A lazy person does not work hard. * Mean - Someone who is mean is unkind. * Moody - A moody person is bad-tempered or has frequent mood changes. * Narrow-minded - A narrow-minded person is not willing to listen to the ideas or opinions of others. * Nasty - A nasty person is very unkind. * Pessimistic - Someone who is pessimistic has a negative view of the future and expects bad things to happen. * Pretentious - Someone who tries to look or sound more important or clever than they are. * Rebellious - Someone who is rebellious does not follow the rules. * Rude - A rude person is not polite or does not respect other people. * Quick-tempered - Someone who is quick-tempered becomes angry very easily. * Self-centered - A person who is self-centred only thinks about himself or herself. * Selfish - Selfish people think only about themselves and not about other people. * Stubborn - Someone who is stubborn does not easily change their mind. * Sulky - If someone is sulky they show their bad mood by not speaking. * Tactless - A tactless person does not show sensitivity to others in what they say, not diplomatic. * Unpleasant - An unpleasant person is not nice. * Unreliable - An unreliable person cannot be trusted or relied upon. * Vain - Someone who is vain is too concerned about their appearance or abilities.")))) (func chapter_character_archetypes : base/chapter (chapter :name "Character Archetypes" :summary "* Antihero * Bad Boy * Bumpkin * Coutier - Politics, Etiquette, Psychology, Fashion * Crafter * Damsel * Fatalist - Nihilist * Fool * Grotesque * Hermit * Knight in Shining Armor * Mysterious * Orchid - Pampered Life * Outlaw * Peacock - Showoff * Rake - Pleasure seeker * Regent - Leader * Rogue * Sage * Saint * Savage * Trickster - Riddler * Troubadour * Wayfarer - Wanderer * Wretch" :sectionmap (sectionmap "Warrior Classes" (section :name "Warrior Classes" :unitmap (unitmap :Gladiator (unit :name "Gladiator" :summary "* Preferred Skills: [Melee Combat]:Spears, Flexible Weaponry, [Close Combat]:Grappling, [Athletics], [Evasion]") :Knight (unit :name "Knight") "Martial Artist" (unit :name "Martial Artist" :summary "* Preferred Skills: [Close Combat]:Martial Arts, [Evasion], [Acrobatics]") :Paladin (unit :name "Paladin") :Ranger (unit :name "Ranger" :summary "* Preferred Skills: [Ranged Combat]:Archery, [Hunting], [Forestry], [Riding]") :Samurai (unit :name "Samurai" :summary "* Preferred Skills: [Melee Combat]:Swords, [Ranged Combat]:Archery, [Riding], [Evasion]") :Soldier (unit :name "Soldier" :summary "* Preferred Skills: [Melee Combat], [Military], [Armor]") :Warrior (unit :name "Warrior" :summary "* Preferred Skills: [Melee Combat], [Armor], [Riding]"))) "Rogue Classes" (section :name "Rogue Classes" :unitmap (unitmap :Assassin (unit :name "Assassin" :summary "* Preferred Skills: [Assassination], [Ranged Combat]:Thrown Weapons") :Bard (unit :name "Bard" :summary "* There is magic in music, song, and story. The Bard has learned that a story properly told can make a frightened man brave or a starving man strong. The rhythm of his speech, the cadence of his tone, and the lilt of the melody all weave a pattern of the skilled Bard's choosing. * Bardic training allows a Bard to remember and recite almost every story or song they have heard. For this reason, Bards are vast storehouses of knowledge, but their information often blurs reality and fiction. * Bards are generally wanderers, traveling from town to town spreading ideas (creating dissent or harmony) wherever they go. * Preferred Skills: [Performance]:Music, [Deception], [Persuasion], [Knowledge], [Stealth]" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Charlatan (unit :name "Charlatan" :summary "* Preferred Skills: [Performance], [Deception]") :Ninja (unit :name "Ninja" :summary "* Preferred Skills: [Assassination], [Melee Combat], [Deception], [Stealth]") :Rogue (unit :name "Rogue" :summary "* Preferred Skills: [Crime], [Close Combat]:Knives, [Deception], [Stealth]") :Scout (unit :name "Scout" :summary "* Preferred Skills: [Scouting]") :Spy (unit :name "Spy" :summary "* Preferred Skills: [Espionage], [Scouting], [Stealth]") :Thief (unit :name "Thief" :summary "* Preferred Skills: [Thrown Weapons], [Deception]:Thievery, [Mechanics], [Climbing], [Acrobatics], [Scouting], [Stealth]"))) "Mentalist Classes" (section :name "Mentalist Classes" :unitmap (unitmap :Illusionist (unit :name "Illusionist") :Mentalist (unit :name "Mentalist"))) "Spiritualist Classes" (section :name "Spiritualist Classes" :unitmap (unitmap :Druid (unit :name "Druid" :summary "* Preferred Skills: [Nature Magic], [Herbalism], [Aeromancy]") :Monk (unit :name "Monk" :summary "* Preferred Skills: [Martial Arts]:Striking, [Mind Over Body]") :Priest (unit :name "Priest") :Shaman (unit :name "Shaman") :Witch/Warlock (unit :name "Witch/Warlock") "Witch Doctor" (unit :name "Witch Doctor"))) "Wizard Classes" (section :name "Wizard Classes" :unitmap (unitmap :Alchemist (unit :name "Alchemist") :Artificer (unit :name "Artificer") :Elementalist (unit :name "Elementalist" :summary "* Preferred Skills: Elemental Magic") :Necromancer (unit :name "Necromancer") :Sorceror (unit :name "Sorceror") :Wizard (unit :name "Wizard")))))) (func chapter_storytelling : base/chapter (chapter :name "Storytelling" :summary "* As Storyteller you're part artist, part writer, and mostly editor. You design the overall plots and subplots, draw out the backgrounds, design the greater part of the cast and improvise dialog as the story goes. By describing the world around them, you help to define the characters. Daunting? Sure. But it's not as impossible as it sounds. * Don't try to win. Tell a story - Storytelling isn't about winning and losing. It is about drama and interaction. Trying to meet objectives is just a device to achieve drama. A story may be more interesting if the objective is failed. * Players are not your opponents - It is important to remember that the players and storyteller are both responsible for creating an interesting story. * Don't try to maintain control - Instead of a detailed plot, try to create detailed situations that will play out without the characters' involvement. Then let the players make their own decisions. The storyteller sets up the situation and the sets and props. The players do the acting. Test yourself by not talking every once in a while and listen to the players. If they go silent waiting for you, then something is wrong. If they are deeply interacting with one another and haven't noticed your silence, you are doing it right. * Understand the Players - Some play to gain a sense of power, others for the social aspects of being with friends, and others as a means of wish fulfillment. Some prefer fighting deadly foes, others prefer puzzles and riddles, others simply enjoy talking in character and engaging in political infighting or witty repartee. All of these desires must be juggled and given some space in the game. Some players are vocal and aggressive while others are shy or have trouble putting their ideas into words. * Offer Variety - Luckily juggling different player needs provides variety and a change of pace. Switching from action to drama to tragedy to comedy provides depth and realism to the story. Life never stays the same after all. Be sure to vary the focus of the game onto each player. Some players will regularly take the focus themselves while you must steer the story toward other players by allowing them to notice things the busier players miss or by revolving plot points around skills or special knowledge that only some players possess. If players become bored, the story will die." :sectionmap (sectionmap :Roleplaying (section :name "Roleplaying" :rulemap (rulemap :Troupes (rule :name "Troupes" :summary "* Optional Rule * Instead of playing a single character, each player controls several characters of different types, selecting the most appropriate for the given situation. This can free the Storyteller from roleplaying theses characters while giving the player more opportunity to vary their playsstyle. * This rule can be particularly appropriate when there are few players or a number of lesser follower characters."))) "Story Elements" (section :name "Story Elements" :rulemap (rulemap :Theme (rule :name "Theme" :summary "* This is a short phrase that encompasses the core idea behind the Story. If all elements of the Story support the Theme, then the Story can maintain meaning and depth. There may be more than one theme in a Story which can bring each into sharper focus and provide greater resonance. Even themes working at cross-purposes can strengthen each other through their juxtaposition. * Good execution of a Theme should be fairly subtle, so the players don't see a grand plan until they look back. * Examples: ** Isolation/Alienation ** Fall and Redemption ** Hero's Journey ** Love Conquers All ** Power Corrupts ** Science Dehumanizes ** We must all work together to survive ** Family Ties ** Romance - Arthur, Lancelot, and Guinevere, Tristan and Isolde ** Wonder - Children share a hope and belief that they are immortal and that wishing on a star can make anything happen. Recreate that wonder. ** Nightmares - Identical and opposite to Wonder, Nightmares hold fears darker than reality. Recapturing the magic of Nightmares is just as powerful as Wonder. ** Tragedy ** Freedom/Wildness - A sense of freedom can be exhilarating, but some beings cannot tell the difference between creative and destructive behavior. ** Madness - What happens when a character's differences are not understood by those they trust? Lack of acknowledgement from others leads to self-doubt and internalization. This can lead to isolation or irrational behavior which can potentially lead to madness. Madness can take many forms and can result in being manipulated, villainy, destruction, institutionalization, homicide, or suicide. The challenge to madness is can the downward spiral be interrupted before it is too late. Many of the greatest villains were potentially good people but for their madness. ** Humor - Humor can be light or dark and is always a useful way to relieve the tension and avoid a story becoming overly serious while creating a new opportunity for tension to build.") :Mood (rule :name "Mood" :summary "* Mood represents the emotional tone of the Story. If the players can relate to their characters emotionally, the world will become much more vivid. Ideally never mention the intended mood but instead take every opportunity to subtly reinforce it again and again. * First impressions are important, so try to establish mood early using music, lighting, sound effects, or tone of voice. Maintaining mood can be more difficult than establishing it. Players will often break tension or speak out of character. They may intend to break the mood, so just try to ignore these and carry on. * Examples include Awe-inspiring, Bawdy, Brooding, Carefree, Comical, Dark, Dreadful, Fearful, Hopeful, Horrific, Merry, Ominous, Paranoid, Tragic") :Sound (rule :name "Sound" :summary "* Music is an almost mandatory part of roleplaying. It adds extra flavor to the game and needs only minimal preparation. The choice of music is up to the group but it should be fast paced and stimulating unless more specific mood music would be in order. * Other sound effects can have an amazing effect when properly timed. A simple sound effects machine can be very useful.") :Setting (rule :name "Setting" :summary "* Setting encompasses the backdrops and environments where the Story takes place. * Some extra thought should be paid when choosing locations and detailing them to be rich unique atmospheres. * Avoid overly sterotypical locations and try to lavish them with subtle details including light, color, open space, background noise, music, smell, temperature, touch, taste. Each location should also have one particularly memorable feature that is subtly reinforced. * Metaphors and similes are good ways to express details and tone. * Setting Ideas: Penthouse, Mansion, Yacht, Cruise Ship, Social Club, Restaurant, Bar, Theater, Sporting Event, Shopping Center, Amusement Park, Carnival, Circus, Movie Set, TV Studio, Park, Zoo, Brothel, Casino, Gambling Club, Slaughterhouse, Graveyard") :Conflict (rule :name "Conflict" :summary "* Every Story involves some sort of conflict. Something opposes the characters goals or there is no point to the Story. No one cares about a girl who walks to the store and buys a loaf of bread, but if the girl is a starving orphan trying to feed her younger siblings and she makes her way through a snowstorm despite a broken leg, we are more likely to pay attention. * Conflict may involve enemies, the environment, other players, themselves.") :Intrigue (rule :name "Intrigue" :reference "* The greatest trick the devil ever pulled was convincing the world he didn't exist - Verbal Kint, The Usual Suspects" :summary "* Everyone has an agenda. Sometimes that agenda is obvious. Sometimes a person is unaware of what drives him/her. Even without secret agendas, the interaction between peoples goals are complex and subtle. * Some ambitious people will use secret agendas and plots to further their goals. When others run afoul of these plots, they may find unexpected conflict or unwittingly become a pawn in someone else's game. * The most successful plots are never detected. They are shielded by false goals and red herrings.") :Suspense (rule :name "Suspense" :summary "* What is Suspense? ** The feeling of uncertainty, anxiety, and anticipation felt while waiting for a specific outcome. ** Creates a sense of mystery and urgency ** Makes the audience wonder and worry about the characters' futures * How to create Suspense? ** Promise disaster. Send a signal that something bad can or will happen. ** Make the audience wait for resolution. But don't have them sitting around. Have them actively doing something while disaster approaches. This can be directly toward the disaster or a frustrating tangent. ** Deliver the outcome. Good or bad whatever happens, disaster may strike, the characters may get to safety. Either way, make sure there is a clear payoff.") :Prologue (rule :name "Prologue" :summary "* Some Stories may benefit from a brief side Story that sets the tone, describes history, brings the players together. * Prologues can take place long before the events of the main story.") :Plot (rule :name "Plot" :summary "* The Beginning - The Story introduces the [Setting] and the [Conflict]. * The Middle - The true nature of the [Conflict] is expanded and developed. * The End - The Story reaches its climax and possibly resolution. The drama of the Story is about how things will resolve. Here is where the players must decide their own fate. They have had their opportunities to shape their destinies. Now they must pass their final test. Do or Die, Succeed or Fail, Fight or Compromise.") :Scenes (rule :name "Scenes" :summary "* The story will move from scene to scene. Each scene includes: * Sets * Props * Cast After the scene has completed its purpose, we move to the next scene: * Scene Goals") "Story Ending" (rule :name "Story Ending" :summary "* Climax * Anti-Climax * Surprise Ending") :Epilogue (rule :name "Epilogue" :summary "* Are there any loose ends that hint at the next story." :titles "Aftermath"))) "Plot Archetypes" (section :name "Plot Archetypes" :rulemap (rulemap "Armed Robbery" (rule :name "Armed Robbery") :Assault (rule :name "Assault" :summary "* An all out attack on an enemy stronghold.") "Assault Defense" (rule :name "Assault Defense" :summary "* Defend your stronghold against an enemy assault.") "Bank Robbery" (rule :name "Bank Robbery") :Betrayal (rule :name "Betrayal" :summary "* The plot appears to be another kind, but the characters realize they have been betrayed. They must now escape or gain revenge.") :Blackmail (rule :name "Blackmail") "Bug Hunt" (rule :name "Bug Hunt" :summary "* A killer is on the loose and must be tracked down.") :Bullying (rule :name "Bullying") "Car Theft" (rule :name "Car Theft") :Conspiracy (rule :name "Conspiracy" :summary "* A group plans a course of action which the characters directly or indirectly.") :Crash (rule :name "Crash") "Cyber Crime" (rule :name "Cyber Crime") "Dangerous Animal" (rule :name "Dangerous Animal") "Disease Outbreak" (rule :name "Disease Outbreak") "Drug Trafficking" (rule :name "Drug Trafficking") :Extortion (rule :name "Extortion") :Escape (rule :name "Escape" :summary "* The characters are threatened with overwhelming danger and must find a safe place and travel there while dodging aggressors.") :Falling (rule :name "Falling") :Framing (rule :name "Framing" :summary "* Characters are maneuvered into a situation where it appears they have committed an offense. This may lead to an escape and a mystery.") :Gambling (rule :name "Gambling") "Gang Activty" (rule :name "Gang Activty") :Guard (rule :name "Guard" :summary "* Guard a person or item from theft.") :Hacking (rule :name "Hacking") :Hostages (rule :name "Hostages") :Injustice (rule :name "Injustice" :summary "* A wrong has been perpetrated and the characters feel obliged to right it.") :Intimidation (rule :name "Intimidation") :Jealosy (rule :name "Jealosy" :summary "* The characters have inspired envy or jealousy in another and steps are being taken against them. Their enemy may be someone they recently crossed.") :Kidnapping (rule :name "Kidnapping") :Lost (rule :name "Lost") "Love Affair" (rule :name "Love Affair" :summary "* The characters become involved in the love or lust of another. The other person could be another character. The attention could be mutual or one-sided. It may lead to courtship, uncomfortable situations, anger, violence or any other outcome. Such are the ways of love.") "Missing Person" (rule :name "Missing Person") :Mystery (rule :name "Mystery" :summary "* Events have taken place and the characters must find out what it all means, who is behind it, and what actions to take.") "Organized Crime" (rule :name "Organized Crime") :Panic (rule :name "Panic") "Petty Theft" (rule :name "Petty Theft") :Poisoning (rule :name "Poisoning") "Police Activity" (rule :name "Police Activity") "Political Situation" (rule :name "Political Situation") :Prostitution (rule :name "Prostitution") :Protest (rule :name "Protest") :Pursued (rule :name "Pursued") :Rescue (rule :name "Rescue" :summary "* The characters must penetrate and enemy stronghold and find an ally, and escape.") :Revenge (rule :name "Revenge") :Siege (rule :name "Siege") "Siege Defense" (rule :name "Siege Defense" :summary "* Your stronghold is surrounded. You must escape or break the siege.") :Trapped (rule :name "Trapped") "Treasure Hunt" (rule :name "Treasure Hunt" :summary "* Something of value is discovered and the characters must find it before anyone else does.") "White Collar Crime" (rule :name "White Collar Crime"))) :Subtleties (section :name "Subtleties" :rulemap (rulemap :Antagonist (rule :name "Antagonist" :summary "* A compelling antagonist can be as important as the main characters. Defeating the antagonist personifies the characters' goals. Protagonists can only rise as high as the antagonist sinks low. Antagonists need not be villainous. They just create obstacles for characters for their own ends. Many simply have different beliefs or goals or can be misled. Real villains should be few and far between. * Personality - Evil, Moral, Noble, Corrupt, Misguided, Horrible * Motivation - Power, Money, Influence, Love, Friendship, Revenge, Protection * Type - Warrior, Manipulator, Leader * Influence - Elder, Commanding, Empathetic, Intellectual * Tools - Weapons, Minions, Contacts, Equipment, Skills, Powers * Obstacles - Own Enemies, Dark Past, Morality, Code of Honor * Development - Interactions with the Antagonist should change the antagonist as the relationship between the characters becomes personal. This can become hatred, rivalry, friendship, or even love.") :Villains (rule :name "Villains" :reference "* You're quasi-evil. You're semi-evil. You're the margarine of evil. You're the Diet Coke of evil. Just one calorie, not evil enough. - Austin Powers, Austin Powers: The Spy Who Shagged Me." :summary "* Remember that villians rarely see themselves as such. They are so wrapped up in their own motivations that they believe their actions are justified. * Evil - Movie villians often show their evil by killing the hero's girlfriend, best friend, or dog. These kinds of acts are suitable to minions and unimaginative villains. * Great Evil - Look around at the real world for examples. Adolf Hitler, Osama Bin Laden. They are impressive but can also seem like caricatures: black hats, almost clowns. * True Evil - True evil is not to be found in petty tyrants with guns and fumble-fingered power plays. The real horrors are those who hide behind noble purpose as they betray our trust. The greater our trust in them the greater the possibility of rank betrayal, the true horror. Starvation, war, genocide, and corruption blight our world of abundance and plenty. Self-serving leaders exploit public trust on a regular basis. Hidden powers lurk in the background, uninvited, unelected, and unwanted. Bureaucrats steal consitutional power from well-intentioned, cowardly, gullible, forgetful or senile leaders. Hidden forces wage covert wars, smuggling drugs, corrupting elections, assassinating leaders, and suppressing democratic dissent witho our money but without our consent. The reports we receive of their conduct are fragmented, incomplete, censored, and denied. In these covert wars, we citizens are arrayed against forces we cannot name or locate let alone effectively stand against. From Watergate to Iran-Contra to stolen Presidential elections and Presidential assassinations it is clear that it can and does happen here. The thought of an American coup d'etat is more frightening than any tales we can construct.") "Dream Sequences" (rule :name "Dream Sequences" :summary "* Dreams and Dream-like situations can be an interesting plot device and can also allow the character to rediscover their nature when put into unusual circumstances.") "Hero's Journey" (rule :name "Hero's Journey" :summary "* The Hero's Journey is the long and difficult process of making the hero a better person and worth of being a hero. * The Ordinary World - The hero lives a normal life but is usually incomplete in some way set apart from his peers. * The Call to Adventure - Suddenly something happens that warns that the hero's life will never be the same again. Often the hero rejects their destiny but eventually comes around. The hero leaves home, voluntarily or is cast out. * Meeting with the Mentor - The hero acquires a mentor who is the ideal for the hero. Eventually the hero must see through the ideal and accept the person behind the ideal. * The hero must confront the enemy and there will be defeats. Often the hero will be captured. * The hero must enter the Underworld. This may be a hellish place or the actual Underworld. Very often this is the heart of the enemy's domain. The hero must confront the pain and sorrow of existence and his own existence in particular. The hero's toughest battles will be those where he is confronting something within himself. * Crossing the First Threshold - The hero can no longer return to normal life. He must face a guardian that represents the danger that is coming. The threat is overwhelming and cannot be defeated alone. * Tests, Allies, and Enemies - Various trials and tribulations must be faced. Who may help or harm must be discovered. Aligning different character goals toward a common enemy allows the hero to gain a troupe of supporters. * Enter the Underworld - After discovering the nature of the true threat, the here must enter the belly of the beast where his/her very soul will be tested. * The Supreme Ordeal - This is downbeat and the heroes have seemingly lost all. The heroes face their greatest enemy, their worst failing, and do not succeed. They are struck down, cut off, lost. The heroes suffer symbolic death, 'bottom out', and face the ultimate darkness. * The Reward - The heroes have hunted the enemy to its lair, faced death, and lived to tell about it. Though all seems lost, they actually gain valuable information or treasures that make victory possible. * The Road Back - With rewards in hand, the heroes must escape the Underworld and race to the final confrontation. This scene is typically a chase with lots of movement and little combat, saving the fight for the final battle. * The Final Threshold - Here they must once again come face-to-face with death. They must be threatened and purified by the final danger. After this they are resurrected with the changes that the story has wrought upon them becoming clear. * The Return - After his journey is finished, the hero returns home. Rewards and recognition must be given, but more importantly the hero must realize how he has changed and what he has accomplished. Eventually he may become the mentor for another hero. As the story ends, all the remaining plotlines must be wrapped up, and the groundwork for a future story must be laid.") :Flashbacks (rule :name "Flashbacks" :summary "* Flashbacks are a staple of storytelling. Something triggers a memory, and the scene shifts to past events relevant to the current situation. * You may just narrate what happens or the players can act out the scene. * Flashbacks may be from the characters past or just related stories. However, be careful not to accidentally give away information in the flashback that the players could not already have. * Flashbacks can be particularly interesting for characters with past lives.") :Foreshadowing (rule :name "Foreshadowing" :reference "Communism was just a red herring - Wadsworth, Clue" :summary "* Foreshadowing is the art of carefully placing certain elements into a story early on to allude to events to come. This can help build suspense, since the characters may expect something to happen, but they won't know how, when, or to whom. * A Red Herring is the opposite of Foreshadowing. It introduces a seemingly important element early, but it turns out to be unimportant to the main story. Be careful not to abuse red herrings as they can become annoying.") :Meanwhile... (rule :name "Meanwhile..." :summary "* Take an opportunity every once in a while to take the players out of their characters and into a different set of characters in the same Theme. This may be a different part of the main Story or a parallel Story in another place or time. * This can also be a chance to focus on a single player while allowing the others to learn information that they will learn anyway." :titles "Crosscutting, Parallel Stories") :Motivation (rule :name "Motivation" :summary "* Motivating the characters is key. Never force them along the plotline. Lead them with tempting story hooks and strange riddles. If they take off in another direction, just follow along and either find another moment to reinject the next plot element or let the players drive the direction. * Don't forget to provide motivation for the antagonists as well. If your antagonists don't have believable goals, hopes, and dreams, they are not going to be very effective. Many of the best antagonists are not evil, but just have goals at odds to the characters. Nothing is more satisfying to layers than going after an opponent that they love to hate. Stock motivators: * Contacts - Contacts are a regular way to get information. They also often require help themselves in exchange for information. * Anoymous Tips - While providing information, tips complicate the matter greatly. Who sent it? How do they know where I am? Is this a trap? * Threats - If someone threatens you, you must be on the right track. Threats are meant to scare people of, but they tend to motivate characters instead. * Lulls - Nothing is more unsettling than a break in the action. If the opposition suddenly inexplicably withdraws, the tension is increased not decreased. What just happened? Has a major player entered or left the scene? Whatever awaits is probably worse than before. * Out of the Frying Pan - Simple operations can get complicated. The character was already involved, so there is often no turning back. * Smoking Gun - Catching people in the act will usually get people interest even if it is just for curiosity. Noisy investigators also run the risk of being mistaken for the culprit or framed. * Sudden Aid - Help out of the blue can feel like an immediate boon, but what is the motivation? Who benefits besides the character? What kind of payment will this entail? * Friend in Need - Friends, mentors, relatives, contacts seem to always be getting into trouble. This plot point can feel like the player is being manipulated unless they are currently involved with this friend, so it is best to be subtle. * Romantic Interest - This motivator can take many forms. The player or the romantic figure may not have the same feelings. Either could be trying to impress the other, get to know the other, or help the other. People do the silliest things for love, so foolish or dangerous activity is easily explained. * Personal Honor - Every character worth his salt will have a personal code of honor (even if they don't realize it). Challenging that code is a great way to motivate or to at least learn more about the character. * Loss - Losing something you were counting on is sure to make a bad situation worse. Loss of a possession, a guide, a mentor, a kidnapping, a motivation. Whatever it is, it will require a change of plans. * Profit - Money, prestige, power, and objects are always enticing. They, of course, also come with complications. * Group Affiliation - Teams, organizations, religious groups, cultural groups are all possible motivators. * Rivals - The involvement of rival organizations and individuals can be instant motivators to characters with a personal grudge.") :Coincidence (rule :name "Coincidence" :summary "* By repeating the appearance of certain props, characters, or plot elements, the players will begin to suspect that there is more to the Story than they understand. They may suspect conspiracies or higher powers, but will be unable to prove anything. Maybe there is something to all this or maybe not. Either way it can keep the players on their toes.") "Real Time Action" (rule :name "Real Time Action" :summary "* An extreme way to make the story gripping is to move the game into real time. Players only have as much time as their characters do to make decisions.") :Subplots (rule :name "Subplots") :Symbolism (rule :name "Symbolism" :reference "Sometimes a cigar isn't just a cigar... - Aberrant, RPG" :summary "* Symbolism can be littered through a story and can sometimes be detected subconsciously even when they are too subtle for the conscious mind. * Subtly is important, and it may be better if the player does not consciously realize the connections being made. If nothing else it is satisfying to the Storyteller and provides a source of additional detail. * One way to use symbolism is to subtly change the description of then environment to match the personality of the main character in a scene. * Examples: Tattered newspaper, broken glass, driving rain.") "Unlikely Allies" (rule :name "Unlikely Allies" :summary "* Characters who hate each other but are forced to work together is a plot twist that can be applied to any scenario. Success requires their cooperation, but they don't have to like it. * High drama and comedy can come from such pairings. * Crisis can breed intense personal bonds including close friendships and romantic attraction. And, of course, such relationships have a tendency to turn tragic.") "Plot Twist" (rule :name "Plot Twist" :reference "Sixth Sense, Usual Suspects" :summary "* Allies can become enemies. * Enemies may become sympathetic. * Characters and situations can have hidden dimensions that can change the meaning and purpose of the characters. * Note that the best plot twists are subtle."))) :Encounters (section :name "Encounters" :summary "* When characters travel, they may encounter others seemingly randomly. These encounters keep players on their toes as they are often vulnerable while travelling." :rulemap (rulemap :Traces (rule :name "Traces" :summary "* This type of encounter includes tracks, camp sites, lairs, skeletal remains, claw marks, spoor, or signs of a struggle. Such evidence indicates that something has passed through the area. Tracking skills increases the information derived from the site. This encounter can provide information, mislead, create suspense by foreshadowing, or simply to provide flavor.") :Sightings (rule :name "Sightings" :summary "* This encounter indicates a being or beings sighted at a distance. Typically this provides the opportunity to avoid a close encounter or to gain a tactical advantage. The observed being(s) mayh be foraging, scavenging, hunting, travelling, camping, sleeping, scavenging, hovering overhead, fighting, etc. Unusual events include: clan rivalry, courtship rituals, injury, illness, entrapment, crimes.") "Close Encounters" (rule :name "Close Encounters" :summary "* Close encounters require immediate action. All close encounters need not result in combat. Most creatures will not fight to the death and will abandon a fight that is not going well. * Encounters with others may be good, bad, or neutral. The reaction to one another is partly random, but mostly based on mutual history, race, attitude, caste, and courtesy. Characters who are good communicators will do better than others in these circumstances. Such encounters can introduce side characters and move the plot forward. * Sample travellers: Messengers, Traders, Refugees, Criminals, Victims, Armies, Priests, Monsters, Entertainers, Nobles, Craftsmen, Spies, Pilgrims, Patrols, Locals, Scholars, Charlatans, Thieves, Bandits."))) "Character Scenarios" (section :name "Character Scenarios" :scenariomap (scenariomap "Personal Quest" (scenario :name "Personal Quest" :summary "* These are usually intense stories deeply rooted in the desires and emotions of the characters. * Revenge, atonement, love, family obligations. * Quests drive characters beyond the bounds of propriety and moderation. Failed questors create some of the most classic villains (e.g. Darth Vader).") :Missions (scenario :name "Missions" :summary "* Missions usually begin as impersonal tasks assigned by someone else, probably to fulfill an agenda other than the character's own. Missions are rarely what they seem at the beginning and have a tendency to evolve into something more personal. * Often a character's agenda becomes at odds with the mission, and he/she must make some decisions about where they stand. * Some Missions require a certain amount of detective work before or during the Mission to discover the true goals and motivations behind the Mission.") "Damage Control Mission" (scenario :name "Damage Control Mission" :summary "* A specific form of Mission where a situation has already spun out of control and the characters are dispatched to 'fix' the situation. * Damage Control missions tend to be fast-paced with a rapidly deteriorating situation.") "Training Mission" (scenario :name "Training Mission" :summary "* Training scenarios can take many forms. They can put the characters in the position of student, teacher, or both. * Training can appear as another sort of scenario but has been carefully staged by the teacher. Or Training can spiral out of control and become a life or death struggle. * Training is also a convenient plot device to gather unrelated characters together.") "Disaster Mission" (scenario :name "Disaster Mission" :summary "* Sometimes bad things just happen. Suddenly, the characters are torn from their comfort zone and thrust into a new perspective. Disasters can be sever enough to create temporary alliances among enemies.")))))) (func chapter_sets : base/chapter (chapter :name "Sets" :sectionmap (sectionmap "Foreign Lands" (section :name "Foreign Lands" :summary "* Exotic locales can help support a sense of adventure. Familiar landmarks can form an interesting backdrop to the action. * Different locations separate the characters from their normal resources and patterns. The area they are in may also be particularly hostile to them as well. * Examples: Egypt, Mexico, Siberia, Niagara Falls, Baghdad, the White House, Tibet, Peru, the London Underground, Hong Kong markets, the Great Barrier Reef, Aztec ruins. * Remember getting there is half the fun, and getting out is twice as hard.") "Alien Environments" (section :name "Alien Environments" :summary "* Beyond traditional locations are the truly bizarre locations. * Examples: Underwater, polar ice caps, deserts, volcanos, lightless caverns, sunken ships, outer space, other times, the [Void], the [Underworld], Hell.") :Buildings (section :name "Buildings" :summary "* Abbey * Academy * Aqueduct * Archaeological Dig * Archive * Arena (of the Ancients) * Asylum * Aviary * Bar * Basilica * Bazaar * Beastiary * Belfry * Bridge * Campsite * Cantina * Castle * Cathedral * Cemetery * Citadel * City (of Brass, Forbidden, Forsaken, Sunken) * Cloister * Coliseum * Crematorium * Crypt * Encampment * Estate * Fort * Fortress (Dwarven, Elven, Ice) * Foundry * Fountain * Furnace * Garrison * Graveyard * Guildhouse * Haven * Hold (Dwarven) * Home * House * Keep * Laboratory * Library (of Alexandria) * Lighthouse * Lodge * Market (Black) * Marketplace * Mausoleum * Mine (Copper, Diamond, Gold, Silver) * Outpost * Palace * Palisade * Parapet * Parthenon * Port * Prison * Pyramid * Quarry * Rampart * Rectory * Reliquary * Ruins (Dwarven, Elven) * Sacred Ground * Sanctum * School * Shrine * Stadium * Standing Stones * Storehouse * Stronghold (Mountain) * Tavern * Temple * Tomb * Tower (Costal, Ivory) * Town (Square) * Township * Trade Route * Trading Post * Vault * Villiage * Wall (Great) * Watchtower * Well * Woodlot") "Character Places" (section :name "Character Places" :summary "* Archipelago * Atoll (Coral) * Basin (Jungle) * Bay * Bog (Peat) * Boneyard * Burrow * Chasm (Glacial) * Cave * Cavern * Canyon (Box, Winding) * Cliffs * Cove * Crater (Meteor, Smouldering) * Crevice * Delta (River) * Den * Desert * Dust Bowl * Everglades * Fissure * Flats (Salt) * Foothills * Forest (Petrified) * Garden * Glacier * Gorge * Graveyard (Elephant) * Grotto * Grove * Heath * Hellhole * Highlands * Hive * Irrigation Ditch * Island * Isle * Marsh (Salt) * Mesa * Mire * Oasis * Orchard * Peninsula * Pit (Bottomless, Breeding, Tar) * Plateau (Leng) * Pool (Reflecting, Spawning) * Prairie * Ridge * River (Underground) * Scrubland * Steppe * Thicket * Trench * Vale * Valley * Vein (Crystal) * Vineyard * Void * Volcanic Vent * Volcano (Dormant) * Vortex * Warren * Wasteland * Wastes (Forgotten, Forsaken)") :Settlement (section :name "Settlement" :summary "* Settlement Level describes the general size of a settlement. It determines the level of resources that can be bought and sold and the availability of exotic resources. Titles * Nomadic Tribe - Level 1 * Town - Level 4 * Large Town - Level 6 * Small City - Level 8 * City - Level 10 * Metropolis - Level 12 * Urban Sprawl - Level 14 * Planetary Sprawl - Level 16 * Galactic Empire - Level 20")))) (func chapter_props : base/chapter (chapter :name "Props")) (func chapter_cast : base/chapter (chapter :name "Cast" :sectionmap (sectionmap "Memorable Characters" (section :name "Memorable Characters" :summary "* When creating characters, it is helpful to have at least one unique detail that makes that character singulary memorable. In the future, this may be the one thing that players remember about the character and can bring back memories by itself. Be careful to avoid sterotyping, because that will defeat the uniqueness you need and risks making the character cartoonish (unless that is what you are going for).") "Stock Characters" (section :name "Stock Characters" :summary "* Boy Scout - How can a corrupt police force uphold justice? * Devoted Sidekick - You're going to need help, and I'm coming with you. * Elitist - We're the ones who matter and everyone else can go to hell! * Femme Fatale - I'm not very good at flirting. I don't usually talk to men unless I'm really interested. ** All curves inside and out, there's nothing simple about the Femme Fatale. At times bold and brassy, other times vulnerable and frightened, she's always in control and always utterly deadly, but most victims don't realize until it is too late. * Hard Nosed Cop - I don't care if the cuffs are too tight. They're supposed to be. * Has-Been - I used to be able to do that, but I haven't tried in years. * Manipulator * Innocent Victim - My shop...my house! How am I going to live? That thing took everything I had. * Inscrutable Stranger * Not-So-Innocent Victim - I didn't mean I would ACTUALLY kill him. It was a figure of speech! And now look what he did! Who is going to pay for this? * Lover - Come home in one piece, ok? I love you. * Plucky Bystander - What the hell was that? Nevermind. Hey, you're bleeding. Wrap this around your arm and keep pressure on it. I'll watch the door, ok? * Rival * Seducer - Come on, you can get away for one night. You have to see this place. It's stunning, and the people! So friendly. It's just something you have to see. * Smooth Talker - I could call the super for the key. I'm sure he won't mind coming in at this hour. He is a kind old man even if the stroke did change him. * Sullen Detective - Leave him here. A loser like him'll get picked up for something eventually. * Thrill-Seeker - Here, try this: First throw the parachute out, count to five, then jump out after it, without a jumpsuit! * Turncoat - I informed the Supervisor that progress is virtually nonexistant. He was very impressed with my proposal to get things back on schedule. He should be here momentarily to discuss it."))))
nx/tactics/books/characters / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Characters" :image "Characters.jpg" :chaptermap (base/chaptermap "Characters Overview" (chapter_characters_overview) "Creating Characters" (chapter_creating_characters) "Character Archetypes" (chapter_character_archetypes) "Storytelling" (chapter_storytelling) "Sets" (chapter_sets) "Props" (chapter_props) "Cast" (chapter_cast) )))
nx/tactics/books/characters / chapter_characters_overview
Description:
Function Name:
  • chapter_characters_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_characters_overview : base/chapter (chapter :name "Characters Overview" :sectionmap (sectionmap "Why Tactics: Characters and Stories?" (section :name "Why Tactics: Characters and Stories?"))))
nx/tactics/books/characters / chapter_creating_characters
Description:
Function Name:
  • chapter_creating_characters
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_creating_characters : base/chapter (chapter :name "Creating Characters" :summary "* Attributes * Skills * Equipment * Personality * History * Friends and Family ** Dependents * Enemies ** Hunted" :sectionmap (sectionmap "Friends and Family" (section :name "Friends and Family" :rulemap (rulemap :Adult (rule :name "Adult") :Animal (rule :name "Animal") :Child (rule :name "Child") :Couple (rule :name "Couple") :Co-worker (rule :name "Co-worker") "Emergency Worker" (rule :name "Emergency Worker") :Family (rule :name "Family") :Friend (rule :name "Friend") :Kid (rule :name "Kid") "Love Interest" (rule :name "Love Interest") :Pet (rule :name "Pet") :Relative (rule :name "Relative") "Senior Citizen" (rule :name "Senior Citizen") "Store Employee" (rule :name "Store Employee") :Teenager (rule :name "Teenager"))) "Character Rules" (section :name "Character Rules" :rulemap (rulemap :Beast (rule :name "Beast" :reference "* The Krell forgot one deadly danger - their own subconscious hate and lust for destruction. The beast. The mindless primitive! - Morbius, Forbidden Planet * Guilty! Guilty! My evil self is at that door, and I have no power to stop it! - Morbius, Forbidden Planet" :summary "* Caged Beast - The Beast is a savage, nearly mindless, latent personality. It is normally powerless, contained by the [Mind] in civilized men. It can, however, gain power and even dominance in those with weak minds or those who cultivate it such as from [Berserker], [Lycanthropy], or [Vampirism]. * Succumb to the Beast - Whenever a unit's [Mind] is reduced to 0 or is lowered below its Beast rating, roll Beast vs. [Mind]. If the Beast wins, it gains control of the unit until [Mind] exceeds Beast again (if ever). * Fight or Flight - While the Beast is dominant, the unit gains +1 to all Melee or Close Combat attack rolls. It also always uses its Beast rating instead of [Mind]. Unfortunately, it may only use [Physical Skills]. When in combat, it will always attack the closest target (friend or foe) with Melee or Close Combat. Because the Beast is easily surprised, all [Retreat]s against it are doubled." :titles "Id, Reptile Brain, Yang") :Shadow (rule :name "Shadow" :reference "* Hello darkness, my old friend. I've come to talk to you again. - Simon and Garfunkle, Sound of Silence * Anyone who fights with monsters should take care that he does not in the process become a monster. And if you gaze for long into an abyss, the abyss gazes also into you. - Friedrich Nietzsche, Beyond Good and Evil * Hannibal Lecter * Even if I wanted to go, my schedule wouldn't allow it. 4:00, wallow in self pity; 4:30, stare into the abyss; 5:00, solve world hunger, tell no one; 5:30, jazzercize; 6:30, dinner with me - I can't cancel that again; 7:00, wrestle with my self-loathing... I'm booked. Of course, if I bump the loathing to 9, I could still be done in time to lay in bed, stare at the ceiling and slip slowly into madness. But what would I wear? - Grinch, The Gringe Who Stole Christmas * If once you start down the dark path, forever will it dominate your destiny - Yoda, Star Wars: The Empire Strikes Back * A farmer comes home one day to find ... everything that he loved, taken from him. His children. One can only imagine the pit of despair, the hours of Job-like lamentations, the burden of existence. He makes a promise to himself in those dark hours. A life's work erupts from his knotted mind... Years go by... The farmer, who is no longer a farmer, sees the wreckage that he has left in his wake. It is now he who burns. It is he who slaughters, ... and he knows in his heart, he must pay. - Red Reddington, The Blacklist * No one escapes their shadow. - Zed, Runeterra * When I find out someone murdered an innocent person, or sold somebody heroin, or did some graffiti, and I kill that person with my bare hands, their eyeballs popping out of their skulls... You think THAT gives ME pleasure?... Well, it does!... What separates us from the other killers, is we only kill bad people. Usually... Unless there's a mistake. Now, do I sound like a fucking maniac? - Vigilante, Peacemaker" :summary "* Lurking Shadow - The Shadow is a devious, sociopathic, latent personality. It is normally powerless, surpressed by the [Spirit] in civilized men. It can, however, gain power and even dominance in those with weak wills or those who cultivate it such as from [Corruption], [Darkness], [Fleshcraft], [Intimidation], or [Necromancy]. * Cruel and Unusual - The Shadow silently observes all that the person experiences. It has nothing but contempt for others as well as the [Spirit] that keeps it contained. As the manifestation of the unit's dark dreams, twisted desires, and bizarre megalomania, the Shadow reinforces its own superiority by exerting power over others. Manipulating, dominating, and causing physical or emotional pain is a siren's call that the Shadow cannot refuse. * Consumed by Shadow - Whenever a unit's [Spirit] is lowered to 0 or below its Shadow rating, roll Shadow vs. [Spirit]. If the Shadow wins, it gains control of the unit until [Spirit] exceeds Shadow again (if ever). * Rising Shadow - While the Shadow is dominant, the person always uses its Shadow rating instead of [Spirit]. The Shadow will always act toward its, usually immediate, self interest. It will usually not aid its allies in any way. Because the Shadow is self absorbed, all [Retreats] against it are doubled, but failure feeds its insecurities, so retreat is emotionally devastating and can lead to the [Spirit] taking charge again." :titles "Darkness, Darkside, Pedophile, Sadist, Serial Killer, Sociopath, Yin") :Banality (rule :name "Banality" :summary "* Banality is the grip of the mundane, day-to-day world. It is the opposite of Art and creativity. Banality encourages us to perform mindless, repetitive tasks without creativity or expression. Watching television is the ultimate expression of Banality. * If Banality exceeds [Spirit], all Artistic or Magical skills are reduced by the difference between Banality and [Spirit]."))) :Personalities (section :name "Personalities" :summary "Positive * Adventurous - Someone who is adventurous enjoys adventure and takes risks. * Affectionate - Someone who is affectionate shows their love for other people. * Ambitious - A person who is ambitious wants to be successful in their career, studies, sport. * Brave - A brave person wants to do difficult or challenging things and is not afraid. * Chatty - Someone who is chatty enjoys talking to other people a lot. * Cheerful - A cheerful person smiles a lot and is happy. * Confident - Confident people feel sure about their own ability and present themselves well to other people. * Creative - Someone who is creative is very good at designing or making things. * Determined - A determined person makes a definite decision and does not give up. * Easy-going - Someone who is easy-going is quite relaxed and accepts things as they are. * Enthusiastic - Someone who is enthusiastic shows lots of interest in something and is very positive about it. * Frank - Someone who is frank is honest and direct in what they say. * Friendly - A friendly person always talks to other people and perhaps helps them too. * Funny - Someone who is funny makes people laugh. * Generous - A generous person is kind to other people, may give presents or lend money. * Hard-working - Someone who is hard working always puts a lot of effort into their work. * Helpful - A helpful person is always happy to help other people. * Honest - An honest person tells the truth and never steals or cheats. * Imaginative - An imaginative person has good ideas or is good at creating stories or artwork. * Intelligent - Someone who is intelligent is good at learning. This person may think about things in a logical way. * Kind - A kind person cares about other people and behaves positively towards them. * Loyal - Someone who is loyal will always support his or her friends. * Meticulous - A meticulous person pays careful attention to detail, probably has a tidy house and neat handwriting! * Modest - Someone who is modest does not show off about his or her abilities or possessions. * Optimistic - An optimistic person has a positive view of life and expects good things to happen. * Outgoing - An outgoing person is very sociable. * Patient - Someone who is patient does not get annoyed or frustrated easily and has time for other people. * Reliable - A person who is reliable can always be trusted to do what is required. * Sensible - A person who is sensible makes decisions based on reason/logic, does not take risks. * Sensitive - A sensitive person is very aware of other people’s feelings, can be easily hurt emotionally * Sincere - A sincere person is honest in their relationships with others and says what they think or feel. * Sociable - Someone who is sociable loves chatting with other people. * Sympathetic - Someone who is sympathetic understands other people’s problems very well. * Thoughtful - Someone who is thoughtful always thinks of other people, remembers birthdays and sends a card! * Trustworthy - A trustworthy person is someone you can rely on to be honest. Negative * Arrogant - An arrogant person thinks they are very important and behaves in a overly proud way. * Big-headed - Someone who is big-headed talks a lot about how good they are, this person is too proud. * Bossy - A bossy person is always telling other people what to do. * Childish - Someone who is childish is silly or behaves like a child when they should behave like an adult. * Clumsy - A clumsy person knocks things over a lot and is not careful. * Cruel - Someone who is cruel is extremely unkind to other people or animals. * Defensive - Someone who is defensive behaves in a way that suggests they believe other people are criticising them. * Dishonest - A dishonest person tells lies or tricks other people. * Fussy - A fussy person wants everything to be done in a particular way, they are picky/choosy. * Grumpy - Someone who is grumpy is easily annoyed, in a bad mood. * Gullible - It is easy to trick someone who is gullible. This person believes something that most people would not believe, being naive * Impolite - An impolite person is rude. * Inconsiderate - Someone who is inconsiderate does not think about other people, quite selfish. * Indecisive - An indecisive person finds it difficult to make decisions. * Inflexible - Someone who is inflexible is unwilling to change their opinion or the way they do things. * Insecure - An insecure person does not have confidence in themselves or their relationship with other people. * Jealous - A jealous person feels angry or unhappy because they wish they had something that somebody else has. * Lazy - A lazy person does not work hard. * Mean - Someone who is mean is unkind. * Moody - A moody person is bad-tempered or has frequent mood changes. * Narrow-minded - A narrow-minded person is not willing to listen to the ideas or opinions of others. * Nasty - A nasty person is very unkind. * Pessimistic - Someone who is pessimistic has a negative view of the future and expects bad things to happen. * Pretentious - Someone who tries to look or sound more important or clever than they are. * Rebellious - Someone who is rebellious does not follow the rules. * Rude - A rude person is not polite or does not respect other people. * Quick-tempered - Someone who is quick-tempered becomes angry very easily. * Self-centered - A person who is self-centred only thinks about himself or herself. * Selfish - Selfish people think only about themselves and not about other people. * Stubborn - Someone who is stubborn does not easily change their mind. * Sulky - If someone is sulky they show their bad mood by not speaking. * Tactless - A tactless person does not show sensitivity to others in what they say, not diplomatic. * Unpleasant - An unpleasant person is not nice. * Unreliable - An unreliable person cannot be trusted or relied upon. * Vain - Someone who is vain is too concerned about their appearance or abilities."))))
nx/tactics/books/characters / chapter_character_archetypes
Description:
Function Name:
  • chapter_character_archetypes
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_character_archetypes : base/chapter (chapter :name "Character Archetypes" :summary "* Antihero * Bad Boy * Bumpkin * Coutier - Politics, Etiquette, Psychology, Fashion * Crafter * Damsel * Fatalist - Nihilist * Fool * Grotesque * Hermit * Knight in Shining Armor * Mysterious * Orchid - Pampered Life * Outlaw * Peacock - Showoff * Rake - Pleasure seeker * Regent - Leader * Rogue * Sage * Saint * Savage * Trickster - Riddler * Troubadour * Wayfarer - Wanderer * Wretch" :sectionmap (sectionmap "Warrior Classes" (section :name "Warrior Classes" :unitmap (unitmap :Gladiator (unit :name "Gladiator" :summary "* Preferred Skills: [Melee Combat]:Spears, Flexible Weaponry, [Close Combat]:Grappling, [Athletics], [Evasion]") :Knight (unit :name "Knight") "Martial Artist" (unit :name "Martial Artist" :summary "* Preferred Skills: [Close Combat]:Martial Arts, [Evasion], [Acrobatics]") :Paladin (unit :name "Paladin") :Ranger (unit :name "Ranger" :summary "* Preferred Skills: [Ranged Combat]:Archery, [Hunting], [Forestry], [Riding]") :Samurai (unit :name "Samurai" :summary "* Preferred Skills: [Melee Combat]:Swords, [Ranged Combat]:Archery, [Riding], [Evasion]") :Soldier (unit :name "Soldier" :summary "* Preferred Skills: [Melee Combat], [Military], [Armor]") :Warrior (unit :name "Warrior" :summary "* Preferred Skills: [Melee Combat], [Armor], [Riding]"))) "Rogue Classes" (section :name "Rogue Classes" :unitmap (unitmap :Assassin (unit :name "Assassin" :summary "* Preferred Skills: [Assassination], [Ranged Combat]:Thrown Weapons") :Bard (unit :name "Bard" :summary "* There is magic in music, song, and story. The Bard has learned that a story properly told can make a frightened man brave or a starving man strong. The rhythm of his speech, the cadence of his tone, and the lilt of the melody all weave a pattern of the skilled Bard's choosing. * Bardic training allows a Bard to remember and recite almost every story or song they have heard. For this reason, Bards are vast storehouses of knowledge, but their information often blurs reality and fiction. * Bards are generally wanderers, traveling from town to town spreading ideas (creating dissent or harmony) wherever they go. * Preferred Skills: [Performance]:Music, [Deception], [Persuasion], [Knowledge], [Stealth]" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth"))) :Charlatan (unit :name "Charlatan" :summary "* Preferred Skills: [Performance], [Deception]") :Ninja (unit :name "Ninja" :summary "* Preferred Skills: [Assassination], [Melee Combat], [Deception], [Stealth]") :Rogue (unit :name "Rogue" :summary "* Preferred Skills: [Crime], [Close Combat]:Knives, [Deception], [Stealth]") :Scout (unit :name "Scout" :summary "* Preferred Skills: [Scouting]") :Spy (unit :name "Spy" :summary "* Preferred Skills: [Espionage], [Scouting], [Stealth]") :Thief (unit :name "Thief" :summary "* Preferred Skills: [Thrown Weapons], [Deception]:Thievery, [Mechanics], [Climbing], [Acrobatics], [Scouting], [Stealth]"))) "Mentalist Classes" (section :name "Mentalist Classes" :unitmap (unitmap :Illusionist (unit :name "Illusionist") :Mentalist (unit :name "Mentalist"))) "Spiritualist Classes" (section :name "Spiritualist Classes" :unitmap (unitmap :Druid (unit :name "Druid" :summary "* Preferred Skills: [Nature Magic], [Herbalism], [Aeromancy]") :Monk (unit :name "Monk" :summary "* Preferred Skills: [Martial Arts]:Striking, [Mind Over Body]") :Priest (unit :name "Priest") :Shaman (unit :name "Shaman") :Witch/Warlock (unit :name "Witch/Warlock") "Witch Doctor" (unit :name "Witch Doctor"))) "Wizard Classes" (section :name "Wizard Classes" :unitmap (unitmap :Alchemist (unit :name "Alchemist") :Artificer (unit :name "Artificer") :Elementalist (unit :name "Elementalist" :summary "* Preferred Skills: Elemental Magic") :Necromancer (unit :name "Necromancer") :Sorceror (unit :name "Sorceror") :Wizard (unit :name "Wizard"))))))
nx/tactics/books/characters / chapter_storytelling
Description:
Function Name:
  • chapter_storytelling
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_storytelling : base/chapter (chapter :name "Storytelling" :summary "* As Storyteller you're part artist, part writer, and mostly editor. You design the overall plots and subplots, draw out the backgrounds, design the greater part of the cast and improvise dialog as the story goes. By describing the world around them, you help to define the characters. Daunting? Sure. But it's not as impossible as it sounds. * Don't try to win. Tell a story - Storytelling isn't about winning and losing. It is about drama and interaction. Trying to meet objectives is just a device to achieve drama. A story may be more interesting if the objective is failed. * Players are not your opponents - It is important to remember that the players and storyteller are both responsible for creating an interesting story. * Don't try to maintain control - Instead of a detailed plot, try to create detailed situations that will play out without the characters' involvement. Then let the players make their own decisions. The storyteller sets up the situation and the sets and props. The players do the acting. Test yourself by not talking every once in a while and listen to the players. If they go silent waiting for you, then something is wrong. If they are deeply interacting with one another and haven't noticed your silence, you are doing it right. * Understand the Players - Some play to gain a sense of power, others for the social aspects of being with friends, and others as a means of wish fulfillment. Some prefer fighting deadly foes, others prefer puzzles and riddles, others simply enjoy talking in character and engaging in political infighting or witty repartee. All of these desires must be juggled and given some space in the game. Some players are vocal and aggressive while others are shy or have trouble putting their ideas into words. * Offer Variety - Luckily juggling different player needs provides variety and a change of pace. Switching from action to drama to tragedy to comedy provides depth and realism to the story. Life never stays the same after all. Be sure to vary the focus of the game onto each player. Some players will regularly take the focus themselves while you must steer the story toward other players by allowing them to notice things the busier players miss or by revolving plot points around skills or special knowledge that only some players possess. If players become bored, the story will die." :sectionmap (sectionmap :Roleplaying (section :name "Roleplaying" :rulemap (rulemap :Troupes (rule :name "Troupes" :summary "* Optional Rule * Instead of playing a single character, each player controls several characters of different types, selecting the most appropriate for the given situation. This can free the Storyteller from roleplaying theses characters while giving the player more opportunity to vary their playsstyle. * This rule can be particularly appropriate when there are few players or a number of lesser follower characters."))) "Story Elements" (section :name "Story Elements" :rulemap (rulemap :Theme (rule :name "Theme" :summary "* This is a short phrase that encompasses the core idea behind the Story. If all elements of the Story support the Theme, then the Story can maintain meaning and depth. There may be more than one theme in a Story which can bring each into sharper focus and provide greater resonance. Even themes working at cross-purposes can strengthen each other through their juxtaposition. * Good execution of a Theme should be fairly subtle, so the players don't see a grand plan until they look back. * Examples: ** Isolation/Alienation ** Fall and Redemption ** Hero's Journey ** Love Conquers All ** Power Corrupts ** Science Dehumanizes ** We must all work together to survive ** Family Ties ** Romance - Arthur, Lancelot, and Guinevere, Tristan and Isolde ** Wonder - Children share a hope and belief that they are immortal and that wishing on a star can make anything happen. Recreate that wonder. ** Nightmares - Identical and opposite to Wonder, Nightmares hold fears darker than reality. Recapturing the magic of Nightmares is just as powerful as Wonder. ** Tragedy ** Freedom/Wildness - A sense of freedom can be exhilarating, but some beings cannot tell the difference between creative and destructive behavior. ** Madness - What happens when a character's differences are not understood by those they trust? Lack of acknowledgement from others leads to self-doubt and internalization. This can lead to isolation or irrational behavior which can potentially lead to madness. Madness can take many forms and can result in being manipulated, villainy, destruction, institutionalization, homicide, or suicide. The challenge to madness is can the downward spiral be interrupted before it is too late. Many of the greatest villains were potentially good people but for their madness. ** Humor - Humor can be light or dark and is always a useful way to relieve the tension and avoid a story becoming overly serious while creating a new opportunity for tension to build.") :Mood (rule :name "Mood" :summary "* Mood represents the emotional tone of the Story. If the players can relate to their characters emotionally, the world will become much more vivid. Ideally never mention the intended mood but instead take every opportunity to subtly reinforce it again and again. * First impressions are important, so try to establish mood early using music, lighting, sound effects, or tone of voice. Maintaining mood can be more difficult than establishing it. Players will often break tension or speak out of character. They may intend to break the mood, so just try to ignore these and carry on. * Examples include Awe-inspiring, Bawdy, Brooding, Carefree, Comical, Dark, Dreadful, Fearful, Hopeful, Horrific, Merry, Ominous, Paranoid, Tragic") :Sound (rule :name "Sound" :summary "* Music is an almost mandatory part of roleplaying. It adds extra flavor to the game and needs only minimal preparation. The choice of music is up to the group but it should be fast paced and stimulating unless more specific mood music would be in order. * Other sound effects can have an amazing effect when properly timed. A simple sound effects machine can be very useful.") :Setting (rule :name "Setting" :summary "* Setting encompasses the backdrops and environments where the Story takes place. * Some extra thought should be paid when choosing locations and detailing them to be rich unique atmospheres. * Avoid overly sterotypical locations and try to lavish them with subtle details including light, color, open space, background noise, music, smell, temperature, touch, taste. Each location should also have one particularly memorable feature that is subtly reinforced. * Metaphors and similes are good ways to express details and tone. * Setting Ideas: Penthouse, Mansion, Yacht, Cruise Ship, Social Club, Restaurant, Bar, Theater, Sporting Event, Shopping Center, Amusement Park, Carnival, Circus, Movie Set, TV Studio, Park, Zoo, Brothel, Casino, Gambling Club, Slaughterhouse, Graveyard") :Conflict (rule :name "Conflict" :summary "* Every Story involves some sort of conflict. Something opposes the characters goals or there is no point to the Story. No one cares about a girl who walks to the store and buys a loaf of bread, but if the girl is a starving orphan trying to feed her younger siblings and she makes her way through a snowstorm despite a broken leg, we are more likely to pay attention. * Conflict may involve enemies, the environment, other players, themselves.") :Intrigue (rule :name "Intrigue" :reference "* The greatest trick the devil ever pulled was convincing the world he didn't exist - Verbal Kint, The Usual Suspects" :summary "* Everyone has an agenda. Sometimes that agenda is obvious. Sometimes a person is unaware of what drives him/her. Even without secret agendas, the interaction between peoples goals are complex and subtle. * Some ambitious people will use secret agendas and plots to further their goals. When others run afoul of these plots, they may find unexpected conflict or unwittingly become a pawn in someone else's game. * The most successful plots are never detected. They are shielded by false goals and red herrings.") :Suspense (rule :name "Suspense" :summary "* What is Suspense? ** The feeling of uncertainty, anxiety, and anticipation felt while waiting for a specific outcome. ** Creates a sense of mystery and urgency ** Makes the audience wonder and worry about the characters' futures * How to create Suspense? ** Promise disaster. Send a signal that something bad can or will happen. ** Make the audience wait for resolution. But don't have them sitting around. Have them actively doing something while disaster approaches. This can be directly toward the disaster or a frustrating tangent. ** Deliver the outcome. Good or bad whatever happens, disaster may strike, the characters may get to safety. Either way, make sure there is a clear payoff.") :Prologue (rule :name "Prologue" :summary "* Some Stories may benefit from a brief side Story that sets the tone, describes history, brings the players together. * Prologues can take place long before the events of the main story.") :Plot (rule :name "Plot" :summary "* The Beginning - The Story introduces the [Setting] and the [Conflict]. * The Middle - The true nature of the [Conflict] is expanded and developed. * The End - The Story reaches its climax and possibly resolution. The drama of the Story is about how things will resolve. Here is where the players must decide their own fate. They have had their opportunities to shape their destinies. Now they must pass their final test. Do or Die, Succeed or Fail, Fight or Compromise.") :Scenes (rule :name "Scenes" :summary "* The story will move from scene to scene. Each scene includes: * Sets * Props * Cast After the scene has completed its purpose, we move to the next scene: * Scene Goals") "Story Ending" (rule :name "Story Ending" :summary "* Climax * Anti-Climax * Surprise Ending") :Epilogue (rule :name "Epilogue" :summary "* Are there any loose ends that hint at the next story." :titles "Aftermath"))) "Plot Archetypes" (section :name "Plot Archetypes" :rulemap (rulemap "Armed Robbery" (rule :name "Armed Robbery") :Assault (rule :name "Assault" :summary "* An all out attack on an enemy stronghold.") "Assault Defense" (rule :name "Assault Defense" :summary "* Defend your stronghold against an enemy assault.") "Bank Robbery" (rule :name "Bank Robbery") :Betrayal (rule :name "Betrayal" :summary "* The plot appears to be another kind, but the characters realize they have been betrayed. They must now escape or gain revenge.") :Blackmail (rule :name "Blackmail") "Bug Hunt" (rule :name "Bug Hunt" :summary "* A killer is on the loose and must be tracked down.") :Bullying (rule :name "Bullying") "Car Theft" (rule :name "Car Theft") :Conspiracy (rule :name "Conspiracy" :summary "* A group plans a course of action which the characters directly or indirectly.") :Crash (rule :name "Crash") "Cyber Crime" (rule :name "Cyber Crime") "Dangerous Animal" (rule :name "Dangerous Animal") "Disease Outbreak" (rule :name "Disease Outbreak") "Drug Trafficking" (rule :name "Drug Trafficking") :Extortion (rule :name "Extortion") :Escape (rule :name "Escape" :summary "* The characters are threatened with overwhelming danger and must find a safe place and travel there while dodging aggressors.") :Falling (rule :name "Falling") :Framing (rule :name "Framing" :summary "* Characters are maneuvered into a situation where it appears they have committed an offense. This may lead to an escape and a mystery.") :Gambling (rule :name "Gambling") "Gang Activty" (rule :name "Gang Activty") :Guard (rule :name "Guard" :summary "* Guard a person or item from theft.") :Hacking (rule :name "Hacking") :Hostages (rule :name "Hostages") :Injustice (rule :name "Injustice" :summary "* A wrong has been perpetrated and the characters feel obliged to right it.") :Intimidation (rule :name "Intimidation") :Jealosy (rule :name "Jealosy" :summary "* The characters have inspired envy or jealousy in another and steps are being taken against them. Their enemy may be someone they recently crossed.") :Kidnapping (rule :name "Kidnapping") :Lost (rule :name "Lost") "Love Affair" (rule :name "Love Affair" :summary "* The characters become involved in the love or lust of another. The other person could be another character. The attention could be mutual or one-sided. It may lead to courtship, uncomfortable situations, anger, violence or any other outcome. Such are the ways of love.") "Missing Person" (rule :name "Missing Person") :Mystery (rule :name "Mystery" :summary "* Events have taken place and the characters must find out what it all means, who is behind it, and what actions to take.") "Organized Crime" (rule :name "Organized Crime") :Panic (rule :name "Panic") "Petty Theft" (rule :name "Petty Theft") :Poisoning (rule :name "Poisoning") "Police Activity" (rule :name "Police Activity") "Political Situation" (rule :name "Political Situation") :Prostitution (rule :name "Prostitution") :Protest (rule :name "Protest") :Pursued (rule :name "Pursued") :Rescue (rule :name "Rescue" :summary "* The characters must penetrate and enemy stronghold and find an ally, and escape.") :Revenge (rule :name "Revenge") :Siege (rule :name "Siege") "Siege Defense" (rule :name "Siege Defense" :summary "* Your stronghold is surrounded. You must escape or break the siege.") :Trapped (rule :name "Trapped") "Treasure Hunt" (rule :name "Treasure Hunt" :summary "* Something of value is discovered and the characters must find it before anyone else does.") "White Collar Crime" (rule :name "White Collar Crime"))) :Subtleties (section :name "Subtleties" :rulemap (rulemap :Antagonist (rule :name "Antagonist" :summary "* A compelling antagonist can be as important as the main characters. Defeating the antagonist personifies the characters' goals. Protagonists can only rise as high as the antagonist sinks low. Antagonists need not be villainous. They just create obstacles for characters for their own ends. Many simply have different beliefs or goals or can be misled. Real villains should be few and far between. * Personality - Evil, Moral, Noble, Corrupt, Misguided, Horrible * Motivation - Power, Money, Influence, Love, Friendship, Revenge, Protection * Type - Warrior, Manipulator, Leader * Influence - Elder, Commanding, Empathetic, Intellectual * Tools - Weapons, Minions, Contacts, Equipment, Skills, Powers * Obstacles - Own Enemies, Dark Past, Morality, Code of Honor * Development - Interactions with the Antagonist should change the antagonist as the relationship between the characters becomes personal. This can become hatred, rivalry, friendship, or even love.") :Villains (rule :name "Villains" :reference "* You're quasi-evil. You're semi-evil. You're the margarine of evil. You're the Diet Coke of evil. Just one calorie, not evil enough. - Austin Powers, Austin Powers: The Spy Who Shagged Me." :summary "* Remember that villians rarely see themselves as such. They are so wrapped up in their own motivations that they believe their actions are justified. * Evil - Movie villians often show their evil by killing the hero's girlfriend, best friend, or dog. These kinds of acts are suitable to minions and unimaginative villains. * Great Evil - Look around at the real world for examples. Adolf Hitler, Osama Bin Laden. They are impressive but can also seem like caricatures: black hats, almost clowns. * True Evil - True evil is not to be found in petty tyrants with guns and fumble-fingered power plays. The real horrors are those who hide behind noble purpose as they betray our trust. The greater our trust in them the greater the possibility of rank betrayal, the true horror. Starvation, war, genocide, and corruption blight our world of abundance and plenty. Self-serving leaders exploit public trust on a regular basis. Hidden powers lurk in the background, uninvited, unelected, and unwanted. Bureaucrats steal consitutional power from well-intentioned, cowardly, gullible, forgetful or senile leaders. Hidden forces wage covert wars, smuggling drugs, corrupting elections, assassinating leaders, and suppressing democratic dissent witho our money but without our consent. The reports we receive of their conduct are fragmented, incomplete, censored, and denied. In these covert wars, we citizens are arrayed against forces we cannot name or locate let alone effectively stand against. From Watergate to Iran-Contra to stolen Presidential elections and Presidential assassinations it is clear that it can and does happen here. The thought of an American coup d'etat is more frightening than any tales we can construct.") "Dream Sequences" (rule :name "Dream Sequences" :summary "* Dreams and Dream-like situations can be an interesting plot device and can also allow the character to rediscover their nature when put into unusual circumstances.") "Hero's Journey" (rule :name "Hero's Journey" :summary "* The Hero's Journey is the long and difficult process of making the hero a better person and worth of being a hero. * The Ordinary World - The hero lives a normal life but is usually incomplete in some way set apart from his peers. * The Call to Adventure - Suddenly something happens that warns that the hero's life will never be the same again. Often the hero rejects their destiny but eventually comes around. The hero leaves home, voluntarily or is cast out. * Meeting with the Mentor - The hero acquires a mentor who is the ideal for the hero. Eventually the hero must see through the ideal and accept the person behind the ideal. * The hero must confront the enemy and there will be defeats. Often the hero will be captured. * The hero must enter the Underworld. This may be a hellish place or the actual Underworld. Very often this is the heart of the enemy's domain. The hero must confront the pain and sorrow of existence and his own existence in particular. The hero's toughest battles will be those where he is confronting something within himself. * Crossing the First Threshold - The hero can no longer return to normal life. He must face a guardian that represents the danger that is coming. The threat is overwhelming and cannot be defeated alone. * Tests, Allies, and Enemies - Various trials and tribulations must be faced. Who may help or harm must be discovered. Aligning different character goals toward a common enemy allows the hero to gain a troupe of supporters. * Enter the Underworld - After discovering the nature of the true threat, the here must enter the belly of the beast where his/her very soul will be tested. * The Supreme Ordeal - This is downbeat and the heroes have seemingly lost all. The heroes face their greatest enemy, their worst failing, and do not succeed. They are struck down, cut off, lost. The heroes suffer symbolic death, 'bottom out', and face the ultimate darkness. * The Reward - The heroes have hunted the enemy to its lair, faced death, and lived to tell about it. Though all seems lost, they actually gain valuable information or treasures that make victory possible. * The Road Back - With rewards in hand, the heroes must escape the Underworld and race to the final confrontation. This scene is typically a chase with lots of movement and little combat, saving the fight for the final battle. * The Final Threshold - Here they must once again come face-to-face with death. They must be threatened and purified by the final danger. After this they are resurrected with the changes that the story has wrought upon them becoming clear. * The Return - After his journey is finished, the hero returns home. Rewards and recognition must be given, but more importantly the hero must realize how he has changed and what he has accomplished. Eventually he may become the mentor for another hero. As the story ends, all the remaining plotlines must be wrapped up, and the groundwork for a future story must be laid.") :Flashbacks (rule :name "Flashbacks" :summary "* Flashbacks are a staple of storytelling. Something triggers a memory, and the scene shifts to past events relevant to the current situation. * You may just narrate what happens or the players can act out the scene. * Flashbacks may be from the characters past or just related stories. However, be careful not to accidentally give away information in the flashback that the players could not already have. * Flashbacks can be particularly interesting for characters with past lives.") :Foreshadowing (rule :name "Foreshadowing" :reference "Communism was just a red herring - Wadsworth, Clue" :summary "* Foreshadowing is the art of carefully placing certain elements into a story early on to allude to events to come. This can help build suspense, since the characters may expect something to happen, but they won't know how, when, or to whom. * A Red Herring is the opposite of Foreshadowing. It introduces a seemingly important element early, but it turns out to be unimportant to the main story. Be careful not to abuse red herrings as they can become annoying.") :Meanwhile... (rule :name "Meanwhile..." :summary "* Take an opportunity every once in a while to take the players out of their characters and into a different set of characters in the same Theme. This may be a different part of the main Story or a parallel Story in another place or time. * This can also be a chance to focus on a single player while allowing the others to learn information that they will learn anyway." :titles "Crosscutting, Parallel Stories") :Motivation (rule :name "Motivation" :summary "* Motivating the characters is key. Never force them along the plotline. Lead them with tempting story hooks and strange riddles. If they take off in another direction, just follow along and either find another moment to reinject the next plot element or let the players drive the direction. * Don't forget to provide motivation for the antagonists as well. If your antagonists don't have believable goals, hopes, and dreams, they are not going to be very effective. Many of the best antagonists are not evil, but just have goals at odds to the characters. Nothing is more satisfying to layers than going after an opponent that they love to hate. Stock motivators: * Contacts - Contacts are a regular way to get information. They also often require help themselves in exchange for information. * Anoymous Tips - While providing information, tips complicate the matter greatly. Who sent it? How do they know where I am? Is this a trap? * Threats - If someone threatens you, you must be on the right track. Threats are meant to scare people of, but they tend to motivate characters instead. * Lulls - Nothing is more unsettling than a break in the action. If the opposition suddenly inexplicably withdraws, the tension is increased not decreased. What just happened? Has a major player entered or left the scene? Whatever awaits is probably worse than before. * Out of the Frying Pan - Simple operations can get complicated. The character was already involved, so there is often no turning back. * Smoking Gun - Catching people in the act will usually get people interest even if it is just for curiosity. Noisy investigators also run the risk of being mistaken for the culprit or framed. * Sudden Aid - Help out of the blue can feel like an immediate boon, but what is the motivation? Who benefits besides the character? What kind of payment will this entail? * Friend in Need - Friends, mentors, relatives, contacts seem to always be getting into trouble. This plot point can feel like the player is being manipulated unless they are currently involved with this friend, so it is best to be subtle. * Romantic Interest - This motivator can take many forms. The player or the romantic figure may not have the same feelings. Either could be trying to impress the other, get to know the other, or help the other. People do the silliest things for love, so foolish or dangerous activity is easily explained. * Personal Honor - Every character worth his salt will have a personal code of honor (even if they don't realize it). Challenging that code is a great way to motivate or to at least learn more about the character. * Loss - Losing something you were counting on is sure to make a bad situation worse. Loss of a possession, a guide, a mentor, a kidnapping, a motivation. Whatever it is, it will require a change of plans. * Profit - Money, prestige, power, and objects are always enticing. They, of course, also come with complications. * Group Affiliation - Teams, organizations, religious groups, cultural groups are all possible motivators. * Rivals - The involvement of rival organizations and individuals can be instant motivators to characters with a personal grudge.") :Coincidence (rule :name "Coincidence" :summary "* By repeating the appearance of certain props, characters, or plot elements, the players will begin to suspect that there is more to the Story than they understand. They may suspect conspiracies or higher powers, but will be unable to prove anything. Maybe there is something to all this or maybe not. Either way it can keep the players on their toes.") "Real Time Action" (rule :name "Real Time Action" :summary "* An extreme way to make the story gripping is to move the game into real time. Players only have as much time as their characters do to make decisions.") :Subplots (rule :name "Subplots") :Symbolism (rule :name "Symbolism" :reference "Sometimes a cigar isn't just a cigar... - Aberrant, RPG" :summary "* Symbolism can be littered through a story and can sometimes be detected subconsciously even when they are too subtle for the conscious mind. * Subtly is important, and it may be better if the player does not consciously realize the connections being made. If nothing else it is satisfying to the Storyteller and provides a source of additional detail. * One way to use symbolism is to subtly change the description of then environment to match the personality of the main character in a scene. * Examples: Tattered newspaper, broken glass, driving rain.") "Unlikely Allies" (rule :name "Unlikely Allies" :summary "* Characters who hate each other but are forced to work together is a plot twist that can be applied to any scenario. Success requires their cooperation, but they don't have to like it. * High drama and comedy can come from such pairings. * Crisis can breed intense personal bonds including close friendships and romantic attraction. And, of course, such relationships have a tendency to turn tragic.") "Plot Twist" (rule :name "Plot Twist" :reference "Sixth Sense, Usual Suspects" :summary "* Allies can become enemies. * Enemies may become sympathetic. * Characters and situations can have hidden dimensions that can change the meaning and purpose of the characters. * Note that the best plot twists are subtle."))) :Encounters (section :name "Encounters" :summary "* When characters travel, they may encounter others seemingly randomly. These encounters keep players on their toes as they are often vulnerable while travelling." :rulemap (rulemap :Traces (rule :name "Traces" :summary "* This type of encounter includes tracks, camp sites, lairs, skeletal remains, claw marks, spoor, or signs of a struggle. Such evidence indicates that something has passed through the area. Tracking skills increases the information derived from the site. This encounter can provide information, mislead, create suspense by foreshadowing, or simply to provide flavor.") :Sightings (rule :name "Sightings" :summary "* This encounter indicates a being or beings sighted at a distance. Typically this provides the opportunity to avoid a close encounter or to gain a tactical advantage. The observed being(s) mayh be foraging, scavenging, hunting, travelling, camping, sleeping, scavenging, hovering overhead, fighting, etc. Unusual events include: clan rivalry, courtship rituals, injury, illness, entrapment, crimes.") "Close Encounters" (rule :name "Close Encounters" :summary "* Close encounters require immediate action. All close encounters need not result in combat. Most creatures will not fight to the death and will abandon a fight that is not going well. * Encounters with others may be good, bad, or neutral. The reaction to one another is partly random, but mostly based on mutual history, race, attitude, caste, and courtesy. Characters who are good communicators will do better than others in these circumstances. Such encounters can introduce side characters and move the plot forward. * Sample travellers: Messengers, Traders, Refugees, Criminals, Victims, Armies, Priests, Monsters, Entertainers, Nobles, Craftsmen, Spies, Pilgrims, Patrols, Locals, Scholars, Charlatans, Thieves, Bandits."))) "Character Scenarios" (section :name "Character Scenarios" :scenariomap (scenariomap "Personal Quest" (scenario :name "Personal Quest" :summary "* These are usually intense stories deeply rooted in the desires and emotions of the characters. * Revenge, atonement, love, family obligations. * Quests drive characters beyond the bounds of propriety and moderation. Failed questors create some of the most classic villains (e.g. Darth Vader).") :Missions (scenario :name "Missions" :summary "* Missions usually begin as impersonal tasks assigned by someone else, probably to fulfill an agenda other than the character's own. Missions are rarely what they seem at the beginning and have a tendency to evolve into something more personal. * Often a character's agenda becomes at odds with the mission, and he/she must make some decisions about where they stand. * Some Missions require a certain amount of detective work before or during the Mission to discover the true goals and motivations behind the Mission.") "Damage Control Mission" (scenario :name "Damage Control Mission" :summary "* A specific form of Mission where a situation has already spun out of control and the characters are dispatched to 'fix' the situation. * Damage Control missions tend to be fast-paced with a rapidly deteriorating situation.") "Training Mission" (scenario :name "Training Mission" :summary "* Training scenarios can take many forms. They can put the characters in the position of student, teacher, or both. * Training can appear as another sort of scenario but has been carefully staged by the teacher. Or Training can spiral out of control and become a life or death struggle. * Training is also a convenient plot device to gather unrelated characters together.") "Disaster Mission" (scenario :name "Disaster Mission" :summary "* Sometimes bad things just happen. Suddenly, the characters are torn from their comfort zone and thrust into a new perspective. Disasters can be sever enough to create temporary alliances among enemies."))))))
nx/tactics/books/characters / chapter_sets
Description:
Function Name:
  • chapter_sets
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_sets : base/chapter (chapter :name "Sets" :sectionmap (sectionmap "Foreign Lands" (section :name "Foreign Lands" :summary "* Exotic locales can help support a sense of adventure. Familiar landmarks can form an interesting backdrop to the action. * Different locations separate the characters from their normal resources and patterns. The area they are in may also be particularly hostile to them as well. * Examples: Egypt, Mexico, Siberia, Niagara Falls, Baghdad, the White House, Tibet, Peru, the London Underground, Hong Kong markets, the Great Barrier Reef, Aztec ruins. * Remember getting there is half the fun, and getting out is twice as hard.") "Alien Environments" (section :name "Alien Environments" :summary "* Beyond traditional locations are the truly bizarre locations. * Examples: Underwater, polar ice caps, deserts, volcanos, lightless caverns, sunken ships, outer space, other times, the [Void], the [Underworld], Hell.") :Buildings (section :name "Buildings" :summary "* Abbey * Academy * Aqueduct * Archaeological Dig * Archive * Arena (of the Ancients) * Asylum * Aviary * Bar * Basilica * Bazaar * Beastiary * Belfry * Bridge * Campsite * Cantina * Castle * Cathedral * Cemetery * Citadel * City (of Brass, Forbidden, Forsaken, Sunken) * Cloister * Coliseum * Crematorium * Crypt * Encampment * Estate * Fort * Fortress (Dwarven, Elven, Ice) * Foundry * Fountain * Furnace * Garrison * Graveyard * Guildhouse * Haven * Hold (Dwarven) * Home * House * Keep * Laboratory * Library (of Alexandria) * Lighthouse * Lodge * Market (Black) * Marketplace * Mausoleum * Mine (Copper, Diamond, Gold, Silver) * Outpost * Palace * Palisade * Parapet * Parthenon * Port * Prison * Pyramid * Quarry * Rampart * Rectory * Reliquary * Ruins (Dwarven, Elven) * Sacred Ground * Sanctum * School * Shrine * Stadium * Standing Stones * Storehouse * Stronghold (Mountain) * Tavern * Temple * Tomb * Tower (Costal, Ivory) * Town (Square) * Township * Trade Route * Trading Post * Vault * Villiage * Wall (Great) * Watchtower * Well * Woodlot") "Character Places" (section :name "Character Places" :summary "* Archipelago * Atoll (Coral) * Basin (Jungle) * Bay * Bog (Peat) * Boneyard * Burrow * Chasm (Glacial) * Cave * Cavern * Canyon (Box, Winding) * Cliffs * Cove * Crater (Meteor, Smouldering) * Crevice * Delta (River) * Den * Desert * Dust Bowl * Everglades * Fissure * Flats (Salt) * Foothills * Forest (Petrified) * Garden * Glacier * Gorge * Graveyard (Elephant) * Grotto * Grove * Heath * Hellhole * Highlands * Hive * Irrigation Ditch * Island * Isle * Marsh (Salt) * Mesa * Mire * Oasis * Orchard * Peninsula * Pit (Bottomless, Breeding, Tar) * Plateau (Leng) * Pool (Reflecting, Spawning) * Prairie * Ridge * River (Underground) * Scrubland * Steppe * Thicket * Trench * Vale * Valley * Vein (Crystal) * Vineyard * Void * Volcanic Vent * Volcano (Dormant) * Vortex * Warren * Wasteland * Wastes (Forgotten, Forsaken)") :Settlement (section :name "Settlement" :summary "* Settlement Level describes the general size of a settlement. It determines the level of resources that can be bought and sold and the availability of exotic resources. Titles * Nomadic Tribe - Level 1 * Town - Level 4 * Large Town - Level 6 * Small City - Level 8 * City - Level 10 * Metropolis - Level 12 * Urban Sprawl - Level 14 * Planetary Sprawl - Level 16 * Galactic Empire - Level 20"))))
nx/tactics/books/characters / chapter_props
Description:
Function Name:
  • chapter_props
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_props : base/chapter (chapter :name "Props"))
nx/tactics/books/characters / chapter_cast
Description:
Function Name:
  • chapter_cast
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_cast : base/chapter (chapter :name "Cast" :sectionmap (sectionmap "Memorable Characters" (section :name "Memorable Characters" :summary "* When creating characters, it is helpful to have at least one unique detail that makes that character singulary memorable. In the future, this may be the one thing that players remember about the character and can bring back memories by itself. Be careful to avoid sterotyping, because that will defeat the uniqueness you need and risks making the character cartoonish (unless that is what you are going for).") "Stock Characters" (section :name "Stock Characters" :summary "* Boy Scout - How can a corrupt police force uphold justice? * Devoted Sidekick - You're going to need help, and I'm coming with you. * Elitist - We're the ones who matter and everyone else can go to hell! * Femme Fatale - I'm not very good at flirting. I don't usually talk to men unless I'm really interested. ** All curves inside and out, there's nothing simple about the Femme Fatale. At times bold and brassy, other times vulnerable and frightened, she's always in control and always utterly deadly, but most victims don't realize until it is too late. * Hard Nosed Cop - I don't care if the cuffs are too tight. They're supposed to be. * Has-Been - I used to be able to do that, but I haven't tried in years. * Manipulator * Innocent Victim - My shop...my house! How am I going to live? That thing took everything I had. * Inscrutable Stranger * Not-So-Innocent Victim - I didn't mean I would ACTUALLY kill him. It was a figure of speech! And now look what he did! Who is going to pay for this? * Lover - Come home in one piece, ok? I love you. * Plucky Bystander - What the hell was that? Nevermind. Hey, you're bleeding. Wrap this around your arm and keep pressure on it. I'll watch the door, ok? * Rival * Seducer - Come on, you can get away for one night. You have to see this place. It's stunning, and the people! So friendly. It's just something you have to see. * Smooth Talker - I could call the super for the key. I'm sure he won't mind coming in at this hour. He is a kind old man even if the stroke did change him. * Sullen Detective - Leave him here. A loser like him'll get picked up for something eventually. * Thrill-Seeker - Here, try this: First throw the parachute out, count to five, then jump out after it, without a jumpsuit! * Turncoat - I informed the Supervisor that progress is virtually nonexistant. He was very impressed with my proposal to get things back on schedule. He should be here momentarily to discuss it."))))
nx/tactics/books/combat
Description:
Package Name:
  • nx/tactics/books/combat
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_combat_overview, chapter_example_of_play, chapter_rules, chapter_skills, chapter_early_weaponry, chapter_modern_equipment, chapter_advanced_weaponry
Source Code:
  • (package nx/tactics/books/combat :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Combat" :image "Warrior.jpg" :chaptermap (base/chaptermap "Combat Overview" (chapter_combat_overview) "Example of Play" (chapter_example_of_play) "Rules" (chapter_rules) "Skills" (chapter_skills) "Early Weaponry" (chapter_early_weaponry) "Modern Equipment" (chapter_modern_equipment) "Advanced Weaponry" (chapter_advanced_weaponry) ))) (func chapter_combat_overview : base/chapter (chapter :name "Combat Overview" :sectionmap (sectionmap "Why Tactics:Combat" (section :name "Why Tactics:Combat" :reference "* Nothing is softer than water, yet water can defeat rock. It does not fight. It flows around the opponent... The true master lies within. Only you can free him. - Forbidden Kingdom") "Rate of Fire" (section :name "Rate of Fire" :summary "* Fully-Automatic Weapons - These weapons fire continuously as long as the trigger is held down, or until they run out of ammunition, or until the barrel warps from the heat. * Burst Weapons - This is usually a setting on Fully-Automatic Weapons that fires a number of shots, roughly 3, each time the trigger is pulled. This is a compromise between Fully and Semi-Automatic Modes. * Semi-Automatic weapons - These weapons are generally capable of fully automatic fire, but are limited to fire a single shot each time the trigger is pulled. As such, they are limited to the shooter's ability to pull the trigger, generally once every second.") "Aiming and Range" (section :name "Aiming and Range" :summary "* It takes 3 seconds to aim a weapon at a target. * Range - Each 50m range takes an additional 1 second to aim. Pistols incur -1 Attack per 50m. Rifles incur -1 Attack per 100m. * Aiming with a Scope - Using a scope triples the aim time and the effective range.")))) (func chapter_example_of_play : base/chapter (chapter :name "Example of Play" :sectionmap (sectionmap "Street Fight" (section :name "Street Fight")))) (func chapter_rules : base/chapter (chapter :name "Rules" :sectionmap (sectionmap :Levels (section :name "Levels" :reference "* The resistance to penetration of armor is related to the thickness of the steel - 2mm armor required about 3 times as much energy to defeat as 1mm armor. * By its apex, hardened steel plate was almost impregnable on the battlefield. Knights were instead increasingly felled by polearms such as the halberd and blunt weapons such as maces or war hammers that could send concussive force through the plate armor resulting in injuries such as broken bones, organ hemorrhage and/or head trauma. Another tactic was to attempt to strike through the gaps between the armor pieces, using daggers, spears and spear points to attack the man-at-arms' eyes or joints. * Weight - A full suit of medieval plate is thought to have weighed little more than 60 lb (27 kg) on average, considerably lighter than the equipment often carried by the elite of today's armies. If during the 14-15th centuries armour seldom weighed more than 15kgs, than by the late 16th century it weighed 25kg. The increasing weight and thickness of late 16th century armor therefore gave substantial resistance. * Proof - In the early years of pistol and arquebuses, firearms were relatively low in velocity. The full suits of armour, or breast plates actually stopped bullets fired from a modest distance. The front breast plates were, in fact, commonly shot as a test. The impact point would often be encircled with engraving to point it out. This was called the 'proof'. Rather than making plate armour obsolete, the use of firearms stimulated the development of plate armour into its later stages. * At the end of the 1800's silk body armor was worn by those who could afford it. The assassination of Arch-Duke Ferdinand that precipitated WWI was wearing silk body armor but was shot in the neck over the armor. A similar vest worn by Alfonso XIII of Spain saved his life in 1901. * Criminal gangs in late 1920's to early 1930's began wearing thick cotton and cloth suits that could absorb .22, .25, .32 Long, .32, .380 ACP, and .45 ACP rounds. To overcome this, law enforcement began using .357 Magnum rounds. * Club, Axe or Greek sword : 1kg ; used single handed ; 65 joules(48 ft lbs) * Club, Axe or Greek sword : 2kg ; used two-handed ; 130 joules(96 foot lbs) * Javelin :0.8 kg ; thrown, with run-up; 198 joules(146 ft lbs) * Javelin :0.8 kg ; thrown, one pace only; 111 joules(83 ft lbs) * Javelin :0.8 kg ; thrown standing; 60 joules(49 ft lbs) * Javelin :0.8 kg ; thrown, one pace with loop ; 160 joules(118 ft lbs) * Light spear or small sword/dagger :0.8 kg ; close combat ; 30 joules(24 ft lbs) * Sarissa :8(?)kg ; two-hand thrust,pace fwd ; 160 joules(118 ft lbs) * Spear-butt : various ; thrust down, coup-de-grace; 50 joules (40 ft lbs) * Energies of the order of 30-60 joules (24-49 ft lbs) could be given generally to typical Greek Hand weapons, and armour would need to resist this type of thrust, as well as slashing blows up to 60 joules(49 ft lbs) * Sling bullet :24g swung one handed ; 30-36 joules(22-27 ft lbs) * Light bow 20J at 50m, 15J at 100m, 9J at 200m (sufficient to penetrate flesh) * Heavy bow 30J at 50 metres, 26J at 100 metres, 20J at 200 metres * Ballistic Armor Level I protects against .22 cal Long Rifle and .38 * Ballistic Armor Level IIA protects against 9mm Low Velocity and .40 cal * Ballistic Armor Level II protects against 9mm and .357 Magnum * Ballistic Armor Level IIIA protects against High Velocity 9mm and .44 Magnum * Ballistic Armor Level III protects against 7.62 Rifle * Ballistic Armor Level IV protects against .30 cal Armor Piercing Rifle * All heavy armor penetration values are in mm of steel or equivalent at 30 degrees. * The 5.56 AP round penetrates 12mm at 100m. * The 7.92 MG round penetrates 13mm at 100m. * The 7.62 AP round penetrates 15mm at 300m. * .50 cal penetrates 20mm Armor * 20mm penetrates 30mm Armor. It took an average of twenty 20mm hits to shoot down a WWII bomber. * 30mm A-10 penetrates 69mm at 500m and 38mm at 1000m. A 30mm Autocannon could bring down a WWII bomber in 1-3 hits. * 40mm Bofors penetrates: 0 yards-2.7in (68mm), 2,000 yards-1.2in (30mm), 4,000 yards-0.60in, 6000 yards-0.45in. * 50mm PaK 38 was one of the few early guns capable of effectively penetrating the 45 mm armor of the formidable T-34 * The PaK 40 penetrates 100mm Armor and was effective against almost every Allied tank until the end of the war. * The Panther's 75 mm KwK 42 L/70 penetrates 120mm at 1000m * Very few Allied or Soviet weapons could penetrate the Panther's front armor. * Pershing's 90mm penetrates 110mm at 1000m * The Tiger's 8.8 cm KwK 36 L/56 penetrates 135mm at 1000m. * Whereas Panthers were the more serious threat to Allied tanks, Tigers had a bigger psychological effect on opposing crews, causing a 'Tiger phobia'. Allied tankers would sometimes evade rather than confront a Tiger, even a tank that only looked like one, such as the Panzer IV with turret skirts applied. In the Normandy campaign, it could take four to five Shermans to knock out a single Tiger tank by maneuvering to its weaker flank or rear armor; the Soviet T-34s fared similarly against the German tanks, as had the German PzIII earlier against the Soviet heavy tanks. An accepted Allied tactic was to engage the Tiger as a group, one attracting the attention of the Tiger crew while the others attacked the sides or rear of the vehicle. Since the ammunition and fuel were stored in the sides, a side penetration often resulted in a kill. This was, however, a risky tactic, and often resulted in the loss of several Allied vehicles. It took a great deal of tactical skill to eliminate a Tiger. * IS-2's A-19 122mm penetrates 150mm at 1000m and can go through the front and rear armor and the engine block of the German Panther tank. * The 17 pounder mounted on the Sherman Firefly was able to penetrate 131mm at 1000 meters, more than sufficient to defeat the German Tiger I and Panther tank at standard combat ranges. * Pershing 90mm APCR penetrates 192mm at 1000m * The Tiger II/Elefant/PaK43's 8.8 cm KwK 43 penetrates 165mm at 1000m * The M4 Sherman was unable to penetrate the front of a Tiger II even at point blank and the M26 Pershing and IS-2 had to come within 1300 m and 200 m respectively. * The Tiger II's 88 mm armament could penetrate 165mm at 1000m and destroy all Allied armor at a range far outside the effective range of the enemy's armament. Also, notwithstanding its reliability problems, the Tiger II was remarkably agile for such a heavy vehicle. Contemporary German records indicate that it had a lower ground pressure and was as maneuverable as the much lighter Panzer IV. * A typical modern lined shaped charge can penetrate armor steel to a depth of 7 or more times the diameter of the charge's cone (cone diameters, CD), though greater depths of 10 CD and above are now feasible. * The shaped charge of the PanzerFaust could penetrate up to 200 mm of steel, enough to defeat any armoured fighting vehicle of the period including T-34's and IS-2. * RPG-16 and M72 LAW can penetrate 300mm * RPG-22 can penetrate 400mm * RPG-7 can penetrate 500mm * M1 Abrams cannot penetrate its own 610mm Sloped Armor * RPG-29 can penetrate 750mm and has penetrated the front armor of a Challenger 2. * BLU-109 Penetrator - Penetration of reinforced concrete: 1.8 m (6 ft) * BLU-116 Advanced Unitary Penetrator (AUP), BLU-118/B Thermobaric Warhead - Penetration of reinforced concrete: 3.4m (11 ft) * BLU-113 Super Penetrator - Penetration of reinforced concrete: more than 6m (20 ft) * The crippled Bismark endured 5 torpedoes and a relentless attack by the 14 inch guns of 2 Battleships and the 8 inch guns of 2 Heavy Cruisers even at point blank range for over half an hour. The upper decks were destroyed, but the ship was still under power and the hull was relatively sound. It was finally scuttled by the crew. * Penetration of materials vs 5.56mm: http://www.inetres.com/gp/military/infantry/rifle/556mm_ammo.html ** The following stop a 5.56mm round fired at less than 50 meters: *** One thickness of well-packed sandbags. *** A 2 inch (51 mm) non-reinforced concrete wall. *** A 55 gallon drum filled with water or sand. *** A small ammunition can filled with sand. *** A cinder block filled with sand (block will probably shatter). *** A plate glass windowpane at a 45 degree angle (glass fragments may be thrown behind the glass). *** A brick veneer. *** A layer of books 18 to 24 inches (457 to 610 mm) thick. ** The following do not stop a 5.56mm round fired at less than 50 meters: *** Interior walls made of thin wood paneling, sheetrock, or plaster *** Common office furniture, such as desks and chairs *** Wooden frame buildings and single cinder block walls offer little protection from 5.56mm rounds. *** A car body (round will penetrate but normally not exit). * 40mm High Explosive dual purpse round ** Penetrate 2 inches (50 mm) of armorplate, 12 inches (300 mm) of pine logs, 16 inches (400 mm) of concrete blocks, or 20 inches (500 mm) of sandbags at ranges up to 1,312 feet (400 m). * Sandbags = 1/10th Steel * Concrete = 1/8th Steel * Pine Logs = 1/6th Steel http://www.panzerworld.net/armourpenetration" :summary "* Level * Damage * Armor (mm) * Energy (J) * Explosive Force (psi) * Mass (kg) The following table is an attempt to unify Damage, Armor, Energy, Explosive Force, Strength, and Mass together. This is done with the following premises: 1) Where possible use factual comparisons between Weapons and Armor that defeated those weapons. 2) Once damage and armor are mapped, the energy created from each firearm can be derived by muzzle velocity and weapon calibre. 3) Energy in Joules (J) is easily converted into explosive force measured in PSI 4) Energy may also easily be converted into a strength rating by determining how much mass that energy would lift over a person's head (3m) in 1 second. 5) Finally the mass rating from strength can be used as a general chart for mass (and by correlation Body). The formula is Energy = Mass (kg) * ((3m ^ 2) / 1s * 10m / 1s / 1s. Simplified the formula is Energy = Mass (kg) * 100." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2)))))) "Combatant Types" (section :name "Combatant Types" :rulemap (rulemap :Elite (rule :name "Elite" :summary "* Elite units gain +2 to all combat, morale, or military rolls.") :Mob (rule :name "Mob" :summary "* Mob units take -1 to all combat, morale, or military rolls. * When a Mob unit takes its action, other Mob units within 2 spaces must roll Will. If they fail, they immediately activate and attempt to move adjacent to the original Mob and perform the same action.") :Veteran (rule :name "Veteran" :summary "* Veteran units gain +1 to all combat, morale, or military rolls."))) "Melee and Close Combat" (section :name "Melee and Close Combat" :rulemap (rulemap :Aerial (rule :name "Aerial") :Crouching (rule :name "Crouching") :Duel (rule :name "Duel" :summary "* Choose an Ability - Each player secretly choose an [Ability] for this turn. * Determine Initiative - Each player begins bidding a [Speed] he/she will use before the [Ability]. * Take Turns - Each player takes their turn in the order of the final bidding. ** Move - The unit must use or discard at least the bid amount of [Speed] before it can take an [Action] ** Action - Reveal the chosen [Ability]. If the unit is in range of a target and has not used too much [Speed] to use the chosen [Ability], then it may use the ability now. ** Move - The unit may use any remaining [Speed].") "Finishing Move" (rule :name "Finishing Move" :summary "* Finishing Moves are powerful attacks that are usually only done when the opponent cannot defend. * [Move]: No movement this turn.") "Armor Facing" (rule :name "Armor Facing" :summary "* Armor is rarely uniform around a unit. * Determine the armor side you are targetting (i.e. Front, Rear, Side, Top, Under) by determining which of your opponents [Firing Arc]s your weapon lies in. * If facing still cannot be determined, then it is the defender's choice. * Infantry units may attack top or under armor if they are within 1 space of the target (assume grenades or other improvised weapons).") :Explosive (rule :name "Explosive" :summary `* 1 gram of TNT releases 1000 calories upon explosion or 4184J. 1 gram of sugar has abour 4x the energy. * 1g=4.184x10^3J, 1kg=4.184x10^6J, 1ton=4.184x10^9J, 1kt=4.184x10^12J, 1Mt=4.184x10^15J * Explosions Damage falls off by half (-1 Damage) for every 2m from the center. * Following a blast wave is a negative blast of 1/3 strength * Blasts are reflected and amplified by solid surfaces. A person between a blast and a building will suffer 2-3x the injury as those in open spaces. Blast Damage in Overpressure Po=0.34E/R^3 where Po= overpressure in pascals (about 6895 Pascals per psi.) E=energy, in joules (0.1 Kg TNT = 461,200 joules) R^3= the cube of distance, in meters And, IIRC 5 psi(35 Kpa): windows shattered, startled/stunned 20 psi: (140 kPa)lung damage, eardrums likely popped 35 psi (250 kPa): serious injury probable, death rare 200 psi (1400 kPa): mutilation .15 psi: Glass breaks .25 psi: Hurricane winds, injuries from flying glass .4 psi: Limited minor structural damage (windows broken, cracks in plaster, broken roof tiles) .7 psi: Minor damage to house 1 psi: Partial demolition of houses made uninhabitable 2 psi: Partial collapse of walls and roofs of houses, Residential structures collapse, injuries common 3 psi: Non-reinforced concrete or cinder wall shattered, steel frame buildings distored, 3000lb machinery unaffected, 10% eardrum damage 4 psi: Most buildings collapse except concrete, fatalities occur 5 psi: Wooden utility poles snap, 50% eardrum damage 6.3 psi: Lung haemorrhage damage 7 psi: Houses completely destroyed, loaded trains overturned 8 psi: Non-reinforced brick walls fail by shearing or flexure 9 psi: Loaded train boxcars demolished 10 psi: Buildings totally destroyed, 7000lb machines moved and badly damaged, 12000lb machines survive, Reinforced concrete buildings severly damaged, fatal injuries common 14.5 psi: 1% fatalities 17.5 psi: 10% fatalities 20.5 psi: 50% fatalities 25.5 psi: 90% fatalities 29.0 psi: 99% fatalities 500lb Bomb 1000lb Bomb 4000lb (2t) Blockbuster Bomb 'Cookie' 3/4 weight is explosive 8000lb (4t) Bomb 12000lb (6t) Tallboy 22000lb (11t) Grand Slam Earthquake Bomb 1kt Fission Bomb 10kt Fission Bomb 1Mt Fusion Bomb 10Mt Fusion Bomb Blast Radius: ~50mm 2m ~60mm 5m ~70mm 10m ~80mm 15m ~90mm 20m 105mm 25m 155mm 50m 203mm 80m ECR The effective casualty radius is defined as the radius of a circle about the point of detonation in which it may be expected that 50 percent of exposed troops will become casualties. The 40mm grenade has an effective casualty radius of 5 meters. 155mm (M107) 50m ECR 5"x54 (Mk64) 45m ECR 120mm (M934) 60m ECR 107mm (M329A2) 40m ECR 105mm (M1) 35m ECR 81mm (M935/M734) 40m ECR F/M252 81mm (M374A3) 34m ECR F/M29 60mm (M720/M888 ) 27.5 ECR`) "Anti-Missile Missile" (rule :name "Anti-Missile Missile" :summary "* Anti-Missiles are designed to intercept other missiles and explode in front of the incoming missile thereby destroying them. They can be used for other purposes, but their relatively large area and low payload limits their use to soft targets. Anti-Missiles can be used to intercept any missiles including those pursuing other targets and other Anti-Missiles. * [Reaction]: Attack other Missile") "Ballistic Missile" (rule :name "Ballistic Missile") "Cluster Missile" (rule :name "Cluster Missile" :summary "* Missile mounted with a cluster bomb warhead. * [Action]: Add a missile token in front of this unit. This missile is now a regular unit that must always full move taking at most 1 turn each move. The missile has [Action]: Make an attack against the 3 adjacent spaces toward the front of the missile, then remove the missile.") "Cruise Missile" (rule :name "Cruise Missile") "Guided Missile" (rule :name "Guided Missile") :Rocket (rule :name "Rocket" :summary "* Rockets are a form of missile that is designed to carry the maximum payload. They are, therefore, relatively large and slow compared to other missile types. They are unguided. * [Action]: Add a missile token in front of this unit. This missile is now a regular unit that must always full move and may not turn. The missile has [Action]: Make an attack against the current space, then remove the missile.") "Swarm Missile" (rule :name "Swarm Missile" :summary "* Series of small, linked missiles that individually have low yield but can be fired in varying numbers to strike either a single target or a large area.") :Torpedo (rule :name "Torpedo" :summary "* Torpedoes are a form of missile (usually underwater) that is designed to carry the maximum destructive payload. They are, therefore, relatively large and slow compared to other missile types."))) :Ammunition (section :name "Ammunition" :rulemap (rulemap "Acid Ammo" (rule :name "Acid Ammo") "Adhesive Ammo" (rule :name "Adhesive Ammo") "Anti-Laser Aerosol Ammo" (rule :name "Anti-Laser Aerosol Ammo") "Area Effect Ammo" (rule :name "Area Effect Ammo") "Armor Piercing Ammo" (rule :name "Armor Piercing Ammo") "Birdshot Ammo" (rule :name "Birdshot Ammo") "Buckshot Ammo" (rule :name "Buckshot Ammo") "Chemical Ammo" (rule :name "Chemical Ammo") "Firefighting Ammo" (rule :name "Firefighting Ammo") "Flare Ammo" (rule :name "Flare Ammo") "Flechette Ammo" (rule :name "Flechette Ammo" :summary "* This is kind of a shot-gun that fires a swarm of darts instead of buckshot ('flechette' is French for 'little arrow'). They look like nails. In the shell, a group of flechettes are held together by a plastic frame called a sabot, which falls away when the load exits the muzzle. Light flechettes are twenty to a shell, heavy are six to a shell. Like shotgun shells, they are good for causing large amounts of damage to the intruder in one's apartment, but failing to penetrate the wall so as to not annoy the neighbors. * Light flechettes are only good against soft body armor; rifle plates will stop them cold. Additionally, light flechettes lack the stopping power of buckshot against unarmored targets. * Heavy flechettes have the mass of a 000 buckshot pellet and likely being made from very hard material (at least hardened steel, probably tungsten), these shells will exhibit rifle grade penetration. * Flechettes are fin stabilized steel projectiles similar in appearance to arrows. During the Korean War the Chinese army tactic of human wave attacks against US lines of defence prompted interest in flechette projectiles in single and multiple projectile systems for small arms and antipersonnel (APERS) use. Flechettes have a performance criteria very different from the conventional rifle bullet. Typical modern flechettes are small light weight steel projectiles, and the velocity lost to air resistance is generally 375 fps. per 100 Meters of flight. Unlike rifle bullets, flechettes are not spin stabilized, but use fins to achieve level flight. The flechette's long body looses rigidity on target impact and bends into a hook, often breaking off the fin portion creating an additional wound. Flechette munitions include projectiles for use in the M16 rifle, CAWS (close assault weapons system), and 12 gage shotgun, as well as the 105mm M101A1/M102 howitzer, 2.75 in. FFAR (folding fin aircraft rocket), and the 70mm Hydra-70 FFAR.") "Fragmentation Ammo" (rule :name "Fragmentation Ammo" :summary "* Approximately 30% of the energy released by the explosive detonation is used to fragment the case and impart kinetic energy to the fragments. The balance of available energy is used to create a shock front and blast effects. The fragments are propelled at high velocity, and after a short distance they overtake and pass through the shock wave. The rate at which the velocity of the shock front accompanying the blast decreases is generally much greater than the decrease in velocity of fragments, which occurs due to air friction. Therefore, the advance of the shock front lags behind that of the fragments. The radius of effective fragment damage, although target dependent, thus exceeds consid-erably the radius of effective blast damage in an air burst.") "Heat Seeking Ammo" (rule :name "Heat Seeking Ammo") "Homing Ammo" (rule :name "Homing Ammo") "Incendiary Ammo" (rule :name "Incendiary Ammo") "Laser Guided Ammo" (rule :name "Laser Guided Ammo") "Minelayer Ammo" (rule :name "Minelayer Ammo") "Needle Ammo" (rule :name "Needle Ammo" :summary "* Needlers are unique weapons that fire small needle-like projectiles at high velocities. * Advantages: Because they are so light, needlers have much lower recoil than ordinary rounds. They also benefit from high rates of fire and large ammo capacities. * Disadvantages: Their principle weakness is that damage falls off sharply against armor. * One needler has a solid block of plastic as ammo and a cylinder in the barrel that rotates at high velocities. The twisting motion of the cylinder repeatedly shaves off toothpick-sized needles, tightly coils them and ejects them from the barrel at high velocity. When the coiled needle strikes a target itunwinds, drilling into the target. Because the barrel does not stop spinning, the needler can fire a continuous hailstorm of needles until it is out of ammo. * Rules: [Shattershot], [Continuous Stream]" :titles "Needlegun") "Non-Lethal Ammo" (rule :name "Non-Lethal Ammo") "Paint Ammo" (rule :name "Paint Ammo") "Radar Guided Ammo" (rule :name "Radar Guided Ammo") "Recoiless Ammo" (rule :name "Recoiless Ammo" :summary "* Recoilless weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for underwater or space. * Recoilless weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Bazooka, Gyrojet, Rocket Round") "Scramble Ammo" (rule :name "Scramble Ammo" :titles "Haywire Ammo") "Smoke Ammo" (rule :name "Smoke Ammo") "Taser Ammo" (rule :name "Taser Ammo") "Tracer Ammo" (rule :name "Tracer Ammo") "Underwater Ammo" (rule :name "Underwater Ammo"))) :Lasers (section :name "Lasers" :reference "Examples of pulsed systems with high peak power: * 700 TW (700x10^12 W) - The National Ignition Facility is working on a system that, when complete, will contain a 192-beam, 1.8-megajoule laser system adjoining a 10-meter-diameter target chamber. The system is expected to be completed in April of 2009. * 1.3 PW (1.3x10^15 W) - world's most powerful laser as of 1998, located at the Lawrence Livermore Laboratory" :summary "* Lasers are the ultimate sniper's weapon. They are silent, extremely hard to spot, and have pinpoint accuracy. They are, however, vulnerable to impurities in the the medium they fire through. These impurities are heated by the beam and can dilute the beam as well as make the beam visible. * Accuracy: +1 * 5 mW - CD-ROM * 10 mW - DVD player * 100 mW - CD-RW * 250 mW - DVD-R * 1 W - green laser in current Holographic Versatile Disc prototype development * 1-20 W - output of the majority of commercially available solid-state lasers used for micro machining * 30-100 W - typical sealed CO2 surgical lasers[26] * 100-3000 W (peak output 1.5 kW) - typical sealed CO2 lasers used in industrial laser cutting Energy Storage Let's assume non-rechargeable systems at an energy density of 2.5 kilojoules per cubic centimeter, which is quite plausible. You might consider a rechargeable battery pack as an option, with half the capacity of the non-rechargeables. Lithium-polymer cells are rechargeable, and have an energy density of 1.08 kJ/cm3. As for nonrechargable batteries, check out the various molten salt batteries. They're stored as a solid, so they can be stored 'charged' virtually forever. As soon as you bring them up to operating temperature (400 C or more), and as long as you keep them there, you have an incredibly high output battery. The military has used them like this for a very long time, and most current research is focused on making them rechargeable. Apparently the energy density varies widely, but it's clear that they can have very high energy density. Whether you use lasers or particle beams, you'll need a kilojoule of output energy to reliably incapacitate a human target. In the case of a laser weapon, that energy would be subdivided into ~1 joule pulses at ~5 microsecond intervals, to achieve penetration in the face of a laser's natural tendency to deposit energy at the target's surface. Particle beams don't have that problem; boost the electrons up to a few hundred MeV, and you can dump the whole kilojoule's worth at once. The plasma clears away easily in that time frame; debris is the real issue, and the driving force between the 5 microsecond pulse rate. That allows roughly 90% of the debris to clear the beam path, assuming a 1mm beam and instantaneous 1J pulses. 1 joule every 5 microseconds is optimal against soft tissue, other materials will want different pulse trains. I'm assuming a weapon designed to penetrate ~30cm in soft body tissue. This gives about 15cm in bone or plastic, 5cm in brick or concrete, or 2.5cm in steel or most ceramics. Synthetics won't be very good at stopping energy weapons, even tough ones like kevlar, but you might be able to find a ceramic that could stop a laser beam with a centimeter's thickness or so. Particle beams are tougher to stop; it mostly comes down to sticking mass in the way without regard to material properties. Lasers would likely have to have pulse energy and frequency tuned to the specific material being targeted. It might be possible to do this automatically, based on crude spectoanalysis of the material vaporized in each pulse, but if not expect penetration to be roughly halved if a laser weapon is fired at a target it has not been optimized for. Taking into account the inefficiency of the system, the input energy will likely be somewhere between two and five kilojoules per shot. So you could get fifty to a hundred shots from a pistol-sized non rechargeable energy source, or half that with a rechargeable battery. Automatic fire at anywhere up to 20 Hz (1200 rpm) shouldn't be a problem in the short term, though might cause cooling problems if you keep it up. You also need to focus the energy on the target, with a spot size of a millimeter or less. With a laser, that gets kind of tricky. A 5-centimeter mirror, about the largest you can really imagine on a pistol, gives an effective range of perhaps sixty meters, beyond which the weapon starts losing penetration quite rapidly. you still need to get down to a millimeter or so to flash-boil water in a layer ~one optical depth in thickness. Once you do that, the steam will expand and spread the damage around, but if you don't hit the threshold for turning water into steam all you do is warm up the target. With penetration, range, and repeatability dealt with, it is time to turn to accuracy. Lack of recoil, automatic fire capability, and line-of-sight accuracy are all major assets here, but there is one more improvement to be made. Both lasers and particle beams can be steered at least a degree or two off-axis, in the case of the laser via the adaptive-optic mirror, for particle beams with a transverse magnetic field at the muzzle. If we can throw in a chip-mounted laser or acoustic gyro set, we can have a gyrostabilized handgun. The weapon shoots not at where the gun is pointed at the instant of firing, but at a weighted average of where it has been pointing over the past quarter of a second or so. Smoothes out a lot of the jitter inherent in human marksmanship. Another clever one would be to use the laser's optics to project a laser sight. Pull the trigger, and the harmless red dot suddenly explodes. BANG! Using the laser optics as a scope would be more useful for long range or high accuracy shots. In combat, I would expect such a weapon to be used in automatic fire mode at ~10 Hz. With fifty to a hundred pulses to play with, you won't run out of ammunition too soon as is the case with current machine pistols. And recoilless, stabilized automatic fire should allow a moderately capable marksman to walk a burst on target in one or two reaction cycles (say, half a second) in most circumstances. Practical combat range, if you don't mind missing a good part of the time, would be on the order of 50 meters Cooling: And you'll need some serious cooling. I'd go with liquid-metal microchannel heat pipes etched into all the hot surfaces, and leading to cooling fins around the 'barrel'. If you use the chemical-propellant option, regenerative cooling could also work. What would it sound like? The actual mechanism of producing the laser beam could sound like anything, from complete silence, to the click of an electrical contact, to a sharp, electric snap, to a gunshot-like thunderclap. The beam, when incident upon its target, will make a nice bang. The pistol won't make a 'zap' sound, will it? If the beam is repeated rapidly it might, however, make a buzz. It might end up sounding quite electrical at a few hundred Hertz. Remember that the temporary cavity caused by the explosions only lasts a few milliseconds, so the beam has to have completed its work of piercing the target at this time. The individual explosions will be too closely spaced (microseconds apart) to be individually audible. Since shocks are always supersonic to the air in their path, and subsonic to the moving air left behind them, multiple subsequent shocks from the same source tend to merge into one stronger shock. Thus, each pulse probably makes one bang. The bang comes from a series of explosions whose total energy is about the same as that of the gunpowder detonating in a firing rifle, so it will probably be about as loud. If the beam is in the visible part of the spectrum, you get a noticeable path through clean air at indoor lighting intensities. I am not sure if it will be visible out of doors under full sunlight, but you could see it at night. The beam will be widest at the aperture of the gun, probably a few centimeters across to keep the optics from being damaged by the intense light. The beam will converge to a spot a millimeter or so across at the target. In unclean air, the beam will be a lot more visible. This Rayleigh scattering is linear, so the total integrated brightness across the cross section of the beam should be constant, if we neglect the gradual attenuation of the beam due to the light being scattered out of it. Higher frequency light scatters much more than lower frequency light, so a blue beam would be much more visible than a red one. When a visible beam is incident on the target, it creates a very bright flash of the same color as the beam. This may temporarily dazzle those looking at it, and the beam itself may be overlooked because of the bright flash obscuring it. If the weapon lases in the UV, the intense pulse may cause multi-photon ionization of atoms in the air, causing a fluorescent glow along the path of the beam (possibly red, green, or violet, I'm not quite sure what sparsely ionized air at atmospheric pressure looks like). Since this process is non-linear, it will be dimmest near the aperture where the beam is widest, and most intense nearer the target. Weapon designers will probably try to minimize this effect, since it leads to attenuation of the beam and subsequent loss of effectiveness. Near IR beams are likely to only be visible if there are relatively large pieces of dust, lint, or pollen floating around, which will glow incandescent as they burn under the irradiation of your beam. I doubt beams in the 'thermal' IR range would be used, even though the air is fairly transparent to these wavelengths, because with short, intense pulses you tend to get cascade ionization with these lower frequencies, and this will completely absorb the beam. Beams at non-visible frequencies will also make a flash and a bang where incident on the target from the expanding plasma of their explosion, but nowhere near as bright as that of a visible beam. In vacuum, of course, the beam itself is always invisible, but you can still see the flashes at the target. Will the beam be invisible or bright enough to be blinding? It is quite likely to be both. The beam itself may be invisible or minimally visible, but if even a tiny fraction of the beam is specularly scattered into your eye, near IR and visible and some near UV will be focused to a diffraction limited spot on your retina, causing burns and permanent scarring. This can lead to degradation of vision or total blindness. Interestingly, the brain compensates for blind spots on the retina, so that you might have lost up to 60% of your vision from multiple exposures to beams and you still think you can see just fine. Anyone likely to be using a laser will probably wear protective goggles or contacts. With today's technology, you would probably make them out of an optical band gap material that excludes a very narrow window of light centered on the laser's frequency. This means that the people who fired the lasers would not be able to see the beams or flashes of their own weapons (assuming they used visible light lasers). They would still see the flashes from the plasma explosions, though, plus incandescence of suspended atmospheric particles and fluorescence from multi-photon absorption. The method of subsequent explosions on the back of an expanding cavity driving the cavity through the target will leave a wound much like that of a gunshot, except without fun stuff like the bullet fragmenting or breaking up. A variant where nearly parallel beams a few cm apart literally rip the tissue between them could leave a wound looking more like an ugly gash - add on a few more of these beams on the same plane and you could literally cut someone in half with one millisecond pulse, using only about as much energy as goes into accelerating the bullet of a modern day battle rifle. Will there be a large splash of blood and gore on the wall behind the unlucky pirate? Quite likely, Note that since you do not have the momentum associated with a projectile, it will be more spread out than you would get from a gunshot wound, and you would get blood and gore coming out the front, too. I assume that since the beam is one millimeter in diameter but the hole in the pirate is four centimeters, little or no wound cauterization will occur. Nope, the wound would be ragged and messy. It is created by mechanical, not thermal effects. The laser weapon will probably end up looking something like a camcorder, with a big lens that the beam goes through, and a fairly compact design. Since mirrors and internal optics can bend the beam inside the weapon, there is no need for the long barrels you see on modern firearms. Cooling, if necessary, would probably not involve fins - I would expect something more like the radiator on modern automobiles. Remember, shedding your heat through contact with the air is much more efficient than radiation. keeping in mind that using contact with the air doesn't work if there is no air, i.e., in vacuum. C. James Huff notes that there is one kind of fin for radiant cooling and another for air cooling. He mentions that the fins on a CPU hot sink is a good example of the latter. For a vacuum rated laser he recommends a compressed or liquified gas cartridge since a radiant cooler would be inconveniently huge. Also, lasers are getting surprisingly efficient. When each beam pulse contains no more energy than imparted to a rifle bullet, lasers might need cooling no more than a modern rifle. the laser's battery will be carrying plenty of juice. Anything carrying that much energy will be at least slightly unstable. In other words, it wouldn't take much to make a charged battery into a home-made bomb (which might come in handy if one suddenly needed a bomb.). You might have read news reports about laptop computers who's batteries suddenly burst into flame. And don't even think about sticking a fork into the open contacts. This has been observed somewhat tongue-in-cheek by John Routledge as Routledge's Law: 'Any interesting battery material for a laser gun would be more usefully deployed as an explosive warhead.' He also notes the problem with ammunition cook off. If you are holding a fully-charged laser pistol, and some lucky enemy sniper manages to score a direct hit on the pistol's battery, it is going to be just to bad if the resulting explosion vaporizes you and all your friends within a large radius. Assuming a worst case of 5 kilojoules per shot and a rechargeable magazine containing 50 shots, the magazine is packing 250 kilojoules. This is the equivalent of 250,000 * 2.7778e-4 = 70 watt-hours or 250,000 / 4,500 = 55 grams of TNT (For comparison purposes, a standard 8 inch stick of dynamite is about 208 grams and hand grenades used by the US Army have explosive charges of 56 to 226 grams of TNT). At his specified power density of 2.5 kilojoules per cubic centimeter, this would imply a magazine volume of 100 cm3. this is approximately the same volume as forty-two .45 caliber rounds. Fan Beam If a man is about 45 centimeters wide (18 inches), at a range of 5 meters, and the bolts were to be spaced 3 centimeters apart, it would take 15 bolts fired at 0.3 degree increments to the left and right. Your target would fall... in two places. A less blood-thirsty use would be in the wilderness, chopping down trees ('Lumberjack' mode). Multiple Modes Stun would be a laser in Pulsed Energy Projectile mode. Heat would be a laser in unpulsed heat ray mode at relatively low energy levels. Disrupt would be a laser in pulsed blaster mode or in unpulsed heat ray mode at high energy levels. Overload makes the battery explode. Dematerialize is the only one that cannot be done, but it is rather silly in the first place. ('Dematerialize' is a fancy way of saying 'disintegrator ray'. A weapon that can vaporize a human body without setting the walls and floor on fire or even raising the temperature of the room? Give me a break!) Remember that a laser in pulse mode could have its effect optimized to a given material by a specific setting for pulse frequency. So one could have a 'metal cutting' setting for use as a tool or to open a locked door, and a 'kill human' setting for war-to-the-knife combat. All with the same pulse laser, just with a different frequency. Such a weapon would have a selector switch for each mode. And it might have a 'customizable' mode. This would allow an expert to manually tweak the settings: continuous or pulse, spectrum frequency, pulse timing, power level, etc.") "Less Than Lethal" (section :name "Less Than Lethal" :reference `It was recently revealed that the US military was researching a rather alarming line of less-lethal weapons, the Pulsed Energy Projectile (PEP) program. (As a side note, understand that there is no such thing as a 'non-lethal' weapon. This is because any weapon or gas that can reliably incapacitate or render unconscious a 300 pound world wrestling champion will be strong enough to instantly kill a small child or elderly person.) PEP weapons fire a laser pulse that is very intense but only a fraction of a second in duration. The pulse vaporizes a tiny portion of the hapless victim's clothing or skin, creating a plasma burst intense enough to knock the victim to the ground. This was intended to be used for crowd control. A pulse strong enough to knock one down is also strong enough to make one's eyeballs explode if it hit your face. However, during test performed on animals, the researchers noticed something unexpected. The pulses were creating pain and temporary paralysis in the test animals. As it turns out, certain pulses would create a plasma burst emitting an electromagnetic signal of proper frequency to artificially stimulate the nerve endings in the animal's skin. The US military is researching this effect, trying to find the frequency that will cause the maximum pain sensation without actually causing any physical harm to the target. There is also the possibility that other frequencies could cause taser-like paralysis effects. The effect can be made lethal. The original name for the project was Pulsed Impulsive Kill Laser (PIKL) but was quickly changed. Currently PEP weapons are not man-portable, they are vehicle mounted weapons. They have a range of about two kilometers. We might yet see Space-1999 style hand lasers with a "stun" setting.` :rulemap (rulemap "Pain Ray" (rule :name "Pain Ray" :reference "* For riot control situations, the US Army is working on the Active Denial System (ADS). It emits microwaves that only penetrate a short way into the skin, not deep enough to do permanent damage but more than deep enough to roast all the target's pain nerve endings. As with all microwaves, the range of this beam of concentrated agony is drastically reduced by rain or heavy humidity.") "Vomit Ray" (rule :name "Vomit Ray" :reference "* The US Navy is working on its Electromagnetic Personnel Interdiction Control project, AKA the Vomit Ray. The US Department of Homeland Security is working on a pistol sized version, which is a very unsettling thought."))) "Nuclear Weapons" (section :name "Nuclear Weapons") "Particle Beams" (section :name "Particle Beams" :reference "* If you get a particle beam intense enough to burn someone, it will also deliver a lethal dose of radiation from a hit anywhere on the body. * Radiation will scatter from the beam 'impact' site, irradiating things around it. In an atmosphere, radiation will scatter off air molecules to irradiate things near the beam. Some of it will backscatter, irradiating whatever fires the gun. Forget about a sci-fi hero using a particle beam 'blaster' - after blasting a hoard of bug eyed space aliens, he'd be sick or dying from radiation poisoning. In real life, particle beam weapons were considered for their ability to use radiation to disable things (mostly ICBMs) without necessarily blowing holes in them." :summary "* Particle beams fire a stream of relativistic atoms or sub-atomic particles. These are beams of ionizing radiation.") :Plasmacasters (section :name "Plasmacasters" :summary "* A weapon that fires a shell that releases a burst of plasma when it strikes a target. This shell glow with barely contained energy as it flies to its target." :titles "Blaster, Spinfusor") :Railgun (section :name "Railgun" :reference "* On January 31, 2008, the US Navy tested a 10MJ railgun with a muzzle velocity of 2500m/s. It is expected to reach 5800m/s at 10 shots/minute (enough to hit a 5m target 370km/200miles away)." :summary "* This type of weapon includes all hypervelocity rounds propelled by massive magnetic fields. * Their great speed gives them excellent penetration and kinetic damage. Because of this great speed, they cannot carry any useful payload because the payload would be destroyed when the shell was launched. Therefore, railguns are all kinetic weapons only. * Coilguns (Gauss) and Railguns are technically different, but their result is the same." :titles "Coilgun, Gauss Gun, Kinetic Kill Weapons, Linear Cannon, Linear Rifle, Mass Driver") "Sonic Weapon" (section :name "Sonic Weapon") "Disruptor Weapons" (section :name "Disruptor Weapons" :summary "* Disruptors temporarily weaken the molecular bonds in the target. Damage is done via violent system shock, and the weapon may distintegrate the target entirely if enough damage is done. * Disruptors have decreasing effectiveness with the density and hardness of the target. Soft materials like flesh are the most practical target. Damage drops off sharply against metals and rocks making disintegration of such materials extremely difficult." :titles "Disintegrator, Phaser") "Energy Melee Weapons" (section :name "Energy Melee Weapons" :summary "* The lance is essentially a giant plasma cutting torch using compressed-gas ignited from direct current from the exo-armor's fusion reactor. * The gas supply limits the usefulness of the weapon and many may need to be carried.") "Weapon Rules" (section :name "Weapon Rules" :rulemap (rulemap "Firing Arc" (rule :name "Firing Arc" :summary "Larger weapons are often cumbersome to use or aim and may only attack in a particular arc. The following abbreviations are used: * F - Front. Can only attach in any front arc. * B - Back. Can only attack in any rear arc. * FF - Fixed Forward. Can only attack the forward arc. * FB - Fixed Backward. Can only attack the rear arc. * FL - Fixed Left. Can only attack the left arc. * FR - Fixed Right. Can only attack the right arc. * Turrent - Turret mount. Can attack in any direction but must use [Turret] rules to fire anywhere but forward. * Pintle - Pintle mount. Can attack in any direction without limit, but if the pintle mount is used, a crew member is exposed and may be targetted separately from the vehicle at -1.") :Reload (rule :name "Reload" :summary "* [Action]: An item with Reload may not be used until all Reload tokens are removed. * [Action]: An item with Reload adds the number of Reload tokens each time the item is used. * Gain a White [Reload] Token for each Reload value each time the weapon is fired. 1. Panther G 13 sec 2. PZ IV F1 9 sec 3. PZ IV F2 10 sec 4. Tiger 1E 15 sec 5. IS-2 20 sec - This is longer due to the IS-2 having a 122mm cannon and the shell has to be loaded in two parts. Although the first shot to a Panther, Tiger or a PZ IV is usally fatal. 6. KV-1S 12 sec 7. T34-76 13 sec") "Shoot From The Hip" (rule :name "Shoot From The Hip" :summary "* Any unit shooting from the hip takes -1 Attack.")))))) (func chapter_skills : base/chapter (chapter :name "Skills" :sectionmap (sectionmap "Combat Skills" (section :name "Combat Skills" :skillmap (skillmap "Close Combat" (skill :name "Close Combat" :reference "* The usefulness of kicks in self-defense and actual combat has been debated. Kicks are powerful but risk balance, expose the groin, and risk take downs. * Joker, there is nothing wrong with you that I can't fix. With my hands. - Batman, The Dark Knight Returns * There are seven working defenses from this position. Three of them disarm with minimal contact, three of them kill. The other....hurts. - Batman, The Dark Knight Returns * Beat losers, get paid. - Sett, Runeterra" :summary "* [Targeting]: Close combat may only be used to attack the space directly ahead or the space you are on. * The baseline for kicking abilities is that they are -1 Speed and +1 Damage with a minor special ability. NAME SPD DMG MV DEF SHORT KICK + 1 + 0 + 0 S,C,A FORWARD KICK + 0 + 2 -- 1 S,C,A ---------------------------------------------------------------------------------------------------------------------------------- BACK ROUNDHOUSE -- 2 + 2 -- 1 None K2 * Ignores all Blocks except for San He and Evade Blow. *CARTWHEEL KICK -- 1 -- 1 + 0 S,C (2 W) K4, A3 * DMG vs. all adjacent hexes; opponents who take DMG are Knocked Back one hex; Straight Line attack; the fighter may use full MV, dealing DMG each time he moves next to an opponent. CRESCENT KICK -- 1 + 4 -- 2 S, miss C K3 * KDA DESCENDING WHEEL KICK -- 2 +3 (x2) + 0 (Special) (1 W) K4, A3, Jump, Ft.Swp * First hit = Aerial, Block- S, miss C; Second hit = Crouching, KD, Block- C, miss A. FOOT SWEEP -- 2 + 3 -- 2 C, miss A K2, Crouch * KD; Crouching Maneuver. FORWARD CHEST KICK + 0 + 2 -- 1 S,C,A K3 * KD. Forward Flip Kick + 1 + 5 Two S,A (1 W) K3, A3, Handstand Kick * KD, KDA (unless blocking), (dodge move?) *FORWARD SLIDE KICK + 0 + 2 + 0 C, miss A K2, A2 * KD FRONT SNAP KICK + 2 + 2 None S,C,A K2 ** HAMMER KICK -- 2 + 3, + 4 -- 2 C,miss A (1 W) K3,(x2)K,Ft.Swp * KD; Hits Downed opponents. *HEEL STAMP + 2 -- 4 + 1 S,C, miss A K1, A1 * Opponent is Knocked Back (Fighter's Str. + Athletics) - Opponent's Str.; Fighter is KnockedBack 1. JUMPING SOBAT(TO) -- 1 + 4 Two S,C,A K2, A1, Jump * Aerial. (MY: Aviods Sweeps [fist,foot,spin foot], may only be blocked C or w/ Kick Def) This is charlie's hop toward low kick. KNEE DROP -- 1 + 3 -- 1 (miss S,C,A) K2, A1 * Attacks Downed opponents only. LONG SWEEP KICK -- 2 + 3 None C, miss A K2, Crouch, Foot Sweep * KD; Crouching; this maneuver may be used to strike an opponent who is 1 Hex away. PUSH KICK (STOMACH KICK) + 0 + 1 + 0 S,C,A K2 * Knockback. RISING BIRD KICK -- 1 + 0(x3) One S,C (1 W) K4,A4,Jump,Dbl-Hit Kick * KDA; Aerial Maneuver. Shin Strikes (+ 0) (+ 1) (+ 0) (Normal) K3 * used in conjunction with any basic Kick; the fighter must be in an adjacent Hex to use this maneuver. SPINNING FOOT SWEEP -- 2 + 3(x2) None C, miss A (1 W) K2, A1, Foot Sweep * DMG is dealt to all adjacent hexes, target in front of fighter is struck twice; KD; Crouching. SPLITS KICK -- 1 + 4 One S, miss C K2 * KDA STEPPING FRONT KICK + 0 + 1(x2) + 1 S,C (1 W) K4, Double-Hit Kick * Fighter must MV into opponent's hex; 1st hit causes Knockback. Studder Step Kick + 1 + 2 One C(miss A) K3, A1 * Must be blocked low. THRUSTING FORWARD KICK + 1 + 2 + 1 S, C (1 W) K2, A1 * Aerial Maneuver; KDA. Punch Name Speed Damage Move Defense Jab +2 -1 +0 S,C,A Strong Punch +0 +1 +0 S,C,A Fierce Punch -1 +3 -1 S,C,A ---------------------------------------------------------------- Boshi-Ken(Thumb Drive)-1 +2 +0 S,C,A P2,A2 xIf damage is scored opponent suffers -1 move next round. Buffalo Punch -2 +5 One S,A P2 Bushin Air Elbow +2 -1 +2 S,A P3,A1,Elbow Strikes,Jump xAerial Maneuver Caber Punch -2 +3 -1 S,C,A P2,Str4 xKD Cobra Hand Strike +3 +1 +1 S,C,A (1W) P3 Dash Punch +0 +4 +2 S,C (1W) P4,A1 Dash Uppercut +0 +4 +2 S,miss C (1W) P4,A1,Dash Punch xKDA Double Hit Punch -1 +0(x2) +0 S,C,A P2 Ear Pop -1 +0 -1 S,C,A P2 xIgnores Sta:fighter -1 Honor Elbow Barrage +0 +0(x3) One S,C (1W) P4,Elbow Smash,Elbow Strikes xMust be in opponent's hex Elbow Drop +0 +2 +0 miss S,C,A P2,A1 xMust be used on Downed opponent; If opponent is interrupted he loses action and is still considered downed at the end of round. Elbow Smash +2 +2 One S,C,A P1 Elbow Strikes (+0) (+1) (+0) (normal) P3 xUsed in conjunction with any basic punch, must be in opponent's hex. Fist Sweep -1 +3 -2 C,miss A P3 xCrouching Maneuver;KD Flaming Dragon Punch-1 +6(x3) -2 S,C (1C,1W) P5,A1,F2,Dragon Punch xKD;Knockback 1(all);->Aerial Maneuver Hand Of The Crane +1 +0 +0 (Normal) P4 xMay be used in conjunction with any basic Punch while standing. Hand Of The Eagle Claw+1 +0 +1 (Normal) P4,A3,Jump xMay be in conjunction with any basic Punch while Aerial. Hand Of The Striking Mantis+0 +0 +0 (Normal) P4,A2,Dex4 xMay be used in conjunction with any basic Punch while standing: fighter may strike opponent one hex away. Hook +0 +3 -2 S,C,A P1 Iron Palm(Tieh Sha Chang) +0 +4 -1 None (1C) P4,F4 xIgnores Blocks;KDA Kidney Punch +0 +2 +0 S,C,A P2 xFighter must be behind opponent or in opponent's hex to execute this maneuver; following round opponent is -1 SPD. Lunge Punch +0 +1 +1 C P3,A1 Neck Shatterer -1 +4 -2 S,miss A P2,Elbow Strikes Palm Heel Punch -2 +3 +0 S,C,A P2 xWhen DMG is dealt treat total as if it were one higher for purposes of calculating dizzy. Power Uppercut -1 +3 One S,C P1 xKDA Razor Fist Punch +1 +4 +0 S,C (1C,1W) P5 xKnockback1;DMG is Aggrivated Rekka Ken (+3) (+0) (+0) (Normal) (1W per turn)P4,A2 xUsed with any basic punch; can be used for up to 3 turns; if used full 3 turns next round must be spent taunting, or lose 3 Glory; Combo to dizzy. Reverse Fist Punch +0(+2) +2 One S,C,A P1 x+2 SPD if punch follows a set up punch. Rushing Strong +0 +1 +1 S,A P2 Shikan Ken(knuckle fist) +1 +1 +0 S,C P2 xSTR.test to knock opponent back 1 hex; KDA Shockwave +0 +0 None S,C,miss A (1C) P4,F2 xShockwave extends in straight hex line; 1 hex per dot in STR; KD all. Spinning Chothesline +0 +0 -2 S,miss C (1W) P4,A3,Clothesline xDMG vs. all adjacent hexes; Knockback 1 each time DMG is dealt; Advance with MV after each hit, may roll DMG again if applicable; Dodge Maneuver. Spinning Knuckle -1 +1(x2) +3 S,C (1W) P3,A1,Spinning Back Fist xDodge Maneuver. Strong Decending Elvow +0 +1 +1 S,A P2,A1,Jump xAerial. Sword Hand Strike -1 +4 -2 S,C,A P3 xIgnores armor,Toughskin,etc. Triple Strike -2 (+0,+0,+1) None S,C,A P2,K1 xRoll three damage tests as indicated, take highest two rolls. Turn Punch Rnd 1-1 +4 Two S,C (W first turn)P4 Rnd 2-1 +5 Two S,C Rnd 3+0 +6 Two S,C Rnd 4+1 +7 Two S,C xCard is layed face down; May be played at any time thereafter as long as card is left face down; -1 SPD,DMG,MV while charging maneuver; Need not be used. Uppercut +1 +2 -1 S,C,A P1 x +1DMG vs. Crouching." :titles "Brawler, Grappler, Hand-to-Hand, Infighter, Martial Artist, Wrestler" :stat "Body" :abilitymap (abilitymap :Punch (ability :name "Punch") :Kick (ability :name "Kick" :summary "* [Low Attack] -1 Initiative -1 Move +1 Damage") :Grab (ability :name "Grab" :summary "-1 Initiative -1 Action * Attempt to grab an item. Roll vs. Body to succeed.") "Back Fist" (ability :name "Back Fist" :summary "* Strike with the back of the fist or open hand." :titles "Backhand, Bitch Slap") :Clothesline (ability :name "Clothesline" :summary "Clothesline -1 +2 +0 S,C,miss A") "Bull Rush" (ability :name "Bull Rush") :Charge (ability :name "Charge") "Crouching Strike" (ability :name "Crouching Strike" :summary "Crouch low and deliver a powerful blow to the mid-section or below the belt. * [Attack] [5]: +1 Effect" :titles "Ducking Punch") "Deflecting Punch" (ability :name "Deflecting Punch" :summary "* The fighter deflects a punch at him and immediately counters with a punch of his own. * [Counter]: +1 Effect") "Dragon Strike" (ability :name "Dragon Strike" :summary "* When striking with the fist, more power can be exerted when the movement originates from the feet, is guided by the waist, flows through the body, and exits through the fist. * [Attack] [J]: +1 Knockback * [Aerial]" :titles "Dragon Fist, Dragon Punch") "Ear Pop" (ability :name "Ear Pop" :summary "* Disorienting attack that causes temporary or permanent deafness. * -1 Initiative * -1 Attack * +2 Stun * -2 Move * Criticals: Deafness") "Elbow Drop" (ability :name "Elbow Drop") "Elbow Strike" (ability :name "Elbow Strike" :summary "* Devastating blow common to Muay Thai. * +1 Initiative * +1 Damage * 1 Move" :titles "Elbow Smash") "Eye Rake" (ability :name "Eye Rake" :summary "* Disorienting attack that causes temporary or permanent blindness. * -1 Initiative * -1 Attack * +2 Stun * -2 Move * Criticals: Blindness") "Fists of Fire" (ability :name "Fists of Fire") :Haymaker (ability :name "Haymaker" :summary "* A slow all out attack that causes massive damage. Especially useful to finish off weakened opponents. -2 Initiative 0 Move +2 Damage" :titles "Two-Fisted Smash") "Head Butt" (ability :name "Head Butt" :summary "-2 Move +1 Damage") :Hyperfist (ability :name "Hyperfist" :summary "* [Critical Hits] can be exchanged for additional Attacks. Same as [Auto]. -2 Initiative -1 Damage 1 Move" :titles "Hundred Hand Slap, Lightning Fist, Rapid Punch") :Jab (ability :name "Jab" :summary "* A quick, weak strike. +2 Initiative +1 Accuracy -2 Damage +1 Move") "Knife Hand" (ability :name "Knife Hand" :summary "* [Damage]: [Critical Hits] may reduce opponent's [Armor] roll.") "Knuckle Fist" (ability :name "Knuckle Fist" :summary "* [Critical Hits] cause Knockback.") "Monkey Punch" (ability :name "Monkey Punch" :summary "* Grab blocking arm and punch * If opponent used a block, ignore it." :titles "Grab Punch") "Nerve Strike" (ability :name "Nerve Strike" :summary "* Use the tips of the fingers to strike and pinch nerve clusters to produce pain and debilitation. * [Action] * -1 Initiative * +1 Stun" :titles "Atemi Strike, Atemi Waza, Cobra Strike") "One Two Punch" (ability :name "One Two Punch") "Palm Strike" (ability :name "Palm Strike" :titles "Palm Heel Strike, Shotei") "Phoenix Strike" (ability :name "Phoenix Strike" :summary "* Middle finger protrudes from fist to strike nerve clusters to cause numbness. * [Criticals] can be exchanged for Slow tokens.") :Ram (ability :name "Ram" :summary "* [Action] * +1 Knockback" :titles "Shoulder Smash") "Spinning Back Fist" (ability :name "Spinning Back Fist" :summary "* The fighter spins around adding force to the blow. -1 Initiative +1 Damage +1 Move") "Strike Defense" (ability :name "Strike Defense" :summary "* The fighter concentrates on the strikes of the opponent but becomes vulnerable to other attacks. * [Reaction] +1 Initiative -1 Move +2 Defense vs. Strikes (-1 Defense vs. Others)") "Sword Hand" (ability :name "Sword Hand" :summary "+1 Accuracy +1 Damage -2 Move" :titles "Karate Chop") "Tiger Claw" (ability :name "Tiger Claw" :summary "Tiger Claw Strike (+0) (+1) (+0) S,C,A") :Uppercut (ability :name "Uppercut" :summary "* This powerful punch starts low and ends high using the fighter's leg and back muscles to increase damage. * [Criticals] can be exchanged for Knockback -1 Initiative +1 Damage -1 Move") "Axe Kick" (ability :name "Axe Kick" :summary "* Fighter raises his leg high over his head and snaps it down toward the opponent's head and neck. * [High Attack] -1 Initiative -2 Move +1 Damage") "Back Kick" (ability :name "Back Kick") "Backflip Kick" (ability :name "Backflip Kick" :summary "* [High Attack] * [Limited] by [Acrobatics]. +1 Initiative 1 Move (directly backwards) +1 Damage" :titles "Flash Kick") "Crescent Kick" (ability :name "Crescent Kick") "Double Kick" (ability :name "Double Kick" :summary "* [Combo]: [Roundhouse Kick] followed by [Spinning Thrust Kick]") "Dragon Kick" (ability :name "Dragon Kick" :summary "-- 1 +6 (x2) -- 2 S,C (1C, 1W) K5, F4, Jump * Knockback; KD; -->Aerial Maneuver.") "Dragon Tail" (ability :name "Dragon Tail" :summary "* The fighter drops low, extends his leg and whirls around quickly, kicking his opponents and knocking their feet out from under them. -2 Initiative -1 Accuracy Damage is [Knockback] instead. Criticals are [Knockdown] instead." :titles "Iron Broom, Tiger Tail Sweep") "Drop Kick" (ability :name "Drop Kick" :summary "* Ends [Prone]. * Kick the opponent with the soles of both feet and fall to the ground. -- 1 + 2 -- 1 S miss C,A K2, A1 **") "Flying Kick" (ability :name "Flying Kick" :image "MartialArts/FlyingKick.jpg" :summary "* The fighter launches himself feet first into the air toward his opponent. He ends his move with a powerful kick, usually to the opponent's head or midsection. +1 Accurary +1 Damage +1 Move (Aerial in one direction) + 0 + 6 -- 2 S,C (1 W) K4, A4, Jump * Knockback; KD; --> Aerial Maneuver." :titles "Flying Thrust Kick") "Foot Stomp" (ability :name "Foot Stomp" :reference "* The toe crusher. That went out of style when I left kindergarten. - Kung Fu Hustle" :summary "* Stomp on opponent's foot to slow their movement.") "Handstand Kick" (ability :name "Handstand Kick" :summary "* The fighter bends over, places his hands on the ground, and then presses his legs up into a handstand. The legs snap up with tremendous kicking force. Can be used while [Prone] -1 Initiative 1 Move +2 Damage") "Hurricane Kick" (ability :name "Hurricane Kick" :image "MartialArts/HurricaneKick.jpg" :summary "-1 Speed -2 Attack * May attack up to 2 units in any surrounding spaces." :titles "Butterfly Kick, Whirlwind Kick") "Kick Defense" (ability :name "Kick Defense" :summary "* The fighter concentrates on the legs of the opponent but becomes vulnerable to other attacks. * [Reaction] +1 Initiative -1 Move +2 Defense vs. Kicks (-1 Defense vs. Others)") "Kick Off" (ability :name "Kick Off" :summary "* Propel yourself and opponent apart instead of damaging. Especially useful when the opponent is near dangerous terrain. -1 Initiative +1 Accuracy [Hits] are [Knockback] instead. [Critical Hits] are [Knockdown] instead." :titles "Heel Stamp") "Knee Drop" (ability :name "Knee Drop") "Knee Strike" (ability :name "Knee Strike" :image "MartialArts/TigerKnee.jpg" :summary "* Leap up to strike with the knee to the stomach, chest or face using the momentum of the leap to increase damage. +2 Initiative +1 Damage 0 Move" :titles "Flying Knee Thrust, Tiger Knee") "Leg Sweep" (ability :name "Leg Sweep" :summary "* A low spinning kick designed primarily to knock an opponent of his feet. -2 Move -1 Accuracy [Low Attack] +1 Damage [Critical Hits] are [Knockdown]" :titles "Foot Sweep") "Lightning Leg" (ability :name "Lightning Leg" :image "MartialArts/LightningLeg.jpg" :summary "* [Finishing Move] * [Attack]: [Auto] LIGHTNING LEG -- 2 + 1(x3) None as 100handslap (1 W) K3, Double Hit Kick * Knockback; When this maneuver is chosen the fighter determines which of the three attacks strike high, and which strike low (2 high, 1 low; or 1 high, 2 low), this affects blocking accordingly.") "Reverse Front Kick" (ability :name "Reverse Front Kick" :summary "* Feint kick past head then snap back into the back of the head or neck. -1 Initiative +1 Accuracy -2 Move") "Roundhouse Kick" (ability :name "Roundhouse Kick" :summary "* Fighter pivots and kicks using the momentum from the pivot to increase the damage of the kick. -1 Initiative -1 Action +2 Damage") "Scissor Kick" (ability :name "Scissor Kick" :summary "* Leap up and kick two opponents in different directions simultaneously. -1 Initiative 0 Move [Aerial] -1 Damage") "Side Kick" (ability :name "Side Kick") "Slide Kick" (ability :name "Slide Kick" :summary "+1 Speed * [Low Attack] * Critical Hits can be [Knockdown] * End Action [Prone]") "Spinning Thrust Kick" (ability :name "Spinning Thrust Kick" :summary "* Fighter spins gaining momentum and thrusts with the heel. -2 Initiative -2 Move +2 Damage" :titles "Amaranth Kick, Mule Kick") "Vault Kick" (ability :name "Vault Kick" :summary "* Vault over an obstacle and land a devastating kick with all of your weight. +0 Move - Ignore the terrain penalty of 1 space next to the target. +0 Accuracy - [High Attack] +1 Damage Criticals are [Knockback]") "Atomic Drop" (ability :name "Atomic Drop") "Air Throw" (ability :name "Air Throw" :summary "* The fighter intercepts a leaping or flying opponent in mid-air, twists, and slams him to the ground, landing on top of him. * [Reaction], [Aerial] +1 Initiative +0 Damage is [Knockdown]. Damage also reduces falling Damage to the fighter. Criticals are [Knockdown]. Criticals also reduces falling Criticals to the fighter.") :Backbreaker (ability :name "Backbreaker" :summary "* The fighter lifts his opponent in the air and smashes him to the ground or onto his knee. This maneuver can cause serious spinal injuries. * Uses a [Hold] -2 Initiative -1 Accuracy +2 Damage Criticals are [Cripple]") "Backroll Throw" (ability :name "Backroll Throw" :summary "* The fighter grabs the opponent and then rolls backwards while using his legs to help lift and throw the opponent over him. The opponent is send directly behind the fighter and the fighter is left [Prone]. * Uses a [Hold] -1 Initiative +1 Damage is [Knockdown] Criticals are [Knockdown]") "Bear Hug" (ability :name "Bear Hug" :summary "* The fighter wraps his arms around the opponent and crushes him. * [Continuous] * Requires a [Hold] -1 Initiative +1 Damage 1 Move") "Choke Hold" (ability :name "Choke Hold" :summary "* The fighter wraps his arms around the opponents neck and begins choking him. * [Continuous] * Requires a [Hold] -1 Initiative Criticals are [Asphixiation] 1 Move") "Fighting Hold" (ability :name "Fighting Hold" :summary "* While holding the opponent, strike him repeatedly. * Requires [Hold] * [Continuous] +1 Initiative +1 Accuracy +1 Damage 1 Move") "Grappling Defense" (ability :name "Grappling Defense" :summary "* Skilled grapplers must learn how to resist and escape from the same maneuvers that they use. * [Reaction] +1 Initiative -1 Move 0 Damage - Remove a [Hold] from yourself. Criticals - Remove additional [Holds].") "Ground Fighting" (ability :name "Ground Fighting" :summary "* [Passive]: Ignore penalties for being [Prone].") :Headlock (ability :name "Headlock") "Hip Throw" (ability :name "Hip Throw" :summary "* This is a quick move to get an opponent on the ground. The fighter moves a leg behind the opponent's and pushes him past the hip and directly to the floor. -1 Move Damage - [Knockdown] Criticals - [Knockdown]") :Hold (ability :name "Hold" :summary "* Puts a [Hold] on opponent. +1 Initiative 0 Damage - Add a [Hold] token. 0 Criticals") :Hook (ability :name "Hook" :summary "* The hook is a powerful punch with knockout power. * When throwing a hook, the puncher shifts his body weight to the lead foot, allowing him to pivot his lead foot and generate kinetic energy through the hip/torso/shoulder, swinging his lead fist horizontally toward the opponent. -1 Initiative +1 Damage +0 Criticals - [Stun]") "Iron Claw" (ability :name "Iron Claw" :summary "Damaging Grab") "Joint Lock" (ability :name "Joint Lock" :summary "* The fighter grabs a limb tightly and leverages the limb in ways the joint was not meant to turn. The attack is incredibly painful and can cause sprains, dislocations, and breaks. * [Continuous Hold] -2 Initiative -1 Accuracy +0 Damage - +1 Stun +0 Criticals - [Cripples]" :titles "Armbar, Armlock, Hammerlock, Leg Lock") "Knee Bash" (ability :name "Knee Bash" :summary "* While holding the opponent, knee him repeatedly in the head or stomach. * Requires [Hold] * [Continuous] -1 Initiative +1 Accuracy +2 Damage 0 Move") "Neck Break" (ability :name "Neck Break" :summary "* The fighter grabs the opponent's head and twists it with the intention to break the neck. For best effect this is used as a surprise attack. -2 Initiative -2 Accuracy +4 Damage Criticals are [Cripples]") :Nelson (ability :name "Nelson") :Piledriver (ability :name "Piledriver") :Pin (ability :name "Pin" :summary "* While grappling, attempt to immobilize the opponent. * Requires [Grapple] * [Continuous] +1 Damage - Damage is [Stun]. Criticals are [Slow]") :Reversal (ability :name "Reversal") "Shoulder Throw" (ability :name "Shoulder Throw" :summary "* The fighter lifts the opponent his is holding over a shoulder and hurls him as far as his strength will allow. * Requires a [Hold]. -1 Move +1 Damage - [Knockback] in any direction the fighter chooses. Criticals - [Knockback]") "Sleeper Hold" (ability :name "Sleeper Hold") :Suplex (ability :name "Suplex") :Tackle (ability :name "Tackle" :summary "* Dive at the opponent and use weight and momentum to take you both to the ground. +1 Initiative +1 Move +1 Accuracy. Succeed or fail, the fighter is [Prone]. Damage is [Knockdown]. Criticals are [Knockdown]" :titles "Flying Tackle") "Take Down" (ability :name "Take Down" :summary "* Fighter wraps his limbs around the opponent and causes both fighters to fall [Prone]. +1 Initiative -1 Move 0 Damage - Both fighters are [Prone] and puts a [Hold] on the other. 0 Criticals") "Thigh Press" (ability :name "Thigh Press")) :specialtymap (specialtymap :Strikes (specialty :name "Strikes") :Kicks (specialty :name "Kicks") :Grappling (specialty :name "Grappling" :summary "* Atomic Drop * Air Throw * Backbreaker * Backroll Throw * Bear Hug * Choke Hold * Fighting Hold * Grappling Defense * Ground Fighting * Headlock * Hip Throw * Hold * Hook Hold * Iron Claw * Joint Lock * Knee Bash * Neck Break * Nelson * Piledriver * Pin * Reversal * Shoulder Throw * Sleeper Hold * Suplex * Tackle * Take Down * Thigh Press") :Aikido (specialty :name "Aikido" :reference "* Water flows and takes any shape or course, yet it is always consistant with its own nature." :summary "* This essentially noncombative Japanese art concentrates on the development of the self, and physical, mental, and spiritual nonresistance. By moving with and blending with an opponent's attacks, they may be used against him. * Athletics - [Breakfall] * Evasion - [Deflect], [Disengage], [Drunken Monkey Roll], [Evasive Roll], [Iron Horse], [Weapon Block] * Grapples - [Air Throw], [Backroll Throw], [Disengage], [Grab], [Grapple Defense], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw], [Takedown] * Kicks - [Dragon Tail], [Kick Defense], [Leg Sweep], [Slide Kick] * Strikes - [Nerve Strike], [Strike Defense] GRAB: Ugoku Taosu(5) Atemi Torae(4) FOCUS: Push(2) Chi Kung Healing(3) Ghost Form(5) Stunning Shout(3) Zen No Mind(3)" :titles "Aikijutsu") :Boxing (specialty :name "Boxing" :summary "* Boxing is a fighting style that concentrates exclusively on punches. * Evasion - [Iron Skin] * Strikes - [Dash Attack], [Deflecting Punch], [Feint], [Haymaker], [Head Butt], [Hook], [Hyperfist], [Jab], [Ram], [Spinning Back Fist], [Uppercut] * Grapples - [Grab]") :Brawling (specialty :name "Brawling" :summary "* Brawling is no holds bars, no rules hand to hand fighting." :titles "Bruiser, Pit Fighter, Street Fighter, Thug") :Capoeira (specialty :name "Capoeira" :summary "* A Brazilian marital art developed by slaves who were brought to South America from Africa. The style was disguised as dance to avoid punishment when caught training. The style is still typically practiced to music. The style developed acrobatic maneuvers that could be used while chained. Capoeiristas will sometimes cross the field doing cartwheels. Knife fighting is also sometimes included in the style. * Athletics - [Backflip], [Breakfall], [Cartwheel], [Jump], [Kippup] * Evasion - [Drunken Monkey Roll] * Grapples - [Backroll Throw] * Kicks - [Backflip Kick], [Dragon Tail], [Handstand Kick], [Kick Defense], [Knee Strike], [Leg Sweep], [Spinning Thrust Kick] * Strikes - [Head Butt], [Strike Defense]") "Commando Training" (specialty :name "Commando Training" :summary "* Commando Training is a generic term for the fighting styles taught to armed forces members. It is a practical, sometimes brutal style that borrows from a variety of other styles and combines them into a style that can be taught to recruits quickly. * Evasion - [Disarm], [Kick Defense], [Strike Defense] * Grapples - [Choke Hold], [Grab], [Grapple Defense], [Knee Bash], [Joint Lock], [Pin], [Shoulder Throw], [Tackle] * Kicks - [Knee Strike], [Leg Sweep] * Strikes - [Elbow Strike], [Hook], [Knife Hand], [Spinning Back Fist], [Sword Hand]" :titles "Special Forces Training") :Hapkido (specialty :name "Hapkido" :summary "* This Korean Martial Art borrows many techniques successfully from other styles; it is a combination of the Aidido, Jujutsu, and Karate styles of Japan with the Korean systems of hwang Do and Taekyon (percursor to Tae Kwan Do). It is a style that teaches focus on passivity in opposing force, countering and attacking with circular motions, and the absolute penetration of an opponent's defenses. * A Hapkido practitioner receives a strong attack gently and counters a gentle attack powerfully and a subtle rythym of attacks and counters develops in the combat. This perpetual and fluid rythym, as well as constant mobility, are hallmarks of the style. * Athletics - [Breakfall], [Jump] * Evasion - [Disarm], [Evasive Roll] * Grapples - [Back Roll Throw], [Grappling Defense], [Joint Lock], [Choke Hold], [Pin], [Shoulder Throw], [Takedown] * Strikes - [Deflecting Punch], [Nerve Strike], [Phoenix Strike], [Spinning Back Fist], [Strike Defense] * Kicks - [Axe Kick], [Crescent Kick], [Double Kick], [Flying Kick], [Kick Defense], [Leg Sweep], [Roundhouse Kick], [Spinning Thrust Kick]") :Hsing-I (specialty :name "Hsing-I" :summary "* Hsing-I stylists attempt to use the body's internal energy, ch'i, to perform astounding feats. The first set of block-strike manuevers are based on the five elements (fire, water, earth, metal, and wood). The second is a group of animal based forms (including Dragon, Tiger, Horse, Turtle, Chicken, Snake, and Bear). The typical attack is to block a strike, grab the arm or leg, and strike back with the hand. * Evasion - [Deflect], [Weapon Block] * Brawling - [Haymaker] * Grapples - [Hip Throw], [Joint Lock] * Kicks - [Kick Defense], [Leg Sweep] * Strikes - [Grab Punch], [Nerve Strike], [Phoenix Strike], [Strike Defense]" :titles "Heart and Mind") :Hwarang-Do (specialty :name "Hwarang-Do" :summary "* This style concentrates on punches and a wid variety of weapon techniques. Further masters are said to possess mystical powers including telepathy, clairvoyance, and the ability to sense danger. * A Korean style that is said to have grown out of certain healing techniques, and modern masters are often healers as well. Legend has it that a Buddhist mong developed the style and taught it to the Hwarang who were similar the Korean equivalent of knights: fighters, diplomats, and military leaders who lived by a strict code of honor. * Athletics - [Breakfall], [High Jump], [Kippup], [Long Jump] * Evasion - [Deflect], [Disengage] * Grapples - [Choke Hold], [Grapple Defense], [Joint Lock], [Shoulder Throw] * Kicks - [Backflip Kick], [Kick Defense], [Roundhouse Kick], [Slide Kick] * Strikes - [Dash Attack], [Elbow Strike], [Nerve Strike], [Phoenix Strike], [Strike Defense] * Focus Powers - [Blind Fighting], [Spirit Healing], [Zen No Mind]") "Jeet Kune Do" (specialty :name "Jeet Kune Do" :reference "* Use whatever works." :summary "* A martial art created by the late Bruce Lee. After studying many differenct martial arts, Lee decided that their reliance on a limited group of maneuvers made them ineffective. Instead, he catalogued all of the ways that the human body could be used to attack or defend and then created a simplified and practical fighting style with no patterns or predefined conceptions. * Grapples - [Choke Hold], [Joint Lock], [Hip Throw] * Kicks - [Foot Stomp], [Kick Defense], [Lightning Leg], [Roundhouse Kick] * Strikes - [Elbow Strike], [Feint], [Nerve Strike], [One Two Punch], [Phoenix Strike], [Spinning Back Fist], [Strike Defense] * Focus Powers - [Zen No Mind]" :titles "The Way of the Intercepting Fist") :Jujutsu/Judo (specialty :name "Jujutsu/Judo" :summary "* A Japanese fighting style with roots 1200 years old. * Jujutusu focuses on grapples instead of strikes. The typical maneuver grabs an opponent, forces him to the ground, and finishes him off. * Athletics - [Breakfall], [Kippup] * Evasion - [Disarm], [Disengage], [Iron Horse] * Grapples - [Air Throw], [Backroll Throw], [Choke Hold], [Ground Fighting], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw], [Takedown] * Kicks - [Dragon Tail], [Leg Sweep] * Strikes - [Disarm], [Nerve Strike]") :Kabaddi (specialty :name "Kabaddi" :summary "* [Head Butt] KICK: Slide Kick(2) BLOCK: San He(3) Energy Reflection(3) GRAB: Head Butt Hold(2) Brain Cracker(1) Dislocate Limb(3) Disengage(1) Air Suplex(1) ATHLETICS: Cannon Drill(5) Flying Body Spear(2) FOCUS: Chi Kung Healing(3) Extendible Limbs(4) Fireball(3) Improved Fireball(5) Regeneration(1) Yoga Flame(3) Yoga Teleport(5) Cobra Charm(2) Ghost Form(5) Flying Fireball(3) Inferno Strike(5) Mind Reading(3) Telepathy(2) Chi Push(5) Levitation(3) Balance(3) Leech(3)") :Kalaripayattu (specialty :name "Kalaripayattu" :summary "* A boxing art from southern India that dates back to 500 AD. Fighters are trained in 4 syltes: unarmed, stick fighting, other weapons, and the 108 vital points of the human body. Masters are also skiled healers. * Athletics - [Breakfall], [Jump] * Grapples - [Joint Lock], [Throw] * Kicks - [Flying Kick], [Roundhouse Kick] * Strikes - [Elbow Strike], [Nerve Strike], [Phoenix Strike], [Strike Defense], [Sword Hand] * Focus Powers - [Spirit Healing]" :titles "Battlefield Practices, Gurus") :Karate (specialty :name "Karate" :summary "* Karate focuses on direct strikes and kicks with few grabs or throws. * An extremely popular martial art originating in Okinawa, Japan in 400 AD. It became well developed only after the Japanese invaders forbade the Okinawans to carry weapons. * Athletics - [Jump], [Kippup] * Close Combat - [Hook] * Evasion - [Deflect], [Disarm], [Iron Horse], [Iron Skin] * Grapples - [Backroll Throw], [Hip Throw], [Shoulder Throw] * Kicks - [Axe Kick], [Back Kick], [Cresent Kick], [Dobule Kick], [Dragon Tail], [Flying Kick], [Foot Stomp], [Kick Defense], [Leg Sweep], [Reverse Front Kick], [Roundhouse Kick], [Scissor Kick] * Strikes - [Crouching Strike], [Dash Attack], [Dragon Fist], [Elbow Strike], [Knife Hand], [Nerve Strike], [Palm Strike], [Spinning Back Fist], [Strike Defense], [Sword Hand], [Tiger Claw]" :titles "Empty Hands") :Kickboxing (specialty :name "Kickboxing" :summary "* [Backroll Throw] * [Dashing Punch] * [Haymaker] * [Hyperfist] * [Knee Bash] * [Slide Kick] * [Spinning Back Fist] PUNCH: Feint(1) Hook(1) Double Hit Punch(1) Heart Punch(4) Lunge Punch(2) Fist Sweep(2) Dashing Punch(5) Turn Punch(5) Rekka Ken(5) Spinning Back Fist(1) Spinning Knuckle(3) KICK: Double Dread Kick(3) Back Roundhouse(1) Ax Kick(3) Reverse Frontal Kick(1) Flying Knee Thrust(1) Stepping Front Kick(3) Slide Kick(2) Double Hit Kick(1) Wounded Knee(2) BLOCK: Deflecting Punch(1) GRAB: Knee Basher(2) Back Roll Throw(1) Brain Cracker(1) ---- Savate ---- PUNCH: Spinning Back Fist(1) Palm Heel Punch(1) Ear Pop(2) Spinning Knuckle(3) KICK: Ax Kick(2) Double Hit Kick(1) Flash Kick(4) Double Dread Kick(3) Foot Sweep(1) Spinning Foot Sweep(1) Lightning Leg(5) Slide Kick(2) Stepping Front Kick(4) Flying Knee Thrust(1) Double Hit Knee(1) BLOCK: GRAB: Knee Basher(2) Bear Hug(1) Neck Choke(2)" :titles "Savate") :Kobujutsu (specialty :name "Kobujutsu" :summary "* The martial art specializing in Okinawan weapons. * Melee - [Bash], [Dazing Blow], [Disarm], [Fleche], [Jab], [Parry], [Riposte], [Slash], [Sweep], [Thrust] * Melee Weapons - [Bo Staff], [Eiku], [Jo Staff], [Kama], [Nunchaku], [Sai], [Tonfa]") :Krabi-Krabong (specialty :name "Krabi-Krabong") "Kung Fu, Crane Style" (specialty :name "Kung Fu, Crane Style" :summary "* The crane was known for its grace and beauty. Known to stand on one leg for long periods of time, it is no wonder that the crane stylists had excellent balance and were known for their awesome kicking ability and long range techniques. * Crane is very upright, attacking with carefully aimed strikes at long range and defending with redirection and retreat rather than resistance. Working from outside an opponent's effective range, Crane demands extreme technical proficiency and smooth footwork, as well as careful timing and judgment. Crane is high, circular, soft, and distant, working chiefly with progressive indirect attacks. * Athletics - [Breakfall], [High Jump], [Jump] * Evasion - [Avoid], [Deflect], [Evasive Roll], [Sidestep] * Kicks - [Axe Kick], [Flying Kick], [Kick Off], [Leg Sweep], [Vault Kick] * Strikes - [Dash Attack], [Grab Punch], [Nerve Strike], [Spinning Back Fist]") "Kung Fu, Dragon Style" (specialty :name "Kung Fu, Dragon Style" :summary "* Shen Lung (Spiritual or Invisible Dragon): While the Dragon is not a formally taught style in Shen Lung it instead represents what emerges when a practitioner can draw freely from all five animals as the situation demands. One who can use the power of Tiger, the mechanics of Mantis, the speed of Snake, the movements of Crane, and the cunning of Monkey. * As the dragon floats through the sky he twists and coils, flipping his tail as he turns. The dragon stylist uses turns and circular motions to throw and strike his opponents. * 'Ride the wind', a phrase which means follow rather than lead. Provide no opening without first letting your opponent open. Unlike Crane, which also relies heavily upon evasion as a tactic, the Dragon evades primarily by rotation of upper or lower torso with little or no stance movements, while the Crane stylist hops frequently to reposition the entire body. Both styles employ pinpoint strikes to vulnerable meridian targets, but dragon also heavily uses tiger-like punches and clawing techniques, snake-like stance shifts, and leopard-like hit and run strikes to weaken a physically superior adversary. Dragon kung fu also regularly employs low sweeping techniques * Kicks - [Dragon Tail], [Flying Kick] * Strikes - [Dragon Fist], [Nerve Strike]") "Kung Fu, Leopard Style" (specialty :name "Kung Fu, Leopard Style" :summary "* The leopard was known for its tremendous speed and cunningness. Unlike the tiger that doesn't mind frontal attacks, the leopard stylist prefers to attack only when the odds are in his favor. The only time he shows he is hurt is when he is not. He acts like he is running away in order to come back with an attack on his own ground. * Blocking is wasted in Leopard - the style can be summed up with 'Why block when you can hit?' It does not rely on rooted stances, and would only assume a stance while in attack in order to launch at the opponent. This hit and run technique of the leopard, something especially effective against larger opponents, is unique to the animal. * An interesting technique of the leopard is the ability to simultaneously block and strike. The sheer speed of the leopard is a defining characteristic of the style * Evasion - [Dodge], [Dodge Roll] * Strikes - [Deflecting Punch], [Dash Attack]") "Kung Fu, Mantis Style" (specialty :name "Kung Fu, Mantis Style" :summary "* Mantis operates in sequences and combinations baffling opponents with multiple simultaneous attacks and blocks, all executed at high speed. Mantis is a quick, high, linear, hard style that attacks by rapidly executed combinations. * [Combo] * Strikes - [Deflecting Punch], [Hyperfist], [Jab], [Knife Hand], [One Two Punch]") "Kung Fu, Monkey Style" (specialty :name "Kung Fu, Monkey Style" :summary "* Monkey style prefers to go to the ground, integrating throws, locks, grappling and ground-fighting. Monkey is very low, both hard and soft, close-range and favors full body contact. * Evasion - [Drunken Monkey Roll] * Grapples - [Grab], [Joint Lock], [Hold], [Pin], [Takedown] * Strikes - [Monkey Punch]") "Kung Fu, Snake Style" (specialty :name "Kung Fu, Snake Style" :summary "* The snake is known for its speed once an opponent is in striking range. The snake raises its head and waits patiently until the unsuspecting opponent gets too close. The snake stylist, too, concentrates on waiting until the time is right and with his fingertips, strikes to a vital spot in a blink of an eye. Knowing how to use one's internal energy or chi is a major part of the snake system. * Snake is a soft style using an opponent's energy against them rather than resisting it. Snakes absorb, control and redirect rather than block an attack. Snake stylists are known for circular and whip-like motions flowing around opponents, climbing over their defenses and striking repeatedly in rapid succession. Snake is high, circular, soft and extremely fast, favoring progressive direct attacks that overwhelm a defense. * Snake style is based on whipping power which travels up the spine to the fingers. The ability to sinuously move, essentially by compressing one's stomach/abdominal muscles, is very important. * Strikes - [Back Fist], [Knife Hand], [Nerve Strike] * Focus Powers - [Death Touch]") "Kung Fu, Tiger Style" (specialty :name "Kung Fu, Tiger Style" :summary "* Known for its power and strength, the tiger stylists were known for their ripping and tearing techniques. Hands held like tiger claws, these fighters would strike and claw with tremendous speed and power. * Tiger emphasizes close-range strikes, throws, and a willingness to stay in the danger zone long enough to set up a single fight-ending blow. Tiger commits fully to every motion, and maximizes power at the expense of mobility. Tiger is low, hard-style, and works with single direct attacks. * Strikes - [Crouching Strike], [Dash Attack], [Dragon Fist], [Elbow Strike], [Eye Rake], [Haymaker], [Strike Defense], [Sword Hand], [Tiger Claw]") "Kung Fu, Wing Chun" (specialty :name "Kung Fu, Wing Chun" :summary "* Wing Chung, literally 'singing spring', is a Southern Chinese kung fu style and a form of self-defense originating in Qing China, which requires quick arm movements and strong legs. Softness (via relaxation) and performance of techniques in a relaxed manner is fundamental to Wing Chun.") "Muay Thai" (specialty :name "Muay Thai" :reference "* Apachai: The use of knees and elbows is very important in Muay Thai. * Akisame: Which, in fact, is rather rare as most contemporary martial arts have banned the use of knees and elbows in tournament fighting. * Kenichi: Really? How come? * Apachai: If you use them wrong, you can kill your opponent! * Akisame: That's right. However, in Muay Thai, they specifically focus on these moves. * Kenichi: Yeahhh, and why is that? * Apachai: Because if you use them right, you can kill your opponent! - Kenichi: World's Mightiest Disciple" :summary "* A fast, brutal martial art from Thailand. * The style uses close strikes with the knees, elbows, fists, and feet. There are no grabs or throws. Fighters often jump up to add more force to their blows. Fighters are also trained to take damage as much as avoid it. * Evasion - [Iron Skin] * Grapples - [Knee Bash] * Kicks - [Axe Kick], [Double Kick], [Foot Stomp], [Kick Defense], [Knee Drop], [Knee Strike], [Leg Sweep], [Lightning Leg], [Reverse Front Kick], [Roundhouse Kick] * Strikes - [Dash Attack], [Dragon Punch], [Elbow Drop], [Elbow Strike], [Feint], [One Two Punch], [Ram], [Spinning Back Fist], [Strike Defense], [Sword Hand], [Uppercut]" :titles "Thai Kickboxing") :Ninjutsu (specialty :name "Ninjutsu" :summary "* Ninjutsu is the art of the Japanese Ninja. Ninjutsu saw greatest use from 1200-1600 AD when warlords employed ninja clans to spy on and assassinate their enemies. * The primary weapons of the ninja are the ninja-to sword and shuriken throwing stars. They were also adept in many types of concealed weapons. They are also known for unusual gadgets to assist them in climbing, crossing water, picking locks, etc. They are assassins, so they are not interested in honorable combat and will use traps or poison instead of combat if possible. * Kunoichi - Female ninja operated as infiltrators, spies and assassins. They spent time in enemy houses, reported secrets and undermined rival houses by any means necessary. Kunoichi could use their gender to their advantage because women were underestimated as warriors. This made it easier for them to get closer to their targets by posing as maids, geisha, servants and priestesses. In some cases, they were taken on as concubines and mistresses, giving them unparalleled access to all their marks. * Athletics - [Backflip], [Breakfall], [Jump], [Wall Spring] * Evasion - [Deflect], [Disarm], [Dirty Fighting], [Disengate], [Distraction], [Dive for Cover], [Dodge], [Dodge Roll], [Weapon Block] * Grapples - [Air Throw], [Backroll Throw], [Choke Hold], [Grapple Defense], [Groundfighting], [Joint Lock], [Suplex], [Takedown], [Tackle] * Kicks - [Backflip Kick], [Handstand Kick], [Leg Sweep], [Roundhouse Kick], [Slide Kick] * Strikes - [Ear Pop], [Grab Punch], [Nerve Strike], [Phoenix Strike] * Melee - [Dazing Blow], [Jab], [Parry], [Riposte], [Slash], [Thrust]" :titles "Shinobi, Kunoichi") :Pakua (specialty :name "Pakua" :summary "* A Chinese 'internal' fighting style derived from I Ching, the Book of Changes which states that the universe is in a state of constant change. Therefore, in Pakua, any change, the placement of the foot, the turning of a hand is important. Pakua is highly circular and emphasizes footwork and constant motion. Pakua masters are said to use palm strikes instead of fist strikes to better control the energy they release. * Evasion - [Deflect], [Sidestep], [Weapon Block] * Grapples - [Grapple Defense], [Joint Lock] * Kicks - [Kick Defense], [Leg Sweep] * Strikes - [Grab Punch], [Palm Strike], [Strike Defense] * Focus Powers - [Zen No Mind]" :titles "Eight Diagrams") :Pentjak-Silat (specialty :name "Pentjak-Silat" :summary "* A broad set of Indonsian fighting styles. Fighters are trained to keep their footing on unstable ground because the condition is so common in Indonesia. Silat teaches many weapons especially the kris, a wavy bladed dagger. The mysticism and legends surrounding this weapon equal or exceed the katana. * Athletics - [Breakfall], [Disarm], [Disengage], [Dodge Roll], [Jump], [Kippup] * Evasion - [Deflect], [Hip Throw], [Iron Horse], [Iron Skin] * Grapples - [Choke Hold], [Grab Punch], [Grapple Defense], [Joint Lock], [Pin], [Takedown] * Kicks - [Double Kick], [Dragon Kick], [Flying Kick], [Leg Sweep], [Lightning Leg], [Roundhouse Kick] * Strikes - [Deflecting Punch], [Hyperfist], [Jab], [Nerve Strike], [Phoenix Strike], [Sword Hand] * Melee - [Fleche], [Parry], [Riposte], [Slash], [Thrust]" :titles "Guru, Pandekar, Silat") :Savate (specialty :name "Savate" :summary "* French Kickboxing developed in Marseilles in the 1600s from kick brawling French sailors. The style is characterized by a bouncing gait and a unique kick style. When delivering kicks, the fighter leans away from the direction of the kick and stretches one arm back like a fencer to maintain balance. This allows the torso to pivot away from any counterattack. Kicks are landed with the toes or shins instead of the ball or heel and are designed to quickly slip by blocking arms. * Evasion - [Disarm] * Grapples - [Back Roll Throw], [Bear Hug], [Choke Hold], [Knee Bash] * Kicks - [Axe Kick], [Double Kick], [Kick Defense], [Kick Off], [Knee Strike], [Leg Sweep], [Lightning Leg], [Roundhouse Kick], [Slide Kick], [Spinning Thrust Kick] * Strikes - [Dash Punch], [Deflecting Punch], [Ear Pop], [Feint], [Hook], [One Two Punch], [Palm Strike], [Spinning Back Fist], [Strike Defense]" :titles "Savateur, Savateuse") :Sumo (specialty :name "Sumo" :summary "* Evasion - [Iron Horse], [Iron Skin] * Grapples - [Air Throw], [Bear Hug], [Grapple Defense], [Knee Bash], [Hip Throw], [Shoulder Throw] * Kicks - [Double Kick], [Dragon Tail], [Leg Sweep] * Strikes - [Ear Pop], [Head Butt], [Hyperfist], [One Two Punch], [Palm Strike], [Sword Hand]" :titles "Cireum") "Tae Kwon Do" (specialty :name "Tae Kwon Do" :summary "* A Korean martial art developed in the 1600s AD. It emphasizes kicks over punches. * Athletics - [Breakfall], [Jump], [Wall Spring] * Evasion - [Deflect], [Iron Horse] * Kicks - [Axe Kick], [Double Kick], [Flying Kick], [Hurricane Kick], [Kick Off], [Knee Strike], [Lightning Leg], [Reverse Front Kick], [Roundhouse Kick], [Scissor Kick] * Strikes - [Deflecting Punch], [Haymaker], [Hyperfist], [Spinning Back Fist], [Sword Hand]" :titles "The Way of Kicking and Punching") "Tai Ch'i Ch'uan" (specialty :name "Tai Ch'i Ch'uan" :summary "* The ultimate internal Chinese martial art. The style is based on the Thirteen Postures (8 actions, 5 directions). It emphasizes blocking a strike and grabbing or striking back. * Athletics - [Balance], [Breakfall] * Evasion - [Deflect], [Disarm], [Disengage], [Iron Horse], [Iron Skin] * Grapples - [Air Throw], [Back Roll Throw], [Grab Punch], [Grappling Defense], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw] * Kicks - [Dragon Tail], [Kick Defense], [Leg Sweep], [Slide Kick] * Strikes - [Deflecting Punch], [Grab Punch], [Nerve Strike], [Palm Strike], [Phoenix Strike], [Strike Defense] * Focus - [Empty Force], [Spirit Healing], [Zen No Mind]" :titles "Supreme Ultimate Fist, Yin-Yang Boxing") :Wrestling (specialty :name "Wrestling" :summary "* Wrestling is one of the earliest martial arts. Virtually every ancient society had some form of wrestling and many have survived largely unchanged. * Atheltics - [Breakfall], [Jump] * Evasion - [Disengage] * Grapples - [Air Throw], [Backbreaker], [Bear Hug], [Choke Hold], [Grapple Defense], [Hip Throw], [Iron Claw], [Joint Lock], [Knee Bash], [Nelson], [Piledriver], [Pin], [Reversal], [Sleeper Hold] [Shoulder Throw], [Suplex], [Tackle], [Take Down], [Thigh Press] * Kicks - [Knee Strike] * Strikes - [Ear Pop], [Haymaker], [Ram]" :titles "Dumog/Greco Roman/Koshti/Naban/Sanbo/Yaghliguresh") "Wu Shu" (specialty :name "Wu Shu" :summary "* [Axe Kick] * [Backflip Kick] * [Backroll Throw] * [Drunken Monkey Roll] * [Flying Kick] * [Handstand Kick] * [Hurricane Kick] * [Kick Off] * [Kippup] * [Leg Sweep] * [Lightning Leg] * [Reverse Front Kick] * [Rolling Attack] * [Scissor Kick] * [Slide Kick] * [Spinning Back Fist] * [Spinning Thrust Kick] * [Wall Spring] PUNCH: Rekka Ken(5) Spinning Knuckle(3) KICK: Back Flip Kick(2) Forward Back Flip Kick(1) Ax Kick(4) Cartwheel Kick(2) Reverse Frontal Kick(2) Scissor Kick(4) Flying Thrust Kick(4) Forward Flip Knee(2) Handstand Kick(1) Hurricane Kick(1) Air Hurricane Kick(1) Lightning Leg(3) Stepping Front Kick(4) Whirlwind Kick(4) Double Hit Kick(1) Great Wall Of China(5) Descending Wheel Kick(4) BLOCK: Maka Wara(4) San He(3) GRAB: Air Throw(2) Back Roll Throw(1) ATHLETICS: Cannon Drill(5) Displacement(4) Backflip(2) Flying Heel Stomp(3) Rolling Attack(3) Vertical Rolling Attack(3) Wall Spring(1) Evasive Tumble(2) FOCUS: Balance(4) Chi Kung Healing(4) Fireball(4) Improved Fireball(5) Flying Fireball(3)") :Binding (specialty :name "Binding" :summary "* Includes Garotte, Pianowire, Monofilament, Pillowcase, Towel, Rolled up Shirt, etc." :titles "Strangler") :Knives (specialty :name "Knives" :reference "* Do you want to know why I use a knife? Guns are too quick. You can't savor all the little...emotions. You see, in their last moments, people show you who they really are. So, in a way I know your friends better than you ever did. Would you like to know which of them were cowards? - Joker, The Dark Knight" :summary "* Includes Pocket Knives, Switchblades, Straight Razors, Small Kitchen Knives, etc." :titles "Butcher, Knife Fighter, Murderer"))) "Combat Focus" (skill :name "Combat Focus" :titles "Chi Powers" :stat "Spirit" :abilitymap (abilitymap "Blind Fighting" (ability :name "Blind Fighting") :Combo (ability :name "Combo" :summary "* Any combat abilities may be strung together as a Combo. Every ability after the first gets +1 to initiative. If any ability misses or fails, then the combo ends and the next ability is at -1 initiative. Each combo must be chosen when this ability is gained and must be taken again for each separate combo.") "Death Touch" (ability :name "Death Touch" :reference "Five Point Palm Exploding Heart Technique - Kill Bill" :summary "* The fighter strikes vulnerable pressure points, disrupting the opponent's chi flow causing intense pain or death. The effect has no outward effect, but the victim will know something is wrong. Eventually, the victim recovers or dies suddenly from the stress. -1 Action -2 Initiative -2 Accuracy +0 Damage - [Stun] only +3 Criticals - [Poison] 0 Move -1 Defense" :titles "Dim Mak") "Empty Force" (ability :name "Empty Force" :summary "* The fighter projects a strike across empty space. The fighter may strike at any range, but if he does not score at least 1 Criticals for each space of Range, the ability fails. -2 Initiative -2 Move -1 Damage Critical - [Range]" :titles "Distant Death, Kongjin") "Feather Walk" (ability :name "Feather Walk" :summary "* Reduces body weight while active. This increases the effects of [Retreat] and leaping while decreasing falling speed and damage. * If [Skill] greater than or equal to [Body], then unit may walk on any substance that would suspend a feather." :titles "Feather Fall, Walk on Water") "Feign Death" (ability :name "Feign Death") "Hold Breath" (ability :name "Hold Breath") "Spirit Healing" (ability :name "Spirit Healing" :titles "Chi Kung Healing") "Team Combo" (ability :name "Team Combo" :reference "Fastball Special - Colossus and Wolverine, X-men" :summary "* Like a [Combo], the Team Combo chains attacks together. The Team Combo however is performed by different members of a team with the identical Team Combo. Any team member may perform each step of the combo with each subsequent attack allowed to reroll 1 die. The combo ends if any attack misses, any member attacks twice in a row, or if a turn passes with no attack attempt. Any combat abilities may be strung together as a Team Combo (even abilities that only others in the team possess). Each combo must be chosen when this ability is gained and must be taken again for each separate combo.") "Walk on Fire" (ability :name "Walk on Fire") "Zen No Mind" (ability :name "Zen No Mind" :reference "The mind must always be in the state of 'flowing,' for when it stops anywhere that means the flow is interrupted...In the case of the swordsman, it means death. When the swordsman stands against his opponent, he is not to think of the opponent, nor of himself, nor of his enemy's sword movements. ... When he strikes, it is not the man but the sword in the hand of the man's subconscious that strikes. - Zen Master Takuan Soho" :summary "* A mind not fixed or occupied by thought or emotion and thus open to everything. * Mushin is achieved when a fighter feels no anger, fear or ego during combat, so the fighter is totally free to act and react towards an opponent without hesitation. At this point, a person relies not on what they think should be the next move, but what is felt intuitively. * A martial artist would likely have to train for many years to be capable of mushin. This allows time for combinations of movements and exchanges of techniques to be practiced repetitively many thousands of times, until they can be performed spontaneously, without conscious thought." :titles "Mushin"))) :Defense (skill :name "Defense" :titles "Armorer, Defender, Shield Bearer, Shield Warden, Warder" :stat "Body" :abilitymap (abilitymap :Armorsmithing (ability :name "Armorsmithing" :summary "* The ability to repair, improve, or even create armor.") :Counterattack (ability :name "Counterattack") "High Block" (ability :name "High Block" :summary "-1 Speed +4 Defense vs. [High Attack] +1 Defense vs. other attacks") "Low Block" (ability :name "Low Block" :summary "-1 Speed +4 Defense vs. [Low Attack] +1 Defense vs. other attacks") "Powered Armor" (ability :name "Powered Armor") "Shield Bash" (ability :name "Shield Bash") "Shield Block" (ability :name "Shield Block" :summary "* [Defend] [Damage]: Add Shield [Armor] to your [Armor].") "Shield Charge" (ability :name "Shield Charge") "Shield Guard" (ability :name "Shield Guard" :summary "* [Reaction] [Damage]: Before adjacent unit takes damage, discard a [Club] to add your Shield [Armor].") "Shield Sacrifice" (ability :name "Shield Sacrifice" :summary "* [Club] [Defend] [Damage]: The shield becomes the target of any [Overwhelm] damage.")) :specialtymap (specialtymap "Medium Armor" (specialty :name "Medium Armor") "Heavy Armor" (specialty :name "Heavy Armor") :Shields (specialty :name "Shields"))) :Evasion (skill :name "Evasion" :summary "* Evasion is a special defense typically used by those that choose to wear light or no Armor." :stat "Defense" :abilitymap (abilitymap "Blade Locking" (ability :name "Blade Locking" :summary "* [Requires]: [Parry], May only be used against swords, knives or polearms. * [Reaction]: -2 * [Success]: Opponent gains a [Broken Defense Token] for each [Hit]") "Body Climb" (ability :name "Body Climb" :summary "* [Requires]: [Melee] or [Close Combat] vs an enemy of larger scale. * [Damage]: If the hit location is [Q], [K], or [A], Climb the target's body and do +1 Damage.") :Deflect (ability :name "Deflect" :summary "* Deflect, catch, or even return projectiles hurled at the fighter. * This ability provides a second Defense roll against a projectile attack before the regular Defense roll. * [Reaction] +2 Initiative +1 Accuracy 0 Damage - Any successes become -Damage to the projectile. If the projectile has 0 Damage remaining, it is caught. Criticals - Any Criticals become -2 Damage to the proejctile. If the projectile has 0 Damage remaining and there are still Criticals, the projectile may be immediately thrown at +[Criticals] Accuracy.") "Dirty Fighting" (ability :name "Dirty Fighting" :titles "Bite, Eye Gouge, Ear Pop, Hair Pulling, Low Blow") :Disarm (ability :name "Disarm" :reference "The Red Leaves Cut means knocking down the enemy's long sword. The spirit should be getting control of his sword. When the enemy is in a long sword attitude in front of you and intent on cutting, hitting and parrying, you strongly hit the enemy's sword with the Fire and Stones Cut... If you then beat down the point of his sword with a sticky feeling, he will necessarily drop the sword. If you practise this cut it becomes easy to make the enemy drop his sword. - Miyamoto Mushashi, The Book of Five Rings" :summary "* Strike to knock a weapon or item from opponent's grasp. * This special ability does no damage but allows the user to force a target to drop an item (usually a weapon). -1 Initiative -1 Accuracy 0 Damage. Opponent drops the chosen item. Each critical moves the item 1 space away (your choice)." :titles "Red Leaves Cut") :Disengage (ability :name "Disengage" :summary "* The fighter removes a [Hold] token. * [Reaction] +1 Initiative 0 Damage -1 Move") "Dive for Cover" (ability :name "Dive for Cover") :Dodge (ability :name "Dodge" :summary "+1 Initiative -1 Action +1 Defense") "Dodge Roll" (ability :name "Dodge Roll") "Drunken Monkey Roll" (ability :name "Drunken Monkey Roll" :summary "* [Crouching] -1 Action +2 Initiative +2 Move +1 Defense") "Iron Horse" (ability :name "Iron Horse" :reference "The Blob, X-men" :summary "* The ability to prevent being moved. * [Passive] +1 Initiative Defense - When rolling Defense, [Hits] or [Criticals] can be exchanged for [Knockback] or [Knockdown] resistance. 0 Move" :titles "San He") "Iron Skin" (ability :name "Iron Skin" :summary "* Hardening of the skin to prevent cuts and punctures." :titles "Maka Wara, Stone Skin") :Sidestep (ability :name "Sidestep")) :specialtymap (specialtymap "Light Armor" (specialty :name "Light Armor") :Bucklers (specialty :name "Bucklers"))) :Melee (skill :name "Melee" :reference "* Mizu: I must become the greatest swordsman alive. Swordfather: Is that all? - Mizu and Swordfather, Blue Eye Samurai" :summary "* [Targetting]: Melee combat may only be used to attack the 3 space directly ahead of you or the space you are on. * See Arms and Armor for weapons" :titles "Battlemaster, Champion, Congueror, Fencer, Fighter, Master of Arms, Warrior" :stat "Body" :abilitymap (abilitymap "Abdomen Timing of Two" (ability :name "Abdomen Timing of Two" :reference "Abdomen Timing of Two refers to feinting an attack, then striking an enemy as they are retracting from an attack, hitting them in the abdomen with the correct timing of either two moves or two seconds. Although the technique seems relatively simple, Musashi lists this as one of the hardest techniques to time correctly.") "Anvil Strike" (ability :name "Anvil Strike" :summary "* [+1 Damage] when target is adjacent to solid terrain.") :Backlash (ability :name "Backlash") :Bash (ability :name "Bash" :summary "* A quick. powerful smashing maneuver usually performed 'sidearm' with an ax, club, or staff. * Requires: [Blunt Weapon] +1 Initiative +1 Damage Criticals - [Knockback]") "Blade Barrier" (ability :name "Blade Barrier" :summary "* Creates a 3 space wide [Wall] directly in front of the unit by rapidly swinging the blade in a flashy display. Anything crossing this wall is subject to an [Opportunity Attack]." :titles "Wall of Swords") "Blind Fighting" (ability :name "Blind Fighting") "Combat Sense" (ability :name "Combat Sense") "Continuous Cut" (ability :name "Continuous Cut" :reference "The Flowing Water Cut is used when you are struggling blade to blade with the enemy. When he breaks and quickly withdraws trying to spring with his sword, expand your body and spirit and cut him as slowly as possible with your long sword, following your body like stagnant water. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Reaction]: [+1 Defense]. If you are not hit, you may immediately attack as a free action at [-1 Attack]." :titles "Flowing Water Cut") "Dash Attack" (ability :name "Dash Attack" :summary "* [Requires]: May only move in a straight line this turn. * [Action]: [-1 Attack], May attack any number of adjacent opponents along path each at a cumulative -1.") "Dazing Blow" (ability :name "Dazing Blow" :summary "-2 Damage Damage - [Stun] Criticals - [Stun]" :titles "Pommel Strike") "Dual Wield" (ability :name "Dual Wield" :reference "* Not used on the battlefield where a shield would be more practical. * Used primarily for parrying during one on one duels. * Two longsword duelling was done by very skilled fighters in Italian duelling. * Dual katana Japanese styles also exist." :summary "* Using a Dagger, Hand Axe or Hammer in the off hand.") :Feint (ability :name "Feint" :summary "* Feints are maneuvers designed to distract or mislead, done by giving the impression that a certain maneuver will take place, while in fact another, or even none, will." :titles "Kizeme") "Fend Off" (ability :name "Fend Off" :summary "* [Requires]: Weapon with [Reach] * [Reaction]: If you hit with [Fend Off], the opponent may not move any closer to you this turn.") "Fire and Stones Cut" (ability :name "Fire and Stones Cut" :reference "The Fires and Stones Cut means that when the enemy's sword and your sword clash together you cut as strongly as possible without raising the sword even a little. This means cutting quickly with the hands, body and legs - all three cutting strongly. If you train well enough you will be able to strike strongly. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Reaction]: [+1 Defense] * [Action]: [+1 Attack], if you used this ability to [React] last turn.") :Fleche (ability :name "Fleche" :summary "* A [Lunge] forward where the attacker continues to move forward past the defender to avoid a [Riposte] or Counter Attack. -1 Initiative +1 Move - May only move straight forward. +1 Damage") "Follow Through" (ability :name "Follow Through" :summary "* [Action]: If you hit with this ability, you may immediately turn to the left or right and attack a target in the next adjacent space. This may be repeated any number of times at [-1 Attack] per target after the first though each additional target must be in the same direction.") :Hamstring (ability :name "Hamstring" :summary "* Attack the legs to slow the opponent. * [Action] -1 Accuracy Criticals - [Cripple]") :Impale (ability :name "Impale" :summary "* [Requires]: Spear * [Action] -1 Accuracy Criticals - [Piercing]") :Lunge (ability :name "Lunge") "Offhanded Fighting" (ability :name "Offhanded Fighting" :summary "* [Action]: Normal Attack take a -2 penalty if performed with the non primary hand. This ability negates that penalty when using this skill in the off hand.") :Parry (ability :name "Parry" :summary "* The fighter uses his weapon to block an opponent's attack. * [Reaction] +1 Initiative +2 Defense") "Piercing Strike" (ability :name "Piercing Strike" :summary "* [Action]: Trades damage to increase armor penetration.") "Rapid Strike" (ability :name "Rapid Strike" :reference "In One Timing means, when you have closed with the enemy, to hit him as quickly and directly as possible, without moving your body or settling your spirit, while you see that he is still undecided. The timing of hitting before the enemy decides to withdraw, break or hit, to be able to hit in the timing of an instant. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Requires]: Wear loose clothing or less. (Armor Penalty = 0). * [Action]: Speed +1, Attack -1" :titles "In One Timing, Lightning Blow") :Riposte (ability :name "Riposte" :reference "When your swords clash together, in one motion when your sword springs away from theirs, use a continuous motion to slash their head, body and legs." :summary "* Speedy attack that can only be performed after a [Parry] or a [Block]. * [Requires]: Previous Action was [Parry] or [Block] +2 Initiative +2 Attack" :titles "Counter Strike") "Set Against Charge" (ability :name "Set Against Charge") :Slash (ability :name "Slash" :summary "* A powerful blow with a cutting weapon. +1 Initative -1 Move +1 Accuracy Criticals - [Bleed]") "Stunning Blow" (ability :name "Stunning Blow" :summary "* [Attack]: Trades lethal damage for stunning damage.") :Sweep (ability :name "Sweep" :summary "* Attack the legs to trip the opponent. +1 Initative -1 Move -1 Damage Criticals - [Knockdown]" :titles "Trip") "There are Many Enemies" (ability :name "There are Many Enemies" :reference "When you are fighting one against many, draw both sword and companion sword and assume a wide-stretched left and right attitude. The spirit is to chase the enemies around from side to side, even though they come from all four directions. Observe their attacking order, and go to meet first those who attack first. Sweep your eyes around broadly, carefully examining the attacking order, and cut left and right alternately with your swords. Waiting is bad. Always quickly re-assume your attitudes to both sides, cut the enemies down as they advance, crushing them in the direction from which they attack. Whatever you do, you must drive the enemy together, as if tying a line of fishes, and when they are seen to be piled up, cut them down strongly without giving them room to move. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Requires]: [Duel Wield] * [Defense]: If [Surrounded], ignore opponents in front arc when determining [Surrounded] defense penalty.") :Thrust (ability :name "Thrust" :summary "+1 Initiative +1 Move Critcals - [Piercing]") "To Apply Stickiness" (ability :name "To Apply Stickiness" :reference "When the enemy attacks and you also attack with the long sword, you should go in with a sticky feeling and fix your long sword against the enemy's as you receive his cut. The spirit of stickiness is not hitting very strongly, but hitting so that the long swords do not separate easily. It is best to approach as calmly as possible when hitting the enemy's long sword with stickiness. The difference between 'Stickiness' and 'Entanglement' is that stickiness is firm and entanglement is weak. - Miyamoto Mushashi, The Book of Five Rings") "Weapon Block" (ability :name "Weapon Block" :summary "* Deflect, catch, or even turn strike back with a weapon used against the fighter. * This ability provides a second Defense roll against a weapon attack before the regular Defense roll. * [Reaction] +2 Initiative +1 Accuracy 0 Damage - Any successes become -Damage to the weapon. If the weapon has 0 Damage remaining, it is caught. Criticals - Any Criticals become -2 Damage to the weapon. If the weapon has 0 Damage remaining and there are still Criticals, the weapon may be immediately used at +[Criticals] Accuracy. Note: The weapon remains in the hands of the attacker.") "Whirlwind Attack" (ability :name "Whirlwind Attack" :summary "* Allows multiple attacks to different targets by trading accuracy for extra attacks.")) :specialtymap (specialtymap :Bladedancer (specialty :name "Bladedancer" :summary "* A combat technique focusing on elegant moves that efficiently combine attack and defense. Heavy armor may not be used with this technique.") :Fensing (specialty :name "Fensing" :summary "* A combat technique focusing on long quick blades like rapiers and epees." :titles "Fenser") "Sword Saint" (specialty :name "Sword Saint" :summary "* A combat technique focusing almost exclusively on mastery of the sword." :titles "Kensai, Kensei") :Axes (specialty :name "Axes" :reference "* Run to the bedroom, In the suitcase on the left You'll find my favorite axe. Don't look so frightened This is just a passing phase, One of my bad days. - Pink Floyd, One of My Turns" :titles "Axeman") "Flexible Weaponry" (specialty :name "Flexible Weaponry" :summary "* Backlash, Disarm, Trip" :titles "Hangman, Strangler") :Hammers (specialty :name "Hammers" :summary "* War hammers were developed as a consequence of the ever more prevalent metal armors of the medieval battlefields during the 14th and 15th centuries. Swords were of little use against these armors. The war hammer could deal blows of tremendous force to the target, especially when mounted on a pole, and by impact alone do damage without penetrating the armor. The spike end could be used for grappling the target's armour, reins, or shield, or could be turned in the direction of the blow to pierce even heavy armor. Against mounted opponents, the weapon could also be directed at the legs of the horse, toppling the armored foe to the ground where he could be more easily attacked. * See Arms and Armor for weapons") "Short Blades" (specialty :name "Short Blades" :summary "* Includes Short Swords, Daggers, Stilettos, Machetes, Large Kitchen Knives, etc.") :Polearms (specialty :name "Polearms" :summary "Fend Off" :titles "Glaivemaster, Halberdier, Poleman") :Spears (specialty :name "Spears" :summary "Fend Off, Impale, Set Against Charge, Shield Snare" :titles "Lancer, Javelineer, Myrmidon, Peltast, Pikeman, Spartan, Spearman, Velite") :Staves (specialty :name "Staves" :summary "* This specialty includes long staves and short sticks. Staves have longer reach than most weapons while fighting sticks attack with great speed. * [Bash], [Dazing Blow], [Disarm], [Fend Off], [Fleche], [Parry], [Riposte], [Sweep]" :titles "Arnis, Bojutus, Escrima, Kali, Stick Fighting") :Swords (specialty :name "Swords" :reference "The Book of Five Rings - Miyamoto Mushashi The Gaze * The gaze should be large and broad. This is the twofold gaze 'Perception and Sight'. Perception is strong and sight weak. * In strategy it is important to see distant things as if they were close and to take a distanced view of close things. It is important in strategy to know the enemy's sword and not to be distracted by insignificant movements of his sword. The gaze is the same for single combat and for large-scale combat. * It is necessary in strategy to be able to look to both sides without moving the eyeballs. You cannot master this ability quickly. Learn what is written here: use this gaze in everyday life and do not vary it whatever happens. The Five Attitudes * The five attitudes are: Upper, Middle, Lower, Right Side, and Left Side. These are the five. * Although attitude has these five dimensions, the one purpose of all of them is to cut the enemy. * There are none but these five attitudes. * Whatever attitude you are in, do not be conscious of making the attitude; think only of cutting. * Middle Attitude - Confront the enemy with the point of your sword against his face. When he attacks, dash his sword to the right and 'ride' it. Or, when the enemy attacks, deflect the point of his sword by hitting downwards, keep your long sword where it is, and as the enemy renews the attack cut his arms from below. * When you master my Way of the long sword, you will be able to control any attack the enemy makes. I assure you, there are no attitudes other than the five attitudes of the long sword of NiTo. * Upper Attitude - From the Upper attitude cut the enemy just as he attacks. If the enemy evades the cut, keep your sword where it is and, scooping from below, cut him as he renews the attack. * You will always win with the five long sword methods. You must train repeatedly. * Lower Attitude - Adopt the Lower attitude, anticipating scooping up. When the enemy attackes, hit his hands from below. As you do so, he may try to hit your sword down. If this is the case, cut his upper arm(s) horizontally with a feeling of 'crossing'. This means that from the Lower attitudes you hit the enemy at the instant that he attacks. You will encounter this method often, both as a beginner and in later strategy. * Left Side Attitude - Adopt the Left Side attitude. As the enemy attacks, hit his hands from below. If as you hit his hands he attempts to dash down your sword, with the feeling of hitting his hands, parry the path of his long sword and cut across from above your shoulder. Through this method you win by parrying the line of the enemy's attack. * Right Side Attitude - In the fifth approach, the sword is in the Right Side attitude. In accordance with the enemy's attack, cross your sword from below at the side to the Upper attitude. Then cut straight from above. * Cut and Slash - To cut and slash are two different things. Cutting, whatever form of cutting it is, is decisive, with a resolute spirit. Slashing is nothing more than touching the enemy. Even if you slash strongly, and even if the enemy dies instantly, it is slashing. When you cut, your spirit is resolved. You must appreciate this. If you first slash the enemy's hands or legs, you must then cut strongly. Slashing is in spirit the same as touching. When you realise this, they become indistinguishable. Learn this well." :summary "* Melee - [Abdomen Timing of Two], [Continuous Cut], [Dash Attack], [Dazing Blow], [Fleche], [Fire and Stones Cut], [Parry], [Riposte], [Slash], [There Are Many Enemies], [Thrust], [To Apply Stickiness]" :titles "Bushi, Fencer, Fencing, Kendo, Kenjutsu, Kensei, Ronin, Sword Saint, Samurai, Swordsman"))) :Ranged (skill :name "Ranged" :reference "* Good. Bad. I'm the guy with the gun. - Ash, Army of Darkness" :titles "Archer, Javelineer, Slinger" :abilitymap (abilitymap "Arcing Fire" (ability :name "Arcing Fire" :summary "* [Requires]: Bow or Javelin * May fire over other units that block Line of Sight.") "Barbed Javelin" (ability :name "Barbed Javelin" :summary "* [Requires]: Javelin * Criticals vs Large units are [Rage] Tokens.") "Bowel Raker" (ability :name "Bowel Raker" :summary "* +1 [Bleeding] * -1 [Piercing]" :titles "Serrated Arrow") "Deadly Arrow" (ability :name "Deadly Arrow" :summary "* [Requires]: Bow or Crossbow * Increase weapon range by 50% and choose [Hit Location]") "Double Shot" (ability :name "Double Shot" :summary "* -2 [Attack] * -1 [Piercing] * May attack two targets in same [Arc]." :titles "Double Throw") "Explosive Shot" (ability :name "Explosive Shot" :summary "* [Requires]: Bow or Crossbow") "Flaming Arrow" (ability :name "Flaming Arrow" :summary "* [Requires]: Bow or Crossbow") :Fletching (ability :name "Fletching" :summary "* The art of making arrows. High quality or specialized arrows are quickly used up and often impractical to buy. Creating your own is often a very practical solution." :titles "Bowyer") "Knife Throwing" (ability :name "Knife Throwing") "Piercing Shot" (ability :name "Piercing Shot" :summary "* [Requires]: Bow or Crossbow * [Attack]: [+1 Armor Piercing]") :Richochet (ability :name "Richochet" :summary "* [Requires]: Thrown Object") "Shield Snare" (ability :name "Shield Snare" :summary "* [Requires]: Javelin, Target with shield * [Attack]: Criticals are [Encumberance] Tokens.") "Signal Shot" (ability :name "Signal Shot" :summary "* Alert allied units by sending a prearranged signal. This can be flaming arrow at night, smoking arrow, singing arrow, etc. * [Requires]: Bow or Crossbow * [Action]: For the rest of the turn, other units adjacent to this unit may be treated as if under the [Sphere of Command] of any allied Commander.") "Stunning Throw" (ability :name "Stunning Throw" :summary "* [Requires]: Thrown Object * Trades lethal damage for stunning damage.")) :specialtymap (specialtymap :Archery (specialty :name "Archery" :summary "* Bowel Raker, Double Shot, Flaming Arrow" :titles "Archer, Archer Elite, Bowman, Crossbowman, Longbowman") "Thrown Weapons" (specialty :name "Thrown Weapons" :reference "You? You're very good. But me? I'm magic. - Bullseye, Daredevil Comics" :summary "* Barbed Javelin, Double Shot, Knife Throwing, Precision Throw, Shield Snare" :titles "Knife Thrower, Javelineer, Slinger"))) :Firearms (skill :name "Firearms" :titles "Crackshot, Marksman, Rifleman, Sharpshooter, Sniper" :abilitymap (abilitymap :Anti-Personnel (ability :name "Anti-Personnel" :summary "* [Action]: [+1 Damage] or [-1 Damage] vs. 2 or more Armor" :titles "Hollow Point") "Armor Piercing" (ability :name "Armor Piercing" :summary "* [Action]: Enemy at [-2 Armor]" :titles "Depleted Uraniumn") :Autofire (ability :name "Autofire" :summary "* [Requires]: Weapon with [Autofire] -1 [Attack] * [Action]: Target 2 adjacent units.") "Chemical Rounds" (ability :name "Chemical Rounds" :summary "* [Action]: [-1 Damage], [Critical Hits] are [Acid]") "Fast Draw" (ability :name "Fast Draw" :summary "* [Requires]: Hand weapon * Spend 1 Speed to draw a Hand weapon from holster to hip where he can [Shoot From The Hip].") "Gyrojet Rounds" (ability :name "Gyrojet Rounds" :summary "* [Action]: [+1 Damage] at Long Range, [-1 Damage] at Short Range" :titles "Rocket Rounds") "High Explosive Rounds" (ability :name "High Explosive Rounds" :summary "* [Action]: Use [Blast] rules for targetting and damage." :titles "Explosive Rounds") :Hipshoot (ability :name "Hipshoot") "Non-Lethal Rounds" (ability :name "Non-Lethal Rounds" :summary "* [Action]: [-2 Damage] vs. 2 or more Armor. Half of all [Damage] is [Stun] instead." :titles "Rubber Bullets") "Paint Rounds" (ability :name "Paint Rounds" :summary "* [Action]: [0 Damage], [Critical Hits] are [Stun]" :titles "Paintball") "Pin Down" (ability :name "Pin Down") "Rapid Fire" (ability :name "Rapid Fire") :Scattershot (ability :name "Scattershot" :summary "* Choose a target starting from the closest. * If a hit is scored, roll another attack on the same target. * If no hit scored, roll against next target. * -1 for each Space of Range (Cone), -1 per roll (cumulative, inclusive). * Criticals can be used for additional damage rolls (multiple Hits) * If target was [Armor], that Armor is at +2 vs this attack" :titles "Glaser, Shot") :Sniper (ability :name "Sniper" :reference "* The snipe (a family of shorebirds) is difficult to catch for experienced hunters, so much so that the word 'sniper' is derived from it to refer to anyone skilled enough to shoot one. * I aim to win and my aim... is Excellent. - Caitlyn, Runeterra" :summary "* [Requires]: Long Range Weapon * Increase weapon range by 50% and choose [Hit Location]") "Supressive Fire" (ability :name "Supressive Fire" :summary "* Firing weapons at enemy forces with the primary goal of forcing them to remain under cover. * [Requires]: Weapon with [Autofire] * [Action]: Target a unit that has not been activated this turn, all [Hits] and [Critical Hits] are [Stun] tokens. +1 Attack" :titles "Covering Fire") "Tracer Rounds" (ability :name "Tracer Rounds" :summary "* [Requires]: [Auto], Must attack same target on subsequent round. * [Action]: [+1 Attack], [-1 Damage].") "Tracking Rounds" (ability :name "Tracking Rounds") :Auto (ability :name "Auto" :summary "+1 Cost * Criticals can be used for additional damage rolls (multiple hits).") :Blast (ability :name "Blast") :Bombardment (ability :name "Bombardment") :Capacitors (ability :name "Capacitors" :summary "* Uses capacitors that can recharge 1 shot a turn from a power source rated at the same power level as a single shot. Cannot be used with lower energy power sources.") :Electroshock (ability :name "Electroshock" :titles "Taser") "Extra Ammo" (ability :name "Extra Ammo" :summary "* 2x number of shots, each time this modifier is taken.") "Flash Surpressor" (ability :name "Flash Surpressor" :summary "* Reduces the muzzle flare of the weapon making it more difficult to visually locate the shooter.") "Gun Mount" (ability :name "Gun Mount" :titles "Bipod, Tripod") :Overcharge (ability :name "Overcharge" :summary "* [Action]: Consume 2 shots to to 1 extra damage. Then Damage is -1 until repaired.") "Overload Weapon" (ability :name "Overload Weapon" :summary "* Detonate the entire weapon magazine (and the weapon) as an explosive with force equal to the total power in the magazine.") :Rechargable (ability :name "Rechargable" :summary "* Uses batteries that can be slowly recharged from any power source.") "Recoil Compensator" (ability :name "Recoil Compensator" :summary "* Reduces the 'kick' of the weapon and therefore reduces the penalty for continuous fire.") :Silencer (ability :name "Silencer") "Smoke Generator" (ability :name "Smoke Generator") "Targeting Laser" (ability :name "Targeting Laser") "Telescopic Sight" (ability :name "Telescopic Sight" :summary "Reduces penalties for Medium Range to Short Range and Long Range to Medium Range") :Turret (ability :name "Turret" :image "Tokens/Arrow.png" :summary "+1 Cost * Turret mounted weapons may turn their turret toward any direction and fire from the side the turret is facing. * Turrets are normally assumed to be facing forward. At the beginning of its [Action], a unit may change the turret facing by 1 side (Use a [Vector] Token) indicate where the Turret is pointing.")) :specialtymap (specialtymap "Energy Weapons" (specialty :name "Energy Weapons" :reference "Whoa, whoa, whoa! Nice shootin', Tex! - Ghostbusters") :Handguns (specialty :name "Handguns") :Rifles (specialty :name "Rifles") :Shotguns (specialty :name "Shotguns"))) :Gunnery (skill :name "Gunnery" :summary "* Gunnery skill cannot exceed level 5 - Because advanced weapons are mostly point and shoot, weapon skill has less to do with the gunner and more to do with the weapon and its control system. Further, advanced weapons technologies come in a multitude of variations with constantly changing interfaces therefore it is very difficult to dedicate oneself to a single system to become an expert. * See Arms and Armor for weapons" :titles "Artillerist, Bombardier, Field Ops, Gunner" :abilitymap (abilitymap "Air Burst" (ability :name "Air Burst") :Barrage (ability :name "Barrage" :summary "A barrage is a line or barrier of exploding shells from a large number of guns firing continuously. Its purpose is to deny or hamper enemy passage. It contrasts with a concentration, in which all the guns aim at the same small area. The barrage was developed in World War I, with the infantry following the advancing barrage. Its employment in this way recognised the importance of artillery fire in neutralising, rather than destroying, the enemy. A creeping barrage immediately followed by an infantry assault could be far more effective than weeks of preliminary bombardment.") "Forward Observer" (ability :name "Forward Observer" :summary "* [Action]: When unit has [Line of Sight] on a opponent, any number of units with [Indirect Fire] may attack that unit even if they do not have [Line of Sight].") "Indirect Fire" (ability :name "Indirect Fire" :summary "-2 Attack -2 Damage * Other units do not block [Line of Sight]. * See: [Forward Observer] * See: [HE - High Explosives]") "Point Defense" (ability :name "Point Defense") :Salvo (ability :name "Salvo" :summary "* The simultaneous discharge of weapons, rather than scattered 'fire at will'. * Up to 10 weapons of the same type can be in 1 Salvo. * All targets in the space are attacked.")) :specialtymap (specialtymap :Cannons (specialty :name "Cannons") :Flamethrowers (specialty :name "Flamethrowers") :Machineguns (specialty :name "Machineguns"))) "Physical Power" (skill :name "Physical Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect physical objects. * Physical Powers must have clear range and line of sight on a target." :stat "Body" :abilitymap (abilitymap "Gunnery Power" (ability :name "Gunnery Power" :summary "* Use [Gunnery] and a Gunnery item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Firearm Power" (ability :name "Firearm Power" :summary "* Can use [Firearms] and Firearm item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Close Combat Power" (ability :name "Close Combat Power" :summary "* Can use [Close Combat] instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Melee Power" (ability :name "Melee Power" :summary "* Use [Melee] and a Melee item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Ranged Power" (ability :name "Ranged Power" :summary "* Can use [Ranged] and a Ranged item of [Physical Power] to manifest a [Physical] [Ability] on contact."))) "Mental Power" (skill :name "Mental Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect the [Mind] of targets. * Mental Powers must have range and be able to 'see' the target." :titles "Mental Challenge" :stat "Mind" :abilitymap (abilitymap "Mental Grip" (ability :name "Mental Grip") "Mental Gymnastics" (ability :name "Mental Gymnastics") "Mind Whip" (ability :name "Mind Whip") "Psionic Blade" (ability :name "Psionic Blade") "Psionic Knife" (ability :name "Psionic Knife") "Intellect Fortress" (ability :name "Intellect Fortress"))) "Psychic Power" (skill :name "Psychic Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect the [Will] of targets. * Psychic Powers must have range and see or 'know' the target." :titles "Psychic Combat, Psychological Warfare, Soul Combat, Spirit Combat, Test of Will" :stat "Will" :abilitymap (abilitymap "Ego Whip" (ability :name "Ego Whip") "Psychic Knife" (ability :name "Psychic Knife") "Tower of Iron Will" (ability :name "Tower of Iron Will"))) :Command (skill :name "Command" :reference "* Generals are in the business of getting people killed. Captains like to keep theirs alive. You wanna put on a parade? Go find a general. You wanna fight your way home? Talk to me. - Obregon Kaine, Negation Comic * Well hello mister fancy pants. I got news for you pal. You ain't leading but two things right now: Jack and Shit and Jack left town. - Ash, Army of Darkness * And when Alexander saw the breadth of his domain, he wept for there were no more worlds to conquer. - Hans Gruber, Die Hard" :titles "Captain, Castellan, Commander, Drillmaster, Drill Sergeant, Major, Overlord, Sergeant, Warchief, Warlord" :stat "Mind" :abilitymap (abilitymap "Call to Arms" (ability :name "Call to Arms" :reference "Unite. Take up arms. Stand shoulder to shoulder with your brothers and sisters. And break free from the cold shackles of oppression. Liberty for all is more noble than the preservation of one's soul. Destiny and valor will meet at the end of the sword. And the tales of heroic sacrifice will be the legend of a new age. There will be no respite. There will be no surrender. Only glory and honor. The price will be high for the greatest prize of all. Stand and be counted among those that dared. Those who dared to fight for their freedom. - Glass Fleet" :summary "Gather a war party from the populace") "Chain of Command" (ability :name "Chain of Command" :summary "* [Action]: [Activate] up to [Command] units directly or indirectly adjacent to this unit. These units (including this one) may spend [Speed] or [Actions] in any order this [Turn]. * [Interrupt]: May not be used as an Interrupt.") :Rally (ability :name "Rally"))) :Military (skill :name "Military" :reference "* He can't make that kind of decision. He's just a grunt! No offense. None taken - Burke and Hicks, Aliens * I think we'd better split up...Yeah... we can do more damage that way. - Ghostbusters * If ten times the enemy's strength, surround them; If five times, attack them; If double, divide them; If equal, be able to fight them; If fewer, be able to evade them; If weaker, be able to avoid them. - Sun Tzu * Warfare is the art of deception. Thus although you are capable, display incapability to them. When your objective is nearby, make it appear distant; when it is far away, create the illusion of being nearby. - Sun Tzu, The Art of War" :titles "Admiral, Brigade, Brigadier, Cadet, Centurion, Colonel, Commander, Commando, Conscript, Corporal, Field Marshal, Footman, Gamesman, General, Grunt, High Guard, Honor Guard, Infantry, Legionnaire, Lieutenant, Praetor, Praetorian Guard, Reserves, Royal Guard, Soldier, Soldier of Fortune, Strategist, Tactician, Vanguard" :stat "Will" :abilitymap (abilitymap "Airborne Assault" (ability :name "Airborne Assault") "Amphibious Assault" (ability :name "Amphibious Assault") :Besiege (ability :name "Besiege") "Bomb Disposal" (ability :name "Bomb Disposal" :reference "* I'll tell you a dirty little secret. When you're in the middle of an explosion, it's the ultimate rush. - Haggerty, Obliterated * Who has one thumb and just saved Las Vegas? This guy! - Hagerty, Obliterated") "Close Assault" (ability :name "Close Assault" :summary "* [Action]: If a [Vehicle] is adjacent to this unit, you may target the Top Armor. If the unit has explosives, it may target the Under Armor.") "Combat Driver" (ability :name "Combat Driver" :summary "* Experienced in fighting in a car.") :Demolitions (ability :name "Demolitions" :summary "* Experienced with setting up large explosives to destroy large structures.") "Divide and Conquer" (ability :name "Divide and Conquer") "Diversionary Tactics" (ability :name "Diversionary Tactics") :Explosives (ability :name "Explosives" :summary "* Experienced using various small explosives in combat.") "Field Fortifications" (ability :name "Field Fortifications") "Formation: Back to Back" (ability :name "Formation: Back to Back" :summary "* [Formation]: Not strictly a formation, units with their backs against each other largely protect each other's back.") "Formation: Cover" (ability :name "Formation: Cover" :summary "* [Formation]: Not strictly a formation, units in Cover formation stay close enough together to protect each other's sides.") "Formation: March" (ability :name "Formation: March" :summary "* [Formation]: Units move in columns. * [+1 Speed]") "Formation: Parade" (ability :name "Formation: Parade" :summary "* [Formation]: A showy formation designed to look good. Has no use in battle. * [+ 1 Intimidation]") "Formation: Phalanx" (ability :name "Formation: Phalanx" :reference "* With his friends jostling and pushing on both sides and behind, and his enemies forming a solid wall in front of him, the hoplite had little opportunity for feats of technique and weapon skill, but great need for commitment and mental toughness. The hoplites had to trust their neighbors for mutual protection, so a phalanx was only as strong as its weakest elements. Its effectiveness depended on how well the hoplites could maintain this formation while in combat, and how well they could stand their ground, especially when engaged against another phalanx. The more disciplined and courageous the army, the more likely it was to win. The Greek word dynamis, the 'will' or 'ability to fight,' was used to express the drive that kept hoplites in formation." :summary "* [Formation]: Focuses on offense using Melee attacks with Reach. * [Requires]: At least half must have Weapons with Reach 2+. * [+1 Attack], [+1 Defense] from Front * [-1 Defense] from Rear") "Formation: Shield Wall" (ability :name "Formation: Shield Wall" :summary "* [Formation]: Uses shields to form a wall. * [Requires]: At least half must have Shields. +1 Defense from Front.") "Formation: Skirmish" (ability :name "Formation: Skirmish" :reference "Acting as light infantry with their light arms and minimal armor, they could run ahead of the main battle line, release a volley of arrows, slingshots or javelins, and retreat behind their main battle line before the clash of the opposing main forces. The aims of skirmishing were to disrupt enemy formations by causing casualties before the main battle, and to tempt the opposing infantry into attacking prematurely, throwing their organization into disarray. Skirmishers could also be effectively used to surround opposing soldiers in the absence of friendly cavalry." :summary "* [Formation]: Units move in loose shapes. * [Requires]: Only [Light Infantry]. * [Move]: Ignore 1 [Terrain Penalty]. * [+1 Defense] vs Ranged or Large Units * [+1 Defense] when in Terrain with Defense bonus * [-1 Defense] vs Small Melee and Close Combat Units" :titles "Skirmisher") "Formation: Testudo" (ability :name "Formation: Testudo" :image "Skills/Testudo.jpg" :summary "* [Formation]: Uses shields to form a shell around a unit. * [Requires]: At least half must have Shields. * [+2 Defense] vs Ranged * Shields protect all sides * Cannot Attack" :titles "Tortoise Formation, Turtle Up") "Formation: Tight" (ability :name "Formation: Tight" :summary "* [Formation]: Units stay tightly packed to maximize Melee defense. * [+1 Defense] vs Melee and Close Combat. * [-1 Defense] vs Ranged") "Formation: Wedge" (ability :name "Formation: Wedge" :summary "* [Formation]: Units move in triangle and focus on breaking enemy formations. * [+1 Retreat] Token if unit inflicts at least 1 [Retreat].") :Fortifications (ability :name "Fortifications") "Halo Drop" (ability :name "Halo Drop") "Jump Suit Combat" (ability :name "Jump Suit Combat") "Military Vehicle" (ability :name "Military Vehicle" :summary "* Every vehicle unit is assumed to have this ability. Units that are not vehicles must take this ability for each vehicle.") "Mine Clearing" (ability :name "Mine Clearing") "Mine Laying" (ability :name "Mine Laying") "Mobile Infantry" (ability :name "Mobile Infantry" :summary "* Experienced with powered armor.") "Orbital Halo Drop" (ability :name "Orbital Halo Drop") "Parachute Assault" (ability :name "Parachute Assault") :Sapping (ability :name "Sapping" :reference "* If it was important, then they should have built it better. - Desert Naturalist, Runeterra") "Space Combat" (ability :name "Space Combat") "Urban Assault" (ability :name "Urban Assault") "Wingsuit Combat" (ability :name "Wingsuit Combat")) :specialtymap (specialtymap :Siegecraft (specialty :name "Siegecraft" :summary "* Besiege * Fortifications * Sapping" :titles "Sapper")))))))) (func chapter_early_weaponry : base/chapter (chapter :name "Early Weaponry" :sectionmap (sectionmap "Early Armor" (section :name "Early Armor" :itemmap (itemmap :Bezainted (item :name "Bezainted") "Breast Plate" (item :name "Breast Plate" :summary "* Armor: 0 if hit in the Head, Arms, or Legs" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) :Brigandine (item :name "Brigandine") "Bronze Armor" (item :name "Bronze Armor" :summary "* Bronze Cuirass, Helmet, Greaves" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Chain Mail Armor" (item :name "Chain Mail Armor" :reference "* Shark expert and underwater filmmaker Valerie Taylor was among the first to develop and test shark suits in 1979 while diving with sharks. * Mail is widely used in industrial settings as shrapnel guards and splash guards in metal working operations. * Electrical applications for mail include RF leakage testing and being worn as a Faraday cage suit by tesla coil enthusiasts and high voltage electrical workers." :summary "* Chain mail is a type of armor consisting of small metal rings linked together in a pattern to form a mesh. It was generally in common military use between the 3rd century BC and the 16th century AD in Europe, and longer in Asia and North Africa." :titles "Chainmail, Mail, Byrnie, Hauberk" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Chain Mail Shirt" (item :name "Chain Mail Shirt" :summary "* Armor: 1mm if hit in chest" :titles "Chainmail, Mail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) :Cuirbouilli (item :name "Cuirbouilli") :Jazeraint (item :name "Jazeraint") "Laminated Armor" (item :name "Laminated Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Leather Armor" (item :name "Leather Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Pants" (item :name "Leather Pants" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Shirt" (item :name "Leather Shirt" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Vest" (item :name "Leather Vest" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Padded Armor" (item :name "Padded Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Plate Armor" (item :name "Plate Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "3mm") :severity 2)))) :Platemail (item :name "Platemail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Quilted Armor" (item :name "Quilted Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) :Ringmail (item :name "Ringmail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) :Scalemail (item :name "Scalemail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Scale Barding" (item :name "Scale Barding" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Splint Armor" (item :name "Splint Armor" :titles "Lamellar" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Studded Leather Armor" (item :name "Studded Leather Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))))) :Shields (section :name "Shields" :itemmap (itemmap :Buckler (item :name "Buckler" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1") :severity 2)))) "Kite Shield" (item :name "Kite Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Legionary Shield" (item :name "Legionary Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Round Shield" (item :name "Round Shield" :titles "Hoplon Round Shield, Target Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) :Shield (item :name "Shield" :titles "Aegis, Heater" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Tower Shield" (item :name "Tower Shield" :titles "Hoplite Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "3") :severity 2)))) "Wicker Shield" (item :name "Wicker Shield" :classification "Shield"))) :Axes (section :name "Axes" :itemmap (itemmap "Battle Axe" (item :name "Battle Axe" :titles "Fasces, Sagaris" :energy "100J") "Double-Headed Axe" (item :name "Double-Headed Axe" :titles "Labrys, Pelekus" :energy "200J") "Hand Axe" (item :name "Hand Axe" :titles "Hachet" :energy "50J") :Pick (item :name "Pick") :Scythe (item :name "Scythe") :Sickle (item :name "Sickle" :titles "Kama") "Throwing Axe" (item :name "Throwing Axe" :titles "Francisca"))) "Close Combat Weapons" (section :name "Close Combat Weapons" :itemmap (itemmap "Bagh Nakh" (item :name "Bagh Nakh" :titles "Tiger Claw") "Brass Knuckles" (item :name "Brass Knuckles") :Cestus (item :name "Cestus") :Garotte (item :name "Garotte") :Gauntlet (item :name "Gauntlet") :Nekode (item :name "Nekode" :titles "Claw") :Sap (item :name "Sap" :titles "Blackjack"))) :Clubs (section :name "Clubs" :itemmap (itemmap :Baton (item :name "Baton") "Bo Stick" (item :name "Bo Stick") :Club (item :name "Club") :Cudgel (item :name "Cudgel") :Jitte (item :name "Jitte") "Jo Stick" (item :name "Jo Stick") :Nightstick (item :name "Nightstick") :Quarterstaff (item :name "Quarterstaff" :reference "* Held at the bottom like a polearm. not in the middle. Holding in the middle was invented by the Boy Scouts in Victorian times for sport fighting.") :Shillelagh (item :name "Shillelagh") :Tonfa (item :name "Tonfa") :Truncheon (item :name "Truncheon"))) "Flexible Weapons" (section :name "Flexible Weapons" :itemmap (itemmap :Bola (item :name "Bola") :Bullwhip (item :name "Bullwhip") :Chain (item :name "Chain") "Chain Whip" (item :name "Chain Whip") :Flail (item :name "Flail") :Kusari (item :name "Kusari") :Lasso (item :name "Lasso") :Manriki (item :name "Manriki") :Net (item :name "Net") :Noose (item :name "Noose") :Nunchaku (item :name "Nunchaku" :energy "100J") "Pole Lasso" (item :name "Pole Lasso") "Rope and Rocks" (item :name "Rope and Rocks" :titles "Surujin" :energy "100J") "Rope Dart" (item :name "Rope Dart" :energy "50J") "Sickle and Chain" (item :name "Sickle and Chain" :titles "Kusarigama" :energy "50J") "Spike and Chain" (item :name "Spike and Chain") "Three Section Staff" (item :name "Three Section Staff" :titles "Sansetsukon" :energy "100J") "Weighted Chain" (item :name "Weighted Chain" :titles "Meteor Hammer") :Whip (item :name "Whip") "Whip Sword" (item :name "Whip Sword" :titles "Urumi"))) :Hammers (section :name "Hammers" :reference "Mjolnir - Thor's Hammer" :itemmap (itemmap "Bec de Corbin" (item :name "Bec de Corbin") :Godendag (item :name "Godendag") "Holy Water Sprinkler" (item :name "Holy Water Sprinkler") "Horseman's pick" (item :name "Horseman's pick") "Lucerne Hammer" (item :name "Lucerne Hammer") :Mace (item :name "Mace" :energy "100J") :Mallet (item :name "Mallet") :Maul (item :name "Maul") :Morningstar (item :name "Morningstar" :energy "100J") :Scepter (item :name "Scepter" :summary "* +1 [Initimidation]") "Star Mace" (item :name "Star Mace" :energy "100J") "Throwing Hammer" (item :name "Throwing Hammer" :energy "50J") "War Hammer" (item :name "War Hammer" :energy "100J"))) :Knives (section :name "Knives" :itemmap (itemmap :Bundi (item :name "Bundi" :energy "50J") "Butterfly Knife" (item :name "Butterfly Knife" :titles "Balisong" :energy "50J") :Cinqueda (item :name "Cinqueda" :energy "50J") :Dagger (item :name "Dagger" :energy "50J") :Dirk (item :name "Dirk" :energy "50J") "Hunting Knife" (item :name "Hunting Knife" :energy "50J") :Knife (item :name "Knife" :energy "50J") :Kris (item :name "Kris" :energy "50J") "Main Gauche" (item :name "Main Gauche") :Sai (item :name "Sai" :energy "50J") :Stake (item :name "Stake" :energy "50J") :Stiletto (item :name "Stiletto" :energy "50J") :Switchblade (item :name "Switchblade" :energy "50J") "Throwing Knife" (item :name "Throwing Knife" :energy "50J"))) :Polearms (section :name "Polearms" :itemmap (itemmap :Bill-Guisarme (item :name "Bill-Guisarme" :energy "200J") :Glaive (item :name "Glaive" :summary "A glaive is a European polearm weapon, consisting of a single-edged blade on the end of a pole. It is similar to the Japanese naginata and the Chinese Guan Dao. Typically, the blade was around 45 cm (18 inches) long, on the end of a pole 2 m (6 or 7 feet) long, and the blade was affixed in a socket-shaft configuration similar to an axe head, rather than having a tang like a sword or naginata," :titles "Guan Dao" :energy "200J") :Glaive-Guisarme (item :name "Glaive-Guisarme" :energy "200J") :Halberd (item :name "Halberd" :titles "Halberdier" :energy "200J") :Naginata (item :name "Naginata" :energy "200J") :Poleaxe (item :name "Poleaxe" :energy "200J") :Ranseur (item :name "Ranseur" :energy "200J") :Spetum (item :name "Spetum" :energy "200J") :Voulge-Guisarme (item :name "Voulge-Guisarme" :energy "200J"))) :Spears (section :name "Spears" :itemmap (itemmap :Atlatl (item :name "Atlatl" :summary "* Dart-thrower * An atlatl dart is capable of killing even the largest of animals at any distance that its thrower is capable of accurately reaching since more power is applied to longer shots than shorter shots." :range "20m") :Bayonet (item :name "Bayonet" :classification "Spear" :energy "100J") :Javelin (item :name "Javelin" :classification "Spear" :energy "198J" :mass "3kg" :modifiers "Indirect Fire, Piercing" :range "18m") :Lance (item :name "Lance" :titles "Couched Lance" :classification "Spear" :energy "300J" :length "2.5m" :modifiers "Reach, Piercing") :Pike (item :name "Pike" :titles "Pikeman" :classification "Spear" :energy "200J" :length "4m" :modifiers "Reach, Piercing") :Pilum (item :name "Pilum" :reference "* When once fixed in the shield it was impossible to draw them out, and when thrown with force and skill, they penetrated the cuirass without difficulty. - Roman writer Vegtius" :summary "* The pilum was designed to be armour-piercing: the pyramidal head would punch a small hole through an enemy shield allowing the thin shank to pass through and penetrate a distance sufficient to hit the target. A pilum, having penetrated a shield through a small hole and its shank having bent would now be difficult to remove. It is likely that the shaft would hit the ground and thus stop the charging enemy in his tracks. An enemy, if not killed by the pilum, would have little time before closing with the legionaries and would have to discard his now-unwieldy shield before going into combat. Additionally, bent pila would be less suitable for reuse by a resourceful opponent." :classification "Spear" :energy "100J" :mass "3kg" :modifiers "Indirect Fire, Piercing" :range "18m") :Spear (item :name "Spear" :classification "Spear" :energy "100J" :modifiers "Reach, Piercing") :Trident (item :name "Trident" :classification "Spear" :energy "100J" :modifiers "Reach, Piercing"))) :Swords (section :name "Swords" :summary "All swords have the Bleeding modifier." :itemmap (itemmap :Backsword (item :name "Backsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Bastard Sword" (item :name "Bastard Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Bokken (item :name "Bokken" :classification "Sword") :Broadsword (item :name "Broadsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Butterfly Sword" (item :name "Butterfly Sword" :classification "Sword" :energy "100J") "Cavalry Sword" (item :name "Cavalry Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Cutlass (item :name "Cutlass" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Epee (item :name "Epee" :classification "Sword" :energy "100J") :Falchion (item :name "Falchion" :summary "* A short, cleaving sword for close-in combat used by many troops including archers." :classification "Sword" :energy "100J") :Foil (item :name "Foil" :classification "Sword" :energy "50J") "Great Sword" (item :name "Great Sword" :titles "Two-handed Sword" :classification "Sword" :energy "200J" :modifiers "Bleeding") "Hook Sword" (item :name "Hook Sword" :classification "Sword" :energy "100J") :Katana (item :name "Katana" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Katar (item :name "Katar" :classification "Sword" :energy "100J") :Longsword (item :name "Longsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Ninjato (item :name "Ninjato" :classification "Sword" :energy "100J" :modifiers "Bleeding") :No-Dachi (item :name "No-Dachi" :classification "Sword" :energy "200J") :Rapier (item :name "Rapier" :classification "Sword" :energy "100J" :modifiers "Bleeding, Piercing") :Saber (item :name "Saber" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Scimitar (item :name "Scimitar" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Short Sword" (item :name "Short Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Tanto (item :name "Tanto" :classification "Sword" :energy "100J") :Wakizashi (item :name "Wakizashi" :classification "Sword" :energy "100J"))) :Archery (section :name "Archery" :itemmap (itemmap "Composite Bow" (item :name "Composite Bow" :summary "* The main advantage of composite bows over self bows (made from a single piece of wood) is their combination of smaller size with high power. They are therefore much more suitable for use from horseback, and presumably from a chariot. * Constructing composite bows requires much more time and materials than self bows, and the animal glue traditionally used can lose strength in humid conditions and be quickly ruined by submersion. For most practical non-mounted archery purposes, composite construction offers no advantage; 'the initial velocity is about the same for all types of bow, the design parameters appear to be less important than is often claimed.' However, their compact size make them superior for horsemen. * [Attack]: [+1 Range], [+1 Piercing]" :energy "170J" :modifiers "Piercing") "Compound Bow" (item :name "Compound Bow") :Longbow (item :name "Longbow" :summary "* [Attack]: [+1 Range], [+2 Piercing]" :titles "Daikyu" :energy "156J" :modifiers "Piercing") "Short Bow" (item :name "Short Bow" :reference "Can fire about 6 aimed shots or 12 unaimed shots per minute." :summary "* [Attack]: [+1 Piercing]" :titles "Hankyu, Recurve Bow" :energy "80J" :modifiers "Piercing"))) :Crossbows (section :name "Crossbows" :itemmap (itemmap "Hand Crossbow" (item :name "Hand Crossbow") "Heavy Crossbow" (item :name "Heavy Crossbow" :energy "147J" :modifiers "Piercing") "Light Crossbow" (item :name "Light Crossbow" :energy "100J" :modifiers "Piercing") "Repeating Crossbow" (item :name "Repeating Crossbow"))) "Thrown Weapons" (section :name "Thrown Weapons" :itemmap (itemmap :Baseball (item :name "Baseball" :energy "100J") :Blowgun (item :name "Blowgun") "Blown Needles" (item :name "Blown Needles" :summary "* Similar to a blowgun, these are tiny poison needles held in the mouth and blown at nearby opponents." :titles "Fukimi-bari") :Boomerang (item :name "Boomerang") :Caltrop (item :name "Caltrop") :Chakram (item :name "Chakram" :summary "* Sharp edged rings used extensively in ancient India. They are carried in large numbers and are thrown at short range from infantry, horses, or elephants.") :Dart (item :name "Dart") :Football (item :name "Football") "Hunga Munga" (item :name "Hunga Munga") "Improvised Weapons" (item :name "Improvised Weapons") :Shuriken (item :name "Shuriken") "Skipping Stone" (item :name "Skipping Stone") :Sling (item :name "Sling") "Sling Staff" (item :name "Sling Staff"))) "Siege Weapons" (section :name "Siege Weapons" :itemmap (itemmap :Arbalest (item :name "Arbalest") :Ballista (item :name "Ballista") "Battering Ram" (item :name "Battering Ram") "Boiling Oil" (item :name "Boiling Oil") :Catapult (item :name "Catapult") :Escalade (item :name "Escalade" :titles "Siege Ladders") "Greek Fire" (item :name "Greek Fire" :titles "Liquid Fire, Wildfire") :Mangonel (item :name "Mangonel") :Onager (item :name "Onager") "Siege Hook" (item :name "Siege Hook") "Siege Tower" (item :name "Siege Tower") :Springal (item :name "Springal") :Trebuchet (item :name "Trebuchet"))) "Early Firearms" (section :name "Early Firearms" :itemmap (itemmap "Matchlock Pistol" (item :name "Matchlock Pistol" :summary "1400s") "Matchlock Rifle" (item :name "Matchlock Rifle" :summary "1400s") "Wheellock Pistol" (item :name "Wheellock Pistol" :summary "1500s") "Wheellock Rifle" (item :name "Wheellock Rifle" :summary "1500s") "Flintlock Pistol" (item :name "Flintlock Pistol" :summary "1600s") "Flintlock Rifle" (item :name "Flintlock Rifle" :summary "1600s") "Dueling Pistol" (item :name "Dueling Pistol" :summary "1770") "Brown Bees Rifle" (item :name "Brown Bees Rifle" :summary "1700s") "Percussion Pistol" (item :name "Percussion Pistol" :summary "1800s") "Percussion Rifle" (item :name "Percussion Rifle" :summary "1800s")))))) (func chapter_modern_equipment : base/chapter (chapter :name "Modern Equipment" :sectionmap (sectionmap "Modern Armor" (section :name "Modern Armor" :itemmap (itemmap "Bulletproof Vest" (item :name "Bulletproof Vest" :titles "Kevlar Vest") "Bulletproof Armor" (item :name "Bulletproof Armor" :titles "Flak Jacket, Kevlar Armor") "Doorgunner Armor" (item :name "Doorgunner Armor") "Model Y Bulletproof Vest" (item :name "Model Y Bulletproof Vest") "Interceptor Body Armor" (item :name "Interceptor Body Armor") "Dragon Skin Armor" (item :name "Dragon Skin Armor") "SARCOS Exoskeleton" (item :name "SARCOS Exoskeleton"))) "Modern Explosives" (section :name "Modern Explosives" :itemmap (itemmap :C4 (item :name "C4") "Improvised Explosive Device (IED)" (item :name "Improvised Explosive Device (IED)") "White Phosphorous Grenade" (item :name "White Phosphorous Grenade"))) "Modern Pistols" (section :name "Modern Pistols" :itemmap (itemmap "Air Pistol" (item :name "Air Pistol" :summary "* Can discharge Paintballs or small amounts of other chemicals.") ".22 Holdout Pistol" (item :name ".22 Holdout Pistol") ".22 Automatic Pistol" (item :name ".22 Automatic Pistol" :titles "Ruger MkII") "5mm Needler Pistol" (item :name "5mm Needler Pistol") ".38 Revolver" (item :name ".38 Revolver" :titles ".38 Special, .38 Derringer, .38 Llama Comanche" :classification "Pistol" :energy "319J" :muzzlevelocity "300m/s") ".38 Automatic Pistol" (item :name ".38 Automatic Pistol" :titles "Walther PPK-S" :classification "Pistol") "9mm Automatic Pistol" (item :name "9mm Automatic Pistol" :titles "Glock 17L, Browning 9mm, Baretta 92, Calico M-950, H&amp;K P9S, SIG/SAUER P226, S&amp;P ASP" :classification "Pistol" :energy "518J" :muzzlevelocity "360m/s" :range "50m") "9mm Machine Pistol" (item :name "9mm Machine Pistol" :titles "H&amp;K MP5K, Steyer TMP, Tactical Machine Pistol, Micro-Uzi" :classification "Pistol" :muzzlevelocity "380m/s" :range "100m" :rof "850/min") ".357 Desert Eagle" (item :name ".357 Desert Eagle") ".357 Magnum Revolver" (item :name ".357 Magnum Revolver" :reference "* Criminal gangs in late 1920's to early 1930's began wearing thick cotton and cloth suits that could absorb .22, .25, .32 Long, .32, .380 ACP, and .45 ACP rounds. To overcome this, law enforcement began using .357 Magnum rounds." :titles "Colt Python" :classification "Pistol" :energy "778J" :muzzlevelocity "430m/s") "10mm Automatic Pistol" (item :name "10mm Automatic Pistol" :titles "Glock 20, S&amp;W 1006" :classification "Pistol") ".40 Automatic Pistol" (item :name ".40 Automatic Pistol" :titles "SIG/SAUER P229" :classification "Pistol") ".41 Magnum Revolver" (item :name ".41 Magnum Revolver" :titles "S &amp;W Model 57" :classification "Pistol") ".45 Automatic Pistol" (item :name ".45 Automatic Pistol" :titles "AMT Automag, Colt M1911A, LAR Grizzly" :classification "Pistol" :energy "410J") ".44 Magnum Revolver" (item :name ".44 Magnum Revolver" :titles "Colt Anaconda, Ruger Super Redhawk" :classification "Pistol" :energy "1524J" :muzzlevelocity "460m/s") ".50 Automatic Pistol" (item :name ".50 Automatic Pistol" :titles "MRI Desert Eagle" :classification "Pistol" :energy "2000J" :muzzlevelocity "460m/s") :Taser (item :name "Taser" :energy ".3J"))) "Modern Rifles" (section :name "Modern Rifles" :itemmap (itemmap "12-gauge Double Barrelled Shotgun" (item :name "12-gauge Double Barrelled Shotgun" :reference "* Alright you primitive screwheads. Listen up. See this. This is my... BOOMSTICK! Its a 12-guage Double Barrelled Remington. S-Mart's top of the line. You can find it in the sporting goods department. That's right, this sweet baby was made in Grand Rapids, Michigan. Retails for about $109.95. It's got a walnut stock, cobalt blue steel, and a hair trigger. That's right. Shop smart. Shop S-Mart. YOU GOT THAT?! - Ash, Army of Darkness" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Sawed Off Shotgun" (item :name "12-gauge Sawed Off Shotgun" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Pump Shotgun" (item :name "12-gauge Pump Shotgun" :titles "Entry Team Striker, Franchi SPAS-12, Jackhammer Mk 3A-2, Mossberg M500, Remington 870P, Street Sweeper 870P, USAS-12" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Tactical Shotgun" (item :name "12-gauge Tactical Shotgun") ".22 Rifle" (item :name ".22 Rifle" :titles "Calico M-105") "5.56mm Rifle" (item :name "5.56mm Rifle" :titles "Colt Sporter Delta") "5.56mm Assault Rifle" (item :name "5.56mm Assault Rifle" :titles "Colt M-16A1, L85A1, Steyr AUG" :energy "1767J" :muzzlevelocity "940m/s") ".30-06 Rifle" (item :name ".30-06 Rifle") ".30-06 Semi-Automatic Rifle" (item :name ".30-06 Semi-Automatic Rifle") "7.62mm Rifle" (item :name "7.62mm Rifle" :titles "Galil Sniper Rifle, Steyr SSG-69, SVD Dragunov, Walther WA-2000 Sniper") "7.62mm Assault Rifle" (item :name "7.62mm Assault Rifle" :titles "AR-15, M-16, AK-47, FN-FAL" :energy "3504J" :muzzlevelocity "850m/s") "7.62mm M24 Sniper Rifle" (item :name "7.62mm M24 Sniper Rifle") ".45 Elephant Gun" (item :name ".45 Elephant Gun" :titles "H&amp;H African, Nitro Express" :energy "6470J" :muzzlevelocity "660m/s") ".50 Rifle" (item :name ".50 Rifle" :titles "McMillan M-87") "Combat Flamethrower" (item :name "Combat Flamethrower"))) "Modern Machine Guns" (section :name "Modern Machine Guns" :itemmap (itemmap "30mm GAU-8 Avenger" (item :name "30mm GAU-8 Avenger" :length "5m" :mass "281kg" :muzzlevelocity "1000m/s" :range "1500m" :rof "4200/min" :rounds "1174") ".32 Submachine Gun (SMG)" (item :name ".32 Submachine Gun (SMG)" :titles "Skorpion M-61") "9mm Submachine Gun (SMG)" (item :name "9mm Submachine Gun (SMG)" :titles "Uzi, H&amp;K MP5, Intratec TEC-9, Spectre M-4" :muzzlevelocity "400m/s" :range "200m" :rof "600/min") ".45 Submachine Gun (SMG)" (item :name ".45 Submachine Gun (SMG)" :titles "Ingram MAC-10") ".45 Machine Gun (MG)" (item :name ".45 Machine Gun (MG)" :titles "Thomson Machine Gun, Tommy Gun" :muzzlevelocity "280m/s" :range "50m" :rof "800/min") "7.62mm Machine Gun (MG)" (item :name "7.62mm Machine Gun (MG)" :titles "M-60") ".30-06 Machine Gun (MG)" (item :name ".30-06 Machine Gun (MG)") "7.62mm Minigun (MG)" (item :name "7.62mm Minigun (MG)" :summary "* An infantry support weapon that can be adapted for vehicular use on a pintle mount. While it is useful against infantrymen, it is nearly worthless against vehicles, even unarmored ones." :titles "M134" :energy "3504J" :muzzlevelocity "850m/s" :rof "4000/min") ".50 Heavy Machine Gun (HMG)" (item :name ".50 Heavy Machine Gun (HMG)" :summary "* The heaviest of infantry weapons, the heavy machine gun must be mounted on a bipod, tripod, or pintle. The HMG is effective only against infantry and light armored vehicles."))) "Modern Cannons" (section :name "Modern Cannons" :itemmap (itemmap "Liquid Sprayer Cannon" (item :name "Liquid Sprayer Cannon" :summary "* Can dispense Water, Fire Retardant Foam, Cleaning Solvent or other more frightening solutions.") "15mm Very Light Cannon (VLC)" (item :name "15mm Very Light Cannon (VLC)" :summary "* The VLC is designed as a backup weapon for light scouting vehicles. Its shell can pierce the armor of other light vehicles but not much else. Its simple design makes it light, affordable, and easy to maintain.") "15mm Very Light Recoilless Cannon (VLC)" (item :name "15mm Very Light Recoilless Cannon (VLC)") "15mm Very Light Autocannon (VLAC)" (item :name "15mm Very Light Autocannon (VLAC)" :summary "* The VLAC lies somewhere between a heavy infantry machinegun and a vehicle mounted autocannon. Though its armor piercing shells are not particularly good against infantry, it is a perfect backup anti-armor weapon for a light vehicle.") "20mm Light Cannon (LC)" (item :name "20mm Light Cannon (LC)" :summary "* The Light Cannon is a simpler version of the Light Autocannon. It lacks automatic fire, but it more affordable, more accurate, and has a longer range.") "20mm Light Recoilless Cannon (LRC)" (item :name "20mm Light Recoilless Cannon (LRC)") "20mm Light Autocannon (LAC)" (item :name "20mm Light Autocannon (LAC)" :summary "* Light Autocannons are popular weapons combining a high rate of fire with significant penetration.") "Light Flame Cannon" (item :name "Light Flame Cannon" :summary "* Flame Cannons are vehicular flamethrowers that spray burning liquid in a wide arc. They are most effective against soft targets, but the heat generated from sustained fire can damage even heavily armored targets. It is also capable of indirect fire.") "30mm Medium Cannon (MC)" (item :name "30mm Medium Cannon (MC)" :summary "* The Medium Cannon is a simpler version of the Medium Autocannon. It lacks automatic fire, but it is more affordable, more accurate, and has a longer range.") "30mm Medium Recoilless Cannon (MRC)" (item :name "30mm Medium Recoilless Cannon (MRC)" :titles "Bazooka Cannon") "30mm Medium Autocannon (MAC)" (item :name "30mm Medium Autocannon (MAC)" :reference "* The A-10 Thunderbolt's main weapon." :summary "* Medium Autocannons are nearly as popular as Light Autocannons. They sacrifice some fire rate for higher damage and range.") "Medium Flame Cannon" (item :name "Medium Flame Cannon") "40mm Heavy Cannon (HC)" (item :name "40mm Heavy Cannon (HC)" :summary "* The Heavy Cannon can penetrate light tank armor and the 40mm shells can carry a variety of specialized ammunition.") "40mm Heavy Recoilless Cannon (HRC)" (item :name "40mm Heavy Recoilless Cannon (HRC)") "40mm Heavy Autocannon (HAC)" (item :name "40mm Heavy Autocannon (HAC)" :summary "* The Heavy Autocannon is often the main armament of light tanks. Its high rate of fire tends to preclude the use of most exotic ammunition.") "Heavy Flame Cannon" (item :name "Heavy Flame Cannon") "50mm Very Heavy Cannon (VHC)" (item :name "50mm Very Heavy Cannon (VHC)" :summary "* The Heavy Autocannon is often the main armament of light tanks. Its high rate of fire tends to preclude the use of most exotic ammunition.") "50mm Very Heavy Recoilless Cannon (VHRC)" (item :name "50mm Very Heavy Recoilless Cannon (VHRC)") "50mm Very Heavy Autocannon (VHAC)" (item :name "50mm Very Heavy Autocannon (VHAC)" :summary "* The 50mm Autocannon is an electically-driven, multi-tube gattling cannon capable of delivering an awesome amount of ammunition in a very short amount of time. This is typically the largest cannon produced with autofire because of the large amount of space that ammunition takes up.") "75mm Very Light Field Gun (VLFG)" (item :name "75mm Very Light Field Gun (VLFG)" :summary "* The Very Light Field Gun is the smallest of the single-shot, specialized anti-armor, guns. VLFG's are often mounted on gun carriages or defensive bunkers. The VLFG is effective against most medium tanks except against front armor.") "90mm Light Field Mortar (LFM)" (item :name "90mm Light Field Mortar (LFM)" :summary "* The Mortar Cannon fires low velocity, large caliber High Explosive shells. Their shells have poor penetration but are well suited for indirect fire, suppressive fire, and mass destruction of soft targets.") "90mm Light Field Gun (LFG)" (item :name "90mm Light Field Gun (LFG)" :summary "* The Light Field Gun is a popular main weapon on light and medium tanks. The LFG is effective against most medium tanks.") "120mm Smoothbore Cannon" (item :name "120mm Smoothbore Cannon" :summary "Fire Armor Piercing Fin Stabalized, Depleted Uranium rounds" :energy "11MJ") "120mm Medium Field Gun (MFG)" (item :name "120mm Medium Field Gun (MFG)" :summary "* The Medium Field Gun is a popular main weapon on heavy tanks. The LFG is effective against most heavy tanks.") "120mm Medium Field Mortar (MFM)" (item :name "120mm Medium Field Mortar (MFM)") "140mm Heavy Field Gun (HFG)" (item :name "140mm Heavy Field Gun (HFG)" :summary "* The Heavy Field Gun is a used on heavy tank destroyers and main battle tanks. The HFG is effective against most main battle tanks.") "140mm Heavy Field Mortar (HFM)" (item :name "140mm Heavy Field Mortar (HFM)") "200mm Very Heavy Field Gun (VHFG)" (item :name "200mm Very Heavy Field Gun (VHFG)" :summary "* The Very Heavy Field Gun is used in heavy artillery pieces and fixed installations. The VHFG is effective against almost any target." :titles "Naval Gun")) :rulemap (rulemap :AP (rule :name "AP") :APFSDS (rule :name "APFSDS") :HE (rule :name "HE") :HEAT (rule :name "HEAT") :HESH (rule :name "HESH"))) "Modern Portable Explosives" (section :name "Modern Portable Explosives" :itemmap (itemmap "Hand Grenade" (item :name "Hand Grenade" :image "WWIIAmerican/Grenade_MK2.jpg" :reference "* It had a fatality radius of 5m, a blast radius of 13.7m, and fragments can disperse to 213m. * At least 5 people have thrown themselves on hand grenades and lived." :explosive ".057kg" :mass ".6kg" :modifiers "Anti-Personnel, Area" :range "30m") "20mm Light Grenade Launcher" (item :name "20mm Light Grenade Launcher") "50mm Mortar" (item :name "50mm Mortar") "66mm Light Anti-Armor Weapon (LAW)" (item :name "66mm Light Anti-Armor Weapon (LAW)" :reference "* M72 LAW" :summary "* One shot anti-tank weapon that can penetrate 250mm." :length "1m" :mass "2.3kg" :modifiers "HEAT" :range "200m") "84mm Recoilless Rifle" (item :name "84mm Recoilless Rifle" :reference "* AT4" :summary "* One shot anti-tank weapon that can penetrate 400mm with HEAT or carry 440g of HE." :explosive ".440kg" :mass "6.7kg" :modifiers "HEAT" :muzzlevelocity "284m" :range "300m") "Rifle Propelled Grenade (RPG)" (item :name "Rifle Propelled Grenade (RPG)") "Plastic Explosive" (item :name "Plastic Explosive") "Land Mine" (item :name "Land Mine") "Smoke Dispenser" (item :name "Smoke Dispenser"))) "Modern Missiles" (section :name "Modern Missiles" :itemmap (itemmap "50mm Medium Grenade Launcher" (item :name "50mm Medium Grenade Launcher" :rounds "20") "70mm Heavy Grenade Launcher" (item :name "70mm Heavy Grenade Launcher" :rounds "12") "Light Bomb Rack" (item :name "Light Bomb Rack" :modifiers "HE, INC" :rounds "8") "52mm Light Rocket Pod" (item :name "52mm Light Rocket Pod" :modifiers "HE, INC" :rounds "8") "Medium Bomb Rack" (item :name "Medium Bomb Rack" :modifiers "HE, INC" :rounds "8") "71mm Medium Rocket Pod" (item :name "71mm Medium Rocket Pod" :modifiers "HE, INC" :rounds "8") "Heavy Bomb Rack" (item :name "Heavy Bomb Rack" :modifiers "HE, INC" :rounds "8") "Fuel Air Bomb Rack" (item :name "Fuel Air Bomb Rack" :modifiers "HE, INC" :rounds "8") "Cluster Bomb Rack" (item :name "Cluster Bomb Rack" :modifiers "HE, INC" :rounds "8") "82mm Heavy Rocket Pod" (item :name "82mm Heavy Rocket Pod" :modifiers "HE, INC" :rounds "8") "Very Heavy Bomb Rack" (item :name "Very Heavy Bomb Rack" :modifiers "HE, INC" :rounds "8") "Missile Pod" (item :name "Missile Pod") "Heavy RPG" (item :name "Heavy RPG" :summary "* Disposable short-range, rocket with shaped charge for armor penetration." :rounds "1") "Very Heavy RPG" (item :name "Very Heavy RPG" :summary "* Disposable short-range, rocket with shaped charge for armor penetration." :rounds "1") "Light Bombardment Rocket" (item :name "Light Bombardment Rocket" :modifiers "HE" :rounds "16") "Medium Bombardment Rocket" (item :name "Medium Bombardment Rocket" :modifiers "HE" :rounds "16") "Heavy Bombardment Rocket" (item :name "Heavy Bombardment Rocket" :modifiers "HE" :rounds "16") "Anti-Aircraft Missile" (item :name "Anti-Aircraft Missile") :RPG-7 (item :name "RPG-7") :RPG-29 (item :name "RPG-29" :reference "Iraq 2007, an RPG-29 round penetrated the frontal ERA and hull of a Challenger 2 tank" :summary "Tandem charged HEAT round") "Cruise Missile" (item :name "Cruise Missile") "SAM Surface To Air Missile" (item :name "SAM Surface To Air Missile" :image "Modern/Missile.png"))) "Weapons of Mass Destruction" (section :name "Weapons of Mass Destruction" :itemmap (itemmap "Agent Orange" (item :name "Agent Orange") :Napalm (item :name "Napalm") "Cluster Bomb" (item :name "Cluster Bomb") "Smart Bomb" (item :name "Smart Bomb") "Block Buster" (item :name "Block Buster") "Bunker Buster" (item :name "Bunker Buster") "Fuel Air Explosive" (item :name "Fuel Air Explosive") "Naval Mine" (item :name "Naval Mine") "Nuclear Bomb" (item :name "Nuclear Bomb") "Fusion Bomb" (item :name "Fusion Bomb") "Dirty Bomb" (item :name "Dirty Bomb") "Nerve Gas Bomb" (item :name "Nerve Gas Bomb") :MIRV (item :name "MIRV") "Neutron Bomb" (item :name "Neutron Bomb") "Plague Bomb" (item :name "Plague Bomb") "Tactical Nuclear Bomb" (item :name "Tactical Nuclear Bomb") "Tactical Nuclear Cruise Missile" (item :name "Tactical Nuclear Cruise Missile") "Strategic Nuclear Bomb" (item :name "Strategic Nuclear Bomb") "Nuclear Cruise Missile" (item :name "Nuclear Cruise Missile") "Nuclear Ballistic Missile" (item :name "Nuclear Ballistic Missile")))))) (func chapter_advanced_weaponry : base/chapter (chapter :name "Advanced Weaponry" :sectionmap (sectionmap "Advanced Melee Weapons" (section :name "Advanced Melee Weapons" :itemmap (itemmap "Beam Saber" (item :name "Beam Saber" :summary "* Rotating ionizing lasers on the hilt create a hollow magnetic bubble in the form of a saber. The light and color are caused by the air molecules ionizing in the lasers. Any contact with a solid object or another magnetic field creates a breach in the bubble which triggers a plasma burst in the hilt that instantly travels down the bubble and exits the breach with burning explosive effect.") "Lightning Saber" (item :name "Lightning Saber" :summary "* Rotating ionizing lasers on the hilt create a hollow magnetic bubble in the form of a saber. The light and color are caused by the air molecules ionizing in the lasers. Any contact with a solid object or another magnetic field creates a breach in the bubble which triggers an electric pulse in the hilt that instantly travels down the bubble and exits the breach with shocking effect.") "Shock Lance" (item :name "Shock Lance"))) "Futuristic Hand Guns" (section :name "Futuristic Hand Guns" :itemmap (itemmap "9mm Cone Pistol" (item :name "9mm Cone Pistol" :summary "* The modern upgrade to the traditional firearm. Cone weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for weightlessness. Cone weapons are cheap, reliable, and versitile. * Cone weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Gyrojet Pistol, Rocket Pistol") "Liquid Sprayer Pistol" (item :name "Liquid Sprayer Pistol" :titles "Acid Pistol") "100W Laser Pistol" (item :name "100W Laser Pistol") "Lightning Pistol" (item :name "Lightning Pistol"))) "Futuristic Rifles" (section :name "Futuristic Rifles" :itemmap (itemmap "5.56mm Needle Rifle" (item :name "5.56mm Needle Rifle") "7.62mm Cone Rifle" (item :name "7.62mm Cone Rifle" :summary "* The modern upgrade to the traditional firearm. Cone weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for weightlessness. Cone weapons are cheap, reliable, and versitile. * Cone weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Gyrojet Rifle, Rocket Rifle") "Gauss Rifle" (item :name "Gauss Rifle") "Liquid Sprayer Rifle" (item :name "Liquid Sprayer Rifle" :titles "Acid Rifle") "500W Laser Rifle" (item :name "500W Laser Rifle") "Microwave Rifle" (item :name "Microwave Rifle") "Lightning Rifle" (item :name "Lightning Rifle"))) "Futuristic Vehicular Cannons" (section :name "Futuristic Vehicular Cannons" :itemmap (itemmap "Energy Attenuating Aerosol" (item :name "Energy Attenuating Aerosol" :summary "* A dense gas designed to absorb and refract energies that pass through it. This obscures vision and greatly weakens lasers and other direct energy weapons that pass through it." :titles "Anti-Laser Gas") "20mm Light Gauss Cannon (LGC)" (item :name "20mm Light Gauss Cannon (LGC)" :titles "Railgun") "1.5kW Laser Cannon" (item :name "1.5kW Laser Cannon") "15MW Light Laser Cannon" (item :name "15MW Light Laser Cannon") "Light Particle Cannon" (item :name "Light Particle Cannon") "Light Shock Cannon" (item :name "Light Shock Cannon") "Light Sonic Cannon" (item :name "Light Sonic Cannon") "30mm Medium Gauss Cannon (MGC)" (item :name "30mm Medium Gauss Cannon (MGC)" :titles "Railgun") "40mm Heavy Gauss Cannon (HGC)" (item :name "40mm Heavy Gauss Cannon (HGC)") "25MW Medium Laser Cannon" (item :name "25MW Medium Laser Cannon") "Medium Gattling Laser Cannon" (item :name "Medium Gattling Laser Cannon") "Medium Sniper Laser Cannon" (item :name "Medium Sniper Laser Cannon") "35MW Heavy Laser Cannon" (item :name "35MW Heavy Laser Cannon"))) "Futuristic Missiles" (section :name "Futuristic Missiles" :unitmap (unitmap "Swarmer Missiles" (unit :name "Swarmer Missiles" :image "HighTech/SwarmerMissiles.png" :summary "* Swarmer Missiles are clusters of low yield homing missiles that seek to overwhelm targets with their numbers. * Like all missiles, the first turn they move they only move half their movement. * Only weapons with Auto or other Swarmer Missiles can functionally destroy these missiles."))) "Futuristic Vehicular Melee Weapons" (section :name "Futuristic Vehicular Melee Weapons" :itemmap (itemmap ".65MW Plasma Lance" (item :name ".65MW Plasma Lance" :classification "Huge Melee" :energy "1.95MJ" :modifiers "Energy") "Giant Armor Blades" (item :name "Giant Armor Blades") "Giant Armor Spikes" (item :name "Giant Armor Spikes") "Giant Chain Sword" (item :name "Giant Chain Sword") "Giant Explosive Lance" (item :name "Giant Explosive Lance") "Giant Extending Arm" (item :name "Giant Extending Arm") "Giant Grenade" (item :name "Giant Grenade") "Giant Haywire Grenade" (item :name "Giant Haywire Grenade") "Giant Haywire Lance" (item :name "Giant Haywire Lance") "Giant Haywire Whip" (item :name "Giant Haywire Whip") "Giant Heavy Grenade" (item :name "Giant Heavy Grenade") "Giant Lance" (item :name "Giant Lance") "Giant Mace" (item :name "Giant Mace") "Giant Morning Star" (item :name "Giant Morning Star") "Giant Mauler" (item :name "Giant Mauler" :summary "* Giant grinding melee weapon") "Giant Net Gun" (item :name "Giant Net Gun") "Giant Spike Gun" (item :name "Giant Spike Gun") "Giant Vibroaxe" (item :name "Giant Vibroaxe") "Giant Vibroblade" (item :name "Giant Vibroblade") "Giant Vibroclaws" (item :name "Giant Vibroclaws") "Giant Vibrorapier" (item :name "Giant Vibrorapier") "Giant Vibrosword" (item :name "Giant Vibrosword") "Giant Whip" (item :name "Giant Whip"))) "Futuristic Weapons of Mass Destruction" (section :name "Futuristic Weapons of Mass Destruction" :itemmap (itemmap "Spinal Nava Cannon" (item :name "Spinal Nava Cannon") "Spinal Rail Gun" (item :name "Spinal Rail Gun") "Spinal Wave Cannon" (item :name "Spinal Wave Cannon" :summary "* An enormously powerful energy cannon capable of enormous damage over a large area." :titles "Death Star Cannon, Wave Motion Gun")) :unitmap (unitmap "Star Mine" (unit :name "Star Mine" :summary "* Star Mines are basically Star Torpedoes that have been left floating in space near likely enemy traffic. The mines are smart and will only attack selected targets and can act as spy satellites by transmitting what their sensors are picking up. When given the order, the Star Mine rockets off toward its victim. Though inefficient in space because of the vast distances, they still can be effective by limiting an opponent's options or when used as traps at key locations." :titles "Space Mine") "Sentry Spy Satellite" (unit :name "Sentry Spy Satellite" :summary "* Sentry Spy Satellites are small disposable surveillence satellites that are hidden in asteroid or debris fields to monitor activity and transmit that information back home. They are sometimes armed with a Star Torpedo for a surprise attack.") "Star Torpedo" (unit :name "Star Torpedo" :summary "* Star Torpedoes carry Nuclear weapons (tactical or greater). In space, nuclear weapons produce no shockwave, just intense radiation. Even direct hits are not guaranteed to pierce the diamond hard ceramic armor of modern warships, so penetration is critical.") "Colony Drop" (unit :name "Colony Drop" :reference "Mobile Suit Gundam") "Planet Bomb" (unit :name "Planet Bomb" :reference "Star Blazers, Starship Troopers" :summary "* Asteroids or comets redirected to fall on a planet.") "Plague Planet Bomb" (unit :name "Plague Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of infectious diseases to infect a population. Victims do not immediately show signs of infection to maximize the contagion and paranoia.") "Rage Planet Bomb" (unit :name "Rage Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of parasites that turns infected creatures into rabid killers who spread the infection.") "Famine Planet Bomb" (unit :name "Famine Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of diseases that attack the food harvest of a planet attempting to break the food chain and cause mass starvation or force compliance.") "Pestilence Planet Bomb" (unit :name "Pestilence Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of parasites that infect insects, birds, and vermin. These creatures gain accelerated reproduction and high aggression to attack food supplies and the general population.") "Terraforming Planet Bomb" (unit :name "Terraforming Planet Bomb" :reference "Genesis - Star Trek II") "Hellbore Planet Bomb" (unit :name "Hellbore Planet Bomb" :summary "* A missile that detonates a series of shaped nuclear blasts to tunnel into a geological fault or a volcano where it attempts to cause a massive natural disaster.") "Planet Buster" (unit :name "Planet Buster" :reference "Anti-Matter Missile - Star Blazers" :summary "* A missile designed to be part of a massive bombardment to shatter a planet's crust and return it to a molten state. Already unstable planets may break up into rubble.") "Starkiller Missile" (unit :name "Starkiller Missile" :reference "Sunshine" :summary "* A missile designed to be part of a massive bombardment to disrupt the nuclear chain reaction in a star. This can result in massive solar flares, a cooling of the star, or cause the star to go nova depending on the age and size of the star."))))))
nx/tactics/books/combat / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Combat" :image "Warrior.jpg" :chaptermap (base/chaptermap "Combat Overview" (chapter_combat_overview) "Example of Play" (chapter_example_of_play) "Rules" (chapter_rules) "Skills" (chapter_skills) "Early Weaponry" (chapter_early_weaponry) "Modern Equipment" (chapter_modern_equipment) "Advanced Weaponry" (chapter_advanced_weaponry) )))
nx/tactics/books/combat / chapter_combat_overview
Description:
Function Name:
  • chapter_combat_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_combat_overview : base/chapter (chapter :name "Combat Overview" :sectionmap (sectionmap "Why Tactics:Combat" (section :name "Why Tactics:Combat" :reference "* Nothing is softer than water, yet water can defeat rock. It does not fight. It flows around the opponent... The true master lies within. Only you can free him. - Forbidden Kingdom") "Rate of Fire" (section :name "Rate of Fire" :summary "* Fully-Automatic Weapons - These weapons fire continuously as long as the trigger is held down, or until they run out of ammunition, or until the barrel warps from the heat. * Burst Weapons - This is usually a setting on Fully-Automatic Weapons that fires a number of shots, roughly 3, each time the trigger is pulled. This is a compromise between Fully and Semi-Automatic Modes. * Semi-Automatic weapons - These weapons are generally capable of fully automatic fire, but are limited to fire a single shot each time the trigger is pulled. As such, they are limited to the shooter's ability to pull the trigger, generally once every second.") "Aiming and Range" (section :name "Aiming and Range" :summary "* It takes 3 seconds to aim a weapon at a target. * Range - Each 50m range takes an additional 1 second to aim. Pistols incur -1 Attack per 50m. Rifles incur -1 Attack per 100m. * Aiming with a Scope - Using a scope triples the aim time and the effective range."))))
nx/tactics/books/combat / chapter_example_of_play
Description:
Function Name:
  • chapter_example_of_play
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_example_of_play : base/chapter (chapter :name "Example of Play" :sectionmap (sectionmap "Street Fight" (section :name "Street Fight"))))
nx/tactics/books/combat / chapter_rules
Description:
Function Name:
  • chapter_rules
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_rules : base/chapter (chapter :name "Rules" :sectionmap (sectionmap :Levels (section :name "Levels" :reference "* The resistance to penetration of armor is related to the thickness of the steel - 2mm armor required about 3 times as much energy to defeat as 1mm armor. * By its apex, hardened steel plate was almost impregnable on the battlefield. Knights were instead increasingly felled by polearms such as the halberd and blunt weapons such as maces or war hammers that could send concussive force through the plate armor resulting in injuries such as broken bones, organ hemorrhage and/or head trauma. Another tactic was to attempt to strike through the gaps between the armor pieces, using daggers, spears and spear points to attack the man-at-arms' eyes or joints. * Weight - A full suit of medieval plate is thought to have weighed little more than 60 lb (27 kg) on average, considerably lighter than the equipment often carried by the elite of today's armies. If during the 14-15th centuries armour seldom weighed more than 15kgs, than by the late 16th century it weighed 25kg. The increasing weight and thickness of late 16th century armor therefore gave substantial resistance. * Proof - In the early years of pistol and arquebuses, firearms were relatively low in velocity. The full suits of armour, or breast plates actually stopped bullets fired from a modest distance. The front breast plates were, in fact, commonly shot as a test. The impact point would often be encircled with engraving to point it out. This was called the 'proof'. Rather than making plate armour obsolete, the use of firearms stimulated the development of plate armour into its later stages. * At the end of the 1800's silk body armor was worn by those who could afford it. The assassination of Arch-Duke Ferdinand that precipitated WWI was wearing silk body armor but was shot in the neck over the armor. A similar vest worn by Alfonso XIII of Spain saved his life in 1901. * Criminal gangs in late 1920's to early 1930's began wearing thick cotton and cloth suits that could absorb .22, .25, .32 Long, .32, .380 ACP, and .45 ACP rounds. To overcome this, law enforcement began using .357 Magnum rounds. * Club, Axe or Greek sword : 1kg ; used single handed ; 65 joules(48 ft lbs) * Club, Axe or Greek sword : 2kg ; used two-handed ; 130 joules(96 foot lbs) * Javelin :0.8 kg ; thrown, with run-up; 198 joules(146 ft lbs) * Javelin :0.8 kg ; thrown, one pace only; 111 joules(83 ft lbs) * Javelin :0.8 kg ; thrown standing; 60 joules(49 ft lbs) * Javelin :0.8 kg ; thrown, one pace with loop ; 160 joules(118 ft lbs) * Light spear or small sword/dagger :0.8 kg ; close combat ; 30 joules(24 ft lbs) * Sarissa :8(?)kg ; two-hand thrust,pace fwd ; 160 joules(118 ft lbs) * Spear-butt : various ; thrust down, coup-de-grace; 50 joules (40 ft lbs) * Energies of the order of 30-60 joules (24-49 ft lbs) could be given generally to typical Greek Hand weapons, and armour would need to resist this type of thrust, as well as slashing blows up to 60 joules(49 ft lbs) * Sling bullet :24g swung one handed ; 30-36 joules(22-27 ft lbs) * Light bow 20J at 50m, 15J at 100m, 9J at 200m (sufficient to penetrate flesh) * Heavy bow 30J at 50 metres, 26J at 100 metres, 20J at 200 metres * Ballistic Armor Level I protects against .22 cal Long Rifle and .38 * Ballistic Armor Level IIA protects against 9mm Low Velocity and .40 cal * Ballistic Armor Level II protects against 9mm and .357 Magnum * Ballistic Armor Level IIIA protects against High Velocity 9mm and .44 Magnum * Ballistic Armor Level III protects against 7.62 Rifle * Ballistic Armor Level IV protects against .30 cal Armor Piercing Rifle * All heavy armor penetration values are in mm of steel or equivalent at 30 degrees. * The 5.56 AP round penetrates 12mm at 100m. * The 7.92 MG round penetrates 13mm at 100m. * The 7.62 AP round penetrates 15mm at 300m. * .50 cal penetrates 20mm Armor * 20mm penetrates 30mm Armor. It took an average of twenty 20mm hits to shoot down a WWII bomber. * 30mm A-10 penetrates 69mm at 500m and 38mm at 1000m. A 30mm Autocannon could bring down a WWII bomber in 1-3 hits. * 40mm Bofors penetrates: 0 yards-2.7in (68mm), 2,000 yards-1.2in (30mm), 4,000 yards-0.60in, 6000 yards-0.45in. * 50mm PaK 38 was one of the few early guns capable of effectively penetrating the 45 mm armor of the formidable T-34 * The PaK 40 penetrates 100mm Armor and was effective against almost every Allied tank until the end of the war. * The Panther's 75 mm KwK 42 L/70 penetrates 120mm at 1000m * Very few Allied or Soviet weapons could penetrate the Panther's front armor. * Pershing's 90mm penetrates 110mm at 1000m * The Tiger's 8.8 cm KwK 36 L/56 penetrates 135mm at 1000m. * Whereas Panthers were the more serious threat to Allied tanks, Tigers had a bigger psychological effect on opposing crews, causing a 'Tiger phobia'. Allied tankers would sometimes evade rather than confront a Tiger, even a tank that only looked like one, such as the Panzer IV with turret skirts applied. In the Normandy campaign, it could take four to five Shermans to knock out a single Tiger tank by maneuvering to its weaker flank or rear armor; the Soviet T-34s fared similarly against the German tanks, as had the German PzIII earlier against the Soviet heavy tanks. An accepted Allied tactic was to engage the Tiger as a group, one attracting the attention of the Tiger crew while the others attacked the sides or rear of the vehicle. Since the ammunition and fuel were stored in the sides, a side penetration often resulted in a kill. This was, however, a risky tactic, and often resulted in the loss of several Allied vehicles. It took a great deal of tactical skill to eliminate a Tiger. * IS-2's A-19 122mm penetrates 150mm at 1000m and can go through the front and rear armor and the engine block of the German Panther tank. * The 17 pounder mounted on the Sherman Firefly was able to penetrate 131mm at 1000 meters, more than sufficient to defeat the German Tiger I and Panther tank at standard combat ranges. * Pershing 90mm APCR penetrates 192mm at 1000m * The Tiger II/Elefant/PaK43's 8.8 cm KwK 43 penetrates 165mm at 1000m * The M4 Sherman was unable to penetrate the front of a Tiger II even at point blank and the M26 Pershing and IS-2 had to come within 1300 m and 200 m respectively. * The Tiger II's 88 mm armament could penetrate 165mm at 1000m and destroy all Allied armor at a range far outside the effective range of the enemy's armament. Also, notwithstanding its reliability problems, the Tiger II was remarkably agile for such a heavy vehicle. Contemporary German records indicate that it had a lower ground pressure and was as maneuverable as the much lighter Panzer IV. * A typical modern lined shaped charge can penetrate armor steel to a depth of 7 or more times the diameter of the charge's cone (cone diameters, CD), though greater depths of 10 CD and above are now feasible. * The shaped charge of the PanzerFaust could penetrate up to 200 mm of steel, enough to defeat any armoured fighting vehicle of the period including T-34's and IS-2. * RPG-16 and M72 LAW can penetrate 300mm * RPG-22 can penetrate 400mm * RPG-7 can penetrate 500mm * M1 Abrams cannot penetrate its own 610mm Sloped Armor * RPG-29 can penetrate 750mm and has penetrated the front armor of a Challenger 2. * BLU-109 Penetrator - Penetration of reinforced concrete: 1.8 m (6 ft) * BLU-116 Advanced Unitary Penetrator (AUP), BLU-118/B Thermobaric Warhead - Penetration of reinforced concrete: 3.4m (11 ft) * BLU-113 Super Penetrator - Penetration of reinforced concrete: more than 6m (20 ft) * The crippled Bismark endured 5 torpedoes and a relentless attack by the 14 inch guns of 2 Battleships and the 8 inch guns of 2 Heavy Cruisers even at point blank range for over half an hour. The upper decks were destroyed, but the ship was still under power and the hull was relatively sound. It was finally scuttled by the crew. * Penetration of materials vs 5.56mm: http://www.inetres.com/gp/military/infantry/rifle/556mm_ammo.html ** The following stop a 5.56mm round fired at less than 50 meters: *** One thickness of well-packed sandbags. *** A 2 inch (51 mm) non-reinforced concrete wall. *** A 55 gallon drum filled with water or sand. *** A small ammunition can filled with sand. *** A cinder block filled with sand (block will probably shatter). *** A plate glass windowpane at a 45 degree angle (glass fragments may be thrown behind the glass). *** A brick veneer. *** A layer of books 18 to 24 inches (457 to 610 mm) thick. ** The following do not stop a 5.56mm round fired at less than 50 meters: *** Interior walls made of thin wood paneling, sheetrock, or plaster *** Common office furniture, such as desks and chairs *** Wooden frame buildings and single cinder block walls offer little protection from 5.56mm rounds. *** A car body (round will penetrate but normally not exit). * 40mm High Explosive dual purpse round ** Penetrate 2 inches (50 mm) of armorplate, 12 inches (300 mm) of pine logs, 16 inches (400 mm) of concrete blocks, or 20 inches (500 mm) of sandbags at ranges up to 1,312 feet (400 m). * Sandbags = 1/10th Steel * Concrete = 1/8th Steel * Pine Logs = 1/6th Steel http://www.panzerworld.net/armourpenetration" :summary "* Level * Damage * Armor (mm) * Energy (J) * Explosive Force (psi) * Mass (kg) The following table is an attempt to unify Damage, Armor, Energy, Explosive Force, Strength, and Mass together. This is done with the following premises: 1) Where possible use factual comparisons between Weapons and Armor that defeated those weapons. 2) Once damage and armor are mapped, the energy created from each firearm can be derived by muzzle velocity and weapon calibre. 3) Energy in Joules (J) is easily converted into explosive force measured in PSI 4) Energy may also easily be converted into a strength rating by determining how much mass that energy would lift over a person's head (3m) in 1 second. 5) Finally the mass rating from strength can be used as a general chart for mass (and by correlation Body). The formula is Energy = Mass (kg) * ((3m ^ 2) / 1s * 10m / 1s / 1s. Simplified the formula is Energy = Mass (kg) * 100." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/section :tag "level") :severity 2)))))) "Combatant Types" (section :name "Combatant Types" :rulemap (rulemap :Elite (rule :name "Elite" :summary "* Elite units gain +2 to all combat, morale, or military rolls.") :Mob (rule :name "Mob" :summary "* Mob units take -1 to all combat, morale, or military rolls. * When a Mob unit takes its action, other Mob units within 2 spaces must roll Will. If they fail, they immediately activate and attempt to move adjacent to the original Mob and perform the same action.") :Veteran (rule :name "Veteran" :summary "* Veteran units gain +1 to all combat, morale, or military rolls."))) "Melee and Close Combat" (section :name "Melee and Close Combat" :rulemap (rulemap :Aerial (rule :name "Aerial") :Crouching (rule :name "Crouching") :Duel (rule :name "Duel" :summary "* Choose an Ability - Each player secretly choose an [Ability] for this turn. * Determine Initiative - Each player begins bidding a [Speed] he/she will use before the [Ability]. * Take Turns - Each player takes their turn in the order of the final bidding. ** Move - The unit must use or discard at least the bid amount of [Speed] before it can take an [Action] ** Action - Reveal the chosen [Ability]. If the unit is in range of a target and has not used too much [Speed] to use the chosen [Ability], then it may use the ability now. ** Move - The unit may use any remaining [Speed].") "Finishing Move" (rule :name "Finishing Move" :summary "* Finishing Moves are powerful attacks that are usually only done when the opponent cannot defend. * [Move]: No movement this turn.") "Armor Facing" (rule :name "Armor Facing" :summary "* Armor is rarely uniform around a unit. * Determine the armor side you are targetting (i.e. Front, Rear, Side, Top, Under) by determining which of your opponents [Firing Arc]s your weapon lies in. * If facing still cannot be determined, then it is the defender's choice. * Infantry units may attack top or under armor if they are within 1 space of the target (assume grenades or other improvised weapons).") :Explosive (rule :name "Explosive" :summary `* 1 gram of TNT releases 1000 calories upon explosion or 4184J. 1 gram of sugar has abour 4x the energy. * 1g=4.184x10^3J, 1kg=4.184x10^6J, 1ton=4.184x10^9J, 1kt=4.184x10^12J, 1Mt=4.184x10^15J * Explosions Damage falls off by half (-1 Damage) for every 2m from the center. * Following a blast wave is a negative blast of 1/3 strength * Blasts are reflected and amplified by solid surfaces. A person between a blast and a building will suffer 2-3x the injury as those in open spaces. Blast Damage in Overpressure Po=0.34E/R^3 where Po= overpressure in pascals (about 6895 Pascals per psi.) E=energy, in joules (0.1 Kg TNT = 461,200 joules) R^3= the cube of distance, in meters And, IIRC 5 psi(35 Kpa): windows shattered, startled/stunned 20 psi: (140 kPa)lung damage, eardrums likely popped 35 psi (250 kPa): serious injury probable, death rare 200 psi (1400 kPa): mutilation .15 psi: Glass breaks .25 psi: Hurricane winds, injuries from flying glass .4 psi: Limited minor structural damage (windows broken, cracks in plaster, broken roof tiles) .7 psi: Minor damage to house 1 psi: Partial demolition of houses made uninhabitable 2 psi: Partial collapse of walls and roofs of houses, Residential structures collapse, injuries common 3 psi: Non-reinforced concrete or cinder wall shattered, steel frame buildings distored, 3000lb machinery unaffected, 10% eardrum damage 4 psi: Most buildings collapse except concrete, fatalities occur 5 psi: Wooden utility poles snap, 50% eardrum damage 6.3 psi: Lung haemorrhage damage 7 psi: Houses completely destroyed, loaded trains overturned 8 psi: Non-reinforced brick walls fail by shearing or flexure 9 psi: Loaded train boxcars demolished 10 psi: Buildings totally destroyed, 7000lb machines moved and badly damaged, 12000lb machines survive, Reinforced concrete buildings severly damaged, fatal injuries common 14.5 psi: 1% fatalities 17.5 psi: 10% fatalities 20.5 psi: 50% fatalities 25.5 psi: 90% fatalities 29.0 psi: 99% fatalities 500lb Bomb 1000lb Bomb 4000lb (2t) Blockbuster Bomb 'Cookie' 3/4 weight is explosive 8000lb (4t) Bomb 12000lb (6t) Tallboy 22000lb (11t) Grand Slam Earthquake Bomb 1kt Fission Bomb 10kt Fission Bomb 1Mt Fusion Bomb 10Mt Fusion Bomb Blast Radius: ~50mm 2m ~60mm 5m ~70mm 10m ~80mm 15m ~90mm 20m 105mm 25m 155mm 50m 203mm 80m ECR The effective casualty radius is defined as the radius of a circle about the point of detonation in which it may be expected that 50 percent of exposed troops will become casualties. The 40mm grenade has an effective casualty radius of 5 meters. 155mm (M107) 50m ECR 5"x54 (Mk64) 45m ECR 120mm (M934) 60m ECR 107mm (M329A2) 40m ECR 105mm (M1) 35m ECR 81mm (M935/M734) 40m ECR F/M252 81mm (M374A3) 34m ECR F/M29 60mm (M720/M888 ) 27.5 ECR`) "Anti-Missile Missile" (rule :name "Anti-Missile Missile" :summary "* Anti-Missiles are designed to intercept other missiles and explode in front of the incoming missile thereby destroying them. They can be used for other purposes, but their relatively large area and low payload limits their use to soft targets. Anti-Missiles can be used to intercept any missiles including those pursuing other targets and other Anti-Missiles. * [Reaction]: Attack other Missile") "Ballistic Missile" (rule :name "Ballistic Missile") "Cluster Missile" (rule :name "Cluster Missile" :summary "* Missile mounted with a cluster bomb warhead. * [Action]: Add a missile token in front of this unit. This missile is now a regular unit that must always full move taking at most 1 turn each move. The missile has [Action]: Make an attack against the 3 adjacent spaces toward the front of the missile, then remove the missile.") "Cruise Missile" (rule :name "Cruise Missile") "Guided Missile" (rule :name "Guided Missile") :Rocket (rule :name "Rocket" :summary "* Rockets are a form of missile that is designed to carry the maximum payload. They are, therefore, relatively large and slow compared to other missile types. They are unguided. * [Action]: Add a missile token in front of this unit. This missile is now a regular unit that must always full move and may not turn. The missile has [Action]: Make an attack against the current space, then remove the missile.") "Swarm Missile" (rule :name "Swarm Missile" :summary "* Series of small, linked missiles that individually have low yield but can be fired in varying numbers to strike either a single target or a large area.") :Torpedo (rule :name "Torpedo" :summary "* Torpedoes are a form of missile (usually underwater) that is designed to carry the maximum destructive payload. They are, therefore, relatively large and slow compared to other missile types."))) :Ammunition (section :name "Ammunition" :rulemap (rulemap "Acid Ammo" (rule :name "Acid Ammo") "Adhesive Ammo" (rule :name "Adhesive Ammo") "Anti-Laser Aerosol Ammo" (rule :name "Anti-Laser Aerosol Ammo") "Area Effect Ammo" (rule :name "Area Effect Ammo") "Armor Piercing Ammo" (rule :name "Armor Piercing Ammo") "Birdshot Ammo" (rule :name "Birdshot Ammo") "Buckshot Ammo" (rule :name "Buckshot Ammo") "Chemical Ammo" (rule :name "Chemical Ammo") "Firefighting Ammo" (rule :name "Firefighting Ammo") "Flare Ammo" (rule :name "Flare Ammo") "Flechette Ammo" (rule :name "Flechette Ammo" :summary "* This is kind of a shot-gun that fires a swarm of darts instead of buckshot ('flechette' is French for 'little arrow'). They look like nails. In the shell, a group of flechettes are held together by a plastic frame called a sabot, which falls away when the load exits the muzzle. Light flechettes are twenty to a shell, heavy are six to a shell. Like shotgun shells, they are good for causing large amounts of damage to the intruder in one's apartment, but failing to penetrate the wall so as to not annoy the neighbors. * Light flechettes are only good against soft body armor; rifle plates will stop them cold. Additionally, light flechettes lack the stopping power of buckshot against unarmored targets. * Heavy flechettes have the mass of a 000 buckshot pellet and likely being made from very hard material (at least hardened steel, probably tungsten), these shells will exhibit rifle grade penetration. * Flechettes are fin stabilized steel projectiles similar in appearance to arrows. During the Korean War the Chinese army tactic of human wave attacks against US lines of defence prompted interest in flechette projectiles in single and multiple projectile systems for small arms and antipersonnel (APERS) use. Flechettes have a performance criteria very different from the conventional rifle bullet. Typical modern flechettes are small light weight steel projectiles, and the velocity lost to air resistance is generally 375 fps. per 100 Meters of flight. Unlike rifle bullets, flechettes are not spin stabilized, but use fins to achieve level flight. The flechette's long body looses rigidity on target impact and bends into a hook, often breaking off the fin portion creating an additional wound. Flechette munitions include projectiles for use in the M16 rifle, CAWS (close assault weapons system), and 12 gage shotgun, as well as the 105mm M101A1/M102 howitzer, 2.75 in. FFAR (folding fin aircraft rocket), and the 70mm Hydra-70 FFAR.") "Fragmentation Ammo" (rule :name "Fragmentation Ammo" :summary "* Approximately 30% of the energy released by the explosive detonation is used to fragment the case and impart kinetic energy to the fragments. The balance of available energy is used to create a shock front and blast effects. The fragments are propelled at high velocity, and after a short distance they overtake and pass through the shock wave. The rate at which the velocity of the shock front accompanying the blast decreases is generally much greater than the decrease in velocity of fragments, which occurs due to air friction. Therefore, the advance of the shock front lags behind that of the fragments. The radius of effective fragment damage, although target dependent, thus exceeds consid-erably the radius of effective blast damage in an air burst.") "Heat Seeking Ammo" (rule :name "Heat Seeking Ammo") "Homing Ammo" (rule :name "Homing Ammo") "Incendiary Ammo" (rule :name "Incendiary Ammo") "Laser Guided Ammo" (rule :name "Laser Guided Ammo") "Minelayer Ammo" (rule :name "Minelayer Ammo") "Needle Ammo" (rule :name "Needle Ammo" :summary "* Needlers are unique weapons that fire small needle-like projectiles at high velocities. * Advantages: Because they are so light, needlers have much lower recoil than ordinary rounds. They also benefit from high rates of fire and large ammo capacities. * Disadvantages: Their principle weakness is that damage falls off sharply against armor. * One needler has a solid block of plastic as ammo and a cylinder in the barrel that rotates at high velocities. The twisting motion of the cylinder repeatedly shaves off toothpick-sized needles, tightly coils them and ejects them from the barrel at high velocity. When the coiled needle strikes a target itunwinds, drilling into the target. Because the barrel does not stop spinning, the needler can fire a continuous hailstorm of needles until it is out of ammo. * Rules: [Shattershot], [Continuous Stream]" :titles "Needlegun") "Non-Lethal Ammo" (rule :name "Non-Lethal Ammo") "Paint Ammo" (rule :name "Paint Ammo") "Radar Guided Ammo" (rule :name "Radar Guided Ammo") "Recoiless Ammo" (rule :name "Recoiless Ammo" :summary "* Recoilless weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for underwater or space. * Recoilless weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Bazooka, Gyrojet, Rocket Round") "Scramble Ammo" (rule :name "Scramble Ammo" :titles "Haywire Ammo") "Smoke Ammo" (rule :name "Smoke Ammo") "Taser Ammo" (rule :name "Taser Ammo") "Tracer Ammo" (rule :name "Tracer Ammo") "Underwater Ammo" (rule :name "Underwater Ammo"))) :Lasers (section :name "Lasers" :reference "Examples of pulsed systems with high peak power: * 700 TW (700x10^12 W) - The National Ignition Facility is working on a system that, when complete, will contain a 192-beam, 1.8-megajoule laser system adjoining a 10-meter-diameter target chamber. The system is expected to be completed in April of 2009. * 1.3 PW (1.3x10^15 W) - world's most powerful laser as of 1998, located at the Lawrence Livermore Laboratory" :summary "* Lasers are the ultimate sniper's weapon. They are silent, extremely hard to spot, and have pinpoint accuracy. They are, however, vulnerable to impurities in the the medium they fire through. These impurities are heated by the beam and can dilute the beam as well as make the beam visible. * Accuracy: +1 * 5 mW - CD-ROM * 10 mW - DVD player * 100 mW - CD-RW * 250 mW - DVD-R * 1 W - green laser in current Holographic Versatile Disc prototype development * 1-20 W - output of the majority of commercially available solid-state lasers used for micro machining * 30-100 W - typical sealed CO2 surgical lasers[26] * 100-3000 W (peak output 1.5 kW) - typical sealed CO2 lasers used in industrial laser cutting Energy Storage Let's assume non-rechargeable systems at an energy density of 2.5 kilojoules per cubic centimeter, which is quite plausible. You might consider a rechargeable battery pack as an option, with half the capacity of the non-rechargeables. Lithium-polymer cells are rechargeable, and have an energy density of 1.08 kJ/cm3. As for nonrechargable batteries, check out the various molten salt batteries. They're stored as a solid, so they can be stored 'charged' virtually forever. As soon as you bring them up to operating temperature (400 C or more), and as long as you keep them there, you have an incredibly high output battery. The military has used them like this for a very long time, and most current research is focused on making them rechargeable. Apparently the energy density varies widely, but it's clear that they can have very high energy density. Whether you use lasers or particle beams, you'll need a kilojoule of output energy to reliably incapacitate a human target. In the case of a laser weapon, that energy would be subdivided into ~1 joule pulses at ~5 microsecond intervals, to achieve penetration in the face of a laser's natural tendency to deposit energy at the target's surface. Particle beams don't have that problem; boost the electrons up to a few hundred MeV, and you can dump the whole kilojoule's worth at once. The plasma clears away easily in that time frame; debris is the real issue, and the driving force between the 5 microsecond pulse rate. That allows roughly 90% of the debris to clear the beam path, assuming a 1mm beam and instantaneous 1J pulses. 1 joule every 5 microseconds is optimal against soft tissue, other materials will want different pulse trains. I'm assuming a weapon designed to penetrate ~30cm in soft body tissue. This gives about 15cm in bone or plastic, 5cm in brick or concrete, or 2.5cm in steel or most ceramics. Synthetics won't be very good at stopping energy weapons, even tough ones like kevlar, but you might be able to find a ceramic that could stop a laser beam with a centimeter's thickness or so. Particle beams are tougher to stop; it mostly comes down to sticking mass in the way without regard to material properties. Lasers would likely have to have pulse energy and frequency tuned to the specific material being targeted. It might be possible to do this automatically, based on crude spectoanalysis of the material vaporized in each pulse, but if not expect penetration to be roughly halved if a laser weapon is fired at a target it has not been optimized for. Taking into account the inefficiency of the system, the input energy will likely be somewhere between two and five kilojoules per shot. So you could get fifty to a hundred shots from a pistol-sized non rechargeable energy source, or half that with a rechargeable battery. Automatic fire at anywhere up to 20 Hz (1200 rpm) shouldn't be a problem in the short term, though might cause cooling problems if you keep it up. You also need to focus the energy on the target, with a spot size of a millimeter or less. With a laser, that gets kind of tricky. A 5-centimeter mirror, about the largest you can really imagine on a pistol, gives an effective range of perhaps sixty meters, beyond which the weapon starts losing penetration quite rapidly. you still need to get down to a millimeter or so to flash-boil water in a layer ~one optical depth in thickness. Once you do that, the steam will expand and spread the damage around, but if you don't hit the threshold for turning water into steam all you do is warm up the target. With penetration, range, and repeatability dealt with, it is time to turn to accuracy. Lack of recoil, automatic fire capability, and line-of-sight accuracy are all major assets here, but there is one more improvement to be made. Both lasers and particle beams can be steered at least a degree or two off-axis, in the case of the laser via the adaptive-optic mirror, for particle beams with a transverse magnetic field at the muzzle. If we can throw in a chip-mounted laser or acoustic gyro set, we can have a gyrostabilized handgun. The weapon shoots not at where the gun is pointed at the instant of firing, but at a weighted average of where it has been pointing over the past quarter of a second or so. Smoothes out a lot of the jitter inherent in human marksmanship. Another clever one would be to use the laser's optics to project a laser sight. Pull the trigger, and the harmless red dot suddenly explodes. BANG! Using the laser optics as a scope would be more useful for long range or high accuracy shots. In combat, I would expect such a weapon to be used in automatic fire mode at ~10 Hz. With fifty to a hundred pulses to play with, you won't run out of ammunition too soon as is the case with current machine pistols. And recoilless, stabilized automatic fire should allow a moderately capable marksman to walk a burst on target in one or two reaction cycles (say, half a second) in most circumstances. Practical combat range, if you don't mind missing a good part of the time, would be on the order of 50 meters Cooling: And you'll need some serious cooling. I'd go with liquid-metal microchannel heat pipes etched into all the hot surfaces, and leading to cooling fins around the 'barrel'. If you use the chemical-propellant option, regenerative cooling could also work. What would it sound like? The actual mechanism of producing the laser beam could sound like anything, from complete silence, to the click of an electrical contact, to a sharp, electric snap, to a gunshot-like thunderclap. The beam, when incident upon its target, will make a nice bang. The pistol won't make a 'zap' sound, will it? If the beam is repeated rapidly it might, however, make a buzz. It might end up sounding quite electrical at a few hundred Hertz. Remember that the temporary cavity caused by the explosions only lasts a few milliseconds, so the beam has to have completed its work of piercing the target at this time. The individual explosions will be too closely spaced (microseconds apart) to be individually audible. Since shocks are always supersonic to the air in their path, and subsonic to the moving air left behind them, multiple subsequent shocks from the same source tend to merge into one stronger shock. Thus, each pulse probably makes one bang. The bang comes from a series of explosions whose total energy is about the same as that of the gunpowder detonating in a firing rifle, so it will probably be about as loud. If the beam is in the visible part of the spectrum, you get a noticeable path through clean air at indoor lighting intensities. I am not sure if it will be visible out of doors under full sunlight, but you could see it at night. The beam will be widest at the aperture of the gun, probably a few centimeters across to keep the optics from being damaged by the intense light. The beam will converge to a spot a millimeter or so across at the target. In unclean air, the beam will be a lot more visible. This Rayleigh scattering is linear, so the total integrated brightness across the cross section of the beam should be constant, if we neglect the gradual attenuation of the beam due to the light being scattered out of it. Higher frequency light scatters much more than lower frequency light, so a blue beam would be much more visible than a red one. When a visible beam is incident on the target, it creates a very bright flash of the same color as the beam. This may temporarily dazzle those looking at it, and the beam itself may be overlooked because of the bright flash obscuring it. If the weapon lases in the UV, the intense pulse may cause multi-photon ionization of atoms in the air, causing a fluorescent glow along the path of the beam (possibly red, green, or violet, I'm not quite sure what sparsely ionized air at atmospheric pressure looks like). Since this process is non-linear, it will be dimmest near the aperture where the beam is widest, and most intense nearer the target. Weapon designers will probably try to minimize this effect, since it leads to attenuation of the beam and subsequent loss of effectiveness. Near IR beams are likely to only be visible if there are relatively large pieces of dust, lint, or pollen floating around, which will glow incandescent as they burn under the irradiation of your beam. I doubt beams in the 'thermal' IR range would be used, even though the air is fairly transparent to these wavelengths, because with short, intense pulses you tend to get cascade ionization with these lower frequencies, and this will completely absorb the beam. Beams at non-visible frequencies will also make a flash and a bang where incident on the target from the expanding plasma of their explosion, but nowhere near as bright as that of a visible beam. In vacuum, of course, the beam itself is always invisible, but you can still see the flashes at the target. Will the beam be invisible or bright enough to be blinding? It is quite likely to be both. The beam itself may be invisible or minimally visible, but if even a tiny fraction of the beam is specularly scattered into your eye, near IR and visible and some near UV will be focused to a diffraction limited spot on your retina, causing burns and permanent scarring. This can lead to degradation of vision or total blindness. Interestingly, the brain compensates for blind spots on the retina, so that you might have lost up to 60% of your vision from multiple exposures to beams and you still think you can see just fine. Anyone likely to be using a laser will probably wear protective goggles or contacts. With today's technology, you would probably make them out of an optical band gap material that excludes a very narrow window of light centered on the laser's frequency. This means that the people who fired the lasers would not be able to see the beams or flashes of their own weapons (assuming they used visible light lasers). They would still see the flashes from the plasma explosions, though, plus incandescence of suspended atmospheric particles and fluorescence from multi-photon absorption. The method of subsequent explosions on the back of an expanding cavity driving the cavity through the target will leave a wound much like that of a gunshot, except without fun stuff like the bullet fragmenting or breaking up. A variant where nearly parallel beams a few cm apart literally rip the tissue between them could leave a wound looking more like an ugly gash - add on a few more of these beams on the same plane and you could literally cut someone in half with one millisecond pulse, using only about as much energy as goes into accelerating the bullet of a modern day battle rifle. Will there be a large splash of blood and gore on the wall behind the unlucky pirate? Quite likely, Note that since you do not have the momentum associated with a projectile, it will be more spread out than you would get from a gunshot wound, and you would get blood and gore coming out the front, too. I assume that since the beam is one millimeter in diameter but the hole in the pirate is four centimeters, little or no wound cauterization will occur. Nope, the wound would be ragged and messy. It is created by mechanical, not thermal effects. The laser weapon will probably end up looking something like a camcorder, with a big lens that the beam goes through, and a fairly compact design. Since mirrors and internal optics can bend the beam inside the weapon, there is no need for the long barrels you see on modern firearms. Cooling, if necessary, would probably not involve fins - I would expect something more like the radiator on modern automobiles. Remember, shedding your heat through contact with the air is much more efficient than radiation. keeping in mind that using contact with the air doesn't work if there is no air, i.e., in vacuum. C. James Huff notes that there is one kind of fin for radiant cooling and another for air cooling. He mentions that the fins on a CPU hot sink is a good example of the latter. For a vacuum rated laser he recommends a compressed or liquified gas cartridge since a radiant cooler would be inconveniently huge. Also, lasers are getting surprisingly efficient. When each beam pulse contains no more energy than imparted to a rifle bullet, lasers might need cooling no more than a modern rifle. the laser's battery will be carrying plenty of juice. Anything carrying that much energy will be at least slightly unstable. In other words, it wouldn't take much to make a charged battery into a home-made bomb (which might come in handy if one suddenly needed a bomb.). You might have read news reports about laptop computers who's batteries suddenly burst into flame. And don't even think about sticking a fork into the open contacts. This has been observed somewhat tongue-in-cheek by John Routledge as Routledge's Law: 'Any interesting battery material for a laser gun would be more usefully deployed as an explosive warhead.' He also notes the problem with ammunition cook off. If you are holding a fully-charged laser pistol, and some lucky enemy sniper manages to score a direct hit on the pistol's battery, it is going to be just to bad if the resulting explosion vaporizes you and all your friends within a large radius. Assuming a worst case of 5 kilojoules per shot and a rechargeable magazine containing 50 shots, the magazine is packing 250 kilojoules. This is the equivalent of 250,000 * 2.7778e-4 = 70 watt-hours or 250,000 / 4,500 = 55 grams of TNT (For comparison purposes, a standard 8 inch stick of dynamite is about 208 grams and hand grenades used by the US Army have explosive charges of 56 to 226 grams of TNT). At his specified power density of 2.5 kilojoules per cubic centimeter, this would imply a magazine volume of 100 cm3. this is approximately the same volume as forty-two .45 caliber rounds. Fan Beam If a man is about 45 centimeters wide (18 inches), at a range of 5 meters, and the bolts were to be spaced 3 centimeters apart, it would take 15 bolts fired at 0.3 degree increments to the left and right. Your target would fall... in two places. A less blood-thirsty use would be in the wilderness, chopping down trees ('Lumberjack' mode). Multiple Modes Stun would be a laser in Pulsed Energy Projectile mode. Heat would be a laser in unpulsed heat ray mode at relatively low energy levels. Disrupt would be a laser in pulsed blaster mode or in unpulsed heat ray mode at high energy levels. Overload makes the battery explode. Dematerialize is the only one that cannot be done, but it is rather silly in the first place. ('Dematerialize' is a fancy way of saying 'disintegrator ray'. A weapon that can vaporize a human body without setting the walls and floor on fire or even raising the temperature of the room? Give me a break!) Remember that a laser in pulse mode could have its effect optimized to a given material by a specific setting for pulse frequency. So one could have a 'metal cutting' setting for use as a tool or to open a locked door, and a 'kill human' setting for war-to-the-knife combat. All with the same pulse laser, just with a different frequency. Such a weapon would have a selector switch for each mode. And it might have a 'customizable' mode. This would allow an expert to manually tweak the settings: continuous or pulse, spectrum frequency, pulse timing, power level, etc.") "Less Than Lethal" (section :name "Less Than Lethal" :reference `It was recently revealed that the US military was researching a rather alarming line of less-lethal weapons, the Pulsed Energy Projectile (PEP) program. (As a side note, understand that there is no such thing as a 'non-lethal' weapon. This is because any weapon or gas that can reliably incapacitate or render unconscious a 300 pound world wrestling champion will be strong enough to instantly kill a small child or elderly person.) PEP weapons fire a laser pulse that is very intense but only a fraction of a second in duration. The pulse vaporizes a tiny portion of the hapless victim's clothing or skin, creating a plasma burst intense enough to knock the victim to the ground. This was intended to be used for crowd control. A pulse strong enough to knock one down is also strong enough to make one's eyeballs explode if it hit your face. However, during test performed on animals, the researchers noticed something unexpected. The pulses were creating pain and temporary paralysis in the test animals. As it turns out, certain pulses would create a plasma burst emitting an electromagnetic signal of proper frequency to artificially stimulate the nerve endings in the animal's skin. The US military is researching this effect, trying to find the frequency that will cause the maximum pain sensation without actually causing any physical harm to the target. There is also the possibility that other frequencies could cause taser-like paralysis effects. The effect can be made lethal. The original name for the project was Pulsed Impulsive Kill Laser (PIKL) but was quickly changed. Currently PEP weapons are not man-portable, they are vehicle mounted weapons. They have a range of about two kilometers. We might yet see Space-1999 style hand lasers with a "stun" setting.` :rulemap (rulemap "Pain Ray" (rule :name "Pain Ray" :reference "* For riot control situations, the US Army is working on the Active Denial System (ADS). It emits microwaves that only penetrate a short way into the skin, not deep enough to do permanent damage but more than deep enough to roast all the target's pain nerve endings. As with all microwaves, the range of this beam of concentrated agony is drastically reduced by rain or heavy humidity.") "Vomit Ray" (rule :name "Vomit Ray" :reference "* The US Navy is working on its Electromagnetic Personnel Interdiction Control project, AKA the Vomit Ray. The US Department of Homeland Security is working on a pistol sized version, which is a very unsettling thought."))) "Nuclear Weapons" (section :name "Nuclear Weapons") "Particle Beams" (section :name "Particle Beams" :reference "* If you get a particle beam intense enough to burn someone, it will also deliver a lethal dose of radiation from a hit anywhere on the body. * Radiation will scatter from the beam 'impact' site, irradiating things around it. In an atmosphere, radiation will scatter off air molecules to irradiate things near the beam. Some of it will backscatter, irradiating whatever fires the gun. Forget about a sci-fi hero using a particle beam 'blaster' - after blasting a hoard of bug eyed space aliens, he'd be sick or dying from radiation poisoning. In real life, particle beam weapons were considered for their ability to use radiation to disable things (mostly ICBMs) without necessarily blowing holes in them." :summary "* Particle beams fire a stream of relativistic atoms or sub-atomic particles. These are beams of ionizing radiation.") :Plasmacasters (section :name "Plasmacasters" :summary "* A weapon that fires a shell that releases a burst of plasma when it strikes a target. This shell glow with barely contained energy as it flies to its target." :titles "Blaster, Spinfusor") :Railgun (section :name "Railgun" :reference "* On January 31, 2008, the US Navy tested a 10MJ railgun with a muzzle velocity of 2500m/s. It is expected to reach 5800m/s at 10 shots/minute (enough to hit a 5m target 370km/200miles away)." :summary "* This type of weapon includes all hypervelocity rounds propelled by massive magnetic fields. * Their great speed gives them excellent penetration and kinetic damage. Because of this great speed, they cannot carry any useful payload because the payload would be destroyed when the shell was launched. Therefore, railguns are all kinetic weapons only. * Coilguns (Gauss) and Railguns are technically different, but their result is the same." :titles "Coilgun, Gauss Gun, Kinetic Kill Weapons, Linear Cannon, Linear Rifle, Mass Driver") "Sonic Weapon" (section :name "Sonic Weapon") "Disruptor Weapons" (section :name "Disruptor Weapons" :summary "* Disruptors temporarily weaken the molecular bonds in the target. Damage is done via violent system shock, and the weapon may distintegrate the target entirely if enough damage is done. * Disruptors have decreasing effectiveness with the density and hardness of the target. Soft materials like flesh are the most practical target. Damage drops off sharply against metals and rocks making disintegration of such materials extremely difficult." :titles "Disintegrator, Phaser") "Energy Melee Weapons" (section :name "Energy Melee Weapons" :summary "* The lance is essentially a giant plasma cutting torch using compressed-gas ignited from direct current from the exo-armor's fusion reactor. * The gas supply limits the usefulness of the weapon and many may need to be carried.") "Weapon Rules" (section :name "Weapon Rules" :rulemap (rulemap "Firing Arc" (rule :name "Firing Arc" :summary "Larger weapons are often cumbersome to use or aim and may only attack in a particular arc. The following abbreviations are used: * F - Front. Can only attach in any front arc. * B - Back. Can only attack in any rear arc. * FF - Fixed Forward. Can only attack the forward arc. * FB - Fixed Backward. Can only attack the rear arc. * FL - Fixed Left. Can only attack the left arc. * FR - Fixed Right. Can only attack the right arc. * Turrent - Turret mount. Can attack in any direction but must use [Turret] rules to fire anywhere but forward. * Pintle - Pintle mount. Can attack in any direction without limit, but if the pintle mount is used, a crew member is exposed and may be targetted separately from the vehicle at -1.") :Reload (rule :name "Reload" :summary "* [Action]: An item with Reload may not be used until all Reload tokens are removed. * [Action]: An item with Reload adds the number of Reload tokens each time the item is used. * Gain a White [Reload] Token for each Reload value each time the weapon is fired. 1. Panther G 13 sec 2. PZ IV F1 9 sec 3. PZ IV F2 10 sec 4. Tiger 1E 15 sec 5. IS-2 20 sec - This is longer due to the IS-2 having a 122mm cannon and the shell has to be loaded in two parts. Although the first shot to a Panther, Tiger or a PZ IV is usally fatal. 6. KV-1S 12 sec 7. T34-76 13 sec") "Shoot From The Hip" (rule :name "Shoot From The Hip" :summary "* Any unit shooting from the hip takes -1 Attack."))))))
nx/tactics/books/combat / chapter_skills
Description:
Function Name:
  • chapter_skills
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_skills : base/chapter (chapter :name "Skills" :sectionmap (sectionmap "Combat Skills" (section :name "Combat Skills" :skillmap (skillmap "Close Combat" (skill :name "Close Combat" :reference "* The usefulness of kicks in self-defense and actual combat has been debated. Kicks are powerful but risk balance, expose the groin, and risk take downs. * Joker, there is nothing wrong with you that I can't fix. With my hands. - Batman, The Dark Knight Returns * There are seven working defenses from this position. Three of them disarm with minimal contact, three of them kill. The other....hurts. - Batman, The Dark Knight Returns * Beat losers, get paid. - Sett, Runeterra" :summary "* [Targeting]: Close combat may only be used to attack the space directly ahead or the space you are on. * The baseline for kicking abilities is that they are -1 Speed and +1 Damage with a minor special ability. NAME SPD DMG MV DEF SHORT KICK + 1 + 0 + 0 S,C,A FORWARD KICK + 0 + 2 -- 1 S,C,A ---------------------------------------------------------------------------------------------------------------------------------- BACK ROUNDHOUSE -- 2 + 2 -- 1 None K2 * Ignores all Blocks except for San He and Evade Blow. *CARTWHEEL KICK -- 1 -- 1 + 0 S,C (2 W) K4, A3 * DMG vs. all adjacent hexes; opponents who take DMG are Knocked Back one hex; Straight Line attack; the fighter may use full MV, dealing DMG each time he moves next to an opponent. CRESCENT KICK -- 1 + 4 -- 2 S, miss C K3 * KDA DESCENDING WHEEL KICK -- 2 +3 (x2) + 0 (Special) (1 W) K4, A3, Jump, Ft.Swp * First hit = Aerial, Block- S, miss C; Second hit = Crouching, KD, Block- C, miss A. FOOT SWEEP -- 2 + 3 -- 2 C, miss A K2, Crouch * KD; Crouching Maneuver. FORWARD CHEST KICK + 0 + 2 -- 1 S,C,A K3 * KD. Forward Flip Kick + 1 + 5 Two S,A (1 W) K3, A3, Handstand Kick * KD, KDA (unless blocking), (dodge move?) *FORWARD SLIDE KICK + 0 + 2 + 0 C, miss A K2, A2 * KD FRONT SNAP KICK + 2 + 2 None S,C,A K2 ** HAMMER KICK -- 2 + 3, + 4 -- 2 C,miss A (1 W) K3,(x2)K,Ft.Swp * KD; Hits Downed opponents. *HEEL STAMP + 2 -- 4 + 1 S,C, miss A K1, A1 * Opponent is Knocked Back (Fighter's Str. + Athletics) - Opponent's Str.; Fighter is KnockedBack 1. JUMPING SOBAT(TO) -- 1 + 4 Two S,C,A K2, A1, Jump * Aerial. (MY: Aviods Sweeps [fist,foot,spin foot], may only be blocked C or w/ Kick Def) This is charlie's hop toward low kick. KNEE DROP -- 1 + 3 -- 1 (miss S,C,A) K2, A1 * Attacks Downed opponents only. LONG SWEEP KICK -- 2 + 3 None C, miss A K2, Crouch, Foot Sweep * KD; Crouching; this maneuver may be used to strike an opponent who is 1 Hex away. PUSH KICK (STOMACH KICK) + 0 + 1 + 0 S,C,A K2 * Knockback. RISING BIRD KICK -- 1 + 0(x3) One S,C (1 W) K4,A4,Jump,Dbl-Hit Kick * KDA; Aerial Maneuver. Shin Strikes (+ 0) (+ 1) (+ 0) (Normal) K3 * used in conjunction with any basic Kick; the fighter must be in an adjacent Hex to use this maneuver. SPINNING FOOT SWEEP -- 2 + 3(x2) None C, miss A (1 W) K2, A1, Foot Sweep * DMG is dealt to all adjacent hexes, target in front of fighter is struck twice; KD; Crouching. SPLITS KICK -- 1 + 4 One S, miss C K2 * KDA STEPPING FRONT KICK + 0 + 1(x2) + 1 S,C (1 W) K4, Double-Hit Kick * Fighter must MV into opponent's hex; 1st hit causes Knockback. Studder Step Kick + 1 + 2 One C(miss A) K3, A1 * Must be blocked low. THRUSTING FORWARD KICK + 1 + 2 + 1 S, C (1 W) K2, A1 * Aerial Maneuver; KDA. Punch Name Speed Damage Move Defense Jab +2 -1 +0 S,C,A Strong Punch +0 +1 +0 S,C,A Fierce Punch -1 +3 -1 S,C,A ---------------------------------------------------------------- Boshi-Ken(Thumb Drive)-1 +2 +0 S,C,A P2,A2 xIf damage is scored opponent suffers -1 move next round. Buffalo Punch -2 +5 One S,A P2 Bushin Air Elbow +2 -1 +2 S,A P3,A1,Elbow Strikes,Jump xAerial Maneuver Caber Punch -2 +3 -1 S,C,A P2,Str4 xKD Cobra Hand Strike +3 +1 +1 S,C,A (1W) P3 Dash Punch +0 +4 +2 S,C (1W) P4,A1 Dash Uppercut +0 +4 +2 S,miss C (1W) P4,A1,Dash Punch xKDA Double Hit Punch -1 +0(x2) +0 S,C,A P2 Ear Pop -1 +0 -1 S,C,A P2 xIgnores Sta:fighter -1 Honor Elbow Barrage +0 +0(x3) One S,C (1W) P4,Elbow Smash,Elbow Strikes xMust be in opponent's hex Elbow Drop +0 +2 +0 miss S,C,A P2,A1 xMust be used on Downed opponent; If opponent is interrupted he loses action and is still considered downed at the end of round. Elbow Smash +2 +2 One S,C,A P1 Elbow Strikes (+0) (+1) (+0) (normal) P3 xUsed in conjunction with any basic punch, must be in opponent's hex. Fist Sweep -1 +3 -2 C,miss A P3 xCrouching Maneuver;KD Flaming Dragon Punch-1 +6(x3) -2 S,C (1C,1W) P5,A1,F2,Dragon Punch xKD;Knockback 1(all);->Aerial Maneuver Hand Of The Crane +1 +0 +0 (Normal) P4 xMay be used in conjunction with any basic Punch while standing. Hand Of The Eagle Claw+1 +0 +1 (Normal) P4,A3,Jump xMay be in conjunction with any basic Punch while Aerial. Hand Of The Striking Mantis+0 +0 +0 (Normal) P4,A2,Dex4 xMay be used in conjunction with any basic Punch while standing: fighter may strike opponent one hex away. Hook +0 +3 -2 S,C,A P1 Iron Palm(Tieh Sha Chang) +0 +4 -1 None (1C) P4,F4 xIgnores Blocks;KDA Kidney Punch +0 +2 +0 S,C,A P2 xFighter must be behind opponent or in opponent's hex to execute this maneuver; following round opponent is -1 SPD. Lunge Punch +0 +1 +1 C P3,A1 Neck Shatterer -1 +4 -2 S,miss A P2,Elbow Strikes Palm Heel Punch -2 +3 +0 S,C,A P2 xWhen DMG is dealt treat total as if it were one higher for purposes of calculating dizzy. Power Uppercut -1 +3 One S,C P1 xKDA Razor Fist Punch +1 +4 +0 S,C (1C,1W) P5 xKnockback1;DMG is Aggrivated Rekka Ken (+3) (+0) (+0) (Normal) (1W per turn)P4,A2 xUsed with any basic punch; can be used for up to 3 turns; if used full 3 turns next round must be spent taunting, or lose 3 Glory; Combo to dizzy. Reverse Fist Punch +0(+2) +2 One S,C,A P1 x+2 SPD if punch follows a set up punch. Rushing Strong +0 +1 +1 S,A P2 Shikan Ken(knuckle fist) +1 +1 +0 S,C P2 xSTR.test to knock opponent back 1 hex; KDA Shockwave +0 +0 None S,C,miss A (1C) P4,F2 xShockwave extends in straight hex line; 1 hex per dot in STR; KD all. Spinning Chothesline +0 +0 -2 S,miss C (1W) P4,A3,Clothesline xDMG vs. all adjacent hexes; Knockback 1 each time DMG is dealt; Advance with MV after each hit, may roll DMG again if applicable; Dodge Maneuver. Spinning Knuckle -1 +1(x2) +3 S,C (1W) P3,A1,Spinning Back Fist xDodge Maneuver. Strong Decending Elvow +0 +1 +1 S,A P2,A1,Jump xAerial. Sword Hand Strike -1 +4 -2 S,C,A P3 xIgnores armor,Toughskin,etc. Triple Strike -2 (+0,+0,+1) None S,C,A P2,K1 xRoll three damage tests as indicated, take highest two rolls. Turn Punch Rnd 1-1 +4 Two S,C (W first turn)P4 Rnd 2-1 +5 Two S,C Rnd 3+0 +6 Two S,C Rnd 4+1 +7 Two S,C xCard is layed face down; May be played at any time thereafter as long as card is left face down; -1 SPD,DMG,MV while charging maneuver; Need not be used. Uppercut +1 +2 -1 S,C,A P1 x +1DMG vs. Crouching." :titles "Brawler, Grappler, Hand-to-Hand, Infighter, Martial Artist, Wrestler" :stat "Body" :abilitymap (abilitymap :Punch (ability :name "Punch") :Kick (ability :name "Kick" :summary "* [Low Attack] -1 Initiative -1 Move +1 Damage") :Grab (ability :name "Grab" :summary "-1 Initiative -1 Action * Attempt to grab an item. Roll vs. Body to succeed.") "Back Fist" (ability :name "Back Fist" :summary "* Strike with the back of the fist or open hand." :titles "Backhand, Bitch Slap") :Clothesline (ability :name "Clothesline" :summary "Clothesline -1 +2 +0 S,C,miss A") "Bull Rush" (ability :name "Bull Rush") :Charge (ability :name "Charge") "Crouching Strike" (ability :name "Crouching Strike" :summary "Crouch low and deliver a powerful blow to the mid-section or below the belt. * [Attack] [5]: +1 Effect" :titles "Ducking Punch") "Deflecting Punch" (ability :name "Deflecting Punch" :summary "* The fighter deflects a punch at him and immediately counters with a punch of his own. * [Counter]: +1 Effect") "Dragon Strike" (ability :name "Dragon Strike" :summary "* When striking with the fist, more power can be exerted when the movement originates from the feet, is guided by the waist, flows through the body, and exits through the fist. * [Attack] [J]: +1 Knockback * [Aerial]" :titles "Dragon Fist, Dragon Punch") "Ear Pop" (ability :name "Ear Pop" :summary "* Disorienting attack that causes temporary or permanent deafness. * -1 Initiative * -1 Attack * +2 Stun * -2 Move * Criticals: Deafness") "Elbow Drop" (ability :name "Elbow Drop") "Elbow Strike" (ability :name "Elbow Strike" :summary "* Devastating blow common to Muay Thai. * +1 Initiative * +1 Damage * 1 Move" :titles "Elbow Smash") "Eye Rake" (ability :name "Eye Rake" :summary "* Disorienting attack that causes temporary or permanent blindness. * -1 Initiative * -1 Attack * +2 Stun * -2 Move * Criticals: Blindness") "Fists of Fire" (ability :name "Fists of Fire") :Haymaker (ability :name "Haymaker" :summary "* A slow all out attack that causes massive damage. Especially useful to finish off weakened opponents. -2 Initiative 0 Move +2 Damage" :titles "Two-Fisted Smash") "Head Butt" (ability :name "Head Butt" :summary "-2 Move +1 Damage") :Hyperfist (ability :name "Hyperfist" :summary "* [Critical Hits] can be exchanged for additional Attacks. Same as [Auto]. -2 Initiative -1 Damage 1 Move" :titles "Hundred Hand Slap, Lightning Fist, Rapid Punch") :Jab (ability :name "Jab" :summary "* A quick, weak strike. +2 Initiative +1 Accuracy -2 Damage +1 Move") "Knife Hand" (ability :name "Knife Hand" :summary "* [Damage]: [Critical Hits] may reduce opponent's [Armor] roll.") "Knuckle Fist" (ability :name "Knuckle Fist" :summary "* [Critical Hits] cause Knockback.") "Monkey Punch" (ability :name "Monkey Punch" :summary "* Grab blocking arm and punch * If opponent used a block, ignore it." :titles "Grab Punch") "Nerve Strike" (ability :name "Nerve Strike" :summary "* Use the tips of the fingers to strike and pinch nerve clusters to produce pain and debilitation. * [Action] * -1 Initiative * +1 Stun" :titles "Atemi Strike, Atemi Waza, Cobra Strike") "One Two Punch" (ability :name "One Two Punch") "Palm Strike" (ability :name "Palm Strike" :titles "Palm Heel Strike, Shotei") "Phoenix Strike" (ability :name "Phoenix Strike" :summary "* Middle finger protrudes from fist to strike nerve clusters to cause numbness. * [Criticals] can be exchanged for Slow tokens.") :Ram (ability :name "Ram" :summary "* [Action] * +1 Knockback" :titles "Shoulder Smash") "Spinning Back Fist" (ability :name "Spinning Back Fist" :summary "* The fighter spins around adding force to the blow. -1 Initiative +1 Damage +1 Move") "Strike Defense" (ability :name "Strike Defense" :summary "* The fighter concentrates on the strikes of the opponent but becomes vulnerable to other attacks. * [Reaction] +1 Initiative -1 Move +2 Defense vs. Strikes (-1 Defense vs. Others)") "Sword Hand" (ability :name "Sword Hand" :summary "+1 Accuracy +1 Damage -2 Move" :titles "Karate Chop") "Tiger Claw" (ability :name "Tiger Claw" :summary "Tiger Claw Strike (+0) (+1) (+0) S,C,A") :Uppercut (ability :name "Uppercut" :summary "* This powerful punch starts low and ends high using the fighter's leg and back muscles to increase damage. * [Criticals] can be exchanged for Knockback -1 Initiative +1 Damage -1 Move") "Axe Kick" (ability :name "Axe Kick" :summary "* Fighter raises his leg high over his head and snaps it down toward the opponent's head and neck. * [High Attack] -1 Initiative -2 Move +1 Damage") "Back Kick" (ability :name "Back Kick") "Backflip Kick" (ability :name "Backflip Kick" :summary "* [High Attack] * [Limited] by [Acrobatics]. +1 Initiative 1 Move (directly backwards) +1 Damage" :titles "Flash Kick") "Crescent Kick" (ability :name "Crescent Kick") "Double Kick" (ability :name "Double Kick" :summary "* [Combo]: [Roundhouse Kick] followed by [Spinning Thrust Kick]") "Dragon Kick" (ability :name "Dragon Kick" :summary "-- 1 +6 (x2) -- 2 S,C (1C, 1W) K5, F4, Jump * Knockback; KD; -->Aerial Maneuver.") "Dragon Tail" (ability :name "Dragon Tail" :summary "* The fighter drops low, extends his leg and whirls around quickly, kicking his opponents and knocking their feet out from under them. -2 Initiative -1 Accuracy Damage is [Knockback] instead. Criticals are [Knockdown] instead." :titles "Iron Broom, Tiger Tail Sweep") "Drop Kick" (ability :name "Drop Kick" :summary "* Ends [Prone]. * Kick the opponent with the soles of both feet and fall to the ground. -- 1 + 2 -- 1 S miss C,A K2, A1 **") "Flying Kick" (ability :name "Flying Kick" :image "MartialArts/FlyingKick.jpg" :summary "* The fighter launches himself feet first into the air toward his opponent. He ends his move with a powerful kick, usually to the opponent's head or midsection. +1 Accurary +1 Damage +1 Move (Aerial in one direction) + 0 + 6 -- 2 S,C (1 W) K4, A4, Jump * Knockback; KD; --> Aerial Maneuver." :titles "Flying Thrust Kick") "Foot Stomp" (ability :name "Foot Stomp" :reference "* The toe crusher. That went out of style when I left kindergarten. - Kung Fu Hustle" :summary "* Stomp on opponent's foot to slow their movement.") "Handstand Kick" (ability :name "Handstand Kick" :summary "* The fighter bends over, places his hands on the ground, and then presses his legs up into a handstand. The legs snap up with tremendous kicking force. Can be used while [Prone] -1 Initiative 1 Move +2 Damage") "Hurricane Kick" (ability :name "Hurricane Kick" :image "MartialArts/HurricaneKick.jpg" :summary "-1 Speed -2 Attack * May attack up to 2 units in any surrounding spaces." :titles "Butterfly Kick, Whirlwind Kick") "Kick Defense" (ability :name "Kick Defense" :summary "* The fighter concentrates on the legs of the opponent but becomes vulnerable to other attacks. * [Reaction] +1 Initiative -1 Move +2 Defense vs. Kicks (-1 Defense vs. Others)") "Kick Off" (ability :name "Kick Off" :summary "* Propel yourself and opponent apart instead of damaging. Especially useful when the opponent is near dangerous terrain. -1 Initiative +1 Accuracy [Hits] are [Knockback] instead. [Critical Hits] are [Knockdown] instead." :titles "Heel Stamp") "Knee Drop" (ability :name "Knee Drop") "Knee Strike" (ability :name "Knee Strike" :image "MartialArts/TigerKnee.jpg" :summary "* Leap up to strike with the knee to the stomach, chest or face using the momentum of the leap to increase damage. +2 Initiative +1 Damage 0 Move" :titles "Flying Knee Thrust, Tiger Knee") "Leg Sweep" (ability :name "Leg Sweep" :summary "* A low spinning kick designed primarily to knock an opponent of his feet. -2 Move -1 Accuracy [Low Attack] +1 Damage [Critical Hits] are [Knockdown]" :titles "Foot Sweep") "Lightning Leg" (ability :name "Lightning Leg" :image "MartialArts/LightningLeg.jpg" :summary "* [Finishing Move] * [Attack]: [Auto] LIGHTNING LEG -- 2 + 1(x3) None as 100handslap (1 W) K3, Double Hit Kick * Knockback; When this maneuver is chosen the fighter determines which of the three attacks strike high, and which strike low (2 high, 1 low; or 1 high, 2 low), this affects blocking accordingly.") "Reverse Front Kick" (ability :name "Reverse Front Kick" :summary "* Feint kick past head then snap back into the back of the head or neck. -1 Initiative +1 Accuracy -2 Move") "Roundhouse Kick" (ability :name "Roundhouse Kick" :summary "* Fighter pivots and kicks using the momentum from the pivot to increase the damage of the kick. -1 Initiative -1 Action +2 Damage") "Scissor Kick" (ability :name "Scissor Kick" :summary "* Leap up and kick two opponents in different directions simultaneously. -1 Initiative 0 Move [Aerial] -1 Damage") "Side Kick" (ability :name "Side Kick") "Slide Kick" (ability :name "Slide Kick" :summary "+1 Speed * [Low Attack] * Critical Hits can be [Knockdown] * End Action [Prone]") "Spinning Thrust Kick" (ability :name "Spinning Thrust Kick" :summary "* Fighter spins gaining momentum and thrusts with the heel. -2 Initiative -2 Move +2 Damage" :titles "Amaranth Kick, Mule Kick") "Vault Kick" (ability :name "Vault Kick" :summary "* Vault over an obstacle and land a devastating kick with all of your weight. +0 Move - Ignore the terrain penalty of 1 space next to the target. +0 Accuracy - [High Attack] +1 Damage Criticals are [Knockback]") "Atomic Drop" (ability :name "Atomic Drop") "Air Throw" (ability :name "Air Throw" :summary "* The fighter intercepts a leaping or flying opponent in mid-air, twists, and slams him to the ground, landing on top of him. * [Reaction], [Aerial] +1 Initiative +0 Damage is [Knockdown]. Damage also reduces falling Damage to the fighter. Criticals are [Knockdown]. Criticals also reduces falling Criticals to the fighter.") :Backbreaker (ability :name "Backbreaker" :summary "* The fighter lifts his opponent in the air and smashes him to the ground or onto his knee. This maneuver can cause serious spinal injuries. * Uses a [Hold] -2 Initiative -1 Accuracy +2 Damage Criticals are [Cripple]") "Backroll Throw" (ability :name "Backroll Throw" :summary "* The fighter grabs the opponent and then rolls backwards while using his legs to help lift and throw the opponent over him. The opponent is send directly behind the fighter and the fighter is left [Prone]. * Uses a [Hold] -1 Initiative +1 Damage is [Knockdown] Criticals are [Knockdown]") "Bear Hug" (ability :name "Bear Hug" :summary "* The fighter wraps his arms around the opponent and crushes him. * [Continuous] * Requires a [Hold] -1 Initiative +1 Damage 1 Move") "Choke Hold" (ability :name "Choke Hold" :summary "* The fighter wraps his arms around the opponents neck and begins choking him. * [Continuous] * Requires a [Hold] -1 Initiative Criticals are [Asphixiation] 1 Move") "Fighting Hold" (ability :name "Fighting Hold" :summary "* While holding the opponent, strike him repeatedly. * Requires [Hold] * [Continuous] +1 Initiative +1 Accuracy +1 Damage 1 Move") "Grappling Defense" (ability :name "Grappling Defense" :summary "* Skilled grapplers must learn how to resist and escape from the same maneuvers that they use. * [Reaction] +1 Initiative -1 Move 0 Damage - Remove a [Hold] from yourself. Criticals - Remove additional [Holds].") "Ground Fighting" (ability :name "Ground Fighting" :summary "* [Passive]: Ignore penalties for being [Prone].") :Headlock (ability :name "Headlock") "Hip Throw" (ability :name "Hip Throw" :summary "* This is a quick move to get an opponent on the ground. The fighter moves a leg behind the opponent's and pushes him past the hip and directly to the floor. -1 Move Damage - [Knockdown] Criticals - [Knockdown]") :Hold (ability :name "Hold" :summary "* Puts a [Hold] on opponent. +1 Initiative 0 Damage - Add a [Hold] token. 0 Criticals") :Hook (ability :name "Hook" :summary "* The hook is a powerful punch with knockout power. * When throwing a hook, the puncher shifts his body weight to the lead foot, allowing him to pivot his lead foot and generate kinetic energy through the hip/torso/shoulder, swinging his lead fist horizontally toward the opponent. -1 Initiative +1 Damage +0 Criticals - [Stun]") "Iron Claw" (ability :name "Iron Claw" :summary "Damaging Grab") "Joint Lock" (ability :name "Joint Lock" :summary "* The fighter grabs a limb tightly and leverages the limb in ways the joint was not meant to turn. The attack is incredibly painful and can cause sprains, dislocations, and breaks. * [Continuous Hold] -2 Initiative -1 Accuracy +0 Damage - +1 Stun +0 Criticals - [Cripples]" :titles "Armbar, Armlock, Hammerlock, Leg Lock") "Knee Bash" (ability :name "Knee Bash" :summary "* While holding the opponent, knee him repeatedly in the head or stomach. * Requires [Hold] * [Continuous] -1 Initiative +1 Accuracy +2 Damage 0 Move") "Neck Break" (ability :name "Neck Break" :summary "* The fighter grabs the opponent's head and twists it with the intention to break the neck. For best effect this is used as a surprise attack. -2 Initiative -2 Accuracy +4 Damage Criticals are [Cripples]") :Nelson (ability :name "Nelson") :Piledriver (ability :name "Piledriver") :Pin (ability :name "Pin" :summary "* While grappling, attempt to immobilize the opponent. * Requires [Grapple] * [Continuous] +1 Damage - Damage is [Stun]. Criticals are [Slow]") :Reversal (ability :name "Reversal") "Shoulder Throw" (ability :name "Shoulder Throw" :summary "* The fighter lifts the opponent his is holding over a shoulder and hurls him as far as his strength will allow. * Requires a [Hold]. -1 Move +1 Damage - [Knockback] in any direction the fighter chooses. Criticals - [Knockback]") "Sleeper Hold" (ability :name "Sleeper Hold") :Suplex (ability :name "Suplex") :Tackle (ability :name "Tackle" :summary "* Dive at the opponent and use weight and momentum to take you both to the ground. +1 Initiative +1 Move +1 Accuracy. Succeed or fail, the fighter is [Prone]. Damage is [Knockdown]. Criticals are [Knockdown]" :titles "Flying Tackle") "Take Down" (ability :name "Take Down" :summary "* Fighter wraps his limbs around the opponent and causes both fighters to fall [Prone]. +1 Initiative -1 Move 0 Damage - Both fighters are [Prone] and puts a [Hold] on the other. 0 Criticals") "Thigh Press" (ability :name "Thigh Press")) :specialtymap (specialtymap :Strikes (specialty :name "Strikes") :Kicks (specialty :name "Kicks") :Grappling (specialty :name "Grappling" :summary "* Atomic Drop * Air Throw * Backbreaker * Backroll Throw * Bear Hug * Choke Hold * Fighting Hold * Grappling Defense * Ground Fighting * Headlock * Hip Throw * Hold * Hook Hold * Iron Claw * Joint Lock * Knee Bash * Neck Break * Nelson * Piledriver * Pin * Reversal * Shoulder Throw * Sleeper Hold * Suplex * Tackle * Take Down * Thigh Press") :Aikido (specialty :name "Aikido" :reference "* Water flows and takes any shape or course, yet it is always consistant with its own nature." :summary "* This essentially noncombative Japanese art concentrates on the development of the self, and physical, mental, and spiritual nonresistance. By moving with and blending with an opponent's attacks, they may be used against him. * Athletics - [Breakfall] * Evasion - [Deflect], [Disengage], [Drunken Monkey Roll], [Evasive Roll], [Iron Horse], [Weapon Block] * Grapples - [Air Throw], [Backroll Throw], [Disengage], [Grab], [Grapple Defense], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw], [Takedown] * Kicks - [Dragon Tail], [Kick Defense], [Leg Sweep], [Slide Kick] * Strikes - [Nerve Strike], [Strike Defense] GRAB: Ugoku Taosu(5) Atemi Torae(4) FOCUS: Push(2) Chi Kung Healing(3) Ghost Form(5) Stunning Shout(3) Zen No Mind(3)" :titles "Aikijutsu") :Boxing (specialty :name "Boxing" :summary "* Boxing is a fighting style that concentrates exclusively on punches. * Evasion - [Iron Skin] * Strikes - [Dash Attack], [Deflecting Punch], [Feint], [Haymaker], [Head Butt], [Hook], [Hyperfist], [Jab], [Ram], [Spinning Back Fist], [Uppercut] * Grapples - [Grab]") :Brawling (specialty :name "Brawling" :summary "* Brawling is no holds bars, no rules hand to hand fighting." :titles "Bruiser, Pit Fighter, Street Fighter, Thug") :Capoeira (specialty :name "Capoeira" :summary "* A Brazilian marital art developed by slaves who were brought to South America from Africa. The style was disguised as dance to avoid punishment when caught training. The style is still typically practiced to music. The style developed acrobatic maneuvers that could be used while chained. Capoeiristas will sometimes cross the field doing cartwheels. Knife fighting is also sometimes included in the style. * Athletics - [Backflip], [Breakfall], [Cartwheel], [Jump], [Kippup] * Evasion - [Drunken Monkey Roll] * Grapples - [Backroll Throw] * Kicks - [Backflip Kick], [Dragon Tail], [Handstand Kick], [Kick Defense], [Knee Strike], [Leg Sweep], [Spinning Thrust Kick] * Strikes - [Head Butt], [Strike Defense]") "Commando Training" (specialty :name "Commando Training" :summary "* Commando Training is a generic term for the fighting styles taught to armed forces members. It is a practical, sometimes brutal style that borrows from a variety of other styles and combines them into a style that can be taught to recruits quickly. * Evasion - [Disarm], [Kick Defense], [Strike Defense] * Grapples - [Choke Hold], [Grab], [Grapple Defense], [Knee Bash], [Joint Lock], [Pin], [Shoulder Throw], [Tackle] * Kicks - [Knee Strike], [Leg Sweep] * Strikes - [Elbow Strike], [Hook], [Knife Hand], [Spinning Back Fist], [Sword Hand]" :titles "Special Forces Training") :Hapkido (specialty :name "Hapkido" :summary "* This Korean Martial Art borrows many techniques successfully from other styles; it is a combination of the Aidido, Jujutsu, and Karate styles of Japan with the Korean systems of hwang Do and Taekyon (percursor to Tae Kwan Do). It is a style that teaches focus on passivity in opposing force, countering and attacking with circular motions, and the absolute penetration of an opponent's defenses. * A Hapkido practitioner receives a strong attack gently and counters a gentle attack powerfully and a subtle rythym of attacks and counters develops in the combat. This perpetual and fluid rythym, as well as constant mobility, are hallmarks of the style. * Athletics - [Breakfall], [Jump] * Evasion - [Disarm], [Evasive Roll] * Grapples - [Back Roll Throw], [Grappling Defense], [Joint Lock], [Choke Hold], [Pin], [Shoulder Throw], [Takedown] * Strikes - [Deflecting Punch], [Nerve Strike], [Phoenix Strike], [Spinning Back Fist], [Strike Defense] * Kicks - [Axe Kick], [Crescent Kick], [Double Kick], [Flying Kick], [Kick Defense], [Leg Sweep], [Roundhouse Kick], [Spinning Thrust Kick]") :Hsing-I (specialty :name "Hsing-I" :summary "* Hsing-I stylists attempt to use the body's internal energy, ch'i, to perform astounding feats. The first set of block-strike manuevers are based on the five elements (fire, water, earth, metal, and wood). The second is a group of animal based forms (including Dragon, Tiger, Horse, Turtle, Chicken, Snake, and Bear). The typical attack is to block a strike, grab the arm or leg, and strike back with the hand. * Evasion - [Deflect], [Weapon Block] * Brawling - [Haymaker] * Grapples - [Hip Throw], [Joint Lock] * Kicks - [Kick Defense], [Leg Sweep] * Strikes - [Grab Punch], [Nerve Strike], [Phoenix Strike], [Strike Defense]" :titles "Heart and Mind") :Hwarang-Do (specialty :name "Hwarang-Do" :summary "* This style concentrates on punches and a wid variety of weapon techniques. Further masters are said to possess mystical powers including telepathy, clairvoyance, and the ability to sense danger. * A Korean style that is said to have grown out of certain healing techniques, and modern masters are often healers as well. Legend has it that a Buddhist mong developed the style and taught it to the Hwarang who were similar the Korean equivalent of knights: fighters, diplomats, and military leaders who lived by a strict code of honor. * Athletics - [Breakfall], [High Jump], [Kippup], [Long Jump] * Evasion - [Deflect], [Disengage] * Grapples - [Choke Hold], [Grapple Defense], [Joint Lock], [Shoulder Throw] * Kicks - [Backflip Kick], [Kick Defense], [Roundhouse Kick], [Slide Kick] * Strikes - [Dash Attack], [Elbow Strike], [Nerve Strike], [Phoenix Strike], [Strike Defense] * Focus Powers - [Blind Fighting], [Spirit Healing], [Zen No Mind]") "Jeet Kune Do" (specialty :name "Jeet Kune Do" :reference "* Use whatever works." :summary "* A martial art created by the late Bruce Lee. After studying many differenct martial arts, Lee decided that their reliance on a limited group of maneuvers made them ineffective. Instead, he catalogued all of the ways that the human body could be used to attack or defend and then created a simplified and practical fighting style with no patterns or predefined conceptions. * Grapples - [Choke Hold], [Joint Lock], [Hip Throw] * Kicks - [Foot Stomp], [Kick Defense], [Lightning Leg], [Roundhouse Kick] * Strikes - [Elbow Strike], [Feint], [Nerve Strike], [One Two Punch], [Phoenix Strike], [Spinning Back Fist], [Strike Defense] * Focus Powers - [Zen No Mind]" :titles "The Way of the Intercepting Fist") :Jujutsu/Judo (specialty :name "Jujutsu/Judo" :summary "* A Japanese fighting style with roots 1200 years old. * Jujutusu focuses on grapples instead of strikes. The typical maneuver grabs an opponent, forces him to the ground, and finishes him off. * Athletics - [Breakfall], [Kippup] * Evasion - [Disarm], [Disengage], [Iron Horse] * Grapples - [Air Throw], [Backroll Throw], [Choke Hold], [Ground Fighting], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw], [Takedown] * Kicks - [Dragon Tail], [Leg Sweep] * Strikes - [Disarm], [Nerve Strike]") :Kabaddi (specialty :name "Kabaddi" :summary "* [Head Butt] KICK: Slide Kick(2) BLOCK: San He(3) Energy Reflection(3) GRAB: Head Butt Hold(2) Brain Cracker(1) Dislocate Limb(3) Disengage(1) Air Suplex(1) ATHLETICS: Cannon Drill(5) Flying Body Spear(2) FOCUS: Chi Kung Healing(3) Extendible Limbs(4) Fireball(3) Improved Fireball(5) Regeneration(1) Yoga Flame(3) Yoga Teleport(5) Cobra Charm(2) Ghost Form(5) Flying Fireball(3) Inferno Strike(5) Mind Reading(3) Telepathy(2) Chi Push(5) Levitation(3) Balance(3) Leech(3)") :Kalaripayattu (specialty :name "Kalaripayattu" :summary "* A boxing art from southern India that dates back to 500 AD. Fighters are trained in 4 syltes: unarmed, stick fighting, other weapons, and the 108 vital points of the human body. Masters are also skiled healers. * Athletics - [Breakfall], [Jump] * Grapples - [Joint Lock], [Throw] * Kicks - [Flying Kick], [Roundhouse Kick] * Strikes - [Elbow Strike], [Nerve Strike], [Phoenix Strike], [Strike Defense], [Sword Hand] * Focus Powers - [Spirit Healing]" :titles "Battlefield Practices, Gurus") :Karate (specialty :name "Karate" :summary "* Karate focuses on direct strikes and kicks with few grabs or throws. * An extremely popular martial art originating in Okinawa, Japan in 400 AD. It became well developed only after the Japanese invaders forbade the Okinawans to carry weapons. * Athletics - [Jump], [Kippup] * Close Combat - [Hook] * Evasion - [Deflect], [Disarm], [Iron Horse], [Iron Skin] * Grapples - [Backroll Throw], [Hip Throw], [Shoulder Throw] * Kicks - [Axe Kick], [Back Kick], [Cresent Kick], [Dobule Kick], [Dragon Tail], [Flying Kick], [Foot Stomp], [Kick Defense], [Leg Sweep], [Reverse Front Kick], [Roundhouse Kick], [Scissor Kick] * Strikes - [Crouching Strike], [Dash Attack], [Dragon Fist], [Elbow Strike], [Knife Hand], [Nerve Strike], [Palm Strike], [Spinning Back Fist], [Strike Defense], [Sword Hand], [Tiger Claw]" :titles "Empty Hands") :Kickboxing (specialty :name "Kickboxing" :summary "* [Backroll Throw] * [Dashing Punch] * [Haymaker] * [Hyperfist] * [Knee Bash] * [Slide Kick] * [Spinning Back Fist] PUNCH: Feint(1) Hook(1) Double Hit Punch(1) Heart Punch(4) Lunge Punch(2) Fist Sweep(2) Dashing Punch(5) Turn Punch(5) Rekka Ken(5) Spinning Back Fist(1) Spinning Knuckle(3) KICK: Double Dread Kick(3) Back Roundhouse(1) Ax Kick(3) Reverse Frontal Kick(1) Flying Knee Thrust(1) Stepping Front Kick(3) Slide Kick(2) Double Hit Kick(1) Wounded Knee(2) BLOCK: Deflecting Punch(1) GRAB: Knee Basher(2) Back Roll Throw(1) Brain Cracker(1) ---- Savate ---- PUNCH: Spinning Back Fist(1) Palm Heel Punch(1) Ear Pop(2) Spinning Knuckle(3) KICK: Ax Kick(2) Double Hit Kick(1) Flash Kick(4) Double Dread Kick(3) Foot Sweep(1) Spinning Foot Sweep(1) Lightning Leg(5) Slide Kick(2) Stepping Front Kick(4) Flying Knee Thrust(1) Double Hit Knee(1) BLOCK: GRAB: Knee Basher(2) Bear Hug(1) Neck Choke(2)" :titles "Savate") :Kobujutsu (specialty :name "Kobujutsu" :summary "* The martial art specializing in Okinawan weapons. * Melee - [Bash], [Dazing Blow], [Disarm], [Fleche], [Jab], [Parry], [Riposte], [Slash], [Sweep], [Thrust] * Melee Weapons - [Bo Staff], [Eiku], [Jo Staff], [Kama], [Nunchaku], [Sai], [Tonfa]") :Krabi-Krabong (specialty :name "Krabi-Krabong") "Kung Fu, Crane Style" (specialty :name "Kung Fu, Crane Style" :summary "* The crane was known for its grace and beauty. Known to stand on one leg for long periods of time, it is no wonder that the crane stylists had excellent balance and were known for their awesome kicking ability and long range techniques. * Crane is very upright, attacking with carefully aimed strikes at long range and defending with redirection and retreat rather than resistance. Working from outside an opponent's effective range, Crane demands extreme technical proficiency and smooth footwork, as well as careful timing and judgment. Crane is high, circular, soft, and distant, working chiefly with progressive indirect attacks. * Athletics - [Breakfall], [High Jump], [Jump] * Evasion - [Avoid], [Deflect], [Evasive Roll], [Sidestep] * Kicks - [Axe Kick], [Flying Kick], [Kick Off], [Leg Sweep], [Vault Kick] * Strikes - [Dash Attack], [Grab Punch], [Nerve Strike], [Spinning Back Fist]") "Kung Fu, Dragon Style" (specialty :name "Kung Fu, Dragon Style" :summary "* Shen Lung (Spiritual or Invisible Dragon): While the Dragon is not a formally taught style in Shen Lung it instead represents what emerges when a practitioner can draw freely from all five animals as the situation demands. One who can use the power of Tiger, the mechanics of Mantis, the speed of Snake, the movements of Crane, and the cunning of Monkey. * As the dragon floats through the sky he twists and coils, flipping his tail as he turns. The dragon stylist uses turns and circular motions to throw and strike his opponents. * 'Ride the wind', a phrase which means follow rather than lead. Provide no opening without first letting your opponent open. Unlike Crane, which also relies heavily upon evasion as a tactic, the Dragon evades primarily by rotation of upper or lower torso with little or no stance movements, while the Crane stylist hops frequently to reposition the entire body. Both styles employ pinpoint strikes to vulnerable meridian targets, but dragon also heavily uses tiger-like punches and clawing techniques, snake-like stance shifts, and leopard-like hit and run strikes to weaken a physically superior adversary. Dragon kung fu also regularly employs low sweeping techniques * Kicks - [Dragon Tail], [Flying Kick] * Strikes - [Dragon Fist], [Nerve Strike]") "Kung Fu, Leopard Style" (specialty :name "Kung Fu, Leopard Style" :summary "* The leopard was known for its tremendous speed and cunningness. Unlike the tiger that doesn't mind frontal attacks, the leopard stylist prefers to attack only when the odds are in his favor. The only time he shows he is hurt is when he is not. He acts like he is running away in order to come back with an attack on his own ground. * Blocking is wasted in Leopard - the style can be summed up with 'Why block when you can hit?' It does not rely on rooted stances, and would only assume a stance while in attack in order to launch at the opponent. This hit and run technique of the leopard, something especially effective against larger opponents, is unique to the animal. * An interesting technique of the leopard is the ability to simultaneously block and strike. The sheer speed of the leopard is a defining characteristic of the style * Evasion - [Dodge], [Dodge Roll] * Strikes - [Deflecting Punch], [Dash Attack]") "Kung Fu, Mantis Style" (specialty :name "Kung Fu, Mantis Style" :summary "* Mantis operates in sequences and combinations baffling opponents with multiple simultaneous attacks and blocks, all executed at high speed. Mantis is a quick, high, linear, hard style that attacks by rapidly executed combinations. * [Combo] * Strikes - [Deflecting Punch], [Hyperfist], [Jab], [Knife Hand], [One Two Punch]") "Kung Fu, Monkey Style" (specialty :name "Kung Fu, Monkey Style" :summary "* Monkey style prefers to go to the ground, integrating throws, locks, grappling and ground-fighting. Monkey is very low, both hard and soft, close-range and favors full body contact. * Evasion - [Drunken Monkey Roll] * Grapples - [Grab], [Joint Lock], [Hold], [Pin], [Takedown] * Strikes - [Monkey Punch]") "Kung Fu, Snake Style" (specialty :name "Kung Fu, Snake Style" :summary "* The snake is known for its speed once an opponent is in striking range. The snake raises its head and waits patiently until the unsuspecting opponent gets too close. The snake stylist, too, concentrates on waiting until the time is right and with his fingertips, strikes to a vital spot in a blink of an eye. Knowing how to use one's internal energy or chi is a major part of the snake system. * Snake is a soft style using an opponent's energy against them rather than resisting it. Snakes absorb, control and redirect rather than block an attack. Snake stylists are known for circular and whip-like motions flowing around opponents, climbing over their defenses and striking repeatedly in rapid succession. Snake is high, circular, soft and extremely fast, favoring progressive direct attacks that overwhelm a defense. * Snake style is based on whipping power which travels up the spine to the fingers. The ability to sinuously move, essentially by compressing one's stomach/abdominal muscles, is very important. * Strikes - [Back Fist], [Knife Hand], [Nerve Strike] * Focus Powers - [Death Touch]") "Kung Fu, Tiger Style" (specialty :name "Kung Fu, Tiger Style" :summary "* Known for its power and strength, the tiger stylists were known for their ripping and tearing techniques. Hands held like tiger claws, these fighters would strike and claw with tremendous speed and power. * Tiger emphasizes close-range strikes, throws, and a willingness to stay in the danger zone long enough to set up a single fight-ending blow. Tiger commits fully to every motion, and maximizes power at the expense of mobility. Tiger is low, hard-style, and works with single direct attacks. * Strikes - [Crouching Strike], [Dash Attack], [Dragon Fist], [Elbow Strike], [Eye Rake], [Haymaker], [Strike Defense], [Sword Hand], [Tiger Claw]") "Kung Fu, Wing Chun" (specialty :name "Kung Fu, Wing Chun" :summary "* Wing Chung, literally 'singing spring', is a Southern Chinese kung fu style and a form of self-defense originating in Qing China, which requires quick arm movements and strong legs. Softness (via relaxation) and performance of techniques in a relaxed manner is fundamental to Wing Chun.") "Muay Thai" (specialty :name "Muay Thai" :reference "* Apachai: The use of knees and elbows is very important in Muay Thai. * Akisame: Which, in fact, is rather rare as most contemporary martial arts have banned the use of knees and elbows in tournament fighting. * Kenichi: Really? How come? * Apachai: If you use them wrong, you can kill your opponent! * Akisame: That's right. However, in Muay Thai, they specifically focus on these moves. * Kenichi: Yeahhh, and why is that? * Apachai: Because if you use them right, you can kill your opponent! - Kenichi: World's Mightiest Disciple" :summary "* A fast, brutal martial art from Thailand. * The style uses close strikes with the knees, elbows, fists, and feet. There are no grabs or throws. Fighters often jump up to add more force to their blows. Fighters are also trained to take damage as much as avoid it. * Evasion - [Iron Skin] * Grapples - [Knee Bash] * Kicks - [Axe Kick], [Double Kick], [Foot Stomp], [Kick Defense], [Knee Drop], [Knee Strike], [Leg Sweep], [Lightning Leg], [Reverse Front Kick], [Roundhouse Kick] * Strikes - [Dash Attack], [Dragon Punch], [Elbow Drop], [Elbow Strike], [Feint], [One Two Punch], [Ram], [Spinning Back Fist], [Strike Defense], [Sword Hand], [Uppercut]" :titles "Thai Kickboxing") :Ninjutsu (specialty :name "Ninjutsu" :summary "* Ninjutsu is the art of the Japanese Ninja. Ninjutsu saw greatest use from 1200-1600 AD when warlords employed ninja clans to spy on and assassinate their enemies. * The primary weapons of the ninja are the ninja-to sword and shuriken throwing stars. They were also adept in many types of concealed weapons. They are also known for unusual gadgets to assist them in climbing, crossing water, picking locks, etc. They are assassins, so they are not interested in honorable combat and will use traps or poison instead of combat if possible. * Kunoichi - Female ninja operated as infiltrators, spies and assassins. They spent time in enemy houses, reported secrets and undermined rival houses by any means necessary. Kunoichi could use their gender to their advantage because women were underestimated as warriors. This made it easier for them to get closer to their targets by posing as maids, geisha, servants and priestesses. In some cases, they were taken on as concubines and mistresses, giving them unparalleled access to all their marks. * Athletics - [Backflip], [Breakfall], [Jump], [Wall Spring] * Evasion - [Deflect], [Disarm], [Dirty Fighting], [Disengate], [Distraction], [Dive for Cover], [Dodge], [Dodge Roll], [Weapon Block] * Grapples - [Air Throw], [Backroll Throw], [Choke Hold], [Grapple Defense], [Groundfighting], [Joint Lock], [Suplex], [Takedown], [Tackle] * Kicks - [Backflip Kick], [Handstand Kick], [Leg Sweep], [Roundhouse Kick], [Slide Kick] * Strikes - [Ear Pop], [Grab Punch], [Nerve Strike], [Phoenix Strike] * Melee - [Dazing Blow], [Jab], [Parry], [Riposte], [Slash], [Thrust]" :titles "Shinobi, Kunoichi") :Pakua (specialty :name "Pakua" :summary "* A Chinese 'internal' fighting style derived from I Ching, the Book of Changes which states that the universe is in a state of constant change. Therefore, in Pakua, any change, the placement of the foot, the turning of a hand is important. Pakua is highly circular and emphasizes footwork and constant motion. Pakua masters are said to use palm strikes instead of fist strikes to better control the energy they release. * Evasion - [Deflect], [Sidestep], [Weapon Block] * Grapples - [Grapple Defense], [Joint Lock] * Kicks - [Kick Defense], [Leg Sweep] * Strikes - [Grab Punch], [Palm Strike], [Strike Defense] * Focus Powers - [Zen No Mind]" :titles "Eight Diagrams") :Pentjak-Silat (specialty :name "Pentjak-Silat" :summary "* A broad set of Indonsian fighting styles. Fighters are trained to keep their footing on unstable ground because the condition is so common in Indonesia. Silat teaches many weapons especially the kris, a wavy bladed dagger. The mysticism and legends surrounding this weapon equal or exceed the katana. * Athletics - [Breakfall], [Disarm], [Disengage], [Dodge Roll], [Jump], [Kippup] * Evasion - [Deflect], [Hip Throw], [Iron Horse], [Iron Skin] * Grapples - [Choke Hold], [Grab Punch], [Grapple Defense], [Joint Lock], [Pin], [Takedown] * Kicks - [Double Kick], [Dragon Kick], [Flying Kick], [Leg Sweep], [Lightning Leg], [Roundhouse Kick] * Strikes - [Deflecting Punch], [Hyperfist], [Jab], [Nerve Strike], [Phoenix Strike], [Sword Hand] * Melee - [Fleche], [Parry], [Riposte], [Slash], [Thrust]" :titles "Guru, Pandekar, Silat") :Savate (specialty :name "Savate" :summary "* French Kickboxing developed in Marseilles in the 1600s from kick brawling French sailors. The style is characterized by a bouncing gait and a unique kick style. When delivering kicks, the fighter leans away from the direction of the kick and stretches one arm back like a fencer to maintain balance. This allows the torso to pivot away from any counterattack. Kicks are landed with the toes or shins instead of the ball or heel and are designed to quickly slip by blocking arms. * Evasion - [Disarm] * Grapples - [Back Roll Throw], [Bear Hug], [Choke Hold], [Knee Bash] * Kicks - [Axe Kick], [Double Kick], [Kick Defense], [Kick Off], [Knee Strike], [Leg Sweep], [Lightning Leg], [Roundhouse Kick], [Slide Kick], [Spinning Thrust Kick] * Strikes - [Dash Punch], [Deflecting Punch], [Ear Pop], [Feint], [Hook], [One Two Punch], [Palm Strike], [Spinning Back Fist], [Strike Defense]" :titles "Savateur, Savateuse") :Sumo (specialty :name "Sumo" :summary "* Evasion - [Iron Horse], [Iron Skin] * Grapples - [Air Throw], [Bear Hug], [Grapple Defense], [Knee Bash], [Hip Throw], [Shoulder Throw] * Kicks - [Double Kick], [Dragon Tail], [Leg Sweep] * Strikes - [Ear Pop], [Head Butt], [Hyperfist], [One Two Punch], [Palm Strike], [Sword Hand]" :titles "Cireum") "Tae Kwon Do" (specialty :name "Tae Kwon Do" :summary "* A Korean martial art developed in the 1600s AD. It emphasizes kicks over punches. * Athletics - [Breakfall], [Jump], [Wall Spring] * Evasion - [Deflect], [Iron Horse] * Kicks - [Axe Kick], [Double Kick], [Flying Kick], [Hurricane Kick], [Kick Off], [Knee Strike], [Lightning Leg], [Reverse Front Kick], [Roundhouse Kick], [Scissor Kick] * Strikes - [Deflecting Punch], [Haymaker], [Hyperfist], [Spinning Back Fist], [Sword Hand]" :titles "The Way of Kicking and Punching") "Tai Ch'i Ch'uan" (specialty :name "Tai Ch'i Ch'uan" :summary "* The ultimate internal Chinese martial art. The style is based on the Thirteen Postures (8 actions, 5 directions). It emphasizes blocking a strike and grabbing or striking back. * Athletics - [Balance], [Breakfall] * Evasion - [Deflect], [Disarm], [Disengage], [Iron Horse], [Iron Skin] * Grapples - [Air Throw], [Back Roll Throw], [Grab Punch], [Grappling Defense], [Hip Throw], [Joint Lock], [Pin], [Shoulder Throw] * Kicks - [Dragon Tail], [Kick Defense], [Leg Sweep], [Slide Kick] * Strikes - [Deflecting Punch], [Grab Punch], [Nerve Strike], [Palm Strike], [Phoenix Strike], [Strike Defense] * Focus - [Empty Force], [Spirit Healing], [Zen No Mind]" :titles "Supreme Ultimate Fist, Yin-Yang Boxing") :Wrestling (specialty :name "Wrestling" :summary "* Wrestling is one of the earliest martial arts. Virtually every ancient society had some form of wrestling and many have survived largely unchanged. * Atheltics - [Breakfall], [Jump] * Evasion - [Disengage] * Grapples - [Air Throw], [Backbreaker], [Bear Hug], [Choke Hold], [Grapple Defense], [Hip Throw], [Iron Claw], [Joint Lock], [Knee Bash], [Nelson], [Piledriver], [Pin], [Reversal], [Sleeper Hold] [Shoulder Throw], [Suplex], [Tackle], [Take Down], [Thigh Press] * Kicks - [Knee Strike] * Strikes - [Ear Pop], [Haymaker], [Ram]" :titles "Dumog/Greco Roman/Koshti/Naban/Sanbo/Yaghliguresh") "Wu Shu" (specialty :name "Wu Shu" :summary "* [Axe Kick] * [Backflip Kick] * [Backroll Throw] * [Drunken Monkey Roll] * [Flying Kick] * [Handstand Kick] * [Hurricane Kick] * [Kick Off] * [Kippup] * [Leg Sweep] * [Lightning Leg] * [Reverse Front Kick] * [Rolling Attack] * [Scissor Kick] * [Slide Kick] * [Spinning Back Fist] * [Spinning Thrust Kick] * [Wall Spring] PUNCH: Rekka Ken(5) Spinning Knuckle(3) KICK: Back Flip Kick(2) Forward Back Flip Kick(1) Ax Kick(4) Cartwheel Kick(2) Reverse Frontal Kick(2) Scissor Kick(4) Flying Thrust Kick(4) Forward Flip Knee(2) Handstand Kick(1) Hurricane Kick(1) Air Hurricane Kick(1) Lightning Leg(3) Stepping Front Kick(4) Whirlwind Kick(4) Double Hit Kick(1) Great Wall Of China(5) Descending Wheel Kick(4) BLOCK: Maka Wara(4) San He(3) GRAB: Air Throw(2) Back Roll Throw(1) ATHLETICS: Cannon Drill(5) Displacement(4) Backflip(2) Flying Heel Stomp(3) Rolling Attack(3) Vertical Rolling Attack(3) Wall Spring(1) Evasive Tumble(2) FOCUS: Balance(4) Chi Kung Healing(4) Fireball(4) Improved Fireball(5) Flying Fireball(3)") :Binding (specialty :name "Binding" :summary "* Includes Garotte, Pianowire, Monofilament, Pillowcase, Towel, Rolled up Shirt, etc." :titles "Strangler") :Knives (specialty :name "Knives" :reference "* Do you want to know why I use a knife? Guns are too quick. You can't savor all the little...emotions. You see, in their last moments, people show you who they really are. So, in a way I know your friends better than you ever did. Would you like to know which of them were cowards? - Joker, The Dark Knight" :summary "* Includes Pocket Knives, Switchblades, Straight Razors, Small Kitchen Knives, etc." :titles "Butcher, Knife Fighter, Murderer"))) "Combat Focus" (skill :name "Combat Focus" :titles "Chi Powers" :stat "Spirit" :abilitymap (abilitymap "Blind Fighting" (ability :name "Blind Fighting") :Combo (ability :name "Combo" :summary "* Any combat abilities may be strung together as a Combo. Every ability after the first gets +1 to initiative. If any ability misses or fails, then the combo ends and the next ability is at -1 initiative. Each combo must be chosen when this ability is gained and must be taken again for each separate combo.") "Death Touch" (ability :name "Death Touch" :reference "Five Point Palm Exploding Heart Technique - Kill Bill" :summary "* The fighter strikes vulnerable pressure points, disrupting the opponent's chi flow causing intense pain or death. The effect has no outward effect, but the victim will know something is wrong. Eventually, the victim recovers or dies suddenly from the stress. -1 Action -2 Initiative -2 Accuracy +0 Damage - [Stun] only +3 Criticals - [Poison] 0 Move -1 Defense" :titles "Dim Mak") "Empty Force" (ability :name "Empty Force" :summary "* The fighter projects a strike across empty space. The fighter may strike at any range, but if he does not score at least 1 Criticals for each space of Range, the ability fails. -2 Initiative -2 Move -1 Damage Critical - [Range]" :titles "Distant Death, Kongjin") "Feather Walk" (ability :name "Feather Walk" :summary "* Reduces body weight while active. This increases the effects of [Retreat] and leaping while decreasing falling speed and damage. * If [Skill] greater than or equal to [Body], then unit may walk on any substance that would suspend a feather." :titles "Feather Fall, Walk on Water") "Feign Death" (ability :name "Feign Death") "Hold Breath" (ability :name "Hold Breath") "Spirit Healing" (ability :name "Spirit Healing" :titles "Chi Kung Healing") "Team Combo" (ability :name "Team Combo" :reference "Fastball Special - Colossus and Wolverine, X-men" :summary "* Like a [Combo], the Team Combo chains attacks together. The Team Combo however is performed by different members of a team with the identical Team Combo. Any team member may perform each step of the combo with each subsequent attack allowed to reroll 1 die. The combo ends if any attack misses, any member attacks twice in a row, or if a turn passes with no attack attempt. Any combat abilities may be strung together as a Team Combo (even abilities that only others in the team possess). Each combo must be chosen when this ability is gained and must be taken again for each separate combo.") "Walk on Fire" (ability :name "Walk on Fire") "Zen No Mind" (ability :name "Zen No Mind" :reference "The mind must always be in the state of 'flowing,' for when it stops anywhere that means the flow is interrupted...In the case of the swordsman, it means death. When the swordsman stands against his opponent, he is not to think of the opponent, nor of himself, nor of his enemy's sword movements. ... When he strikes, it is not the man but the sword in the hand of the man's subconscious that strikes. - Zen Master Takuan Soho" :summary "* A mind not fixed or occupied by thought or emotion and thus open to everything. * Mushin is achieved when a fighter feels no anger, fear or ego during combat, so the fighter is totally free to act and react towards an opponent without hesitation. At this point, a person relies not on what they think should be the next move, but what is felt intuitively. * A martial artist would likely have to train for many years to be capable of mushin. This allows time for combinations of movements and exchanges of techniques to be practiced repetitively many thousands of times, until they can be performed spontaneously, without conscious thought." :titles "Mushin"))) :Defense (skill :name "Defense" :titles "Armorer, Defender, Shield Bearer, Shield Warden, Warder" :stat "Body" :abilitymap (abilitymap :Armorsmithing (ability :name "Armorsmithing" :summary "* The ability to repair, improve, or even create armor.") :Counterattack (ability :name "Counterattack") "High Block" (ability :name "High Block" :summary "-1 Speed +4 Defense vs. [High Attack] +1 Defense vs. other attacks") "Low Block" (ability :name "Low Block" :summary "-1 Speed +4 Defense vs. [Low Attack] +1 Defense vs. other attacks") "Powered Armor" (ability :name "Powered Armor") "Shield Bash" (ability :name "Shield Bash") "Shield Block" (ability :name "Shield Block" :summary "* [Defend] [Damage]: Add Shield [Armor] to your [Armor].") "Shield Charge" (ability :name "Shield Charge") "Shield Guard" (ability :name "Shield Guard" :summary "* [Reaction] [Damage]: Before adjacent unit takes damage, discard a [Club] to add your Shield [Armor].") "Shield Sacrifice" (ability :name "Shield Sacrifice" :summary "* [Club] [Defend] [Damage]: The shield becomes the target of any [Overwhelm] damage.")) :specialtymap (specialtymap "Medium Armor" (specialty :name "Medium Armor") "Heavy Armor" (specialty :name "Heavy Armor") :Shields (specialty :name "Shields"))) :Evasion (skill :name "Evasion" :summary "* Evasion is a special defense typically used by those that choose to wear light or no Armor." :stat "Defense" :abilitymap (abilitymap "Blade Locking" (ability :name "Blade Locking" :summary "* [Requires]: [Parry], May only be used against swords, knives or polearms. * [Reaction]: -2 * [Success]: Opponent gains a [Broken Defense Token] for each [Hit]") "Body Climb" (ability :name "Body Climb" :summary "* [Requires]: [Melee] or [Close Combat] vs an enemy of larger scale. * [Damage]: If the hit location is [Q], [K], or [A], Climb the target's body and do +1 Damage.") :Deflect (ability :name "Deflect" :summary "* Deflect, catch, or even return projectiles hurled at the fighter. * This ability provides a second Defense roll against a projectile attack before the regular Defense roll. * [Reaction] +2 Initiative +1 Accuracy 0 Damage - Any successes become -Damage to the projectile. If the projectile has 0 Damage remaining, it is caught. Criticals - Any Criticals become -2 Damage to the proejctile. If the projectile has 0 Damage remaining and there are still Criticals, the projectile may be immediately thrown at +[Criticals] Accuracy.") "Dirty Fighting" (ability :name "Dirty Fighting" :titles "Bite, Eye Gouge, Ear Pop, Hair Pulling, Low Blow") :Disarm (ability :name "Disarm" :reference "The Red Leaves Cut means knocking down the enemy's long sword. The spirit should be getting control of his sword. When the enemy is in a long sword attitude in front of you and intent on cutting, hitting and parrying, you strongly hit the enemy's sword with the Fire and Stones Cut... If you then beat down the point of his sword with a sticky feeling, he will necessarily drop the sword. If you practise this cut it becomes easy to make the enemy drop his sword. - Miyamoto Mushashi, The Book of Five Rings" :summary "* Strike to knock a weapon or item from opponent's grasp. * This special ability does no damage but allows the user to force a target to drop an item (usually a weapon). -1 Initiative -1 Accuracy 0 Damage. Opponent drops the chosen item. Each critical moves the item 1 space away (your choice)." :titles "Red Leaves Cut") :Disengage (ability :name "Disengage" :summary "* The fighter removes a [Hold] token. * [Reaction] +1 Initiative 0 Damage -1 Move") "Dive for Cover" (ability :name "Dive for Cover") :Dodge (ability :name "Dodge" :summary "+1 Initiative -1 Action +1 Defense") "Dodge Roll" (ability :name "Dodge Roll") "Drunken Monkey Roll" (ability :name "Drunken Monkey Roll" :summary "* [Crouching] -1 Action +2 Initiative +2 Move +1 Defense") "Iron Horse" (ability :name "Iron Horse" :reference "The Blob, X-men" :summary "* The ability to prevent being moved. * [Passive] +1 Initiative Defense - When rolling Defense, [Hits] or [Criticals] can be exchanged for [Knockback] or [Knockdown] resistance. 0 Move" :titles "San He") "Iron Skin" (ability :name "Iron Skin" :summary "* Hardening of the skin to prevent cuts and punctures." :titles "Maka Wara, Stone Skin") :Sidestep (ability :name "Sidestep")) :specialtymap (specialtymap "Light Armor" (specialty :name "Light Armor") :Bucklers (specialty :name "Bucklers"))) :Melee (skill :name "Melee" :reference "* Mizu: I must become the greatest swordsman alive. Swordfather: Is that all? - Mizu and Swordfather, Blue Eye Samurai" :summary "* [Targetting]: Melee combat may only be used to attack the 3 space directly ahead of you or the space you are on. * See Arms and Armor for weapons" :titles "Battlemaster, Champion, Congueror, Fencer, Fighter, Master of Arms, Warrior" :stat "Body" :abilitymap (abilitymap "Abdomen Timing of Two" (ability :name "Abdomen Timing of Two" :reference "Abdomen Timing of Two refers to feinting an attack, then striking an enemy as they are retracting from an attack, hitting them in the abdomen with the correct timing of either two moves or two seconds. Although the technique seems relatively simple, Musashi lists this as one of the hardest techniques to time correctly.") "Anvil Strike" (ability :name "Anvil Strike" :summary "* [+1 Damage] when target is adjacent to solid terrain.") :Backlash (ability :name "Backlash") :Bash (ability :name "Bash" :summary "* A quick. powerful smashing maneuver usually performed 'sidearm' with an ax, club, or staff. * Requires: [Blunt Weapon] +1 Initiative +1 Damage Criticals - [Knockback]") "Blade Barrier" (ability :name "Blade Barrier" :summary "* Creates a 3 space wide [Wall] directly in front of the unit by rapidly swinging the blade in a flashy display. Anything crossing this wall is subject to an [Opportunity Attack]." :titles "Wall of Swords") "Blind Fighting" (ability :name "Blind Fighting") "Combat Sense" (ability :name "Combat Sense") "Continuous Cut" (ability :name "Continuous Cut" :reference "The Flowing Water Cut is used when you are struggling blade to blade with the enemy. When he breaks and quickly withdraws trying to spring with his sword, expand your body and spirit and cut him as slowly as possible with your long sword, following your body like stagnant water. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Reaction]: [+1 Defense]. If you are not hit, you may immediately attack as a free action at [-1 Attack]." :titles "Flowing Water Cut") "Dash Attack" (ability :name "Dash Attack" :summary "* [Requires]: May only move in a straight line this turn. * [Action]: [-1 Attack], May attack any number of adjacent opponents along path each at a cumulative -1.") "Dazing Blow" (ability :name "Dazing Blow" :summary "-2 Damage Damage - [Stun] Criticals - [Stun]" :titles "Pommel Strike") "Dual Wield" (ability :name "Dual Wield" :reference "* Not used on the battlefield where a shield would be more practical. * Used primarily for parrying during one on one duels. * Two longsword duelling was done by very skilled fighters in Italian duelling. * Dual katana Japanese styles also exist." :summary "* Using a Dagger, Hand Axe or Hammer in the off hand.") :Feint (ability :name "Feint" :summary "* Feints are maneuvers designed to distract or mislead, done by giving the impression that a certain maneuver will take place, while in fact another, or even none, will." :titles "Kizeme") "Fend Off" (ability :name "Fend Off" :summary "* [Requires]: Weapon with [Reach] * [Reaction]: If you hit with [Fend Off], the opponent may not move any closer to you this turn.") "Fire and Stones Cut" (ability :name "Fire and Stones Cut" :reference "The Fires and Stones Cut means that when the enemy's sword and your sword clash together you cut as strongly as possible without raising the sword even a little. This means cutting quickly with the hands, body and legs - all three cutting strongly. If you train well enough you will be able to strike strongly. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Reaction]: [+1 Defense] * [Action]: [+1 Attack], if you used this ability to [React] last turn.") :Fleche (ability :name "Fleche" :summary "* A [Lunge] forward where the attacker continues to move forward past the defender to avoid a [Riposte] or Counter Attack. -1 Initiative +1 Move - May only move straight forward. +1 Damage") "Follow Through" (ability :name "Follow Through" :summary "* [Action]: If you hit with this ability, you may immediately turn to the left or right and attack a target in the next adjacent space. This may be repeated any number of times at [-1 Attack] per target after the first though each additional target must be in the same direction.") :Hamstring (ability :name "Hamstring" :summary "* Attack the legs to slow the opponent. * [Action] -1 Accuracy Criticals - [Cripple]") :Impale (ability :name "Impale" :summary "* [Requires]: Spear * [Action] -1 Accuracy Criticals - [Piercing]") :Lunge (ability :name "Lunge") "Offhanded Fighting" (ability :name "Offhanded Fighting" :summary "* [Action]: Normal Attack take a -2 penalty if performed with the non primary hand. This ability negates that penalty when using this skill in the off hand.") :Parry (ability :name "Parry" :summary "* The fighter uses his weapon to block an opponent's attack. * [Reaction] +1 Initiative +2 Defense") "Piercing Strike" (ability :name "Piercing Strike" :summary "* [Action]: Trades damage to increase armor penetration.") "Rapid Strike" (ability :name "Rapid Strike" :reference "In One Timing means, when you have closed with the enemy, to hit him as quickly and directly as possible, without moving your body or settling your spirit, while you see that he is still undecided. The timing of hitting before the enemy decides to withdraw, break or hit, to be able to hit in the timing of an instant. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Requires]: Wear loose clothing or less. (Armor Penalty = 0). * [Action]: Speed +1, Attack -1" :titles "In One Timing, Lightning Blow") :Riposte (ability :name "Riposte" :reference "When your swords clash together, in one motion when your sword springs away from theirs, use a continuous motion to slash their head, body and legs." :summary "* Speedy attack that can only be performed after a [Parry] or a [Block]. * [Requires]: Previous Action was [Parry] or [Block] +2 Initiative +2 Attack" :titles "Counter Strike") "Set Against Charge" (ability :name "Set Against Charge") :Slash (ability :name "Slash" :summary "* A powerful blow with a cutting weapon. +1 Initative -1 Move +1 Accuracy Criticals - [Bleed]") "Stunning Blow" (ability :name "Stunning Blow" :summary "* [Attack]: Trades lethal damage for stunning damage.") :Sweep (ability :name "Sweep" :summary "* Attack the legs to trip the opponent. +1 Initative -1 Move -1 Damage Criticals - [Knockdown]" :titles "Trip") "There are Many Enemies" (ability :name "There are Many Enemies" :reference "When you are fighting one against many, draw both sword and companion sword and assume a wide-stretched left and right attitude. The spirit is to chase the enemies around from side to side, even though they come from all four directions. Observe their attacking order, and go to meet first those who attack first. Sweep your eyes around broadly, carefully examining the attacking order, and cut left and right alternately with your swords. Waiting is bad. Always quickly re-assume your attitudes to both sides, cut the enemies down as they advance, crushing them in the direction from which they attack. Whatever you do, you must drive the enemy together, as if tying a line of fishes, and when they are seen to be piled up, cut them down strongly without giving them room to move. - Miyamoto Mushashi, The Book of Five Rings" :summary "* [Requires]: [Duel Wield] * [Defense]: If [Surrounded], ignore opponents in front arc when determining [Surrounded] defense penalty.") :Thrust (ability :name "Thrust" :summary "+1 Initiative +1 Move Critcals - [Piercing]") "To Apply Stickiness" (ability :name "To Apply Stickiness" :reference "When the enemy attacks and you also attack with the long sword, you should go in with a sticky feeling and fix your long sword against the enemy's as you receive his cut. The spirit of stickiness is not hitting very strongly, but hitting so that the long swords do not separate easily. It is best to approach as calmly as possible when hitting the enemy's long sword with stickiness. The difference between 'Stickiness' and 'Entanglement' is that stickiness is firm and entanglement is weak. - Miyamoto Mushashi, The Book of Five Rings") "Weapon Block" (ability :name "Weapon Block" :summary "* Deflect, catch, or even turn strike back with a weapon used against the fighter. * This ability provides a second Defense roll against a weapon attack before the regular Defense roll. * [Reaction] +2 Initiative +1 Accuracy 0 Damage - Any successes become -Damage to the weapon. If the weapon has 0 Damage remaining, it is caught. Criticals - Any Criticals become -2 Damage to the weapon. If the weapon has 0 Damage remaining and there are still Criticals, the weapon may be immediately used at +[Criticals] Accuracy. Note: The weapon remains in the hands of the attacker.") "Whirlwind Attack" (ability :name "Whirlwind Attack" :summary "* Allows multiple attacks to different targets by trading accuracy for extra attacks.")) :specialtymap (specialtymap :Bladedancer (specialty :name "Bladedancer" :summary "* A combat technique focusing on elegant moves that efficiently combine attack and defense. Heavy armor may not be used with this technique.") :Fensing (specialty :name "Fensing" :summary "* A combat technique focusing on long quick blades like rapiers and epees." :titles "Fenser") "Sword Saint" (specialty :name "Sword Saint" :summary "* A combat technique focusing almost exclusively on mastery of the sword." :titles "Kensai, Kensei") :Axes (specialty :name "Axes" :reference "* Run to the bedroom, In the suitcase on the left You'll find my favorite axe. Don't look so frightened This is just a passing phase, One of my bad days. - Pink Floyd, One of My Turns" :titles "Axeman") "Flexible Weaponry" (specialty :name "Flexible Weaponry" :summary "* Backlash, Disarm, Trip" :titles "Hangman, Strangler") :Hammers (specialty :name "Hammers" :summary "* War hammers were developed as a consequence of the ever more prevalent metal armors of the medieval battlefields during the 14th and 15th centuries. Swords were of little use against these armors. The war hammer could deal blows of tremendous force to the target, especially when mounted on a pole, and by impact alone do damage without penetrating the armor. The spike end could be used for grappling the target's armour, reins, or shield, or could be turned in the direction of the blow to pierce even heavy armor. Against mounted opponents, the weapon could also be directed at the legs of the horse, toppling the armored foe to the ground where he could be more easily attacked. * See Arms and Armor for weapons") "Short Blades" (specialty :name "Short Blades" :summary "* Includes Short Swords, Daggers, Stilettos, Machetes, Large Kitchen Knives, etc.") :Polearms (specialty :name "Polearms" :summary "Fend Off" :titles "Glaivemaster, Halberdier, Poleman") :Spears (specialty :name "Spears" :summary "Fend Off, Impale, Set Against Charge, Shield Snare" :titles "Lancer, Javelineer, Myrmidon, Peltast, Pikeman, Spartan, Spearman, Velite") :Staves (specialty :name "Staves" :summary "* This specialty includes long staves and short sticks. Staves have longer reach than most weapons while fighting sticks attack with great speed. * [Bash], [Dazing Blow], [Disarm], [Fend Off], [Fleche], [Parry], [Riposte], [Sweep]" :titles "Arnis, Bojutus, Escrima, Kali, Stick Fighting") :Swords (specialty :name "Swords" :reference "The Book of Five Rings - Miyamoto Mushashi The Gaze * The gaze should be large and broad. This is the twofold gaze 'Perception and Sight'. Perception is strong and sight weak. * In strategy it is important to see distant things as if they were close and to take a distanced view of close things. It is important in strategy to know the enemy's sword and not to be distracted by insignificant movements of his sword. The gaze is the same for single combat and for large-scale combat. * It is necessary in strategy to be able to look to both sides without moving the eyeballs. You cannot master this ability quickly. Learn what is written here: use this gaze in everyday life and do not vary it whatever happens. The Five Attitudes * The five attitudes are: Upper, Middle, Lower, Right Side, and Left Side. These are the five. * Although attitude has these five dimensions, the one purpose of all of them is to cut the enemy. * There are none but these five attitudes. * Whatever attitude you are in, do not be conscious of making the attitude; think only of cutting. * Middle Attitude - Confront the enemy with the point of your sword against his face. When he attacks, dash his sword to the right and 'ride' it. Or, when the enemy attacks, deflect the point of his sword by hitting downwards, keep your long sword where it is, and as the enemy renews the attack cut his arms from below. * When you master my Way of the long sword, you will be able to control any attack the enemy makes. I assure you, there are no attitudes other than the five attitudes of the long sword of NiTo. * Upper Attitude - From the Upper attitude cut the enemy just as he attacks. If the enemy evades the cut, keep your sword where it is and, scooping from below, cut him as he renews the attack. * You will always win with the five long sword methods. You must train repeatedly. * Lower Attitude - Adopt the Lower attitude, anticipating scooping up. When the enemy attackes, hit his hands from below. As you do so, he may try to hit your sword down. If this is the case, cut his upper arm(s) horizontally with a feeling of 'crossing'. This means that from the Lower attitudes you hit the enemy at the instant that he attacks. You will encounter this method often, both as a beginner and in later strategy. * Left Side Attitude - Adopt the Left Side attitude. As the enemy attacks, hit his hands from below. If as you hit his hands he attempts to dash down your sword, with the feeling of hitting his hands, parry the path of his long sword and cut across from above your shoulder. Through this method you win by parrying the line of the enemy's attack. * Right Side Attitude - In the fifth approach, the sword is in the Right Side attitude. In accordance with the enemy's attack, cross your sword from below at the side to the Upper attitude. Then cut straight from above. * Cut and Slash - To cut and slash are two different things. Cutting, whatever form of cutting it is, is decisive, with a resolute spirit. Slashing is nothing more than touching the enemy. Even if you slash strongly, and even if the enemy dies instantly, it is slashing. When you cut, your spirit is resolved. You must appreciate this. If you first slash the enemy's hands or legs, you must then cut strongly. Slashing is in spirit the same as touching. When you realise this, they become indistinguishable. Learn this well." :summary "* Melee - [Abdomen Timing of Two], [Continuous Cut], [Dash Attack], [Dazing Blow], [Fleche], [Fire and Stones Cut], [Parry], [Riposte], [Slash], [There Are Many Enemies], [Thrust], [To Apply Stickiness]" :titles "Bushi, Fencer, Fencing, Kendo, Kenjutsu, Kensei, Ronin, Sword Saint, Samurai, Swordsman"))) :Ranged (skill :name "Ranged" :reference "* Good. Bad. I'm the guy with the gun. - Ash, Army of Darkness" :titles "Archer, Javelineer, Slinger" :abilitymap (abilitymap "Arcing Fire" (ability :name "Arcing Fire" :summary "* [Requires]: Bow or Javelin * May fire over other units that block Line of Sight.") "Barbed Javelin" (ability :name "Barbed Javelin" :summary "* [Requires]: Javelin * Criticals vs Large units are [Rage] Tokens.") "Bowel Raker" (ability :name "Bowel Raker" :summary "* +1 [Bleeding] * -1 [Piercing]" :titles "Serrated Arrow") "Deadly Arrow" (ability :name "Deadly Arrow" :summary "* [Requires]: Bow or Crossbow * Increase weapon range by 50% and choose [Hit Location]") "Double Shot" (ability :name "Double Shot" :summary "* -2 [Attack] * -1 [Piercing] * May attack two targets in same [Arc]." :titles "Double Throw") "Explosive Shot" (ability :name "Explosive Shot" :summary "* [Requires]: Bow or Crossbow") "Flaming Arrow" (ability :name "Flaming Arrow" :summary "* [Requires]: Bow or Crossbow") :Fletching (ability :name "Fletching" :summary "* The art of making arrows. High quality or specialized arrows are quickly used up and often impractical to buy. Creating your own is often a very practical solution." :titles "Bowyer") "Knife Throwing" (ability :name "Knife Throwing") "Piercing Shot" (ability :name "Piercing Shot" :summary "* [Requires]: Bow or Crossbow * [Attack]: [+1 Armor Piercing]") :Richochet (ability :name "Richochet" :summary "* [Requires]: Thrown Object") "Shield Snare" (ability :name "Shield Snare" :summary "* [Requires]: Javelin, Target with shield * [Attack]: Criticals are [Encumberance] Tokens.") "Signal Shot" (ability :name "Signal Shot" :summary "* Alert allied units by sending a prearranged signal. This can be flaming arrow at night, smoking arrow, singing arrow, etc. * [Requires]: Bow or Crossbow * [Action]: For the rest of the turn, other units adjacent to this unit may be treated as if under the [Sphere of Command] of any allied Commander.") "Stunning Throw" (ability :name "Stunning Throw" :summary "* [Requires]: Thrown Object * Trades lethal damage for stunning damage.")) :specialtymap (specialtymap :Archery (specialty :name "Archery" :summary "* Bowel Raker, Double Shot, Flaming Arrow" :titles "Archer, Archer Elite, Bowman, Crossbowman, Longbowman") "Thrown Weapons" (specialty :name "Thrown Weapons" :reference "You? You're very good. But me? I'm magic. - Bullseye, Daredevil Comics" :summary "* Barbed Javelin, Double Shot, Knife Throwing, Precision Throw, Shield Snare" :titles "Knife Thrower, Javelineer, Slinger"))) :Firearms (skill :name "Firearms" :titles "Crackshot, Marksman, Rifleman, Sharpshooter, Sniper" :abilitymap (abilitymap :Anti-Personnel (ability :name "Anti-Personnel" :summary "* [Action]: [+1 Damage] or [-1 Damage] vs. 2 or more Armor" :titles "Hollow Point") "Armor Piercing" (ability :name "Armor Piercing" :summary "* [Action]: Enemy at [-2 Armor]" :titles "Depleted Uraniumn") :Autofire (ability :name "Autofire" :summary "* [Requires]: Weapon with [Autofire] -1 [Attack] * [Action]: Target 2 adjacent units.") "Chemical Rounds" (ability :name "Chemical Rounds" :summary "* [Action]: [-1 Damage], [Critical Hits] are [Acid]") "Fast Draw" (ability :name "Fast Draw" :summary "* [Requires]: Hand weapon * Spend 1 Speed to draw a Hand weapon from holster to hip where he can [Shoot From The Hip].") "Gyrojet Rounds" (ability :name "Gyrojet Rounds" :summary "* [Action]: [+1 Damage] at Long Range, [-1 Damage] at Short Range" :titles "Rocket Rounds") "High Explosive Rounds" (ability :name "High Explosive Rounds" :summary "* [Action]: Use [Blast] rules for targetting and damage." :titles "Explosive Rounds") :Hipshoot (ability :name "Hipshoot") "Non-Lethal Rounds" (ability :name "Non-Lethal Rounds" :summary "* [Action]: [-2 Damage] vs. 2 or more Armor. Half of all [Damage] is [Stun] instead." :titles "Rubber Bullets") "Paint Rounds" (ability :name "Paint Rounds" :summary "* [Action]: [0 Damage], [Critical Hits] are [Stun]" :titles "Paintball") "Pin Down" (ability :name "Pin Down") "Rapid Fire" (ability :name "Rapid Fire") :Scattershot (ability :name "Scattershot" :summary "* Choose a target starting from the closest. * If a hit is scored, roll another attack on the same target. * If no hit scored, roll against next target. * -1 for each Space of Range (Cone), -1 per roll (cumulative, inclusive). * Criticals can be used for additional damage rolls (multiple Hits) * If target was [Armor], that Armor is at +2 vs this attack" :titles "Glaser, Shot") :Sniper (ability :name "Sniper" :reference "* The snipe (a family of shorebirds) is difficult to catch for experienced hunters, so much so that the word 'sniper' is derived from it to refer to anyone skilled enough to shoot one. * I aim to win and my aim... is Excellent. - Caitlyn, Runeterra" :summary "* [Requires]: Long Range Weapon * Increase weapon range by 50% and choose [Hit Location]") "Supressive Fire" (ability :name "Supressive Fire" :summary "* Firing weapons at enemy forces with the primary goal of forcing them to remain under cover. * [Requires]: Weapon with [Autofire] * [Action]: Target a unit that has not been activated this turn, all [Hits] and [Critical Hits] are [Stun] tokens. +1 Attack" :titles "Covering Fire") "Tracer Rounds" (ability :name "Tracer Rounds" :summary "* [Requires]: [Auto], Must attack same target on subsequent round. * [Action]: [+1 Attack], [-1 Damage].") "Tracking Rounds" (ability :name "Tracking Rounds") :Auto (ability :name "Auto" :summary "+1 Cost * Criticals can be used for additional damage rolls (multiple hits).") :Blast (ability :name "Blast") :Bombardment (ability :name "Bombardment") :Capacitors (ability :name "Capacitors" :summary "* Uses capacitors that can recharge 1 shot a turn from a power source rated at the same power level as a single shot. Cannot be used with lower energy power sources.") :Electroshock (ability :name "Electroshock" :titles "Taser") "Extra Ammo" (ability :name "Extra Ammo" :summary "* 2x number of shots, each time this modifier is taken.") "Flash Surpressor" (ability :name "Flash Surpressor" :summary "* Reduces the muzzle flare of the weapon making it more difficult to visually locate the shooter.") "Gun Mount" (ability :name "Gun Mount" :titles "Bipod, Tripod") :Overcharge (ability :name "Overcharge" :summary "* [Action]: Consume 2 shots to to 1 extra damage. Then Damage is -1 until repaired.") "Overload Weapon" (ability :name "Overload Weapon" :summary "* Detonate the entire weapon magazine (and the weapon) as an explosive with force equal to the total power in the magazine.") :Rechargable (ability :name "Rechargable" :summary "* Uses batteries that can be slowly recharged from any power source.") "Recoil Compensator" (ability :name "Recoil Compensator" :summary "* Reduces the 'kick' of the weapon and therefore reduces the penalty for continuous fire.") :Silencer (ability :name "Silencer") "Smoke Generator" (ability :name "Smoke Generator") "Targeting Laser" (ability :name "Targeting Laser") "Telescopic Sight" (ability :name "Telescopic Sight" :summary "Reduces penalties for Medium Range to Short Range and Long Range to Medium Range") :Turret (ability :name "Turret" :image "Tokens/Arrow.png" :summary "+1 Cost * Turret mounted weapons may turn their turret toward any direction and fire from the side the turret is facing. * Turrets are normally assumed to be facing forward. At the beginning of its [Action], a unit may change the turret facing by 1 side (Use a [Vector] Token) indicate where the Turret is pointing.")) :specialtymap (specialtymap "Energy Weapons" (specialty :name "Energy Weapons" :reference "Whoa, whoa, whoa! Nice shootin', Tex! - Ghostbusters") :Handguns (specialty :name "Handguns") :Rifles (specialty :name "Rifles") :Shotguns (specialty :name "Shotguns"))) :Gunnery (skill :name "Gunnery" :summary "* Gunnery skill cannot exceed level 5 - Because advanced weapons are mostly point and shoot, weapon skill has less to do with the gunner and more to do with the weapon and its control system. Further, advanced weapons technologies come in a multitude of variations with constantly changing interfaces therefore it is very difficult to dedicate oneself to a single system to become an expert. * See Arms and Armor for weapons" :titles "Artillerist, Bombardier, Field Ops, Gunner" :abilitymap (abilitymap "Air Burst" (ability :name "Air Burst") :Barrage (ability :name "Barrage" :summary "A barrage is a line or barrier of exploding shells from a large number of guns firing continuously. Its purpose is to deny or hamper enemy passage. It contrasts with a concentration, in which all the guns aim at the same small area. The barrage was developed in World War I, with the infantry following the advancing barrage. Its employment in this way recognised the importance of artillery fire in neutralising, rather than destroying, the enemy. A creeping barrage immediately followed by an infantry assault could be far more effective than weeks of preliminary bombardment.") "Forward Observer" (ability :name "Forward Observer" :summary "* [Action]: When unit has [Line of Sight] on a opponent, any number of units with [Indirect Fire] may attack that unit even if they do not have [Line of Sight].") "Indirect Fire" (ability :name "Indirect Fire" :summary "-2 Attack -2 Damage * Other units do not block [Line of Sight]. * See: [Forward Observer] * See: [HE - High Explosives]") "Point Defense" (ability :name "Point Defense") :Salvo (ability :name "Salvo" :summary "* The simultaneous discharge of weapons, rather than scattered 'fire at will'. * Up to 10 weapons of the same type can be in 1 Salvo. * All targets in the space are attacked.")) :specialtymap (specialtymap :Cannons (specialty :name "Cannons") :Flamethrowers (specialty :name "Flamethrowers") :Machineguns (specialty :name "Machineguns"))) "Physical Power" (skill :name "Physical Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect physical objects. * Physical Powers must have clear range and line of sight on a target." :stat "Body" :abilitymap (abilitymap "Gunnery Power" (ability :name "Gunnery Power" :summary "* Use [Gunnery] and a Gunnery item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Firearm Power" (ability :name "Firearm Power" :summary "* Can use [Firearms] and Firearm item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Close Combat Power" (ability :name "Close Combat Power" :summary "* Can use [Close Combat] instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Melee Power" (ability :name "Melee Power" :summary "* Use [Melee] and a Melee item instead of [Physical Power] to manifest a [Physical] [Ability] on contact.") "Ranged Power" (ability :name "Ranged Power" :summary "* Can use [Ranged] and a Ranged item of [Physical Power] to manifest a [Physical] [Ability] on contact."))) "Mental Power" (skill :name "Mental Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect the [Mind] of targets. * Mental Powers must have range and be able to 'see' the target." :titles "Mental Challenge" :stat "Mind" :abilitymap (abilitymap "Mental Grip" (ability :name "Mental Grip") "Mental Gymnastics" (ability :name "Mental Gymnastics") "Mind Whip" (ability :name "Mind Whip") "Psionic Blade" (ability :name "Psionic Blade") "Psionic Knife" (ability :name "Psionic Knife") "Intellect Fortress" (ability :name "Intellect Fortress"))) "Psychic Power" (skill :name "Psychic Power" :summary "* This skill is used when manifesting and controlling a [Power] that directly affect the [Will] of targets. * Psychic Powers must have range and see or 'know' the target." :titles "Psychic Combat, Psychological Warfare, Soul Combat, Spirit Combat, Test of Will" :stat "Will" :abilitymap (abilitymap "Ego Whip" (ability :name "Ego Whip") "Psychic Knife" (ability :name "Psychic Knife") "Tower of Iron Will" (ability :name "Tower of Iron Will"))) :Command (skill :name "Command" :reference "* Generals are in the business of getting people killed. Captains like to keep theirs alive. You wanna put on a parade? Go find a general. You wanna fight your way home? Talk to me. - Obregon Kaine, Negation Comic * Well hello mister fancy pants. I got news for you pal. You ain't leading but two things right now: Jack and Shit and Jack left town. - Ash, Army of Darkness * And when Alexander saw the breadth of his domain, he wept for there were no more worlds to conquer. - Hans Gruber, Die Hard" :titles "Captain, Castellan, Commander, Drillmaster, Drill Sergeant, Major, Overlord, Sergeant, Warchief, Warlord" :stat "Mind" :abilitymap (abilitymap "Call to Arms" (ability :name "Call to Arms" :reference "Unite. Take up arms. Stand shoulder to shoulder with your brothers and sisters. And break free from the cold shackles of oppression. Liberty for all is more noble than the preservation of one's soul. Destiny and valor will meet at the end of the sword. And the tales of heroic sacrifice will be the legend of a new age. There will be no respite. There will be no surrender. Only glory and honor. The price will be high for the greatest prize of all. Stand and be counted among those that dared. Those who dared to fight for their freedom. - Glass Fleet" :summary "Gather a war party from the populace") "Chain of Command" (ability :name "Chain of Command" :summary "* [Action]: [Activate] up to [Command] units directly or indirectly adjacent to this unit. These units (including this one) may spend [Speed] or [Actions] in any order this [Turn]. * [Interrupt]: May not be used as an Interrupt.") :Rally (ability :name "Rally"))) :Military (skill :name "Military" :reference "* He can't make that kind of decision. He's just a grunt! No offense. None taken - Burke and Hicks, Aliens * I think we'd better split up...Yeah... we can do more damage that way. - Ghostbusters * If ten times the enemy's strength, surround them; If five times, attack them; If double, divide them; If equal, be able to fight them; If fewer, be able to evade them; If weaker, be able to avoid them. - Sun Tzu * Warfare is the art of deception. Thus although you are capable, display incapability to them. When your objective is nearby, make it appear distant; when it is far away, create the illusion of being nearby. - Sun Tzu, The Art of War" :titles "Admiral, Brigade, Brigadier, Cadet, Centurion, Colonel, Commander, Commando, Conscript, Corporal, Field Marshal, Footman, Gamesman, General, Grunt, High Guard, Honor Guard, Infantry, Legionnaire, Lieutenant, Praetor, Praetorian Guard, Reserves, Royal Guard, Soldier, Soldier of Fortune, Strategist, Tactician, Vanguard" :stat "Will" :abilitymap (abilitymap "Airborne Assault" (ability :name "Airborne Assault") "Amphibious Assault" (ability :name "Amphibious Assault") :Besiege (ability :name "Besiege") "Bomb Disposal" (ability :name "Bomb Disposal" :reference "* I'll tell you a dirty little secret. When you're in the middle of an explosion, it's the ultimate rush. - Haggerty, Obliterated * Who has one thumb and just saved Las Vegas? This guy! - Hagerty, Obliterated") "Close Assault" (ability :name "Close Assault" :summary "* [Action]: If a [Vehicle] is adjacent to this unit, you may target the Top Armor. If the unit has explosives, it may target the Under Armor.") "Combat Driver" (ability :name "Combat Driver" :summary "* Experienced in fighting in a car.") :Demolitions (ability :name "Demolitions" :summary "* Experienced with setting up large explosives to destroy large structures.") "Divide and Conquer" (ability :name "Divide and Conquer") "Diversionary Tactics" (ability :name "Diversionary Tactics") :Explosives (ability :name "Explosives" :summary "* Experienced using various small explosives in combat.") "Field Fortifications" (ability :name "Field Fortifications") "Formation: Back to Back" (ability :name "Formation: Back to Back" :summary "* [Formation]: Not strictly a formation, units with their backs against each other largely protect each other's back.") "Formation: Cover" (ability :name "Formation: Cover" :summary "* [Formation]: Not strictly a formation, units in Cover formation stay close enough together to protect each other's sides.") "Formation: March" (ability :name "Formation: March" :summary "* [Formation]: Units move in columns. * [+1 Speed]") "Formation: Parade" (ability :name "Formation: Parade" :summary "* [Formation]: A showy formation designed to look good. Has no use in battle. * [+ 1 Intimidation]") "Formation: Phalanx" (ability :name "Formation: Phalanx" :reference "* With his friends jostling and pushing on both sides and behind, and his enemies forming a solid wall in front of him, the hoplite had little opportunity for feats of technique and weapon skill, but great need for commitment and mental toughness. The hoplites had to trust their neighbors for mutual protection, so a phalanx was only as strong as its weakest elements. Its effectiveness depended on how well the hoplites could maintain this formation while in combat, and how well they could stand their ground, especially when engaged against another phalanx. The more disciplined and courageous the army, the more likely it was to win. The Greek word dynamis, the 'will' or 'ability to fight,' was used to express the drive that kept hoplites in formation." :summary "* [Formation]: Focuses on offense using Melee attacks with Reach. * [Requires]: At least half must have Weapons with Reach 2+. * [+1 Attack], [+1 Defense] from Front * [-1 Defense] from Rear") "Formation: Shield Wall" (ability :name "Formation: Shield Wall" :summary "* [Formation]: Uses shields to form a wall. * [Requires]: At least half must have Shields. +1 Defense from Front.") "Formation: Skirmish" (ability :name "Formation: Skirmish" :reference "Acting as light infantry with their light arms and minimal armor, they could run ahead of the main battle line, release a volley of arrows, slingshots or javelins, and retreat behind their main battle line before the clash of the opposing main forces. The aims of skirmishing were to disrupt enemy formations by causing casualties before the main battle, and to tempt the opposing infantry into attacking prematurely, throwing their organization into disarray. Skirmishers could also be effectively used to surround opposing soldiers in the absence of friendly cavalry." :summary "* [Formation]: Units move in loose shapes. * [Requires]: Only [Light Infantry]. * [Move]: Ignore 1 [Terrain Penalty]. * [+1 Defense] vs Ranged or Large Units * [+1 Defense] when in Terrain with Defense bonus * [-1 Defense] vs Small Melee and Close Combat Units" :titles "Skirmisher") "Formation: Testudo" (ability :name "Formation: Testudo" :image "Skills/Testudo.jpg" :summary "* [Formation]: Uses shields to form a shell around a unit. * [Requires]: At least half must have Shields. * [+2 Defense] vs Ranged * Shields protect all sides * Cannot Attack" :titles "Tortoise Formation, Turtle Up") "Formation: Tight" (ability :name "Formation: Tight" :summary "* [Formation]: Units stay tightly packed to maximize Melee defense. * [+1 Defense] vs Melee and Close Combat. * [-1 Defense] vs Ranged") "Formation: Wedge" (ability :name "Formation: Wedge" :summary "* [Formation]: Units move in triangle and focus on breaking enemy formations. * [+1 Retreat] Token if unit inflicts at least 1 [Retreat].") :Fortifications (ability :name "Fortifications") "Halo Drop" (ability :name "Halo Drop") "Jump Suit Combat" (ability :name "Jump Suit Combat") "Military Vehicle" (ability :name "Military Vehicle" :summary "* Every vehicle unit is assumed to have this ability. Units that are not vehicles must take this ability for each vehicle.") "Mine Clearing" (ability :name "Mine Clearing") "Mine Laying" (ability :name "Mine Laying") "Mobile Infantry" (ability :name "Mobile Infantry" :summary "* Experienced with powered armor.") "Orbital Halo Drop" (ability :name "Orbital Halo Drop") "Parachute Assault" (ability :name "Parachute Assault") :Sapping (ability :name "Sapping" :reference "* If it was important, then they should have built it better. - Desert Naturalist, Runeterra") "Space Combat" (ability :name "Space Combat") "Urban Assault" (ability :name "Urban Assault") "Wingsuit Combat" (ability :name "Wingsuit Combat")) :specialtymap (specialtymap :Siegecraft (specialty :name "Siegecraft" :summary "* Besiege * Fortifications * Sapping" :titles "Sapper"))))))))
nx/tactics/books/combat / chapter_early_weaponry
Description:
Function Name:
  • chapter_early_weaponry
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_early_weaponry : base/chapter (chapter :name "Early Weaponry" :sectionmap (sectionmap "Early Armor" (section :name "Early Armor" :itemmap (itemmap :Bezainted (item :name "Bezainted") "Breast Plate" (item :name "Breast Plate" :summary "* Armor: 0 if hit in the Head, Arms, or Legs" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) :Brigandine (item :name "Brigandine") "Bronze Armor" (item :name "Bronze Armor" :summary "* Bronze Cuirass, Helmet, Greaves" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Chain Mail Armor" (item :name "Chain Mail Armor" :reference "* Shark expert and underwater filmmaker Valerie Taylor was among the first to develop and test shark suits in 1979 while diving with sharks. * Mail is widely used in industrial settings as shrapnel guards and splash guards in metal working operations. * Electrical applications for mail include RF leakage testing and being worn as a Faraday cage suit by tesla coil enthusiasts and high voltage electrical workers." :summary "* Chain mail is a type of armor consisting of small metal rings linked together in a pattern to form a mesh. It was generally in common military use between the 3rd century BC and the 16th century AD in Europe, and longer in Asia and North Africa." :titles "Chainmail, Mail, Byrnie, Hauberk" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Chain Mail Shirt" (item :name "Chain Mail Shirt" :summary "* Armor: 1mm if hit in chest" :titles "Chainmail, Mail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) :Cuirbouilli (item :name "Cuirbouilli") :Jazeraint (item :name "Jazeraint") "Laminated Armor" (item :name "Laminated Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) "Leather Armor" (item :name "Leather Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Pants" (item :name "Leather Pants" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Shirt" (item :name "Leather Shirt" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Leather Vest" (item :name "Leather Vest" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Padded Armor" (item :name "Padded Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) "Plate Armor" (item :name "Plate Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "3mm") :severity 2)))) :Platemail (item :name "Platemail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Quilted Armor" (item :name "Quilted Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))) :Ringmail (item :name "Ringmail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1mm") :severity 2)))) :Scalemail (item :name "Scalemail" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Scale Barding" (item :name "Scale Barding" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Splint Armor" (item :name "Splint Armor" :titles "Lamellar" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2mm") :severity 2)))) "Studded Leather Armor" (item :name "Studded Leather Armor" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "0mm") :severity 2)))))) :Shields (section :name "Shields" :itemmap (itemmap :Buckler (item :name "Buckler" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "1") :severity 2)))) "Kite Shield" (item :name "Kite Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Legionary Shield" (item :name "Legionary Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Round Shield" (item :name "Round Shield" :titles "Hoplon Round Shield, Target Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) :Shield (item :name "Shield" :titles "Aegis, Heater" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "2") :severity 2)))) "Tower Shield" (item :name "Tower Shield" :titles "Hoplite Shield" :classification "Shield" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/item :prop "armor" :value "3") :severity 2)))) "Wicker Shield" (item :name "Wicker Shield" :classification "Shield"))) :Axes (section :name "Axes" :itemmap (itemmap "Battle Axe" (item :name "Battle Axe" :titles "Fasces, Sagaris" :energy "100J") "Double-Headed Axe" (item :name "Double-Headed Axe" :titles "Labrys, Pelekus" :energy "200J") "Hand Axe" (item :name "Hand Axe" :titles "Hachet" :energy "50J") :Pick (item :name "Pick") :Scythe (item :name "Scythe") :Sickle (item :name "Sickle" :titles "Kama") "Throwing Axe" (item :name "Throwing Axe" :titles "Francisca"))) "Close Combat Weapons" (section :name "Close Combat Weapons" :itemmap (itemmap "Bagh Nakh" (item :name "Bagh Nakh" :titles "Tiger Claw") "Brass Knuckles" (item :name "Brass Knuckles") :Cestus (item :name "Cestus") :Garotte (item :name "Garotte") :Gauntlet (item :name "Gauntlet") :Nekode (item :name "Nekode" :titles "Claw") :Sap (item :name "Sap" :titles "Blackjack"))) :Clubs (section :name "Clubs" :itemmap (itemmap :Baton (item :name "Baton") "Bo Stick" (item :name "Bo Stick") :Club (item :name "Club") :Cudgel (item :name "Cudgel") :Jitte (item :name "Jitte") "Jo Stick" (item :name "Jo Stick") :Nightstick (item :name "Nightstick") :Quarterstaff (item :name "Quarterstaff" :reference "* Held at the bottom like a polearm. not in the middle. Holding in the middle was invented by the Boy Scouts in Victorian times for sport fighting.") :Shillelagh (item :name "Shillelagh") :Tonfa (item :name "Tonfa") :Truncheon (item :name "Truncheon"))) "Flexible Weapons" (section :name "Flexible Weapons" :itemmap (itemmap :Bola (item :name "Bola") :Bullwhip (item :name "Bullwhip") :Chain (item :name "Chain") "Chain Whip" (item :name "Chain Whip") :Flail (item :name "Flail") :Kusari (item :name "Kusari") :Lasso (item :name "Lasso") :Manriki (item :name "Manriki") :Net (item :name "Net") :Noose (item :name "Noose") :Nunchaku (item :name "Nunchaku" :energy "100J") "Pole Lasso" (item :name "Pole Lasso") "Rope and Rocks" (item :name "Rope and Rocks" :titles "Surujin" :energy "100J") "Rope Dart" (item :name "Rope Dart" :energy "50J") "Sickle and Chain" (item :name "Sickle and Chain" :titles "Kusarigama" :energy "50J") "Spike and Chain" (item :name "Spike and Chain") "Three Section Staff" (item :name "Three Section Staff" :titles "Sansetsukon" :energy "100J") "Weighted Chain" (item :name "Weighted Chain" :titles "Meteor Hammer") :Whip (item :name "Whip") "Whip Sword" (item :name "Whip Sword" :titles "Urumi"))) :Hammers (section :name "Hammers" :reference "Mjolnir - Thor's Hammer" :itemmap (itemmap "Bec de Corbin" (item :name "Bec de Corbin") :Godendag (item :name "Godendag") "Holy Water Sprinkler" (item :name "Holy Water Sprinkler") "Horseman's pick" (item :name "Horseman's pick") "Lucerne Hammer" (item :name "Lucerne Hammer") :Mace (item :name "Mace" :energy "100J") :Mallet (item :name "Mallet") :Maul (item :name "Maul") :Morningstar (item :name "Morningstar" :energy "100J") :Scepter (item :name "Scepter" :summary "* +1 [Initimidation]") "Star Mace" (item :name "Star Mace" :energy "100J") "Throwing Hammer" (item :name "Throwing Hammer" :energy "50J") "War Hammer" (item :name "War Hammer" :energy "100J"))) :Knives (section :name "Knives" :itemmap (itemmap :Bundi (item :name "Bundi" :energy "50J") "Butterfly Knife" (item :name "Butterfly Knife" :titles "Balisong" :energy "50J") :Cinqueda (item :name "Cinqueda" :energy "50J") :Dagger (item :name "Dagger" :energy "50J") :Dirk (item :name "Dirk" :energy "50J") "Hunting Knife" (item :name "Hunting Knife" :energy "50J") :Knife (item :name "Knife" :energy "50J") :Kris (item :name "Kris" :energy "50J") "Main Gauche" (item :name "Main Gauche") :Sai (item :name "Sai" :energy "50J") :Stake (item :name "Stake" :energy "50J") :Stiletto (item :name "Stiletto" :energy "50J") :Switchblade (item :name "Switchblade" :energy "50J") "Throwing Knife" (item :name "Throwing Knife" :energy "50J"))) :Polearms (section :name "Polearms" :itemmap (itemmap :Bill-Guisarme (item :name "Bill-Guisarme" :energy "200J") :Glaive (item :name "Glaive" :summary "A glaive is a European polearm weapon, consisting of a single-edged blade on the end of a pole. It is similar to the Japanese naginata and the Chinese Guan Dao. Typically, the blade was around 45 cm (18 inches) long, on the end of a pole 2 m (6 or 7 feet) long, and the blade was affixed in a socket-shaft configuration similar to an axe head, rather than having a tang like a sword or naginata," :titles "Guan Dao" :energy "200J") :Glaive-Guisarme (item :name "Glaive-Guisarme" :energy "200J") :Halberd (item :name "Halberd" :titles "Halberdier" :energy "200J") :Naginata (item :name "Naginata" :energy "200J") :Poleaxe (item :name "Poleaxe" :energy "200J") :Ranseur (item :name "Ranseur" :energy "200J") :Spetum (item :name "Spetum" :energy "200J") :Voulge-Guisarme (item :name "Voulge-Guisarme" :energy "200J"))) :Spears (section :name "Spears" :itemmap (itemmap :Atlatl (item :name "Atlatl" :summary "* Dart-thrower * An atlatl dart is capable of killing even the largest of animals at any distance that its thrower is capable of accurately reaching since more power is applied to longer shots than shorter shots." :range "20m") :Bayonet (item :name "Bayonet" :classification "Spear" :energy "100J") :Javelin (item :name "Javelin" :classification "Spear" :energy "198J" :mass "3kg" :modifiers "Indirect Fire, Piercing" :range "18m") :Lance (item :name "Lance" :titles "Couched Lance" :classification "Spear" :energy "300J" :length "2.5m" :modifiers "Reach, Piercing") :Pike (item :name "Pike" :titles "Pikeman" :classification "Spear" :energy "200J" :length "4m" :modifiers "Reach, Piercing") :Pilum (item :name "Pilum" :reference "* When once fixed in the shield it was impossible to draw them out, and when thrown with force and skill, they penetrated the cuirass without difficulty. - Roman writer Vegtius" :summary "* The pilum was designed to be armour-piercing: the pyramidal head would punch a small hole through an enemy shield allowing the thin shank to pass through and penetrate a distance sufficient to hit the target. A pilum, having penetrated a shield through a small hole and its shank having bent would now be difficult to remove. It is likely that the shaft would hit the ground and thus stop the charging enemy in his tracks. An enemy, if not killed by the pilum, would have little time before closing with the legionaries and would have to discard his now-unwieldy shield before going into combat. Additionally, bent pila would be less suitable for reuse by a resourceful opponent." :classification "Spear" :energy "100J" :mass "3kg" :modifiers "Indirect Fire, Piercing" :range "18m") :Spear (item :name "Spear" :classification "Spear" :energy "100J" :modifiers "Reach, Piercing") :Trident (item :name "Trident" :classification "Spear" :energy "100J" :modifiers "Reach, Piercing"))) :Swords (section :name "Swords" :summary "All swords have the Bleeding modifier." :itemmap (itemmap :Backsword (item :name "Backsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Bastard Sword" (item :name "Bastard Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Bokken (item :name "Bokken" :classification "Sword") :Broadsword (item :name "Broadsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Butterfly Sword" (item :name "Butterfly Sword" :classification "Sword" :energy "100J") "Cavalry Sword" (item :name "Cavalry Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Cutlass (item :name "Cutlass" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Epee (item :name "Epee" :classification "Sword" :energy "100J") :Falchion (item :name "Falchion" :summary "* A short, cleaving sword for close-in combat used by many troops including archers." :classification "Sword" :energy "100J") :Foil (item :name "Foil" :classification "Sword" :energy "50J") "Great Sword" (item :name "Great Sword" :titles "Two-handed Sword" :classification "Sword" :energy "200J" :modifiers "Bleeding") "Hook Sword" (item :name "Hook Sword" :classification "Sword" :energy "100J") :Katana (item :name "Katana" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Katar (item :name "Katar" :classification "Sword" :energy "100J") :Longsword (item :name "Longsword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Ninjato (item :name "Ninjato" :classification "Sword" :energy "100J" :modifiers "Bleeding") :No-Dachi (item :name "No-Dachi" :classification "Sword" :energy "200J") :Rapier (item :name "Rapier" :classification "Sword" :energy "100J" :modifiers "Bleeding, Piercing") :Saber (item :name "Saber" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Scimitar (item :name "Scimitar" :classification "Sword" :energy "100J" :modifiers "Bleeding") "Short Sword" (item :name "Short Sword" :classification "Sword" :energy "100J" :modifiers "Bleeding") :Tanto (item :name "Tanto" :classification "Sword" :energy "100J") :Wakizashi (item :name "Wakizashi" :classification "Sword" :energy "100J"))) :Archery (section :name "Archery" :itemmap (itemmap "Composite Bow" (item :name "Composite Bow" :summary "* The main advantage of composite bows over self bows (made from a single piece of wood) is their combination of smaller size with high power. They are therefore much more suitable for use from horseback, and presumably from a chariot. * Constructing composite bows requires much more time and materials than self bows, and the animal glue traditionally used can lose strength in humid conditions and be quickly ruined by submersion. For most practical non-mounted archery purposes, composite construction offers no advantage; 'the initial velocity is about the same for all types of bow, the design parameters appear to be less important than is often claimed.' However, their compact size make them superior for horsemen. * [Attack]: [+1 Range], [+1 Piercing]" :energy "170J" :modifiers "Piercing") "Compound Bow" (item :name "Compound Bow") :Longbow (item :name "Longbow" :summary "* [Attack]: [+1 Range], [+2 Piercing]" :titles "Daikyu" :energy "156J" :modifiers "Piercing") "Short Bow" (item :name "Short Bow" :reference "Can fire about 6 aimed shots or 12 unaimed shots per minute." :summary "* [Attack]: [+1 Piercing]" :titles "Hankyu, Recurve Bow" :energy "80J" :modifiers "Piercing"))) :Crossbows (section :name "Crossbows" :itemmap (itemmap "Hand Crossbow" (item :name "Hand Crossbow") "Heavy Crossbow" (item :name "Heavy Crossbow" :energy "147J" :modifiers "Piercing") "Light Crossbow" (item :name "Light Crossbow" :energy "100J" :modifiers "Piercing") "Repeating Crossbow" (item :name "Repeating Crossbow"))) "Thrown Weapons" (section :name "Thrown Weapons" :itemmap (itemmap :Baseball (item :name "Baseball" :energy "100J") :Blowgun (item :name "Blowgun") "Blown Needles" (item :name "Blown Needles" :summary "* Similar to a blowgun, these are tiny poison needles held in the mouth and blown at nearby opponents." :titles "Fukimi-bari") :Boomerang (item :name "Boomerang") :Caltrop (item :name "Caltrop") :Chakram (item :name "Chakram" :summary "* Sharp edged rings used extensively in ancient India. They are carried in large numbers and are thrown at short range from infantry, horses, or elephants.") :Dart (item :name "Dart") :Football (item :name "Football") "Hunga Munga" (item :name "Hunga Munga") "Improvised Weapons" (item :name "Improvised Weapons") :Shuriken (item :name "Shuriken") "Skipping Stone" (item :name "Skipping Stone") :Sling (item :name "Sling") "Sling Staff" (item :name "Sling Staff"))) "Siege Weapons" (section :name "Siege Weapons" :itemmap (itemmap :Arbalest (item :name "Arbalest") :Ballista (item :name "Ballista") "Battering Ram" (item :name "Battering Ram") "Boiling Oil" (item :name "Boiling Oil") :Catapult (item :name "Catapult") :Escalade (item :name "Escalade" :titles "Siege Ladders") "Greek Fire" (item :name "Greek Fire" :titles "Liquid Fire, Wildfire") :Mangonel (item :name "Mangonel") :Onager (item :name "Onager") "Siege Hook" (item :name "Siege Hook") "Siege Tower" (item :name "Siege Tower") :Springal (item :name "Springal") :Trebuchet (item :name "Trebuchet"))) "Early Firearms" (section :name "Early Firearms" :itemmap (itemmap "Matchlock Pistol" (item :name "Matchlock Pistol" :summary "1400s") "Matchlock Rifle" (item :name "Matchlock Rifle" :summary "1400s") "Wheellock Pistol" (item :name "Wheellock Pistol" :summary "1500s") "Wheellock Rifle" (item :name "Wheellock Rifle" :summary "1500s") "Flintlock Pistol" (item :name "Flintlock Pistol" :summary "1600s") "Flintlock Rifle" (item :name "Flintlock Rifle" :summary "1600s") "Dueling Pistol" (item :name "Dueling Pistol" :summary "1770") "Brown Bees Rifle" (item :name "Brown Bees Rifle" :summary "1700s") "Percussion Pistol" (item :name "Percussion Pistol" :summary "1800s") "Percussion Rifle" (item :name "Percussion Rifle" :summary "1800s"))))))
nx/tactics/books/combat / chapter_modern_equipment
Description:
Function Name:
  • chapter_modern_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_equipment : base/chapter (chapter :name "Modern Equipment" :sectionmap (sectionmap "Modern Armor" (section :name "Modern Armor" :itemmap (itemmap "Bulletproof Vest" (item :name "Bulletproof Vest" :titles "Kevlar Vest") "Bulletproof Armor" (item :name "Bulletproof Armor" :titles "Flak Jacket, Kevlar Armor") "Doorgunner Armor" (item :name "Doorgunner Armor") "Model Y Bulletproof Vest" (item :name "Model Y Bulletproof Vest") "Interceptor Body Armor" (item :name "Interceptor Body Armor") "Dragon Skin Armor" (item :name "Dragon Skin Armor") "SARCOS Exoskeleton" (item :name "SARCOS Exoskeleton"))) "Modern Explosives" (section :name "Modern Explosives" :itemmap (itemmap :C4 (item :name "C4") "Improvised Explosive Device (IED)" (item :name "Improvised Explosive Device (IED)") "White Phosphorous Grenade" (item :name "White Phosphorous Grenade"))) "Modern Pistols" (section :name "Modern Pistols" :itemmap (itemmap "Air Pistol" (item :name "Air Pistol" :summary "* Can discharge Paintballs or small amounts of other chemicals.") ".22 Holdout Pistol" (item :name ".22 Holdout Pistol") ".22 Automatic Pistol" (item :name ".22 Automatic Pistol" :titles "Ruger MkII") "5mm Needler Pistol" (item :name "5mm Needler Pistol") ".38 Revolver" (item :name ".38 Revolver" :titles ".38 Special, .38 Derringer, .38 Llama Comanche" :classification "Pistol" :energy "319J" :muzzlevelocity "300m/s") ".38 Automatic Pistol" (item :name ".38 Automatic Pistol" :titles "Walther PPK-S" :classification "Pistol") "9mm Automatic Pistol" (item :name "9mm Automatic Pistol" :titles "Glock 17L, Browning 9mm, Baretta 92, Calico M-950, H&amp;K P9S, SIG/SAUER P226, S&amp;P ASP" :classification "Pistol" :energy "518J" :muzzlevelocity "360m/s" :range "50m") "9mm Machine Pistol" (item :name "9mm Machine Pistol" :titles "H&amp;K MP5K, Steyer TMP, Tactical Machine Pistol, Micro-Uzi" :classification "Pistol" :muzzlevelocity "380m/s" :range "100m" :rof "850/min") ".357 Desert Eagle" (item :name ".357 Desert Eagle") ".357 Magnum Revolver" (item :name ".357 Magnum Revolver" :reference "* Criminal gangs in late 1920's to early 1930's began wearing thick cotton and cloth suits that could absorb .22, .25, .32 Long, .32, .380 ACP, and .45 ACP rounds. To overcome this, law enforcement began using .357 Magnum rounds." :titles "Colt Python" :classification "Pistol" :energy "778J" :muzzlevelocity "430m/s") "10mm Automatic Pistol" (item :name "10mm Automatic Pistol" :titles "Glock 20, S&amp;W 1006" :classification "Pistol") ".40 Automatic Pistol" (item :name ".40 Automatic Pistol" :titles "SIG/SAUER P229" :classification "Pistol") ".41 Magnum Revolver" (item :name ".41 Magnum Revolver" :titles "S &amp;W Model 57" :classification "Pistol") ".45 Automatic Pistol" (item :name ".45 Automatic Pistol" :titles "AMT Automag, Colt M1911A, LAR Grizzly" :classification "Pistol" :energy "410J") ".44 Magnum Revolver" (item :name ".44 Magnum Revolver" :titles "Colt Anaconda, Ruger Super Redhawk" :classification "Pistol" :energy "1524J" :muzzlevelocity "460m/s") ".50 Automatic Pistol" (item :name ".50 Automatic Pistol" :titles "MRI Desert Eagle" :classification "Pistol" :energy "2000J" :muzzlevelocity "460m/s") :Taser (item :name "Taser" :energy ".3J"))) "Modern Rifles" (section :name "Modern Rifles" :itemmap (itemmap "12-gauge Double Barrelled Shotgun" (item :name "12-gauge Double Barrelled Shotgun" :reference "* Alright you primitive screwheads. Listen up. See this. This is my... BOOMSTICK! Its a 12-guage Double Barrelled Remington. S-Mart's top of the line. You can find it in the sporting goods department. That's right, this sweet baby was made in Grand Rapids, Michigan. Retails for about $109.95. It's got a walnut stock, cobalt blue steel, and a hair trigger. That's right. Shop smart. Shop S-Mart. YOU GOT THAT?! - Ash, Army of Darkness" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Sawed Off Shotgun" (item :name "12-gauge Sawed Off Shotgun" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Pump Shotgun" (item :name "12-gauge Pump Shotgun" :titles "Entry Team Striker, Franchi SPAS-12, Jackhammer Mk 3A-2, Mossberg M500, Remington 870P, Street Sweeper 870P, USAS-12" :energy "3724J" :muzzlevelocity "1680m/s") "12-gauge Tactical Shotgun" (item :name "12-gauge Tactical Shotgun") ".22 Rifle" (item :name ".22 Rifle" :titles "Calico M-105") "5.56mm Rifle" (item :name "5.56mm Rifle" :titles "Colt Sporter Delta") "5.56mm Assault Rifle" (item :name "5.56mm Assault Rifle" :titles "Colt M-16A1, L85A1, Steyr AUG" :energy "1767J" :muzzlevelocity "940m/s") ".30-06 Rifle" (item :name ".30-06 Rifle") ".30-06 Semi-Automatic Rifle" (item :name ".30-06 Semi-Automatic Rifle") "7.62mm Rifle" (item :name "7.62mm Rifle" :titles "Galil Sniper Rifle, Steyr SSG-69, SVD Dragunov, Walther WA-2000 Sniper") "7.62mm Assault Rifle" (item :name "7.62mm Assault Rifle" :titles "AR-15, M-16, AK-47, FN-FAL" :energy "3504J" :muzzlevelocity "850m/s") "7.62mm M24 Sniper Rifle" (item :name "7.62mm M24 Sniper Rifle") ".45 Elephant Gun" (item :name ".45 Elephant Gun" :titles "H&amp;H African, Nitro Express" :energy "6470J" :muzzlevelocity "660m/s") ".50 Rifle" (item :name ".50 Rifle" :titles "McMillan M-87") "Combat Flamethrower" (item :name "Combat Flamethrower"))) "Modern Machine Guns" (section :name "Modern Machine Guns" :itemmap (itemmap "30mm GAU-8 Avenger" (item :name "30mm GAU-8 Avenger" :length "5m" :mass "281kg" :muzzlevelocity "1000m/s" :range "1500m" :rof "4200/min" :rounds "1174") ".32 Submachine Gun (SMG)" (item :name ".32 Submachine Gun (SMG)" :titles "Skorpion M-61") "9mm Submachine Gun (SMG)" (item :name "9mm Submachine Gun (SMG)" :titles "Uzi, H&amp;K MP5, Intratec TEC-9, Spectre M-4" :muzzlevelocity "400m/s" :range "200m" :rof "600/min") ".45 Submachine Gun (SMG)" (item :name ".45 Submachine Gun (SMG)" :titles "Ingram MAC-10") ".45 Machine Gun (MG)" (item :name ".45 Machine Gun (MG)" :titles "Thomson Machine Gun, Tommy Gun" :muzzlevelocity "280m/s" :range "50m" :rof "800/min") "7.62mm Machine Gun (MG)" (item :name "7.62mm Machine Gun (MG)" :titles "M-60") ".30-06 Machine Gun (MG)" (item :name ".30-06 Machine Gun (MG)") "7.62mm Minigun (MG)" (item :name "7.62mm Minigun (MG)" :summary "* An infantry support weapon that can be adapted for vehicular use on a pintle mount. While it is useful against infantrymen, it is nearly worthless against vehicles, even unarmored ones." :titles "M134" :energy "3504J" :muzzlevelocity "850m/s" :rof "4000/min") ".50 Heavy Machine Gun (HMG)" (item :name ".50 Heavy Machine Gun (HMG)" :summary "* The heaviest of infantry weapons, the heavy machine gun must be mounted on a bipod, tripod, or pintle. The HMG is effective only against infantry and light armored vehicles."))) "Modern Cannons" (section :name "Modern Cannons" :itemmap (itemmap "Liquid Sprayer Cannon" (item :name "Liquid Sprayer Cannon" :summary "* Can dispense Water, Fire Retardant Foam, Cleaning Solvent or other more frightening solutions.") "15mm Very Light Cannon (VLC)" (item :name "15mm Very Light Cannon (VLC)" :summary "* The VLC is designed as a backup weapon for light scouting vehicles. Its shell can pierce the armor of other light vehicles but not much else. Its simple design makes it light, affordable, and easy to maintain.") "15mm Very Light Recoilless Cannon (VLC)" (item :name "15mm Very Light Recoilless Cannon (VLC)") "15mm Very Light Autocannon (VLAC)" (item :name "15mm Very Light Autocannon (VLAC)" :summary "* The VLAC lies somewhere between a heavy infantry machinegun and a vehicle mounted autocannon. Though its armor piercing shells are not particularly good against infantry, it is a perfect backup anti-armor weapon for a light vehicle.") "20mm Light Cannon (LC)" (item :name "20mm Light Cannon (LC)" :summary "* The Light Cannon is a simpler version of the Light Autocannon. It lacks automatic fire, but it more affordable, more accurate, and has a longer range.") "20mm Light Recoilless Cannon (LRC)" (item :name "20mm Light Recoilless Cannon (LRC)") "20mm Light Autocannon (LAC)" (item :name "20mm Light Autocannon (LAC)" :summary "* Light Autocannons are popular weapons combining a high rate of fire with significant penetration.") "Light Flame Cannon" (item :name "Light Flame Cannon" :summary "* Flame Cannons are vehicular flamethrowers that spray burning liquid in a wide arc. They are most effective against soft targets, but the heat generated from sustained fire can damage even heavily armored targets. It is also capable of indirect fire.") "30mm Medium Cannon (MC)" (item :name "30mm Medium Cannon (MC)" :summary "* The Medium Cannon is a simpler version of the Medium Autocannon. It lacks automatic fire, but it is more affordable, more accurate, and has a longer range.") "30mm Medium Recoilless Cannon (MRC)" (item :name "30mm Medium Recoilless Cannon (MRC)" :titles "Bazooka Cannon") "30mm Medium Autocannon (MAC)" (item :name "30mm Medium Autocannon (MAC)" :reference "* The A-10 Thunderbolt's main weapon." :summary "* Medium Autocannons are nearly as popular as Light Autocannons. They sacrifice some fire rate for higher damage and range.") "Medium Flame Cannon" (item :name "Medium Flame Cannon") "40mm Heavy Cannon (HC)" (item :name "40mm Heavy Cannon (HC)" :summary "* The Heavy Cannon can penetrate light tank armor and the 40mm shells can carry a variety of specialized ammunition.") "40mm Heavy Recoilless Cannon (HRC)" (item :name "40mm Heavy Recoilless Cannon (HRC)") "40mm Heavy Autocannon (HAC)" (item :name "40mm Heavy Autocannon (HAC)" :summary "* The Heavy Autocannon is often the main armament of light tanks. Its high rate of fire tends to preclude the use of most exotic ammunition.") "Heavy Flame Cannon" (item :name "Heavy Flame Cannon") "50mm Very Heavy Cannon (VHC)" (item :name "50mm Very Heavy Cannon (VHC)" :summary "* The Heavy Autocannon is often the main armament of light tanks. Its high rate of fire tends to preclude the use of most exotic ammunition.") "50mm Very Heavy Recoilless Cannon (VHRC)" (item :name "50mm Very Heavy Recoilless Cannon (VHRC)") "50mm Very Heavy Autocannon (VHAC)" (item :name "50mm Very Heavy Autocannon (VHAC)" :summary "* The 50mm Autocannon is an electically-driven, multi-tube gattling cannon capable of delivering an awesome amount of ammunition in a very short amount of time. This is typically the largest cannon produced with autofire because of the large amount of space that ammunition takes up.") "75mm Very Light Field Gun (VLFG)" (item :name "75mm Very Light Field Gun (VLFG)" :summary "* The Very Light Field Gun is the smallest of the single-shot, specialized anti-armor, guns. VLFG's are often mounted on gun carriages or defensive bunkers. The VLFG is effective against most medium tanks except against front armor.") "90mm Light Field Mortar (LFM)" (item :name "90mm Light Field Mortar (LFM)" :summary "* The Mortar Cannon fires low velocity, large caliber High Explosive shells. Their shells have poor penetration but are well suited for indirect fire, suppressive fire, and mass destruction of soft targets.") "90mm Light Field Gun (LFG)" (item :name "90mm Light Field Gun (LFG)" :summary "* The Light Field Gun is a popular main weapon on light and medium tanks. The LFG is effective against most medium tanks.") "120mm Smoothbore Cannon" (item :name "120mm Smoothbore Cannon" :summary "Fire Armor Piercing Fin Stabalized, Depleted Uranium rounds" :energy "11MJ") "120mm Medium Field Gun (MFG)" (item :name "120mm Medium Field Gun (MFG)" :summary "* The Medium Field Gun is a popular main weapon on heavy tanks. The LFG is effective against most heavy tanks.") "120mm Medium Field Mortar (MFM)" (item :name "120mm Medium Field Mortar (MFM)") "140mm Heavy Field Gun (HFG)" (item :name "140mm Heavy Field Gun (HFG)" :summary "* The Heavy Field Gun is a used on heavy tank destroyers and main battle tanks. The HFG is effective against most main battle tanks.") "140mm Heavy Field Mortar (HFM)" (item :name "140mm Heavy Field Mortar (HFM)") "200mm Very Heavy Field Gun (VHFG)" (item :name "200mm Very Heavy Field Gun (VHFG)" :summary "* The Very Heavy Field Gun is used in heavy artillery pieces and fixed installations. The VHFG is effective against almost any target." :titles "Naval Gun")) :rulemap (rulemap :AP (rule :name "AP") :APFSDS (rule :name "APFSDS") :HE (rule :name "HE") :HEAT (rule :name "HEAT") :HESH (rule :name "HESH"))) "Modern Portable Explosives" (section :name "Modern Portable Explosives" :itemmap (itemmap "Hand Grenade" (item :name "Hand Grenade" :image "WWIIAmerican/Grenade_MK2.jpg" :reference "* It had a fatality radius of 5m, a blast radius of 13.7m, and fragments can disperse to 213m. * At least 5 people have thrown themselves on hand grenades and lived." :explosive ".057kg" :mass ".6kg" :modifiers "Anti-Personnel, Area" :range "30m") "20mm Light Grenade Launcher" (item :name "20mm Light Grenade Launcher") "50mm Mortar" (item :name "50mm Mortar") "66mm Light Anti-Armor Weapon (LAW)" (item :name "66mm Light Anti-Armor Weapon (LAW)" :reference "* M72 LAW" :summary "* One shot anti-tank weapon that can penetrate 250mm." :length "1m" :mass "2.3kg" :modifiers "HEAT" :range "200m") "84mm Recoilless Rifle" (item :name "84mm Recoilless Rifle" :reference "* AT4" :summary "* One shot anti-tank weapon that can penetrate 400mm with HEAT or carry 440g of HE." :explosive ".440kg" :mass "6.7kg" :modifiers "HEAT" :muzzlevelocity "284m" :range "300m") "Rifle Propelled Grenade (RPG)" (item :name "Rifle Propelled Grenade (RPG)") "Plastic Explosive" (item :name "Plastic Explosive") "Land Mine" (item :name "Land Mine") "Smoke Dispenser" (item :name "Smoke Dispenser"))) "Modern Missiles" (section :name "Modern Missiles" :itemmap (itemmap "50mm Medium Grenade Launcher" (item :name "50mm Medium Grenade Launcher" :rounds "20") "70mm Heavy Grenade Launcher" (item :name "70mm Heavy Grenade Launcher" :rounds "12") "Light Bomb Rack" (item :name "Light Bomb Rack" :modifiers "HE, INC" :rounds "8") "52mm Light Rocket Pod" (item :name "52mm Light Rocket Pod" :modifiers "HE, INC" :rounds "8") "Medium Bomb Rack" (item :name "Medium Bomb Rack" :modifiers "HE, INC" :rounds "8") "71mm Medium Rocket Pod" (item :name "71mm Medium Rocket Pod" :modifiers "HE, INC" :rounds "8") "Heavy Bomb Rack" (item :name "Heavy Bomb Rack" :modifiers "HE, INC" :rounds "8") "Fuel Air Bomb Rack" (item :name "Fuel Air Bomb Rack" :modifiers "HE, INC" :rounds "8") "Cluster Bomb Rack" (item :name "Cluster Bomb Rack" :modifiers "HE, INC" :rounds "8") "82mm Heavy Rocket Pod" (item :name "82mm Heavy Rocket Pod" :modifiers "HE, INC" :rounds "8") "Very Heavy Bomb Rack" (item :name "Very Heavy Bomb Rack" :modifiers "HE, INC" :rounds "8") "Missile Pod" (item :name "Missile Pod") "Heavy RPG" (item :name "Heavy RPG" :summary "* Disposable short-range, rocket with shaped charge for armor penetration." :rounds "1") "Very Heavy RPG" (item :name "Very Heavy RPG" :summary "* Disposable short-range, rocket with shaped charge for armor penetration." :rounds "1") "Light Bombardment Rocket" (item :name "Light Bombardment Rocket" :modifiers "HE" :rounds "16") "Medium Bombardment Rocket" (item :name "Medium Bombardment Rocket" :modifiers "HE" :rounds "16") "Heavy Bombardment Rocket" (item :name "Heavy Bombardment Rocket" :modifiers "HE" :rounds "16") "Anti-Aircraft Missile" (item :name "Anti-Aircraft Missile") :RPG-7 (item :name "RPG-7") :RPG-29 (item :name "RPG-29" :reference "Iraq 2007, an RPG-29 round penetrated the frontal ERA and hull of a Challenger 2 tank" :summary "Tandem charged HEAT round") "Cruise Missile" (item :name "Cruise Missile") "SAM Surface To Air Missile" (item :name "SAM Surface To Air Missile" :image "Modern/Missile.png"))) "Weapons of Mass Destruction" (section :name "Weapons of Mass Destruction" :itemmap (itemmap "Agent Orange" (item :name "Agent Orange") :Napalm (item :name "Napalm") "Cluster Bomb" (item :name "Cluster Bomb") "Smart Bomb" (item :name "Smart Bomb") "Block Buster" (item :name "Block Buster") "Bunker Buster" (item :name "Bunker Buster") "Fuel Air Explosive" (item :name "Fuel Air Explosive") "Naval Mine" (item :name "Naval Mine") "Nuclear Bomb" (item :name "Nuclear Bomb") "Fusion Bomb" (item :name "Fusion Bomb") "Dirty Bomb" (item :name "Dirty Bomb") "Nerve Gas Bomb" (item :name "Nerve Gas Bomb") :MIRV (item :name "MIRV") "Neutron Bomb" (item :name "Neutron Bomb") "Plague Bomb" (item :name "Plague Bomb") "Tactical Nuclear Bomb" (item :name "Tactical Nuclear Bomb") "Tactical Nuclear Cruise Missile" (item :name "Tactical Nuclear Cruise Missile") "Strategic Nuclear Bomb" (item :name "Strategic Nuclear Bomb") "Nuclear Cruise Missile" (item :name "Nuclear Cruise Missile") "Nuclear Ballistic Missile" (item :name "Nuclear Ballistic Missile"))))))
nx/tactics/books/combat / chapter_advanced_weaponry
Description:
Function Name:
  • chapter_advanced_weaponry
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_advanced_weaponry : base/chapter (chapter :name "Advanced Weaponry" :sectionmap (sectionmap "Advanced Melee Weapons" (section :name "Advanced Melee Weapons" :itemmap (itemmap "Beam Saber" (item :name "Beam Saber" :summary "* Rotating ionizing lasers on the hilt create a hollow magnetic bubble in the form of a saber. The light and color are caused by the air molecules ionizing in the lasers. Any contact with a solid object or another magnetic field creates a breach in the bubble which triggers a plasma burst in the hilt that instantly travels down the bubble and exits the breach with burning explosive effect.") "Lightning Saber" (item :name "Lightning Saber" :summary "* Rotating ionizing lasers on the hilt create a hollow magnetic bubble in the form of a saber. The light and color are caused by the air molecules ionizing in the lasers. Any contact with a solid object or another magnetic field creates a breach in the bubble which triggers an electric pulse in the hilt that instantly travels down the bubble and exits the breach with shocking effect.") "Shock Lance" (item :name "Shock Lance"))) "Futuristic Hand Guns" (section :name "Futuristic Hand Guns" :itemmap (itemmap "9mm Cone Pistol" (item :name "9mm Cone Pistol" :summary "* The modern upgrade to the traditional firearm. Cone weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for weightlessness. Cone weapons are cheap, reliable, and versitile. * Cone weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Gyrojet Pistol, Rocket Pistol") "Liquid Sprayer Pistol" (item :name "Liquid Sprayer Pistol" :titles "Acid Pistol") "100W Laser Pistol" (item :name "100W Laser Pistol") "Lightning Pistol" (item :name "Lightning Pistol"))) "Futuristic Rifles" (section :name "Futuristic Rifles" :itemmap (itemmap "5.56mm Needle Rifle" (item :name "5.56mm Needle Rifle") "7.62mm Cone Rifle" (item :name "7.62mm Cone Rifle" :summary "* The modern upgrade to the traditional firearm. Cone weapons fire rocket-propelled, recoilless rounds. These rounds can be large calibur while maintaining a high fire rate and no recoil making them especially well suited for weightlessness. Cone weapons are cheap, reliable, and versitile. * Cone weapons may carry varying payloads including: AP, HE, HEAT, chemical, incediary, and underwater rounds." :titles "Gyrojet Rifle, Rocket Rifle") "Gauss Rifle" (item :name "Gauss Rifle") "Liquid Sprayer Rifle" (item :name "Liquid Sprayer Rifle" :titles "Acid Rifle") "500W Laser Rifle" (item :name "500W Laser Rifle") "Microwave Rifle" (item :name "Microwave Rifle") "Lightning Rifle" (item :name "Lightning Rifle"))) "Futuristic Vehicular Cannons" (section :name "Futuristic Vehicular Cannons" :itemmap (itemmap "Energy Attenuating Aerosol" (item :name "Energy Attenuating Aerosol" :summary "* A dense gas designed to absorb and refract energies that pass through it. This obscures vision and greatly weakens lasers and other direct energy weapons that pass through it." :titles "Anti-Laser Gas") "20mm Light Gauss Cannon (LGC)" (item :name "20mm Light Gauss Cannon (LGC)" :titles "Railgun") "1.5kW Laser Cannon" (item :name "1.5kW Laser Cannon") "15MW Light Laser Cannon" (item :name "15MW Light Laser Cannon") "Light Particle Cannon" (item :name "Light Particle Cannon") "Light Shock Cannon" (item :name "Light Shock Cannon") "Light Sonic Cannon" (item :name "Light Sonic Cannon") "30mm Medium Gauss Cannon (MGC)" (item :name "30mm Medium Gauss Cannon (MGC)" :titles "Railgun") "40mm Heavy Gauss Cannon (HGC)" (item :name "40mm Heavy Gauss Cannon (HGC)") "25MW Medium Laser Cannon" (item :name "25MW Medium Laser Cannon") "Medium Gattling Laser Cannon" (item :name "Medium Gattling Laser Cannon") "Medium Sniper Laser Cannon" (item :name "Medium Sniper Laser Cannon") "35MW Heavy Laser Cannon" (item :name "35MW Heavy Laser Cannon"))) "Futuristic Missiles" (section :name "Futuristic Missiles" :unitmap (unitmap "Swarmer Missiles" (unit :name "Swarmer Missiles" :image "HighTech/SwarmerMissiles.png" :summary "* Swarmer Missiles are clusters of low yield homing missiles that seek to overwhelm targets with their numbers. * Like all missiles, the first turn they move they only move half their movement. * Only weapons with Auto or other Swarmer Missiles can functionally destroy these missiles."))) "Futuristic Vehicular Melee Weapons" (section :name "Futuristic Vehicular Melee Weapons" :itemmap (itemmap ".65MW Plasma Lance" (item :name ".65MW Plasma Lance" :classification "Huge Melee" :energy "1.95MJ" :modifiers "Energy") "Giant Armor Blades" (item :name "Giant Armor Blades") "Giant Armor Spikes" (item :name "Giant Armor Spikes") "Giant Chain Sword" (item :name "Giant Chain Sword") "Giant Explosive Lance" (item :name "Giant Explosive Lance") "Giant Extending Arm" (item :name "Giant Extending Arm") "Giant Grenade" (item :name "Giant Grenade") "Giant Haywire Grenade" (item :name "Giant Haywire Grenade") "Giant Haywire Lance" (item :name "Giant Haywire Lance") "Giant Haywire Whip" (item :name "Giant Haywire Whip") "Giant Heavy Grenade" (item :name "Giant Heavy Grenade") "Giant Lance" (item :name "Giant Lance") "Giant Mace" (item :name "Giant Mace") "Giant Morning Star" (item :name "Giant Morning Star") "Giant Mauler" (item :name "Giant Mauler" :summary "* Giant grinding melee weapon") "Giant Net Gun" (item :name "Giant Net Gun") "Giant Spike Gun" (item :name "Giant Spike Gun") "Giant Vibroaxe" (item :name "Giant Vibroaxe") "Giant Vibroblade" (item :name "Giant Vibroblade") "Giant Vibroclaws" (item :name "Giant Vibroclaws") "Giant Vibrorapier" (item :name "Giant Vibrorapier") "Giant Vibrosword" (item :name "Giant Vibrosword") "Giant Whip" (item :name "Giant Whip"))) "Futuristic Weapons of Mass Destruction" (section :name "Futuristic Weapons of Mass Destruction" :itemmap (itemmap "Spinal Nava Cannon" (item :name "Spinal Nava Cannon") "Spinal Rail Gun" (item :name "Spinal Rail Gun") "Spinal Wave Cannon" (item :name "Spinal Wave Cannon" :summary "* An enormously powerful energy cannon capable of enormous damage over a large area." :titles "Death Star Cannon, Wave Motion Gun")) :unitmap (unitmap "Star Mine" (unit :name "Star Mine" :summary "* Star Mines are basically Star Torpedoes that have been left floating in space near likely enemy traffic. The mines are smart and will only attack selected targets and can act as spy satellites by transmitting what their sensors are picking up. When given the order, the Star Mine rockets off toward its victim. Though inefficient in space because of the vast distances, they still can be effective by limiting an opponent's options or when used as traps at key locations." :titles "Space Mine") "Sentry Spy Satellite" (unit :name "Sentry Spy Satellite" :summary "* Sentry Spy Satellites are small disposable surveillence satellites that are hidden in asteroid or debris fields to monitor activity and transmit that information back home. They are sometimes armed with a Star Torpedo for a surprise attack.") "Star Torpedo" (unit :name "Star Torpedo" :summary "* Star Torpedoes carry Nuclear weapons (tactical or greater). In space, nuclear weapons produce no shockwave, just intense radiation. Even direct hits are not guaranteed to pierce the diamond hard ceramic armor of modern warships, so penetration is critical.") "Colony Drop" (unit :name "Colony Drop" :reference "Mobile Suit Gundam") "Planet Bomb" (unit :name "Planet Bomb" :reference "Star Blazers, Starship Troopers" :summary "* Asteroids or comets redirected to fall on a planet.") "Plague Planet Bomb" (unit :name "Plague Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of infectious diseases to infect a population. Victims do not immediately show signs of infection to maximize the contagion and paranoia.") "Rage Planet Bomb" (unit :name "Rage Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of parasites that turns infected creatures into rabid killers who spread the infection.") "Famine Planet Bomb" (unit :name "Famine Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of diseases that attack the food harvest of a planet attempting to break the food chain and cause mass starvation or force compliance.") "Pestilence Planet Bomb" (unit :name "Pestilence Planet Bomb" :summary "* An enormous, genocidal planet bomb that releases a series of parasites that infect insects, birds, and vermin. These creatures gain accelerated reproduction and high aggression to attack food supplies and the general population.") "Terraforming Planet Bomb" (unit :name "Terraforming Planet Bomb" :reference "Genesis - Star Trek II") "Hellbore Planet Bomb" (unit :name "Hellbore Planet Bomb" :summary "* A missile that detonates a series of shaped nuclear blasts to tunnel into a geological fault or a volcano where it attempts to cause a massive natural disaster.") "Planet Buster" (unit :name "Planet Buster" :reference "Anti-Matter Missile - Star Blazers" :summary "* A missile designed to be part of a massive bombardment to shatter a planet's crust and return it to a molten state. Already unstable planets may break up into rubble.") "Starkiller Missile" (unit :name "Starkiller Missile" :reference "Sunshine" :summary "* A missile designed to be part of a massive bombardment to disrupt the nuclear chain reaction in a star. This can result in massive solar flares, a cooling of the star, or cause the star to go nova depending on the age and size of the star."))))))
nx/tactics/books/core_rules
Description:
Package Name:
  • nx/tactics/books/core_rules
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_core_overview, chapter_lets_play, chapter_common_rules, chapter_tokens, chapter_core_scenarios, chapter_core_maps
Source Code:
  • (package nx/tactics/books/core_rules :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Core Rules" :image "warrior_msleal_full.jpg" :chaptermap (base/chaptermap "Core Overview" (chapter_core_overview) "Let's Play" (chapter_lets_play) "Common Rules" (chapter_common_rules) "Tokens" (chapter_tokens) "Core Scenarios" (chapter_core_scenarios) "Core Maps" (chapter_core_maps) ))) (func chapter_core_overview : base/chapter (chapter :name "Core Overview" :summary "* Round - Each Unit takes their turn. When all Units have taken their turn or passed, the Round ends. * Turn - Each Unit takes a Turn during a Round. ** Turn Order - Units take turns in order of the highest [Body] to lowest. The largest units are the most predictable and must activate first. ** Facing - At any time during your turn, you may change your facing by 45 degrees to any adjacent direction of the 8 compass directions. You may change your facing a maximum of 2 times (a total of 90 degrees) during your turn regardless of how many Move actions you take. ** Actions - The current may take up to 2 Actions during its Turn. *** Move **** Simple Move - **** Accelerate - **** Brake - **** Drift - ** Interrupt - During the Unit's Move, any smaller Unit may interrupt the current Unit and take its Turn immediately. When it has finished its Turn, the interrupted Unit continues. Multiple chained interrupts are possible this way. ** Abilities - Each [Unit] may use up to 2 [Abilities] each [Turn]. There are 3 types of [Ability]: [Move], [Attack], and [Action] abilities. They may be performed in any order but there may only be one [Move] or [Attack] [Ability] used in a turn. So the following are the allowed combinations: Move/Attack, Attack/Move, Move/Action, Action/Move, Attack/Action, Action/Attack, Action/Action. Damage Cards: Ammo Damaged Armor Rupture * Armor Breach Cargo Damage * Individual - Lost ammo, water, food * Team - Lost ammo, water, food * Vehicle - Lost fuel, ammo, water, food, reaction mass * Ship - Lost fuel, ammo, water, food (submarine: air) * Starship - Lost fuel, ammo, propellant, air, water, food Crew Damage Command Failure * Command Control Failure - Commands may not be issued to teams outside command. * Helm Control Failure - Cannot change speed or heading until rerouted. * Navigation Control Failure - Cannot plot courses or use maps until rerouted. * Communication Control Failure - Cannot use communications until rerouted. * Sensor Control Failure - Cannot use sensors until rerouted. * Weapon Targetting Control Failure - May only fire at current target with current weapon. Communication Failure Sensor Control Failure * Throttle Failure - Cannot increase speed. * Throttle Failure - Cannot maintain speed. Must increase or decrease speed. * Throttle Failure - Cannot reduce speed. * Steering Failure - Cannot turn left. * Steering Failure - Cannot maintain course. Must turn. * Sterring Failure - Cannot turn right. * Steering Failure - Cannot ascend. * Steering Failure - Cannot maintain altitude. Must ascend or descend. * Sterring Failure - Cannot descend. * Navigation Failure - Cannot plot a course or use maps. * Unstable Controls - Must drift each turn if able. Power Plant Damage * Engine Overheat - -1 Max Power generation * Electrical Short - -1 Max Power generation and chance of fire. * Electrical Overload - 1 Random System loses power until reset. Equipment Failure Fire * Individual - Clothes or hair catches fire * Team * Vehicle - Engine Fire Life Support Failure * Vehicle - * Ship - Air (submarine: heat, pressure) * Starship - Air, heat, pressure Movement Failure * Individual - Leg or Foot Damage * Team - Some members can't move without help. * Vehicle - Flat tire, slipped tread * Ship - * Starship - Reduced Visibility * Individual - Temporay Blindness (Sweat, dust, blood, smoke) * Team - Temporay Blindness (dust, smoke) * Vehicle - (dirt on windshield, smoke) * Ship - Smoke, Sensor Failure * Starship - Sensor Failure Structural Damage * Bulkhead Breach * Hull Breach Weapon Damage" :sectionmap (sectionmap "Why Tactics: Core Rules?" (section :name "Why Tactics: Core Rules?" :summary "* Tactics is a tactical combat system designed to be played as a board game, a tactical combat game, or as a replacement for the combat portion of a Role Playing Game. The design goal of Tactics is to simplify the elements of tactical combat while allowing the addition of modules that provide different levels of detail to allow each game to simulate just the aspects the players are interested in. * Tactics: Core Rules is designed to get players started with the Tactics system and allow any number of players to play Tactics as a pickup game. * Setup, gameplay, and winning conditions are all designed to keep things moving. * So why are you still reading this? Start playing!") "Tactics Design Foundation" (section :name "Tactics Design Foundation" :summary "* Simple Core Rules * Any Scale * Any Genre - Ant Colonies to Elves to the Iraq War to Galactic Empires, Realism, History, Fantasy, Sci-Fi, Movies, Anime, and Pulp Fiction in any combination. * Any Scenario - Any scenario with any number of players * Level of Detail - Selective Realism, Modular * Asymmetrical Sides * Reenactments * Army Building * Consistent mechanics - I don't like rule books or tables. I like detail, but not when I have to look it up. * Simple math - The general rule is each modifier can add or subtract 1 from an ability. Where possible, keep it simple. * Six-sided dice - Square dice have perfect symmetry, are well known, and are common. * Many dice - Rolling lots of dice is satisfying. The more dice rolled the more predictable the result on a bell curve. This allows low level abilities to have a realistic chance of rolling a high number while offering high level abilities increasing consistency. * Opposed rolls - Rolling dice against other dice allows for both sides to take part in each conflict. Even when there is no opponent there is still fickle fate to vex you. * Open-ended rolls - Open-ended dice allows even the most outmatched opponent a chance at victory (e.g. David and Goliath). * Critical Hits - Critical Hits keeps the game from becoming too predictable. Unlike open-ended rolls, however, Criticals provide an opportunity to allow flavor and choice into the game. * Skills - It is tough to raise skills. Surviving through many situations teach you how to survive again. * Terrain and Situation - Taking advantage of the situation is the great equalizer. Outflanking, High Ground, Surrounding are critical advantages in combat. * Equipment - Equipment makes a difference, but a suit of armor on an unskilled opponent is not much of a challenge.") "How does Tactics compare to other games?" (section :name "How does Tactics compare to other games?" :summary "* Vs. Board Games * Board games successfully capture the essence of reality while providing very simple mechanics to allow games to progress quickly and smoothly. The problem with board games is that each game targets only one view of a situation and generally cannot be expanded or modified without breaking the core premise of the game. Generally this leads to numerous different games that describe the same material (e.g. Star Wars). Each game focuses on a different aspect of the material with varying degrees of success and almost no overlap. Once the scenarios of the game are exhausted, the game loses public interest. Tactics seeks to create a system that can absorb new genres and new material and even allow units from different genres to battle one another. It also seeks to allow the elegant game play that board games offer by keeping the core rules simple and expandable. * Vs. Collectible Games * Collectible Games reinvented the classic board game. Instead of fixed rules, the rules were changeable. These changes can take 2 forms: a new expansion set can introduce new rules and environments, and each card may introduce modifications to existing rules. This approach is brilliant when applied correctly. Each expansion can be a standalone game or a supplement to the original game depending on what is agreed upon before play begins. The problems, however, are numerous. Because Collectible Games are extremely profitable, they tend to create unbalanced, 'power' cards that drive up sales but destabilize the game. I suspect that most of the manufacturers are aware of this problem, but because they are profit driven they are unable to avoid this trap. Another brilliant component of Collectible Games is the notion of a player 'building a deck' that is uniquely constructed using the build rules appropriate to the game. This idea allows each match to be entirely unique and variation is only limited by the imagination of the players. The downside of this is again associated with profits. Constructed decks are very expensive. Casual players lack the patience and resources to construct competitive decks, so games heavily favors the richest, most obsessed player instead of the most skilled player. Tactics seeks to avoid these problems by being free, by keeping deck construction rules simple, and by offering a number of preconstructed scenarios. This allows casual players to jump right into the action while allowing hard core players to enjoy themselves by increasing the level of detail instead of increasing the power level. * Vs. Tactical Games * Tactical games have a good understanding of unit tactics, but often do not functionally support individual characters and often over-complicate modifiers and oversimplify rolls and damage. Tactical games are almost universally inappropriate for individual character combat. * Vs. Role-playing Games * RPG games have a strong tactical combat element to them, but they simultaneously over-complicate individual actions while largely ignoring the tactical elements of small unit combat. Tactics attempts to bridge this gap and connect tactical combat with the RPG.")))) (func chapter_lets_play : base/chapter (chapter :name "Let's Play" :summary "All games start with Setup, consists of a series of Rounds where each unit gets to move and act, and ends when someone achieves Victory." :sectionmap (sectionmap "Choose a Scenario" (section :name "Choose a Scenario" :summary "* Choose a [Scenario], generate a [Scenario] or pick one randomly from the [Scenarios] section of this or any other Tactics book. * [Scenario Difficulty] - Each [Scenario] has a [Difficulty] rating. For the first game, choose Easy. * [Victory Conditions] - Each Scenario defines its own objectives. * [Special Rules] - If the [Scenario] has [Special Rules], then these rules should be used for this [Scenario]. * [Optional Rules] - If the [Scenario] has [Optional Rules], then you may choose to use any or all of them. Remember that more [Rules] tends to increase game time and complexity. For the first game, ignore [Optional Rules]. * Gather the required number of [Unit] tokens for this [Scenario]. * Gather one of each of the [Unit] cards, [Terrain] cards, and [Rule] cards in use for this [Scenario]. * If the [Scenario] has a number of [Turns], then set the [Turn Clock] to this number.") "Choose Teams" (section :name "Choose Teams" :summary "* Each [Scenario] describes a number of [Teams]. Any number of [Players] may be on a [Team]. * Determine which [Players] are on each [Team] in any way you choose. * [Players] should sit with their [Team], preferably facing their opponents. For the first game, determine [Teams] randomly. * One [Team] on the [Scenario] is marked with a *. This [Team] has the [Initiative] and goes first.") :Setup (section :name "Setup" :summary "* Choose the [Map] described in the [Scenario] and lay it out like this: [image:MapDeploy.png]. * Look at the [Deploy] section of the [Scenario]. * Starting with the [Team] with [Initiative], alternate placing [Terrain] on the Map until all [Terrain] has been placed. * Starting with the [Team] with [Initiative], alternate placing their [Units] on the [Map].") "Game Start" (section :name "Game Start" :summary "Before starting remember the following Golden Rules: * Trump - Any special rules in a scenario override the standard rules. * Rounding - All fractions are ignored.") "Turn Start" (section :name "Turn Start" :summary "* Pass Initiative - If the [Team] with [Initiative] wishes to give the initiative to the next [Team], they may do so ONLY if they have fewer units left to activate than the next [Team]. * The [Team] with [Initiative] now chooses any [Unit] in their [Team] to activate. Once a [Unit] is activated, it may not be activated again this turn until all units have been activated. * If that [Team] has no unit to activate, then [Initiative] is passed clockwise to the next [Team].") "Turn Sequence" (section :name "Turn Sequence" :summary "* Resolve Tokens - Remove 1 [White Token] from [Unit], then resolve any specific token effects. * Perform Actions - The [Unit] may perform any 2 of the following but may not perform more than 1 of the same type except [Move]. I.e. You may [Move], [Move] or [Move], [Attack] but not [Attack], [Attack]. ** [Attack] - Use any weapon or ability on the [Unit] that says [Attack]. ** [Ability] - Use any ability on the [Unit] that says [Action]. ** [Move] - Move up [Speed]. ** [Block] - +1 [Defense], +1 [Armor] but may not [Attack] this turn. ** [Dodge] - +1 [Defense], -1 [Attack]. ** [Wait] - Await the action of another [Unit]. This allows [Reaction] during their turn. ** [Recover] - Remove 1 [White Token] from the [Unit]. ** [Change Weapon] - Draw a weapon or change weapons. ** [Go Prone] - Add [Prone] Token to [Unit]. This provides +1 [Defense] vs. Ranged and -1 [Defense] vs. Melee. ** [Stand] - Remove [Prone] Token from [Unit]. * Resolve Actions ** [Skill Roll] - Roll a number of dice equal to the [Skill Level] of the [Ability] chosen. ** [Defense Roll] - Each defender rolls a number of dice equal to its [Defense]. ** [Damage Roll] - Roll a number of dice equal to the [Damage Rating] of the weapon. ** [Armor Roll] - Roll a number of dice equal to the [Armor Rating] of the defender. Note: When defending vs. [Blunt] weapons, the defender may use his [Body] instead of [Armor Rating]. ** [Hits] and [Criticals] ** When the [Unit] has completed its activity this turn, then [Initiative] is passed clockwise to the next [Team].") "Turn End" (section :name "Turn End" :summary "* If all [Units] have been activated and the [Turn Clock] is used, reduce it by 1. * Check for [Game Over] conditions. If not, then begin a new turn.") "Game Over" (section :name "Game Over" :summary "The game ends when any of the following occur: * Last Round Ends * No Enemy Units Remain * Complete Victory condition achieved by any team * Winning - Each [Team] that acheived a [Complete Victory] condition wins. If no [Team] acheived a [Complete Victory], then each [Team] that acheived a [Partial Victory] condition wins. Winners gain the [Rewards] for the scenario, if any. * Ties - Ties are allowed, though any [Rewards] gained are divided by the number of winners.")))) (func chapter_common_rules : base/chapter (chapter :name "Common Rules" :sectionmap (sectionmap "Anatomy of a Unit" (section :name "Anatomy of a Unit" :summary "Scale: Ratings: * Attribute and Skill Rating - Each unit is rated at a certain level in a number of attributes and skills. Attributes rate the power, resistance, and damage capacity in the following areas: Body, Mind, and Spirit. Value is an overall rating of the cost of the unit to aquire or recruit. Skills rate the varied abilities in which this unit is proficient. * Level:Scale - Each Rating has two parts: Level and a Scale. The Level is a number from 2 to 10, and the Scale is the number of zeroes added after that number. E.g. 5000 becomes 5:3 (Rating 5 : Scale 3). * Level/Intensity - ** No Rating - Challenged. Everyday tasks are difficult. ** Rating 1:0 - Everyday. Most people get by with this rating. ** Rating 2:0 - Everyday. Most people get by with this rating. ** Rating 3:0 - Competent. Most healthy adults have some attributes and skills in this range. ** Rating 4:0 - Competent. Most healthy adults have some attributes and skills in this range. ** Rating 5:0 - Veteran. Well trained and highly experienced. Veteran Marines, Commandoes, Paratroopers, SS. ** Rating 6:0 - Elite. Highest level of training and experience. Special Forces, SAS, Delta Force, Navy SEALs, Airborne Rangers, Green Berets. ** Rating 7:0 - World Class. Highest training and natural ability. Olympic Athletes, Nobel-winning scientists, Top martial artists. ** Rating 8:0 - World Class. Highest training and natural ability. Olympic Athletes, Nobel-winning scientists, Top martial artists. ** Rating 9:0 - Legendary. Realistic Human maximum. Einstein, James Bond. ** Rating 1:1+ - Superhuman. * Scale/Severity - The second part of an attribute or skill Rating is it's scale. Each scale represents a power of 10 greater than the last. The observable universe has a diameter of 9x10^26m or 9:26m, a mass of 1.5x10^53kg or 1.5:52g, and has 1x10^82 atoms. The Planck Length is 10^-35m or 1:-35m. The Tegmark theoretical distance to an identical universe to ours is 10^118m or 1:118m. ** Scale -2 - Insect Scale. Distance/Size=1cm(.3in), Speed=1cm/s(.3in/s), Mass=100g(~.2lb), Energy=1J, Force=1N(100g lifted 1m), Current=1W ** Scale -1 - Game Scale. Distance/Size=10cm(3.5in), Speed=10cm/s(3.5in/s, .3kph, .2mph), Mass=1kg(~2.2lb), Energy=10J, Force=10N(1kg lifted 1m), Current=10W(LED Light Bulb, Human energy use/s) ** Scale 0 - Human Scale. Distance/Size=1m(3ft), Speed=1m/s(3ft/s, 3.5kph, 2mph), Mass=10kg(~22lb), Energy=100J, Force=100N(10kg lifted 1m), Current=100W(Incandesent Light Bulb, Human energy use/s) ** Scale 1 - Vehicle/Giant Scale. Distance/Size=10m(33ft), Speed=10m/s(30ft/s, 35kph, 20mph), Mass=100kg(~220lb), Energy=1kJ, Force=1kN(100kg lifted 1m), Current=1kW. ** Scale 2 - Flight Scale. Distance/Size=100m(330ft, Football field), Speed=100m/s(330ft/s, 350kph, 200mph), Mass=1ton, Energy=10kJ, Force=10kN(1ton lifted 1m), Current=10kW. ** Scale 3 - Super Sonic Scale. Distance/Size=1km(3300ft, 0.6miles), Speed=1km/s(3300ft/s, 3500kph, 2000mph, Mach3), Mass=10ton, Energy=100kJ, Force=100kN(10ton lifted 1m), Current=100kW." :rulemap (rulemap :Body (rule :name "Body" :image "Tokens/BodyToken.png" :reference "* The nature of existence is obvious. The things I can see and touch are real." :summary "* Physical - The physical resistance of the unit. This is equal to the unit's highest Physical skill. Units with low Body are easily killed. * Body is determined by Mass. Fit human male: 8:1 (80kg/175lb). Fit human female: 6:1 (60kg/132lb)." :titles "Build, Constitution, Endurance, Physique, Size, Stamina, Strength, Toughness") :Mind (rule :name "Mind" :image "Tokens/MindToken.png" :reference "* You're that smart? Let me put it this way. Have you ever heard of Plato, Aristotle, Socrates? Yes. Morons. - Princess Bride * The nature of existence is misleading. The atoms of our bodies are 99.99% empty space. The actual particles making up every human alive could be compressed to the size of a sugar cube. We are walking, talking electromagnetic fields." :summary "* Mental - The mental strength of the unit. This is equal to the unit's highest Mental skill. Units with low Mind are easily fooled. * Mind is vaguely defined by IQ. IQ=Mind+50. Typical human Mind: 5:1 (100IQ). Brilliant human: 10:1 (150IQ)." :titles "Intelligence, Mental Clarity, Mental Strength, Perception, Problem Solving, Learning, Reason, Wits") :Will (rule :name "Will" :image "Tokens/SpiritToken.png" :reference "* I think, therefore I am. - Descartes, Cogito Ergo Sum * The nature of existence is subjective. I have experience and thoughts in this precise moment, beyond that I can prove nothing. Does time actually pass as I understand it? Is anything else but me real? Am I living in a dream/hallucination/simulation? Am I just insane? Our experience is the only thing we can be sure of. Therefore, we may as well choose to live as we see fit. No amount of evidence can definitively prove otherwise." :summary "* Emotional - The inner strength of the unit. This is equal to the unit's highest Willpower skill. Units with low Will are easily manipulated or collapse under pressure. * Will has no emperical formula. Typical human Will: 5:1. Phenomenal human Will: 10:1." :titles "Chi, Confidence, Determination, Ego, Emotion, Faith, Grit, Guts, Heart, Instinct, Ki, Mana, Perseverence, Resolve, Spirit, Spiritualism, Will, Willpower") :Speed (rule :name "Speed" :image "Tokens/SpeedToken.png" :summary "* The maximum movement speed of the unit. Each turn a player may move a [Unit] by spending 1 Speed for each space moved. * Speed is measured in Kilometers Per Hour (kph) or Miles Per Hour (mph), and at each scale a different number of spaces. * At Personal Scale, Mph = Speed * 5 (5-25mph) examples: 2=Crawl, 4=Walk, 6=Encumbered Human, 8= Human, 12=Dog, 16=Horse, 24=Bird. Limitations: * Units may not make more than 4 Facing changes in 1 [Turn].") :Level (rule :name "Level" :image "Tokens/CoinToken.png" :summary "* The overall power of the unit as well as its cost to purchase or develop. * Level is calcuated as follows: ** List each [Skill] level and [Power] level ordered by descending level. ** For each [Weakness], go down the list reducing top level by 1. ** Repeat the following until only 2 skills remain: *** Take the bottom 2 level numbers and replace them with the higher number + 1. E.g. 4 and 2 become 5, 4 and 4 become 5. ** When 2 skills remain the Level is the highest of the 2. E.g. 5 and 3 become Level 5." :titles "Cost, Level, Value") "Skills, Powers, Abilities, and Specialties" (rule :name "Skills, Powers, Abilities, and Specialties" :summary "* Skills - Skills describe the different skillsets that the unit possesses including combat skills. ** Examples - Melee, Mechanics, Physics, Medicine, and Military are Skills. ** Advancement - Raising Skill Levels becomes progressively harder the higher the level. * Powers - Powers are similar to skills, but normal humans cannot normally have powers. Powers include Magic and Superpowers as well. Creatures, vehicles and equipment may have powers. ** Examples - Wizardry, Fire, and Flight are Powers. ** Advancement - Raising Power Levels does not become progressively harder unlike Skill Levels. * Abilities - Abilities are perks that can be activated when the related Skill or Power is used. ** Examples - Roundhouse Kick is an Ability under the Close Combat Skill. ** Advancement - Gaining additional Abilities and Specialties is relatively easy. * Specialties - Specialties are similar to abilities, but instead of giving perks, specialties make it easier to gain abilities within that specialty. ** Examples - Swords is a Specialty under the Melee Skill. ** Advancement - Gaining additional Abilities and Specialties is relatively easy.") :Weaknesses (rule :name "Weaknesses" :summary "* Weaknesses are optional. They provide character flavor and reduce the [Level] of the unit/item.") "Flavor Text" (rule :name "Flavor Text" :summary "Whenever possible, interesting quotes or facts are included with the unit to help establish a mood."))) "Core Movement" (section :name "Core Movement" :rulemap (rulemap "Movement - Infantry" (rule :name "Movement - Infantry" :image "Rules/MoveInfantry.png" :summary "* [Move]: [-1 Speed] to move 1 Space in any direction. The [Unit] may change [Facing] to any side before or after moving."))) "Core Actions" (section :name "Core Actions" :rulemap (rulemap :Attack (rule :name "Attack" :summary "* Find the [Attack Rating] and the [Defense Rating]. * Draw two hands for each number and compare them. * Number cards 1-5 are Misses. Discard these. * Number cards 6-10 are Hits. Discard an equal number of these from both hands. It doesn't matter which numbers. * Face cards are Critical Hits.") "Targeting: Close Combat" (rule :name "Targeting: Close Combat" :image "Rules/TargetingCloseCombat.png") "Targeting: Melee" (rule :name "Targeting: Melee" :image "Rules/TargetingMelee.png") "Targeting: Reach" (rule :name "Targeting: Reach" :image "Rules/TargetingReach.png" :summary "* Reach") "Targeting: Ranged" (rule :name "Targeting: Ranged" :image "Rules/TargetingRanged.png" :summary "* Point Blank - Any attack with a ranged weapon at 10ft (3m) or less. +1 [Attack] with pistols, +1 [Defense] with other ranged weapons. * Effective Range - Ranged weapons have a normal attack within this range. About 30m for pistols. 90m for submachine guns. 300m+ for rifles. * Long Range - Attacks can be made beyond the normal range, but their accuracy drops off quickly. +1 [Defense] for each 10% more than effective range.") "Line of Sight" (rule :name "Line of Sight" :image "Rules/LineOfSight.png" :summary "* Line of Sight is usually required to use any Ranged Ability. * Determine Line of Sight: In order to have line of sight, use a 1 space wide straight edge to connect the attacker to one of the spaces of the target. * Line of Sight is determined by counting the number of points on the space under the target that are visible. ** 5-6 points: Clear Line of Sight. ** 4 points: Obstructed [+1 Defense] ** 3 points: Highly Obstructed [+2 Defense] ** 2 points: Hidden [+3 Defense] ** 1 point: Barely Visible [+4 Defense]") :Cover (rule :name "Cover" :summary "* Any [Unit] may hide directly behind an object to reduce their profile. ** If 50%+ cover: [+1 Defense] ** If the attack succeeds, roll 1 Cover die if over 50% cover and 1 additional die if over 90% cover. If any Cover die results in a hit, the cover blocks the attack and the [Armor] of the Cover is applied first with any remaining damage rolled against the Unit. * For Example: Hiding behind a curtain provides +1 Defense but no other benefit while hiding behind a stone wall may allow the wall's armor to be used before the Unit is struck.") "Extended Action" (rule :name "Extended Action" :summary "* Extended Actions take more time than ordinary [Action]s. * Extended Actions have a Duration which tells how long each [Action] takes to perform. * First perform a normal [Action]. Any [Hit]s scored reduce the [Target Number]. Any [Contested Hit]s increase the [Contested Number]. * The [Target Number] cannot exceed its original value, but instead trigger [Critical Failure]s if any."))) :Reactions (section :name "Reactions" :rulemap (rulemap "Opportunity Action" (rule :name "Opportunity Action"))) :Resolution (section :name "Resolution" :rulemap (rulemap "Attack Roll" (rule :name "Attack Roll" :image "Tokens/SkillToken.png" :summary "* Tactics uses large numbers of standard 6 sided dice. White Dice are preferred for most rolls. * Each 4, 5, or 6 rolled is a [Critical Hit]. * Each 6 rolled lets you roll an additional die. * If the modified ability roll is 0, then the ability may not be used.") "Critical Roll" (rule :name "Critical Roll" :image "Tokens/CriticalToken.png") "Critical Hit" (rule :name "Critical Hit" :summary "* Each Critical Hit can be traded for a [Stun], or any token type that the particular attack used can produce (e.g. Flaming Arrows can produce [Fire] tokens).") "Critical Failure" (rule :name "Critical Failure") "Defense Roll" (rule :name "Defense Roll") :Hit (rule :name "Hit") "Armor Rating" (rule :name "Armor Rating" :summary "Units with an Armor rating make [Defense Roll]s normally, but if any [Hits] are scored and the Armor Rating exceeds the defense dice rolled, then roll additional defense dice equal to the difference.") "Damage Rating" (rule :name "Damage Rating" :summary "When a weapon has a Damage rating, it makes its [Ability Roll] normally, but if any [Hits] are scored and the Damage Rating exceeds the attack dice rolled, then roll additional attack dice equal to the difference."))) "Combat Effects" (section :name "Combat Effects" :rulemap (rulemap "Aerial Maneuver" (rule :name "Aerial Maneuver") :Combination (rule :name "Combination") "Crouching Maneuver" (rule :name "Crouching Maneuver") :Knockback (rule :name "Knockback") :Knockdown (rule :name "Knockdown"))) "Core Situational Rules" (section :name "Core Situational Rules" :rulemap (rulemap :Altitude (rule :name "Altitude" :image "Tokens/AltitudeToken.png" :reference "It's over Anakin....I have the HIGH ground. - Obi-Wan Kenobi, Star Wars III" :summary "* [Move]: Flying units may gain an Altitude Token by spending [2 Move]. * [Move]: Flying units may discard any number of Altitude Tokens at any time. It gets [+1 Move] for each lost Altitude until the end of the [Turn]. * [Action]: +1 [Attack] vs. [Unit] at lower Altitude * [Defense]: +1 [Defense] vs [Unit] at lower Altitude") "Dug In" (rule :name "Dug In" :summary "* [Action]: Any ground unit may use an [Action] to 'dig in', gaining [+1 Defense] until it moves from the space (even involuntarily). * Note: Dug In benefit is cumulative with [Stand Your Ground].") :Facing (rule :name "Facing" :image "Maps/Facing.png" :summary "* 1 - Fixed Forward. * 2 - Left Forward. * 3 - Right Forward. * Note: When necessary to determine direction randomly, roll a die and use the chart to choose direction.") :Flanking (rule :name "Flanking" :image "Maps/Flanking.png" :summary "* 4 - Left Flank: [+1 Attack] * 5 - Right Flank: [+1 Attack] * 6 - Blind Spot: [+2 Attack]") :Hazard (rule :name "Hazard") :Prone (rule :name "Prone") "Stand Your Ground" (rule :name "Stand Your Ground" :summary "* [Action]: [+1 Action] if you do not move this turn.") :Surrounded (rule :name "Surrounded" :image "Maps/Surrounded.png" :titles "Outnumbered") :Terrain (rule :name "Terrain") "Terrain Hazard" (rule :name "Terrain Hazard"))) "Core Terms" (section :name "Core Terms" :rulemap (rulemap :Action (rule :name "Action" :summary "* The [Unit] may spend half of its [Speed] to use any [Ability] on its [Card]. Note: if the [Unit] is only able to move 1 space this turn, it may still take an Action.") :Card (rule :name "Card") :Collision (rule :name "Collision" :summary "* When 2 units collide, they each Roll [Body]+[Speed] vs. [Armor] against each other. * Either, both, or neither may take damage.") :Difficulty (rule :name "Difficulty" :summary "* Easy - Quick Game with Basic Rules * Medium * Difficult * Epic - Maximum complexity (and detail). Often long play or part of a [Campaign].") :Initiative (rule :name "Initiative" :summary "* Initiative is determined by Spirit. Unit act in order of initiative from lowest to highest. Before any Action, a unit with higher initiative may interrupt the current unit and take its turn.") "Large Unit" (rule :name "Large Unit") :Map (rule :name "Map") "Optional Rules" (rule :name "Optional Rules") :Player (rule :name "Player") :Rule (rule :name "Rule") :Scenario (rule :name "Scenario") :Space (rule :name "Space") :Team (rule :name "Team") "Turn Clock" (rule :name "Turn Clock") :Unit (rule :name "Unit")))))) (func chapter_tokens : base/chapter (chapter :name "Tokens" :sectionmap (sectionmap "White Tokens" (section :name "White Tokens" :summary "White Tokens represent temporary conditions that will pass quickly. * [Activate]: Remove one White token." :rulemap (rulemap :Duration (rule :name "Duration" :summary "* Duration tokens are placed on an ability card when it is activated. * When the ability no longer has any duration tokens, it is removed.") :Morale (rule :name "Morale" :image "Tokens/MoraleToken.png" :summary "-1 [Spirit] * A unit must move 1 space away from the source of the attack/damage for each Morale Token received. * If it already has Morale tokens, it must roll Morale tokens vs. [Spirit] and must move additional spaces for any [Hits]. * This movement does not cost [Speed], but if the unit is blocked from moving away it will suffer a [Collision] of Speed equal to the number of remaining [Hits]. * [Anytime]: If [Morale] >= [Spirit] then the unit will take no [Actions], move at its best speed away from any opponents, and will leave the map if able.") :Stun (rule :name "Stun" :image "Tokens/StunToken.png" :summary "-1 [Mind] -1 [Defense] -1 [Speed] -1 [Skill] * [Move]: If [Stun] >= [Mind], then make a full Move along a random path. * [Action]: If [Stun] >= [Mind], then the unit is confused and may not perform an [Action]. * [Anytime]: If [Stun] >= [Body], then replace the excess Stun with [Damage] tokens."))) "Black Tokens" (section :name "Black Tokens" :summary "* Permanent Effects that will not normally be removed during a battle such as Damage." :rulemap (rulemap "Suffering Damage" (rule :name "Suffering Damage") "Treating Damage" (rule :name "Treating Damage" :summary "* Blood Loss, if present, should usually be treated first. This is because Blood Loss can cause death in as little as 4 minutes from a single wound. * Shock, if present, should be treated next. It can kill in as little as 30 minutes. * Eventually fatal wounds, if any, should be treated next. These wounds become progressively worse kill in from 1 hour to 9 days. * Lastly, the wound itself should be treated. Untreated wounds take twice as long to heal on their own.") "Healing Damage" (rule :name "Healing Damage") :Damaged (rule :name "Damaged" :image "Tokens/DamageToken.png" :summary "-1 [Body] -1 [Defense] -1 [Speed] for every 2 -1 [Skill] * [Anytime]: If [Damaged] >= [Body], then the unit is incapacitated. * [Anytime]: If [Damaged] >= 2x [Body], then the unit is dead. * [Anytime]: If [Damaged] >= 3x [Body], then the unit is completely destroyed.") "Blood Loss Damage" (rule :name "Blood Loss Damage") "Broken Bone Damage" (rule :name "Broken Bone Damage") "Burn Damage" (rule :name "Burn Damage" :summary "* Burn Damage is characterized by shallow wounds with great surface damage. Fire, Acid, Cold, Abrasions, and Radiation all produce Burn Damage.") "Concussive Damage" (rule :name "Concussive Damage" :summary "* Concussive Damage affects the entire target at once in a Shockwave. Explosions, Sonic, Vibrations, sudden decelerations like falling and crashes all produce concussive damage.") "Impact Damage" (rule :name "Impact Damage" :summary "* Impact Damage is characterized by a generalized blunt trauma in a relatively small area.") "Nerve Damage" (rule :name "Nerve Damage") "Puncture Damage" (rule :name "Puncture Damage" :summary "* Puncture Damage is characterized by a deep wound with little surface damage.") "Shock Damage" (rule :name "Shock Damage" :summary `* Shock is a life-threatening medical condition as a result of insufficient blood flow throughout the body. Shock often accompanies severe injury or illness. Medical shock is a medical emergency and can lead to other conditions such as lack of oxygen in the body's tissues (hypoxia), heart attack (cardiac arrest) or organ damage. It requires immediate treatment as symptoms can worsen rapidly. * Types of Shock: ** Septic shock is caused by bacteria. It is treated with antibiotics and fluids. ** Anaphylactic shock is caused by hypersensitivity or allergic reaction. If is treated with diphenhydramine (Benadryl), epinephrine (an "Epi-pen"), and steroid medications (solumedrol). ** Cardiogenic shock is from heart damage. It is treated by identifying and treating the underlying cause. ** Hypovolemic shock is from blood or fluid loss. It is treated with fluids (saline) in minor cases, and blood transfusions in severe cases. ** Neurogenic shock is from spinal cord trauma. It is the most difficult to treat as spinal cord damage is often irreversible. Immobilization, anti-inflammatories such as steroids and surgery are the main treatments.`) "Sickness Damage" (rule :name "Sickness Damage" :summary "* Sickness Damage is characterized by physical and mental weakness. Poison, Disease, and Radiation can all cause Sickness.") "Slash Damage" (rule :name "Slash Damage" :summary "* Slash Damage is characterized by long surface wounds of varying depth. If the wounds are sufficiently deep they may remove entire extremities."))) "Red Tokens" (section :name "Red Tokens" :summary "* Red tokens represent continuous Effects that will eventually lead to death such as Bleeding and Fire. * [Activate]: Add one Stun token." :rulemap (rulemap :Bleeding (rule :name "Bleeding" :image "Tokens/BleedingToken.png" :summary "* Each turn add 1 [Stun] token Any adjacent [Unit] may use an [Action] to extinguish 1 Fire token." :titles "Bloody, Serrated, Sharp") :Burning (rule :name "Burning" :image "Tokens/FireToken.png" :summary "* [Activate]: Roll Fire tokens vs. [Defense]. * [Hits] are [Damage] tokens. * [Critical Hits] are additional Fire tokens. Also, a random adjacent space gains Fire tokens equal to the [Critical Hits] * If no [Hits] are scored, remove a Fire Token. * Any adjacent [Unit] may use an [Action] to extinguish 1 Fire token." :titles "Burning, Fiery, Flaming") "Choking Damage" (rule :name "Choking Damage" :summary "* This includes any obstruction of airways such as smoke, water, sand, fungus, disease, physical choking, etc. It also includes damage to filters and other aspiration/ventilation systems on machines."))) :Status (section :name "Status" :rulemap (rulemap :Death (rule :name "Death" :reference "* Tomorrow is a hope, never a promise. - Kindred (Lamb), Runeterra")))))) (func chapter_core_scenarios : base/chapter (chapter :name "Core Scenarios" :sectionmap (sectionmap "Sample Scenarios" (section :name "Sample Scenarios" :scenariomap (scenariomap :Alamo (scenario :name "Alamo" :summary "* One team defends a strong tactical position, from a superior invading army.") :Bandits (scenario :name "Bandits" :summary "* One team carries an unconcealed treasure across the map while the other team tries to steal it.") :Blockade (scenario :name "Blockade" :summary "* One team must successfully cross the map with half of their units. The other team must stop them.") "Capture the Flag" (scenario :name "Capture the Flag" :summary "* Each team protects their battle standard. The other team tries to take it.") :Conquest (scenario :name "Conquest" :reference "* Crush your enemies, drive them before you, and hear the lamenting of the women. That is what is best in life. - Conan the Barbarian") "High Score" (scenario :name "High Score" :summary "* Each team tries to score points. High score wins.") "King of the Hill" (scenario :name "King of the Hill" :summary "* Each team attempts to hold a single objective until the clock runs out.") "Treasure Hunt" (scenario :name "Treasure Hunt" :summary "* Place treasures randomly. Each team tries to get more than half of them off the map at their starting location.")))))) (func chapter_core_maps : base/chapter (chapter :name "Core Maps" :sectionmap (sectionmap "Core Scales" (section :name "Core Scales" :summary "* 10^-35m - Plank Scale. Any smaller than this and space seems to have no meaning. * 10^-20m - Particle Scale. The smallest particles exist at roughly this scale. * 10^-5m - Cell Scale. Bacterium and other cells exist at this scale. * 10^10m - Planetary Scale. Planets and moons exist at this scale. * 10^25m - Hubble Scale. The entire observable universe is at this scale. * ? - Universal Scale. The actual size of the universe, whatever that means. * ? - Multiversal Scale. The size of the multiverse, whatever that means." :rulemap (rulemap "Personal Scale" (rule :name "Personal Scale" :summary "Wars are fought at larger scales, but individual interaction is best done at this scale. * 1 Turn = 2 seconds * 1 Space = 2 meters (6 ft) * 24 x 20 map = 48m x 40m * 1 Space/Turn = 1m/s * The world record for 100m dash is 10 seconds = 22mph = 36kph = 10m/s = 10 spaces * The highest average speed for Marathon: 12mph = 20kph = 5m/s = 5 spaces * An average brisk walk: 4mph = 7kph = 2m/s = 2 spaces * Light Infantry: A normal person with only light gear: 18mph = 29kph = 8m/s = 8 spaces * Medium Infantry: A normal person with medium gear: 13mph = 21kph = 6m/s = 6 spaces * Heavy Infantry: A normal person with heavy gear: 9mph = 14kph = 4m/s = 4 spaces * Race Car: Takes 3x1 spaces: 100mph = 160kph = 45m/s = 45 spaces * Sherman Tank: 6m takes 3x2 spaces: 25mph = 38kph = 10m/s = 10 spaces * SBD Dauntless: 10mx12m takes 5x6 spaces: 250mph = 400kph = 110m/s = 110 spaces * B-24 Liberator: 20mx33m takes 10x17 spaces: 300mph = 470kph = 130m/s = 130 spaces * PT-109: 24m takes 12x4 space: 76kph = 21m/s = 21 spaces * USS Enterprise: 240m takes 120x40 spaces: 37mph = 60kph = 17m/s = 17 spaces") "Standard Scale" (rule :name "Standard Scale" :summary "* 1 Turn = 4 seconds * 1 Space = 4m (12 ft) * 24 x 20 map = 96m x 80m 1 Round = 2 seconds 1 Space = 4m Light Infantry: 10 man Squad with only light gear: 18mph = 29kph = 8m/s = 4 spaces Medium Infantry: A normal person with medium gear: 13mph = 21kph = 6m/s = 3 spaces Heavy Infantry: A normal person with heavy gear: 9mph = 14kph = 4m/s = 2 spaces Race Car: Takes 2x1 spaces: 100mph = 160kph = 45m/s = 22 spaces Sherman Tank: 6m takes 2x1 spaces: 25mph = 38kph = 10m/s = 5 spaces SBD Dauntless: 10mx12m takes 5x6 spaces: 250mph = 400kph = 110m/s = 55 spaces B-24 Liberator: 20mx33m takes 10x17 spaces: 300mph = 470kph = 130m/s = 65 spaces PT-109: 24m takes 12x4 space: 76kph = 21m/s = 10 spaces USS Enterprise: 240m takes 120x40 spaces: 37mph = 60kph = 17m/s = 8 spaces") "Large Scale" (rule :name "Large Scale" :summary "* 1 Turn = 15 seconds * 1 Space = 15m (50 ft) * 24 x 20 map = 360m x 300m") "Modern Naval Scale" (rule :name "Modern Naval Scale" :summary "* Naval Combat - World War II was the turning point of Naval Warfare when air power made traditional naval combat obsolete. Even submarines and torpedoes were insignificant compared to the effect of air power. Map scale is therefore based primarily on aircraft speed. * 1 Turn = 5 seconds * 1 Space = 80m * Infantry: 100 man Company with only light gear: 18mph = 29kph = 8m/s = 40m/turn = 1/2 space (1 space assuming trucks) * Race Car: 10 cars in 1 space: 100mph = 160kph = 45m/s = 225m/turn = 3 spaces * Sherman Tank: 5 tanks in 1 space: 25mph = 38kph = 10m/s = 50m/turn = 1 space * SBD Dauntless: 5 plane Flight in 1 space: 250mph = 400kph = 110m/s = 550 m/turn = 7 spaces * B-24 Liberator: 1 plane take 1 space: 300mph = 470kph = 130m/s = 650 m/turn = 8 spaces * PT-109: 24m takes 1 space: 76kph = 21m/s = 105m/turn = 1.5 spaces * USS Enterprise: 240m takes 3x1 spaces: 37mph = 60kph = 17m/s = 85 m/turn = 1 space") "Tactical Scale" (rule :name "Tactical Scale" :summary "* 1 Turn = 1 hour * 1 Space = 50km * 24 x 20 map = ? * Infantry: 100 man Company with only light gear: 18mph = 29kph = 3/5 space (1 space assuming trucks) * Race Car: 10 cars in 1 space: 100mph = 160kph = 3 spaces * Sherman Tank: 5 tanks in 1 space: 25mph = 38kph = 4/5 space * SBD Dauntless: 5 plane Flight in 1 space: 250mph = 400kph = 8 spaces * B-24 Liberator: 1 plane take 1 space: 300mph = 470kph = 9 spaces * PT-109: 24m takes 1 space: 76kph = 1.5 spaces * USS Enterprise: 240m takes 3x1 spaces: 37mph = 60kph = 1 space") "Strategic Scale" (rule :name "Strategic Scale" :summary "* Infantry to tank ratio: 1000 to 1. * 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Global Scale" (rule :name "Global Scale" :summary "* The World Wars were indeed the first wars to be waged worldwide. The logical scale for modern global events is the world itself. * 1 Turn = 3 days * 1 Space = 1600km = 1000miles. * 24 x 20 map = ? The Earth's circumference is 40,000km. * Infantry: 2,000 man Division with trucks: 18mph = 29kph = 3/5 space (1 space assuming trucks) * M3 Halftrack: 200 trucks have a range of 280km which it can reach in 4 hours. At 4 trips/day, it can carry infantry 2 spaces/turn. * Sherman Tank: 100 tanks has a range of 120mi = 190km which it can reach in 6 hours. At 2.5 trips/day, it can move 1 space/turn. * SBD Dauntless: 100 planes with a range of 773mi = 1243km which it can reach in 4 hours. At 3 flights/day, it can move 7 spaces/turn if it can land and refuel in each space. * B-24 Liberator: 20 bombers with a range of 3700mi = 6000km which it can reach in 8 hours. At 2 flights/day, it can move 22 spaces/turn if it can land and refuel every 4 spaces. * PT-109: 20 boats have only a 12 hour endurance so is entirely dependent on support ships for long range travel. * USS Enterprise: 1 capital ship, 2 light cruiser, and 3 destroyer escorts can cruise at 17mph = 28kph = 672km/day. It can move 672km * 3 days = 2016km/turn = 1 space/turn."))) "Core Maps" (section :name "Core Maps" :rulemap (rulemap "City Map" (rule :name "City Map") "Land Map" (rule :name "Land Map") "Town Map" (rule :name "Town Map"))) "Core Terrain" (section :name "Core Terrain" :rulemap (rulemap :Building (rule :name "Building" :image "Maps/Building.png" :summary "* [Move]: Impassable by Vehicles * [Defense]: [+1 Defense], Gains [Armor] based on building material and thickness") :Cliff (rule :name "Cliff" :image "Maps/Cliff.png" :summary "* [Move]: Impassable along the cliff edge * [Attack]: +1 [Elevation] * [Defense]: +1 [Elevation]") :Forest (rule :name "Forest" :image "Maps/Forest.png" :summary "* [Move]: [-1 Speed] * [Defense]: [+2 Defense], [+2 Armor], Blocks [Line of Sight]") :Hill (rule :name "Hill" :image "Maps/Hills.png" :summary "* [Move]: [-1 Speed] * [Attack]: [+1 Elevation] * [Defense]: [+1 Elevation], Blocks [Line of Sight] to units behind the hill, but not units on the hill.") :Road (rule :name "Road" :image "Maps/Road.png" :summary "-1 [Speed] for each 2 spaces moved (rounded up)" :titles "Cobblestones, Dirt Road, Gravel, Highway, Racetrack, Sidewalk, Street") :Water (rule :name "Water" :image "Maps/Water.png" :summary "* Impassable * Depth" :titles "Lake, Oasis, Ocean, Pond, Pool, River, Stream, Underwater"))))))
nx/tactics/books/core_rules / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Core Rules" :image "warrior_msleal_full.jpg" :chaptermap (base/chaptermap "Core Overview" (chapter_core_overview) "Let's Play" (chapter_lets_play) "Common Rules" (chapter_common_rules) "Tokens" (chapter_tokens) "Core Scenarios" (chapter_core_scenarios) "Core Maps" (chapter_core_maps) )))
nx/tactics/books/core_rules / chapter_core_overview
Description:
Function Name:
  • chapter_core_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_core_overview : base/chapter (chapter :name "Core Overview" :summary "* Round - Each Unit takes their turn. When all Units have taken their turn or passed, the Round ends. * Turn - Each Unit takes a Turn during a Round. ** Turn Order - Units take turns in order of the highest [Body] to lowest. The largest units are the most predictable and must activate first. ** Facing - At any time during your turn, you may change your facing by 45 degrees to any adjacent direction of the 8 compass directions. You may change your facing a maximum of 2 times (a total of 90 degrees) during your turn regardless of how many Move actions you take. ** Actions - The current may take up to 2 Actions during its Turn. *** Move **** Simple Move - **** Accelerate - **** Brake - **** Drift - ** Interrupt - During the Unit's Move, any smaller Unit may interrupt the current Unit and take its Turn immediately. When it has finished its Turn, the interrupted Unit continues. Multiple chained interrupts are possible this way. ** Abilities - Each [Unit] may use up to 2 [Abilities] each [Turn]. There are 3 types of [Ability]: [Move], [Attack], and [Action] abilities. They may be performed in any order but there may only be one [Move] or [Attack] [Ability] used in a turn. So the following are the allowed combinations: Move/Attack, Attack/Move, Move/Action, Action/Move, Attack/Action, Action/Attack, Action/Action. Damage Cards: Ammo Damaged Armor Rupture * Armor Breach Cargo Damage * Individual - Lost ammo, water, food * Team - Lost ammo, water, food * Vehicle - Lost fuel, ammo, water, food, reaction mass * Ship - Lost fuel, ammo, water, food (submarine: air) * Starship - Lost fuel, ammo, propellant, air, water, food Crew Damage Command Failure * Command Control Failure - Commands may not be issued to teams outside command. * Helm Control Failure - Cannot change speed or heading until rerouted. * Navigation Control Failure - Cannot plot courses or use maps until rerouted. * Communication Control Failure - Cannot use communications until rerouted. * Sensor Control Failure - Cannot use sensors until rerouted. * Weapon Targetting Control Failure - May only fire at current target with current weapon. Communication Failure Sensor Control Failure * Throttle Failure - Cannot increase speed. * Throttle Failure - Cannot maintain speed. Must increase or decrease speed. * Throttle Failure - Cannot reduce speed. * Steering Failure - Cannot turn left. * Steering Failure - Cannot maintain course. Must turn. * Sterring Failure - Cannot turn right. * Steering Failure - Cannot ascend. * Steering Failure - Cannot maintain altitude. Must ascend or descend. * Sterring Failure - Cannot descend. * Navigation Failure - Cannot plot a course or use maps. * Unstable Controls - Must drift each turn if able. Power Plant Damage * Engine Overheat - -1 Max Power generation * Electrical Short - -1 Max Power generation and chance of fire. * Electrical Overload - 1 Random System loses power until reset. Equipment Failure Fire * Individual - Clothes or hair catches fire * Team * Vehicle - Engine Fire Life Support Failure * Vehicle - * Ship - Air (submarine: heat, pressure) * Starship - Air, heat, pressure Movement Failure * Individual - Leg or Foot Damage * Team - Some members can't move without help. * Vehicle - Flat tire, slipped tread * Ship - * Starship - Reduced Visibility * Individual - Temporay Blindness (Sweat, dust, blood, smoke) * Team - Temporay Blindness (dust, smoke) * Vehicle - (dirt on windshield, smoke) * Ship - Smoke, Sensor Failure * Starship - Sensor Failure Structural Damage * Bulkhead Breach * Hull Breach Weapon Damage" :sectionmap (sectionmap "Why Tactics: Core Rules?" (section :name "Why Tactics: Core Rules?" :summary "* Tactics is a tactical combat system designed to be played as a board game, a tactical combat game, or as a replacement for the combat portion of a Role Playing Game. The design goal of Tactics is to simplify the elements of tactical combat while allowing the addition of modules that provide different levels of detail to allow each game to simulate just the aspects the players are interested in. * Tactics: Core Rules is designed to get players started with the Tactics system and allow any number of players to play Tactics as a pickup game. * Setup, gameplay, and winning conditions are all designed to keep things moving. * So why are you still reading this? Start playing!") "Tactics Design Foundation" (section :name "Tactics Design Foundation" :summary "* Simple Core Rules * Any Scale * Any Genre - Ant Colonies to Elves to the Iraq War to Galactic Empires, Realism, History, Fantasy, Sci-Fi, Movies, Anime, and Pulp Fiction in any combination. * Any Scenario - Any scenario with any number of players * Level of Detail - Selective Realism, Modular * Asymmetrical Sides * Reenactments * Army Building * Consistent mechanics - I don't like rule books or tables. I like detail, but not when I have to look it up. * Simple math - The general rule is each modifier can add or subtract 1 from an ability. Where possible, keep it simple. * Six-sided dice - Square dice have perfect symmetry, are well known, and are common. * Many dice - Rolling lots of dice is satisfying. The more dice rolled the more predictable the result on a bell curve. This allows low level abilities to have a realistic chance of rolling a high number while offering high level abilities increasing consistency. * Opposed rolls - Rolling dice against other dice allows for both sides to take part in each conflict. Even when there is no opponent there is still fickle fate to vex you. * Open-ended rolls - Open-ended dice allows even the most outmatched opponent a chance at victory (e.g. David and Goliath). * Critical Hits - Critical Hits keeps the game from becoming too predictable. Unlike open-ended rolls, however, Criticals provide an opportunity to allow flavor and choice into the game. * Skills - It is tough to raise skills. Surviving through many situations teach you how to survive again. * Terrain and Situation - Taking advantage of the situation is the great equalizer. Outflanking, High Ground, Surrounding are critical advantages in combat. * Equipment - Equipment makes a difference, but a suit of armor on an unskilled opponent is not much of a challenge.") "How does Tactics compare to other games?" (section :name "How does Tactics compare to other games?" :summary "* Vs. Board Games * Board games successfully capture the essence of reality while providing very simple mechanics to allow games to progress quickly and smoothly. The problem with board games is that each game targets only one view of a situation and generally cannot be expanded or modified without breaking the core premise of the game. Generally this leads to numerous different games that describe the same material (e.g. Star Wars). Each game focuses on a different aspect of the material with varying degrees of success and almost no overlap. Once the scenarios of the game are exhausted, the game loses public interest. Tactics seeks to create a system that can absorb new genres and new material and even allow units from different genres to battle one another. It also seeks to allow the elegant game play that board games offer by keeping the core rules simple and expandable. * Vs. Collectible Games * Collectible Games reinvented the classic board game. Instead of fixed rules, the rules were changeable. These changes can take 2 forms: a new expansion set can introduce new rules and environments, and each card may introduce modifications to existing rules. This approach is brilliant when applied correctly. Each expansion can be a standalone game or a supplement to the original game depending on what is agreed upon before play begins. The problems, however, are numerous. Because Collectible Games are extremely profitable, they tend to create unbalanced, 'power' cards that drive up sales but destabilize the game. I suspect that most of the manufacturers are aware of this problem, but because they are profit driven they are unable to avoid this trap. Another brilliant component of Collectible Games is the notion of a player 'building a deck' that is uniquely constructed using the build rules appropriate to the game. This idea allows each match to be entirely unique and variation is only limited by the imagination of the players. The downside of this is again associated with profits. Constructed decks are very expensive. Casual players lack the patience and resources to construct competitive decks, so games heavily favors the richest, most obsessed player instead of the most skilled player. Tactics seeks to avoid these problems by being free, by keeping deck construction rules simple, and by offering a number of preconstructed scenarios. This allows casual players to jump right into the action while allowing hard core players to enjoy themselves by increasing the level of detail instead of increasing the power level. * Vs. Tactical Games * Tactical games have a good understanding of unit tactics, but often do not functionally support individual characters and often over-complicate modifiers and oversimplify rolls and damage. Tactical games are almost universally inappropriate for individual character combat. * Vs. Role-playing Games * RPG games have a strong tactical combat element to them, but they simultaneously over-complicate individual actions while largely ignoring the tactical elements of small unit combat. Tactics attempts to bridge this gap and connect tactical combat with the RPG."))))
nx/tactics/books/core_rules / chapter_lets_play
Description:
Function Name:
  • chapter_lets_play
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_lets_play : base/chapter (chapter :name "Let's Play" :summary "All games start with Setup, consists of a series of Rounds where each unit gets to move and act, and ends when someone achieves Victory." :sectionmap (sectionmap "Choose a Scenario" (section :name "Choose a Scenario" :summary "* Choose a [Scenario], generate a [Scenario] or pick one randomly from the [Scenarios] section of this or any other Tactics book. * [Scenario Difficulty] - Each [Scenario] has a [Difficulty] rating. For the first game, choose Easy. * [Victory Conditions] - Each Scenario defines its own objectives. * [Special Rules] - If the [Scenario] has [Special Rules], then these rules should be used for this [Scenario]. * [Optional Rules] - If the [Scenario] has [Optional Rules], then you may choose to use any or all of them. Remember that more [Rules] tends to increase game time and complexity. For the first game, ignore [Optional Rules]. * Gather the required number of [Unit] tokens for this [Scenario]. * Gather one of each of the [Unit] cards, [Terrain] cards, and [Rule] cards in use for this [Scenario]. * If the [Scenario] has a number of [Turns], then set the [Turn Clock] to this number.") "Choose Teams" (section :name "Choose Teams" :summary "* Each [Scenario] describes a number of [Teams]. Any number of [Players] may be on a [Team]. * Determine which [Players] are on each [Team] in any way you choose. * [Players] should sit with their [Team], preferably facing their opponents. For the first game, determine [Teams] randomly. * One [Team] on the [Scenario] is marked with a *. This [Team] has the [Initiative] and goes first.") :Setup (section :name "Setup" :summary "* Choose the [Map] described in the [Scenario] and lay it out like this: [image:MapDeploy.png]. * Look at the [Deploy] section of the [Scenario]. * Starting with the [Team] with [Initiative], alternate placing [Terrain] on the Map until all [Terrain] has been placed. * Starting with the [Team] with [Initiative], alternate placing their [Units] on the [Map].") "Game Start" (section :name "Game Start" :summary "Before starting remember the following Golden Rules: * Trump - Any special rules in a scenario override the standard rules. * Rounding - All fractions are ignored.") "Turn Start" (section :name "Turn Start" :summary "* Pass Initiative - If the [Team] with [Initiative] wishes to give the initiative to the next [Team], they may do so ONLY if they have fewer units left to activate than the next [Team]. * The [Team] with [Initiative] now chooses any [Unit] in their [Team] to activate. Once a [Unit] is activated, it may not be activated again this turn until all units have been activated. * If that [Team] has no unit to activate, then [Initiative] is passed clockwise to the next [Team].") "Turn Sequence" (section :name "Turn Sequence" :summary "* Resolve Tokens - Remove 1 [White Token] from [Unit], then resolve any specific token effects. * Perform Actions - The [Unit] may perform any 2 of the following but may not perform more than 1 of the same type except [Move]. I.e. You may [Move], [Move] or [Move], [Attack] but not [Attack], [Attack]. ** [Attack] - Use any weapon or ability on the [Unit] that says [Attack]. ** [Ability] - Use any ability on the [Unit] that says [Action]. ** [Move] - Move up [Speed]. ** [Block] - +1 [Defense], +1 [Armor] but may not [Attack] this turn. ** [Dodge] - +1 [Defense], -1 [Attack]. ** [Wait] - Await the action of another [Unit]. This allows [Reaction] during their turn. ** [Recover] - Remove 1 [White Token] from the [Unit]. ** [Change Weapon] - Draw a weapon or change weapons. ** [Go Prone] - Add [Prone] Token to [Unit]. This provides +1 [Defense] vs. Ranged and -1 [Defense] vs. Melee. ** [Stand] - Remove [Prone] Token from [Unit]. * Resolve Actions ** [Skill Roll] - Roll a number of dice equal to the [Skill Level] of the [Ability] chosen. ** [Defense Roll] - Each defender rolls a number of dice equal to its [Defense]. ** [Damage Roll] - Roll a number of dice equal to the [Damage Rating] of the weapon. ** [Armor Roll] - Roll a number of dice equal to the [Armor Rating] of the defender. Note: When defending vs. [Blunt] weapons, the defender may use his [Body] instead of [Armor Rating]. ** [Hits] and [Criticals] ** When the [Unit] has completed its activity this turn, then [Initiative] is passed clockwise to the next [Team].") "Turn End" (section :name "Turn End" :summary "* If all [Units] have been activated and the [Turn Clock] is used, reduce it by 1. * Check for [Game Over] conditions. If not, then begin a new turn.") "Game Over" (section :name "Game Over" :summary "The game ends when any of the following occur: * Last Round Ends * No Enemy Units Remain * Complete Victory condition achieved by any team * Winning - Each [Team] that acheived a [Complete Victory] condition wins. If no [Team] acheived a [Complete Victory], then each [Team] that acheived a [Partial Victory] condition wins. Winners gain the [Rewards] for the scenario, if any. * Ties - Ties are allowed, though any [Rewards] gained are divided by the number of winners."))))
nx/tactics/books/core_rules / chapter_common_rules
Description:
Function Name:
  • chapter_common_rules
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_common_rules : base/chapter (chapter :name "Common Rules" :sectionmap (sectionmap "Anatomy of a Unit" (section :name "Anatomy of a Unit" :summary "Scale: Ratings: * Attribute and Skill Rating - Each unit is rated at a certain level in a number of attributes and skills. Attributes rate the power, resistance, and damage capacity in the following areas: Body, Mind, and Spirit. Value is an overall rating of the cost of the unit to aquire or recruit. Skills rate the varied abilities in which this unit is proficient. * Level:Scale - Each Rating has two parts: Level and a Scale. The Level is a number from 2 to 10, and the Scale is the number of zeroes added after that number. E.g. 5000 becomes 5:3 (Rating 5 : Scale 3). * Level/Intensity - ** No Rating - Challenged. Everyday tasks are difficult. ** Rating 1:0 - Everyday. Most people get by with this rating. ** Rating 2:0 - Everyday. Most people get by with this rating. ** Rating 3:0 - Competent. Most healthy adults have some attributes and skills in this range. ** Rating 4:0 - Competent. Most healthy adults have some attributes and skills in this range. ** Rating 5:0 - Veteran. Well trained and highly experienced. Veteran Marines, Commandoes, Paratroopers, SS. ** Rating 6:0 - Elite. Highest level of training and experience. Special Forces, SAS, Delta Force, Navy SEALs, Airborne Rangers, Green Berets. ** Rating 7:0 - World Class. Highest training and natural ability. Olympic Athletes, Nobel-winning scientists, Top martial artists. ** Rating 8:0 - World Class. Highest training and natural ability. Olympic Athletes, Nobel-winning scientists, Top martial artists. ** Rating 9:0 - Legendary. Realistic Human maximum. Einstein, James Bond. ** Rating 1:1+ - Superhuman. * Scale/Severity - The second part of an attribute or skill Rating is it's scale. Each scale represents a power of 10 greater than the last. The observable universe has a diameter of 9x10^26m or 9:26m, a mass of 1.5x10^53kg or 1.5:52g, and has 1x10^82 atoms. The Planck Length is 10^-35m or 1:-35m. The Tegmark theoretical distance to an identical universe to ours is 10^118m or 1:118m. ** Scale -2 - Insect Scale. Distance/Size=1cm(.3in), Speed=1cm/s(.3in/s), Mass=100g(~.2lb), Energy=1J, Force=1N(100g lifted 1m), Current=1W ** Scale -1 - Game Scale. Distance/Size=10cm(3.5in), Speed=10cm/s(3.5in/s, .3kph, .2mph), Mass=1kg(~2.2lb), Energy=10J, Force=10N(1kg lifted 1m), Current=10W(LED Light Bulb, Human energy use/s) ** Scale 0 - Human Scale. Distance/Size=1m(3ft), Speed=1m/s(3ft/s, 3.5kph, 2mph), Mass=10kg(~22lb), Energy=100J, Force=100N(10kg lifted 1m), Current=100W(Incandesent Light Bulb, Human energy use/s) ** Scale 1 - Vehicle/Giant Scale. Distance/Size=10m(33ft), Speed=10m/s(30ft/s, 35kph, 20mph), Mass=100kg(~220lb), Energy=1kJ, Force=1kN(100kg lifted 1m), Current=1kW. ** Scale 2 - Flight Scale. Distance/Size=100m(330ft, Football field), Speed=100m/s(330ft/s, 350kph, 200mph), Mass=1ton, Energy=10kJ, Force=10kN(1ton lifted 1m), Current=10kW. ** Scale 3 - Super Sonic Scale. Distance/Size=1km(3300ft, 0.6miles), Speed=1km/s(3300ft/s, 3500kph, 2000mph, Mach3), Mass=10ton, Energy=100kJ, Force=100kN(10ton lifted 1m), Current=100kW." :rulemap (rulemap :Body (rule :name "Body" :image "Tokens/BodyToken.png" :reference "* The nature of existence is obvious. The things I can see and touch are real." :summary "* Physical - The physical resistance of the unit. This is equal to the unit's highest Physical skill. Units with low Body are easily killed. * Body is determined by Mass. Fit human male: 8:1 (80kg/175lb). Fit human female: 6:1 (60kg/132lb)." :titles "Build, Constitution, Endurance, Physique, Size, Stamina, Strength, Toughness") :Mind (rule :name "Mind" :image "Tokens/MindToken.png" :reference "* You're that smart? Let me put it this way. Have you ever heard of Plato, Aristotle, Socrates? Yes. Morons. - Princess Bride * The nature of existence is misleading. The atoms of our bodies are 99.99% empty space. The actual particles making up every human alive could be compressed to the size of a sugar cube. We are walking, talking electromagnetic fields." :summary "* Mental - The mental strength of the unit. This is equal to the unit's highest Mental skill. Units with low Mind are easily fooled. * Mind is vaguely defined by IQ. IQ=Mind+50. Typical human Mind: 5:1 (100IQ). Brilliant human: 10:1 (150IQ)." :titles "Intelligence, Mental Clarity, Mental Strength, Perception, Problem Solving, Learning, Reason, Wits") :Will (rule :name "Will" :image "Tokens/SpiritToken.png" :reference "* I think, therefore I am. - Descartes, Cogito Ergo Sum * The nature of existence is subjective. I have experience and thoughts in this precise moment, beyond that I can prove nothing. Does time actually pass as I understand it? Is anything else but me real? Am I living in a dream/hallucination/simulation? Am I just insane? Our experience is the only thing we can be sure of. Therefore, we may as well choose to live as we see fit. No amount of evidence can definitively prove otherwise." :summary "* Emotional - The inner strength of the unit. This is equal to the unit's highest Willpower skill. Units with low Will are easily manipulated or collapse under pressure. * Will has no emperical formula. Typical human Will: 5:1. Phenomenal human Will: 10:1." :titles "Chi, Confidence, Determination, Ego, Emotion, Faith, Grit, Guts, Heart, Instinct, Ki, Mana, Perseverence, Resolve, Spirit, Spiritualism, Will, Willpower") :Speed (rule :name "Speed" :image "Tokens/SpeedToken.png" :summary "* The maximum movement speed of the unit. Each turn a player may move a [Unit] by spending 1 Speed for each space moved. * Speed is measured in Kilometers Per Hour (kph) or Miles Per Hour (mph), and at each scale a different number of spaces. * At Personal Scale, Mph = Speed * 5 (5-25mph) examples: 2=Crawl, 4=Walk, 6=Encumbered Human, 8= Human, 12=Dog, 16=Horse, 24=Bird. Limitations: * Units may not make more than 4 Facing changes in 1 [Turn].") :Level (rule :name "Level" :image "Tokens/CoinToken.png" :summary "* The overall power of the unit as well as its cost to purchase or develop. * Level is calcuated as follows: ** List each [Skill] level and [Power] level ordered by descending level. ** For each [Weakness], go down the list reducing top level by 1. ** Repeat the following until only 2 skills remain: *** Take the bottom 2 level numbers and replace them with the higher number + 1. E.g. 4 and 2 become 5, 4 and 4 become 5. ** When 2 skills remain the Level is the highest of the 2. E.g. 5 and 3 become Level 5." :titles "Cost, Level, Value") "Skills, Powers, Abilities, and Specialties" (rule :name "Skills, Powers, Abilities, and Specialties" :summary "* Skills - Skills describe the different skillsets that the unit possesses including combat skills. ** Examples - Melee, Mechanics, Physics, Medicine, and Military are Skills. ** Advancement - Raising Skill Levels becomes progressively harder the higher the level. * Powers - Powers are similar to skills, but normal humans cannot normally have powers. Powers include Magic and Superpowers as well. Creatures, vehicles and equipment may have powers. ** Examples - Wizardry, Fire, and Flight are Powers. ** Advancement - Raising Power Levels does not become progressively harder unlike Skill Levels. * Abilities - Abilities are perks that can be activated when the related Skill or Power is used. ** Examples - Roundhouse Kick is an Ability under the Close Combat Skill. ** Advancement - Gaining additional Abilities and Specialties is relatively easy. * Specialties - Specialties are similar to abilities, but instead of giving perks, specialties make it easier to gain abilities within that specialty. ** Examples - Swords is a Specialty under the Melee Skill. ** Advancement - Gaining additional Abilities and Specialties is relatively easy.") :Weaknesses (rule :name "Weaknesses" :summary "* Weaknesses are optional. They provide character flavor and reduce the [Level] of the unit/item.") "Flavor Text" (rule :name "Flavor Text" :summary "Whenever possible, interesting quotes or facts are included with the unit to help establish a mood."))) "Core Movement" (section :name "Core Movement" :rulemap (rulemap "Movement - Infantry" (rule :name "Movement - Infantry" :image "Rules/MoveInfantry.png" :summary "* [Move]: [-1 Speed] to move 1 Space in any direction. The [Unit] may change [Facing] to any side before or after moving."))) "Core Actions" (section :name "Core Actions" :rulemap (rulemap :Attack (rule :name "Attack" :summary "* Find the [Attack Rating] and the [Defense Rating]. * Draw two hands for each number and compare them. * Number cards 1-5 are Misses. Discard these. * Number cards 6-10 are Hits. Discard an equal number of these from both hands. It doesn't matter which numbers. * Face cards are Critical Hits.") "Targeting: Close Combat" (rule :name "Targeting: Close Combat" :image "Rules/TargetingCloseCombat.png") "Targeting: Melee" (rule :name "Targeting: Melee" :image "Rules/TargetingMelee.png") "Targeting: Reach" (rule :name "Targeting: Reach" :image "Rules/TargetingReach.png" :summary "* Reach") "Targeting: Ranged" (rule :name "Targeting: Ranged" :image "Rules/TargetingRanged.png" :summary "* Point Blank - Any attack with a ranged weapon at 10ft (3m) or less. +1 [Attack] with pistols, +1 [Defense] with other ranged weapons. * Effective Range - Ranged weapons have a normal attack within this range. About 30m for pistols. 90m for submachine guns. 300m+ for rifles. * Long Range - Attacks can be made beyond the normal range, but their accuracy drops off quickly. +1 [Defense] for each 10% more than effective range.") "Line of Sight" (rule :name "Line of Sight" :image "Rules/LineOfSight.png" :summary "* Line of Sight is usually required to use any Ranged Ability. * Determine Line of Sight: In order to have line of sight, use a 1 space wide straight edge to connect the attacker to one of the spaces of the target. * Line of Sight is determined by counting the number of points on the space under the target that are visible. ** 5-6 points: Clear Line of Sight. ** 4 points: Obstructed [+1 Defense] ** 3 points: Highly Obstructed [+2 Defense] ** 2 points: Hidden [+3 Defense] ** 1 point: Barely Visible [+4 Defense]") :Cover (rule :name "Cover" :summary "* Any [Unit] may hide directly behind an object to reduce their profile. ** If 50%+ cover: [+1 Defense] ** If the attack succeeds, roll 1 Cover die if over 50% cover and 1 additional die if over 90% cover. If any Cover die results in a hit, the cover blocks the attack and the [Armor] of the Cover is applied first with any remaining damage rolled against the Unit. * For Example: Hiding behind a curtain provides +1 Defense but no other benefit while hiding behind a stone wall may allow the wall's armor to be used before the Unit is struck.") "Extended Action" (rule :name "Extended Action" :summary "* Extended Actions take more time than ordinary [Action]s. * Extended Actions have a Duration which tells how long each [Action] takes to perform. * First perform a normal [Action]. Any [Hit]s scored reduce the [Target Number]. Any [Contested Hit]s increase the [Contested Number]. * The [Target Number] cannot exceed its original value, but instead trigger [Critical Failure]s if any."))) :Reactions (section :name "Reactions" :rulemap (rulemap "Opportunity Action" (rule :name "Opportunity Action"))) :Resolution (section :name "Resolution" :rulemap (rulemap "Attack Roll" (rule :name "Attack Roll" :image "Tokens/SkillToken.png" :summary "* Tactics uses large numbers of standard 6 sided dice. White Dice are preferred for most rolls. * Each 4, 5, or 6 rolled is a [Critical Hit]. * Each 6 rolled lets you roll an additional die. * If the modified ability roll is 0, then the ability may not be used.") "Critical Roll" (rule :name "Critical Roll" :image "Tokens/CriticalToken.png") "Critical Hit" (rule :name "Critical Hit" :summary "* Each Critical Hit can be traded for a [Stun], or any token type that the particular attack used can produce (e.g. Flaming Arrows can produce [Fire] tokens).") "Critical Failure" (rule :name "Critical Failure") "Defense Roll" (rule :name "Defense Roll") :Hit (rule :name "Hit") "Armor Rating" (rule :name "Armor Rating" :summary "Units with an Armor rating make [Defense Roll]s normally, but if any [Hits] are scored and the Armor Rating exceeds the defense dice rolled, then roll additional defense dice equal to the difference.") "Damage Rating" (rule :name "Damage Rating" :summary "When a weapon has a Damage rating, it makes its [Ability Roll] normally, but if any [Hits] are scored and the Damage Rating exceeds the attack dice rolled, then roll additional attack dice equal to the difference."))) "Combat Effects" (section :name "Combat Effects" :rulemap (rulemap "Aerial Maneuver" (rule :name "Aerial Maneuver") :Combination (rule :name "Combination") "Crouching Maneuver" (rule :name "Crouching Maneuver") :Knockback (rule :name "Knockback") :Knockdown (rule :name "Knockdown"))) "Core Situational Rules" (section :name "Core Situational Rules" :rulemap (rulemap :Altitude (rule :name "Altitude" :image "Tokens/AltitudeToken.png" :reference "It's over Anakin....I have the HIGH ground. - Obi-Wan Kenobi, Star Wars III" :summary "* [Move]: Flying units may gain an Altitude Token by spending [2 Move]. * [Move]: Flying units may discard any number of Altitude Tokens at any time. It gets [+1 Move] for each lost Altitude until the end of the [Turn]. * [Action]: +1 [Attack] vs. [Unit] at lower Altitude * [Defense]: +1 [Defense] vs [Unit] at lower Altitude") "Dug In" (rule :name "Dug In" :summary "* [Action]: Any ground unit may use an [Action] to 'dig in', gaining [+1 Defense] until it moves from the space (even involuntarily). * Note: Dug In benefit is cumulative with [Stand Your Ground].") :Facing (rule :name "Facing" :image "Maps/Facing.png" :summary "* 1 - Fixed Forward. * 2 - Left Forward. * 3 - Right Forward. * Note: When necessary to determine direction randomly, roll a die and use the chart to choose direction.") :Flanking (rule :name "Flanking" :image "Maps/Flanking.png" :summary "* 4 - Left Flank: [+1 Attack] * 5 - Right Flank: [+1 Attack] * 6 - Blind Spot: [+2 Attack]") :Hazard (rule :name "Hazard") :Prone (rule :name "Prone") "Stand Your Ground" (rule :name "Stand Your Ground" :summary "* [Action]: [+1 Action] if you do not move this turn.") :Surrounded (rule :name "Surrounded" :image "Maps/Surrounded.png" :titles "Outnumbered") :Terrain (rule :name "Terrain") "Terrain Hazard" (rule :name "Terrain Hazard"))) "Core Terms" (section :name "Core Terms" :rulemap (rulemap :Action (rule :name "Action" :summary "* The [Unit] may spend half of its [Speed] to use any [Ability] on its [Card]. Note: if the [Unit] is only able to move 1 space this turn, it may still take an Action.") :Card (rule :name "Card") :Collision (rule :name "Collision" :summary "* When 2 units collide, they each Roll [Body]+[Speed] vs. [Armor] against each other. * Either, both, or neither may take damage.") :Difficulty (rule :name "Difficulty" :summary "* Easy - Quick Game with Basic Rules * Medium * Difficult * Epic - Maximum complexity (and detail). Often long play or part of a [Campaign].") :Initiative (rule :name "Initiative" :summary "* Initiative is determined by Spirit. Unit act in order of initiative from lowest to highest. Before any Action, a unit with higher initiative may interrupt the current unit and take its turn.") "Large Unit" (rule :name "Large Unit") :Map (rule :name "Map") "Optional Rules" (rule :name "Optional Rules") :Player (rule :name "Player") :Rule (rule :name "Rule") :Scenario (rule :name "Scenario") :Space (rule :name "Space") :Team (rule :name "Team") "Turn Clock" (rule :name "Turn Clock") :Unit (rule :name "Unit"))))))
nx/tactics/books/core_rules / chapter_tokens
Description:
Function Name:
  • chapter_tokens
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_tokens : base/chapter (chapter :name "Tokens" :sectionmap (sectionmap "White Tokens" (section :name "White Tokens" :summary "White Tokens represent temporary conditions that will pass quickly. * [Activate]: Remove one White token." :rulemap (rulemap :Duration (rule :name "Duration" :summary "* Duration tokens are placed on an ability card when it is activated. * When the ability no longer has any duration tokens, it is removed.") :Morale (rule :name "Morale" :image "Tokens/MoraleToken.png" :summary "-1 [Spirit] * A unit must move 1 space away from the source of the attack/damage for each Morale Token received. * If it already has Morale tokens, it must roll Morale tokens vs. [Spirit] and must move additional spaces for any [Hits]. * This movement does not cost [Speed], but if the unit is blocked from moving away it will suffer a [Collision] of Speed equal to the number of remaining [Hits]. * [Anytime]: If [Morale] >= [Spirit] then the unit will take no [Actions], move at its best speed away from any opponents, and will leave the map if able.") :Stun (rule :name "Stun" :image "Tokens/StunToken.png" :summary "-1 [Mind] -1 [Defense] -1 [Speed] -1 [Skill] * [Move]: If [Stun] >= [Mind], then make a full Move along a random path. * [Action]: If [Stun] >= [Mind], then the unit is confused and may not perform an [Action]. * [Anytime]: If [Stun] >= [Body], then replace the excess Stun with [Damage] tokens."))) "Black Tokens" (section :name "Black Tokens" :summary "* Permanent Effects that will not normally be removed during a battle such as Damage." :rulemap (rulemap "Suffering Damage" (rule :name "Suffering Damage") "Treating Damage" (rule :name "Treating Damage" :summary "* Blood Loss, if present, should usually be treated first. This is because Blood Loss can cause death in as little as 4 minutes from a single wound. * Shock, if present, should be treated next. It can kill in as little as 30 minutes. * Eventually fatal wounds, if any, should be treated next. These wounds become progressively worse kill in from 1 hour to 9 days. * Lastly, the wound itself should be treated. Untreated wounds take twice as long to heal on their own.") "Healing Damage" (rule :name "Healing Damage") :Damaged (rule :name "Damaged" :image "Tokens/DamageToken.png" :summary "-1 [Body] -1 [Defense] -1 [Speed] for every 2 -1 [Skill] * [Anytime]: If [Damaged] >= [Body], then the unit is incapacitated. * [Anytime]: If [Damaged] >= 2x [Body], then the unit is dead. * [Anytime]: If [Damaged] >= 3x [Body], then the unit is completely destroyed.") "Blood Loss Damage" (rule :name "Blood Loss Damage") "Broken Bone Damage" (rule :name "Broken Bone Damage") "Burn Damage" (rule :name "Burn Damage" :summary "* Burn Damage is characterized by shallow wounds with great surface damage. Fire, Acid, Cold, Abrasions, and Radiation all produce Burn Damage.") "Concussive Damage" (rule :name "Concussive Damage" :summary "* Concussive Damage affects the entire target at once in a Shockwave. Explosions, Sonic, Vibrations, sudden decelerations like falling and crashes all produce concussive damage.") "Impact Damage" (rule :name "Impact Damage" :summary "* Impact Damage is characterized by a generalized blunt trauma in a relatively small area.") "Nerve Damage" (rule :name "Nerve Damage") "Puncture Damage" (rule :name "Puncture Damage" :summary "* Puncture Damage is characterized by a deep wound with little surface damage.") "Shock Damage" (rule :name "Shock Damage" :summary `* Shock is a life-threatening medical condition as a result of insufficient blood flow throughout the body. Shock often accompanies severe injury or illness. Medical shock is a medical emergency and can lead to other conditions such as lack of oxygen in the body's tissues (hypoxia), heart attack (cardiac arrest) or organ damage. It requires immediate treatment as symptoms can worsen rapidly. * Types of Shock: ** Septic shock is caused by bacteria. It is treated with antibiotics and fluids. ** Anaphylactic shock is caused by hypersensitivity or allergic reaction. If is treated with diphenhydramine (Benadryl), epinephrine (an "Epi-pen"), and steroid medications (solumedrol). ** Cardiogenic shock is from heart damage. It is treated by identifying and treating the underlying cause. ** Hypovolemic shock is from blood or fluid loss. It is treated with fluids (saline) in minor cases, and blood transfusions in severe cases. ** Neurogenic shock is from spinal cord trauma. It is the most difficult to treat as spinal cord damage is often irreversible. Immobilization, anti-inflammatories such as steroids and surgery are the main treatments.`) "Sickness Damage" (rule :name "Sickness Damage" :summary "* Sickness Damage is characterized by physical and mental weakness. Poison, Disease, and Radiation can all cause Sickness.") "Slash Damage" (rule :name "Slash Damage" :summary "* Slash Damage is characterized by long surface wounds of varying depth. If the wounds are sufficiently deep they may remove entire extremities."))) "Red Tokens" (section :name "Red Tokens" :summary "* Red tokens represent continuous Effects that will eventually lead to death such as Bleeding and Fire. * [Activate]: Add one Stun token." :rulemap (rulemap :Bleeding (rule :name "Bleeding" :image "Tokens/BleedingToken.png" :summary "* Each turn add 1 [Stun] token Any adjacent [Unit] may use an [Action] to extinguish 1 Fire token." :titles "Bloody, Serrated, Sharp") :Burning (rule :name "Burning" :image "Tokens/FireToken.png" :summary "* [Activate]: Roll Fire tokens vs. [Defense]. * [Hits] are [Damage] tokens. * [Critical Hits] are additional Fire tokens. Also, a random adjacent space gains Fire tokens equal to the [Critical Hits] * If no [Hits] are scored, remove a Fire Token. * Any adjacent [Unit] may use an [Action] to extinguish 1 Fire token." :titles "Burning, Fiery, Flaming") "Choking Damage" (rule :name "Choking Damage" :summary "* This includes any obstruction of airways such as smoke, water, sand, fungus, disease, physical choking, etc. It also includes damage to filters and other aspiration/ventilation systems on machines."))) :Status (section :name "Status" :rulemap (rulemap :Death (rule :name "Death" :reference "* Tomorrow is a hope, never a promise. - Kindred (Lamb), Runeterra"))))))
nx/tactics/books/core_rules / chapter_core_scenarios
Description:
Function Name:
  • chapter_core_scenarios
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_core_scenarios : base/chapter (chapter :name "Core Scenarios" :sectionmap (sectionmap "Sample Scenarios" (section :name "Sample Scenarios" :scenariomap (scenariomap :Alamo (scenario :name "Alamo" :summary "* One team defends a strong tactical position, from a superior invading army.") :Bandits (scenario :name "Bandits" :summary "* One team carries an unconcealed treasure across the map while the other team tries to steal it.") :Blockade (scenario :name "Blockade" :summary "* One team must successfully cross the map with half of their units. The other team must stop them.") "Capture the Flag" (scenario :name "Capture the Flag" :summary "* Each team protects their battle standard. The other team tries to take it.") :Conquest (scenario :name "Conquest" :reference "* Crush your enemies, drive them before you, and hear the lamenting of the women. That is what is best in life. - Conan the Barbarian") "High Score" (scenario :name "High Score" :summary "* Each team tries to score points. High score wins.") "King of the Hill" (scenario :name "King of the Hill" :summary "* Each team attempts to hold a single objective until the clock runs out.") "Treasure Hunt" (scenario :name "Treasure Hunt" :summary "* Place treasures randomly. Each team tries to get more than half of them off the map at their starting location."))))))
nx/tactics/books/core_rules / chapter_core_maps
Description:
Function Name:
  • chapter_core_maps
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_core_maps : base/chapter (chapter :name "Core Maps" :sectionmap (sectionmap "Core Scales" (section :name "Core Scales" :summary "* 10^-35m - Plank Scale. Any smaller than this and space seems to have no meaning. * 10^-20m - Particle Scale. The smallest particles exist at roughly this scale. * 10^-5m - Cell Scale. Bacterium and other cells exist at this scale. * 10^10m - Planetary Scale. Planets and moons exist at this scale. * 10^25m - Hubble Scale. The entire observable universe is at this scale. * ? - Universal Scale. The actual size of the universe, whatever that means. * ? - Multiversal Scale. The size of the multiverse, whatever that means." :rulemap (rulemap "Personal Scale" (rule :name "Personal Scale" :summary "Wars are fought at larger scales, but individual interaction is best done at this scale. * 1 Turn = 2 seconds * 1 Space = 2 meters (6 ft) * 24 x 20 map = 48m x 40m * 1 Space/Turn = 1m/s * The world record for 100m dash is 10 seconds = 22mph = 36kph = 10m/s = 10 spaces * The highest average speed for Marathon: 12mph = 20kph = 5m/s = 5 spaces * An average brisk walk: 4mph = 7kph = 2m/s = 2 spaces * Light Infantry: A normal person with only light gear: 18mph = 29kph = 8m/s = 8 spaces * Medium Infantry: A normal person with medium gear: 13mph = 21kph = 6m/s = 6 spaces * Heavy Infantry: A normal person with heavy gear: 9mph = 14kph = 4m/s = 4 spaces * Race Car: Takes 3x1 spaces: 100mph = 160kph = 45m/s = 45 spaces * Sherman Tank: 6m takes 3x2 spaces: 25mph = 38kph = 10m/s = 10 spaces * SBD Dauntless: 10mx12m takes 5x6 spaces: 250mph = 400kph = 110m/s = 110 spaces * B-24 Liberator: 20mx33m takes 10x17 spaces: 300mph = 470kph = 130m/s = 130 spaces * PT-109: 24m takes 12x4 space: 76kph = 21m/s = 21 spaces * USS Enterprise: 240m takes 120x40 spaces: 37mph = 60kph = 17m/s = 17 spaces") "Standard Scale" (rule :name "Standard Scale" :summary "* 1 Turn = 4 seconds * 1 Space = 4m (12 ft) * 24 x 20 map = 96m x 80m 1 Round = 2 seconds 1 Space = 4m Light Infantry: 10 man Squad with only light gear: 18mph = 29kph = 8m/s = 4 spaces Medium Infantry: A normal person with medium gear: 13mph = 21kph = 6m/s = 3 spaces Heavy Infantry: A normal person with heavy gear: 9mph = 14kph = 4m/s = 2 spaces Race Car: Takes 2x1 spaces: 100mph = 160kph = 45m/s = 22 spaces Sherman Tank: 6m takes 2x1 spaces: 25mph = 38kph = 10m/s = 5 spaces SBD Dauntless: 10mx12m takes 5x6 spaces: 250mph = 400kph = 110m/s = 55 spaces B-24 Liberator: 20mx33m takes 10x17 spaces: 300mph = 470kph = 130m/s = 65 spaces PT-109: 24m takes 12x4 space: 76kph = 21m/s = 10 spaces USS Enterprise: 240m takes 120x40 spaces: 37mph = 60kph = 17m/s = 8 spaces") "Large Scale" (rule :name "Large Scale" :summary "* 1 Turn = 15 seconds * 1 Space = 15m (50 ft) * 24 x 20 map = 360m x 300m") "Modern Naval Scale" (rule :name "Modern Naval Scale" :summary "* Naval Combat - World War II was the turning point of Naval Warfare when air power made traditional naval combat obsolete. Even submarines and torpedoes were insignificant compared to the effect of air power. Map scale is therefore based primarily on aircraft speed. * 1 Turn = 5 seconds * 1 Space = 80m * Infantry: 100 man Company with only light gear: 18mph = 29kph = 8m/s = 40m/turn = 1/2 space (1 space assuming trucks) * Race Car: 10 cars in 1 space: 100mph = 160kph = 45m/s = 225m/turn = 3 spaces * Sherman Tank: 5 tanks in 1 space: 25mph = 38kph = 10m/s = 50m/turn = 1 space * SBD Dauntless: 5 plane Flight in 1 space: 250mph = 400kph = 110m/s = 550 m/turn = 7 spaces * B-24 Liberator: 1 plane take 1 space: 300mph = 470kph = 130m/s = 650 m/turn = 8 spaces * PT-109: 24m takes 1 space: 76kph = 21m/s = 105m/turn = 1.5 spaces * USS Enterprise: 240m takes 3x1 spaces: 37mph = 60kph = 17m/s = 85 m/turn = 1 space") "Tactical Scale" (rule :name "Tactical Scale" :summary "* 1 Turn = 1 hour * 1 Space = 50km * 24 x 20 map = ? * Infantry: 100 man Company with only light gear: 18mph = 29kph = 3/5 space (1 space assuming trucks) * Race Car: 10 cars in 1 space: 100mph = 160kph = 3 spaces * Sherman Tank: 5 tanks in 1 space: 25mph = 38kph = 4/5 space * SBD Dauntless: 5 plane Flight in 1 space: 250mph = 400kph = 8 spaces * B-24 Liberator: 1 plane take 1 space: 300mph = 470kph = 9 spaces * PT-109: 24m takes 1 space: 76kph = 1.5 spaces * USS Enterprise: 240m takes 3x1 spaces: 37mph = 60kph = 1 space") "Strategic Scale" (rule :name "Strategic Scale" :summary "* Infantry to tank ratio: 1000 to 1. * 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Global Scale" (rule :name "Global Scale" :summary "* The World Wars were indeed the first wars to be waged worldwide. The logical scale for modern global events is the world itself. * 1 Turn = 3 days * 1 Space = 1600km = 1000miles. * 24 x 20 map = ? The Earth's circumference is 40,000km. * Infantry: 2,000 man Division with trucks: 18mph = 29kph = 3/5 space (1 space assuming trucks) * M3 Halftrack: 200 trucks have a range of 280km which it can reach in 4 hours. At 4 trips/day, it can carry infantry 2 spaces/turn. * Sherman Tank: 100 tanks has a range of 120mi = 190km which it can reach in 6 hours. At 2.5 trips/day, it can move 1 space/turn. * SBD Dauntless: 100 planes with a range of 773mi = 1243km which it can reach in 4 hours. At 3 flights/day, it can move 7 spaces/turn if it can land and refuel in each space. * B-24 Liberator: 20 bombers with a range of 3700mi = 6000km which it can reach in 8 hours. At 2 flights/day, it can move 22 spaces/turn if it can land and refuel every 4 spaces. * PT-109: 20 boats have only a 12 hour endurance so is entirely dependent on support ships for long range travel. * USS Enterprise: 1 capital ship, 2 light cruiser, and 3 destroyer escorts can cruise at 17mph = 28kph = 672km/day. It can move 672km * 3 days = 2016km/turn = 1 space/turn."))) "Core Maps" (section :name "Core Maps" :rulemap (rulemap "City Map" (rule :name "City Map") "Land Map" (rule :name "Land Map") "Town Map" (rule :name "Town Map"))) "Core Terrain" (section :name "Core Terrain" :rulemap (rulemap :Building (rule :name "Building" :image "Maps/Building.png" :summary "* [Move]: Impassable by Vehicles * [Defense]: [+1 Defense], Gains [Armor] based on building material and thickness") :Cliff (rule :name "Cliff" :image "Maps/Cliff.png" :summary "* [Move]: Impassable along the cliff edge * [Attack]: +1 [Elevation] * [Defense]: +1 [Elevation]") :Forest (rule :name "Forest" :image "Maps/Forest.png" :summary "* [Move]: [-1 Speed] * [Defense]: [+2 Defense], [+2 Armor], Blocks [Line of Sight]") :Hill (rule :name "Hill" :image "Maps/Hills.png" :summary "* [Move]: [-1 Speed] * [Attack]: [+1 Elevation] * [Defense]: [+1 Elevation], Blocks [Line of Sight] to units behind the hill, but not units on the hill.") :Road (rule :name "Road" :image "Maps/Road.png" :summary "-1 [Speed] for each 2 spaces moved (rounded up)" :titles "Cobblestones, Dirt Road, Gravel, Highway, Racetrack, Sidewalk, Street") :Water (rule :name "Water" :image "Maps/Water.png" :summary "* Impassable * Depth" :titles "Lake, Oasis, Ocean, Pond, Pool, River, Stream, Underwater"))))))
nx/tactics/books/fantasy
Description:
Package Name:
  • nx/tactics/books/fantasy
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_fantasy_overview, chapter_genshin_impact, chapter_god_of_war, chapter_lord_of_the_rings, chapter_nexus_fantasy_characters, chapter_material_realm, chapter_realms_beyond, chapter_story_ideas
Source Code:
  • (package nx/tactics/books/fantasy :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Fantasy" :image "DaveDormanEasternTerritories.jpg" :chaptermap (base/chaptermap "Fantasy Overview" (chapter_fantasy_overview) "Genshin Impact" (chapter_genshin_impact) "God of War" (chapter_god_of_war) "Lord of the Rings" (chapter_lord_of_the_rings) "Nexus Fantasy Characters" (chapter_nexus_fantasy_characters) "Material Realm" (chapter_material_realm) "Realms Beyond" (chapter_realms_beyond) "Story Ideas" (chapter_story_ideas) ))) (func chapter_fantasy_overview : base/chapter (chapter :name "Fantasy Overview" :sectionmap (sectionmap "Fantasy Armor" (section :name "Fantasy Armor" :summary "* Cloth Armor - Increases Magical Regeneration * Light Armor - Increases Critical Strike change * Heavy Armor - Maximum Defense" :itemmap (itemmap "Moon Disc" (item :name "Moon Disc" :summary "* A [Silver] Shield." :classification "Shield"))) "Fantasy Weapons" (section :name "Fantasy Weapons" :summary "* Faeblades") "Elder Tongue" (section :name "Elder Tongue" :summary "Prefixes * Alf - Elf * Dverg - Dwarf * Hel - Dead * Jotun - Giant * Man - Human * Muspel - Fire * Nifl - Mist * Svart - Dark * Yo - Demonic Suffixes * Ar - Race * Heim - Home * Ki - Soul * Ma - Creature * Traum - Dream Words * Alfar - Elvish Race * Albtraum - Elf Dream (Nightmare) * Alfheim - Land of Elves * Dvergar - Dwarven Race * Helar - Restless Dead * Helheim - Land of the dead * Manar - Human Race * Manheim - Land of Men * Muspelheim - Land of Fire * Niflheim - Land of Ice * Svartalfheim - Land of Dark Elves * Yoki - Demon Soul * Yoma - Demon")))) (func chapter_genshin_impact : base/chapter (chapter :name "Genshin Impact" :sectionmap (sectionmap :Archons (section :name "Archons" :unitmap (unitmap :Furina (unit :name "Furina" :titles "Focolor") :Nahida (unit :name "Nahida") "Raiden Shogun" (unit :name "Raiden Shogun" :summary "* The Raiden Shogun is the current Electro Archon. There are actually 3 versions of the Shogun that look almost identical: The twin sisters Ei and Makoto, and the artificial duplicate called the Puppet. * Makoto (Baal) - Makoto and Ei shared the title of Electro Archon, pretending to be a single being. Makoto was the diplomat and Ei was the warrior. Ei carried a sword, but she was not known to be a great warrior. Her electro powers were her main ability. Makoto died during the battle of Khaenri'ah. * Ei (Baalzebub) - Ei considered herself to be Makoto's shadow and mostly served as her muscle. After Makoto's death, she constructed the Puppet, tranfered her spirit into her sword, and mostly allowed the puppet to rule in her stead. Ei is divinely skilled in combat. * Puppet - The puppet is an advanced alchemical creation with power and combat ability perfectly equal to Ei in every way. Generally, the puppet is the only version of the Shogun that anyone sees. Even when Ei is in control, she is controlling the puppet, since she no longer has her own physical form. * Feats of Power ** Musou no Hitotachi - A supposedly unblockable sword attack from the Shogun that is her supreme attack. ** She easily defeats the traveller and nearly kills them. ** She easily executes Signora and incinerates her. ** She slew the god Orobashi and split the islands apart. Residual Electro still makes this area dangerous over 2000 years later. ** She creates a perpetual storm around Inazuma for years. ** She states that she can casually stop storms across the world to let people sleep." :titles "Baal, Baalzebub, Ei, Makoto, Puppet, Shadow") :Venti (unit :name "Venti" :summary "* Barbados splits the mountains in Mondstadt with a divine wind and sends entire mountains flying to become the Golden Apple Archepelego. * Barbados is easily considered to be the weakest of the Archons." :titles "Barbados") "Zhong Li" (unit :name "Zhong Li" :summary "* Zhong Li dominated the Archon War." :titles "Morax, Rex Lapis")))))) (func chapter_god_of_war : base/chapter (chapter :name "God of War" :sectionmap (sectionmap "God of War Equipment" (section :name "God of War Equipment" :itemmap (itemmap "Pandora's Box" (item :name "Pandora's Box" :reference "* The box was actually mistranslated. It is actually Pandora's Jar." :summary "* After the great war with the Titans, Zeus gathered the great evils of the war and bid Hephaestus construct a box to hold them. Later Kratos seeks out the box to use the evils inside against Ares."))) "God of War Units" (section :name "God of War Units" :unitmap (unitmap :Kratos (unit :name "Kratos" :image "Fantasy/Kratos.png")))))) (func chapter_lord_of_the_rings : base/chapter (chapter :name "Lord of the Rings" :sectionmap (sectionmap "Lord of the Rings Units" (section :name "Lord of the Rings Units" :unitmap (unitmap :Galadriel (unit :name "Galadriel" :reference "* If you ask it of me, I will give you the One Ring. You offer it to me freely? I do not deny that my heart has greatly desired this. In the place of a Dark Lord you would have a Queen! Not dark but beautiful and terrible as the Dawn! Treacherous as the Seas! Stronger than the foundations of the Earth! All shall love me and despair! ... I passed the test. I shall diminish, and go to the west, and remain Galadriel. - Frodo and Galadriel - Lord of the Rings")))))) (func chapter_nexus_fantasy_characters : base/chapter (chapter :name "Nexus Fantasy Characters" :sectionmap (sectionmap "Nexus Fantasy Characters" (section :name "Nexus Fantasy Characters" :unitmap (unitmap "Arinni Taybor" (unit :name "Arinni Taybor" :summary "* Human Priest/Monk" :titles "Taybor the Red" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "5" :unititemmap (unititemmap :Quarterstaff (unititem :name "Quarterstaff"))))) "Eldruf Grundel" (unit :name "Eldruf Grundel" :summary "Gnome Thief Magician") :Flint (unit :name "Flint" :image "Fantasy/Flint.png" :summary "Half-Elven Thief" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :level "9" :unitabilitymap (unitabilitymap :Backstab (unitability :name "Backstab"))))) "Galamir Mirlesem" (unit :name "Galamir Mirlesem" :image "Fantasy/GalamirMirlesem.png" :summary "* Human Mage * Personality - Galamir is a brilliant Wizard and strategist, but he is impatient with others and has no respect for politics or idle chit-chat. * History - Galamir was born to Chantry trainers, and as a child he was allowed special access to the arcane academy. As a teen, he became obsessed with magic and its effect on the world. His brilliance and magical aptitude were soon recognized and he was accepted into the academy. For the next 25 years he completed his full wizardry and elemental training and received top honors. He was a logical candidate to become a trainer himself, but he was bored of the cloistered life, so he began visiting other Chantries across the world. Along the way he encountered a naive, young half-elf rogue named Phirax living on a simple farm. Galamir recruited Phirax to join him to perform the more dangerous and mundane tasks while Galamir provided the leadership and strategy. Later, he recruited the Warrior Stam and the Cleric Sarak into their party to rounded out their abilities." :unitpowermap (unitpowermap :Wizardry (unitpower :name "Wizardry" :level "11")) :unitskillmap (unitskillmap "Physical Powers" (unitskill :name "Physical Powers" :level "10"))) "Hetman Undrig" (unit :name "Hetman Undrig" :summary "* Orc Assassin * A pragmatic, hardened survivalist who began his career as a lowly militia man in the Orc Army who would later form the infamous mercenary guild, the Blackguard. * Personality - Hetman is noteworthy for his lack of personal pride or conscience. He dislikes authority. He strongly believes the ends justify the means and has no compunction about using any means available. * The Blackguard - When establishing the Blackguard, he insisted that it should never have a central authority and that all decisions were made by popular vote." :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "5" :unititemmap (unititemmap :Longsword (unititem :name "Longsword") :Dagger (unititem :name "Dagger"))))) "Jaris Ransun" (unit :name "Jaris Ransun" :image "Fantasy/Ransun.png" :summary "Human Hunter" :titles "Valen the Hunter" :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :unititemmap (unititemmap "Chain Mail Armor" (unititem :name "Chain Mail Armor") :Shield (unititem :name "Shield"))))) "Phirax Alganon" (unit :name "Phirax Alganon" :image "Fantasy/PhiraxAlganon.png" :summary "* Half-Elven Bard * Personality - Phirax is an entertaining, friendly, perceptive person who is very focused on 'the now'. He applies all his attention to the current situation and the people around him which gives him a keen eye for detail, deception, and subtle clues of human behavior. He strongly believes he is on the right path in life and has developed very strong emotional confidence which lets him roll with the whatever comes his way. He appreciates plans and planners, but he feels that plans must always be flexible because they rarely predict a situation accurately. * Beliefs - Phirax believes that improving the lives of those around him will also improves his own life. He sees this as selfishness through selflessness, therefore it is always in his own interest to help others. He could easily manipulate those around him, but he abhors the idea of exploiting others and is quick to judge abusers of any kind. He follows the lesser god Seker on his mission to destroy undead, specifically those who feed on or otherwise exploit the living (which is pretty much all of them). * History - Phirax was born into a large family on a farm bordering the Arden Forest. During the day, he learned diverse combat and survival skills with the Elves of the forest. At night he practiced various social skills at the human tavern. He was planning to set out on his own soon when he encountered a rather awkward and self-important Wizard named Galamir. After he confirmed the Wizard's abilities, he agreed to join him as a pair of traveling adventurers. Soon after, the pair teamed up with a Warrior and a Cleric. With the party complete, they set out for danger and treasure." :unitpowermap (unitpowermap :Empathy (unitpower :name "Empathy" :level "12" :unitabilitymap (unitabilitymap :Demoralize (unitability :name "Demoralize") :Inspiration (unitability :name "Inspiration")))) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :level "9" :unitabilitymap (unitabilitymap :Backstab (unitability :name "Backstab") "Hide in Shadows" (unitability :name "Hide in Shadows") "Move Silently" (unitability :name "Move Silently"))))) "Sarak Ishimar" (unit :name "Sarak Ishimar" :image "Fantasy/SarakIshimar.png" :summary "Human Cleric" :unitpowermap (unitpowermap :Faith (unitpower :name "Faith" :level "8") :Invocation (unitpower :name "Invocation" :level "10")) :unitskillmap (unitskillmap "Physical Powers" (unitskill :name "Physical Powers" :level "8"))) "Stam Domindor" (unit :name "Stam Domindor" :image "Fantasy/Stam.png" :summary "Dwarven Warrior" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "7" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))))) "Nexus Fantasy Actors" (section :name "Nexus Fantasy Actors" :unitmap (unitmap "Antios Teron" (unit :name "Antios Teron" :summary "* Human Spy * Antios is a spy for Lord Aramel. * He is currently disguised as a mercenary for hire while travelling through the Imperium to assess their defenses. He has been authorized to assassinate any high ranking politician he should encounter to disrupt local politics. His mission has no time limit, and he is periodically scried by Lord Aramel's wizards. * He is a convincing actor who can play most parts well. He is particularly ruthless about his identity and will silence any who might compromise him or his mission." :unitskillmap (unitskillmap :Espionage (unitskill :name "Espionage" :level "5"))) :Blackguard (unit :name "Blackguard" :summary "* An elite mercenary cadre organized by Hetman Undrig. * Their base is a small, walled town dedicated to their needs. * The Dragoons are a loose group. Decisions and leaders are chosen by majority vote. Power can change at anytime (including during combat). * Dragoons pay no dues nor is there direct pay. The Dragoons make money by hiring out as mercenaries. They charge double normal rates, but are reknowned for their excellent training and equipment. Dragoons take great pride in their high status and react poorly to those who do not recognize their talent. * Dragoons are trained professionals in their jobs and recognize the need for discretion. They care little for whether a job is legal or not, and the Dragoons are known for possessing certain 'subtle' skills that make covert missions possible. They do not, however, enjoy excessive risk and are not above abandoning very dangerous missions." :titles "Black Dragoon") "Charn Aramel" (unit :name "Charn Aramel" :summary "Human Dread Knight" :titles "Nighthook, Lord Aramel" :unitpowermap (unitpowermap :Conviction (unitpower :name "Conviction" :level "10")) :unitskillmap (unitskillmap "Psychic Powers" (unitskill :name "Psychic Powers" :level "10"))) "Sarani Kalea" (unit :name "Sarani Kalea" :summary "Human Priestess" :titles "Princess Kalea, High Priestess of Kali" :unitpowermap (unitpowermap :Conviction (unitpower :name "Conviction" :level "12") :Invocation (unitpower :name "Invocation" :level "16" :unitabilitymap (unitabilitymap :Aspecting (unitability :name "Aspecting")))) :unitskillmap (unitskillmap "Psychic Powers" (unitskill :name "Psychic Powers" :level "12")))))))) (func chapter_material_realm : base/chapter (chapter :name "Material Realm" :summary "* Those places we can measure and understand. * The universe of Nexus Fantasy is different from the real world. The world is called Ur and the stars are all different planes of existence separated by the void of space and the Ether. * The Material Realm is described by coordinates for +x, +y, +z, +t (length, height, width, time) * Aeur - The sky (Aeurfolk) * Fyur - Flame (Fyurfolk) * Mur - The oceans (Murfolk, Murmen) * Ur - The land (Urfolk, Urmen) * The Primes" :titles "Areth, Archea, Gaia, Koltho, Material Realm, Middle Earth, Middle Kingdom, Middle Realm, Midgard, Mortal Realm, Mother Earth" :sectionmap (sectionmap :Africana (section :name "Africana" :sectionmap (sectionmap :Aegyptus (section :name "Aegyptus" :reference "Ancient Egypt" :summary "* Units - Charioteer, Necromancer, Pharoh, Sun Priest, Sorceror/Hieolphant * The Empire of the Sun - Aegyptus worship the sun and the nile river that brings life. * Sun Disc - Round shield with the image of the sun is a standard decoration. * Sun Spear - Spear with the image of the sun near its point." :titles "Aegypta, Helios, Kemet" :locationmap (locationmap :Alexandria (location :name "Alexandria" :summary "* Lighthouse of Alexandria - One of the Seven Wonders of the World * Library of Alexandra - The foremost center of learning in the world.") "Great Pyramids" (location :name "Great Pyramids" :reference "* The Pyramid of Cheops was originally no less than four hundred and ninety feet high. Its base covers 31 acres...contains 2,300,000 blocks of stone, each averaging two and a half tons...set with joints measuring one ten-thousandth of an inch wide. - Ancient Egypt, Its Culture and History" :summary "* One of the Seven Wonder of the World") :Necropolis (location :name "Necropolis" :summary "* Despite time, the elements, and cataclysmic upheavals, the ruins of the Citystate of Quaran still stands as grim reminders of that dark and nearly forgotten age. Here amidst stark stone towers and nightmarish effigies, once flourished the capital of the most sinister empire in human history. * Over the years, occultists, black magicians, and tomb robbers have come to the ruins in search dark and macabre secrets. Many cursed tomes, diabolical artifacts, and instruments of torture and death have been recovered, often to the great regret of those who discovered them. Countless more lie in tombs, vaults, and underground pits and tunnels, awaiting discovery by those who covet infernal knowledge above all other considerations.") "Pyramid of Skulls" (location :name "Pyramid of Skulls" :summary "* The Quaran Necromancer-Kings erected a mountain of skulls 1000 feet high, representing untold millions of their victims. The mountain stands to this day and appears to be magically resistent to destruction.") :Thebes (location :name "Thebes")) :unitmap (unitmap "Kemet Tomb Robber" (unit :name "Kemet Tomb Robber" :summary "* The tomb robbers are nomadic folk who have found a profitable lifestyle by digging in dangerous tombs for untold riches. They can act as guides for expeditions into the desert."))) :Batrea (section :name "Batrea" :summary "* Home of the Batrean people. The Batrean males and females visually appear to be entirely different races. The males are brutish and ugly while the females are graceful and incredibly beautiful. It is the peculiar custom of Batrean males to sell their females as concubines. The females do not seem to mind leaving their brutish husbands and thatch and mud hovels. * History - The Batreans are a primitive people when they were visited by a Warlock fleeing persecution. The natives marvelled at his magic, so he set up a little fiefdom for himself in the jungle. He took slaves and enchanted a few to be beautiful servants. Later, one of his lovely maidens killed him in his sleep. Unwittingly, however, he had set a selective breeding program in motion. The beautiful servants returned to their village where the males enslaved them and exiled the ordinary women. Within a generation, only the beautiful women reproduced and their daughters were as lovely as themselves while the sons remained simple and primitive. Generations later, the Batreans are a complicated people, completely split by gender." :unitmap (unitmap "Batrean Concubine" (unit :name "Batrean Concubine" :summary "* Batreans women are engaging creatures, slender and lovely beyond compare. Their movements are graceful, and their manner of speech is charming and at times most eloquent. They are reknowned in other lands as the perfect concubines. Some say, however, that the Batrean women exhibit an uncanny ability to sublty influence their masters.") "Batrean Grunt" (unit :name "Batrean Grunt" :summary "* Batrean men are huge, slope shouldered, and remarkably ugly. They are slow and brutish and are constantly arguing and fighting among themselves. They generally ignore the beautiful females except during their week-long mating season."))) "Burning Waste" (section :name "Burning Waste" :reference "Sahara Desert" :summary "* The Burning Waste is a massive desert (the largest in the world) that stretches across the northern Africana continent. Where the desert meet the Mediterrainean, the water creates a long strip of jungles or swamps. These are also the only inhabited areas near the Burning Waste. * Red Iron - The sand of the Burning Wastes has a high iron content in the form of rust dust. With difficulty, the sand can be smelted back into iron. Typically, the red tinge is left in to show its origination. * Politics - Many nations claim large sections of the desert, but no one really maintains any ownership over such a harsh realm.") :Djaffa (section :name "Djaffa" :summary "* Djaffir are a slender, wiry desert people famous for being masterful merchants who always drive a hard bargain. They wear flowing head-dresses, robes, cloaks, and leather masks. They do not remove their masks believing that the face is the mirror to the soul and believe the masks protect them from hostile magic. The more skeptical claim that they were masks to conceal their identities from those they intend to relive of their money." :unitmap (unitmap "Djaffir Bandit" (unit :name "Djaffir Bandit" :summary "* There are small tribes of Djaffir bandits living in the desert preying on caravans. Though they will kill if provoked, they are not prone to wanton violence. Neither are they known to raid the caravans of the Djaffir Merchants, a fact which many attribute to collusion between the Sheiks of the two tribal groups. Some say the differnce between a merchant and a bandit is a matter of semantics.") "Djaffir Merchant" (unit :name "Djaffir Merchant" :summary "* They are shrewd hagglers, but fortunately they are very proud of their reputations so they typically only trade in high quality goods. * The merchants live in walled towns surrounding oases.") "Djaffir Wizard" (unit :name "Djaffir Wizard" :summary "* The Wizards are well regarded by their people as seers and mystics. Like the rest of their people they are superstitious and see omens everywhere."))) :Dracarta (section :name "Dracarta" :summary "* Trade - The Dracatans smelt Red Iron in large quantities, and export it throughout the area. Their prices remain low enough that it is not cost effective to compete with their efficient facilities." :locationmap (locationmap "Dracartan Cisterns" (location :name "Dracartan Cisterns" :summary "* The water supply of Dracarta is perhaps its most precious commodity. The supply is kept in a series of enormous underground cisterns. Tampering with the water supply in any way is a captial offense and there are numerous signs reinforcing that fact.") "Dracata Halls of Infamy" (location :name "Dracata Halls of Infamy" :summary "* Here are arrayed the worst and most despicable criminals in Dracartan history. Their statue-like forms standing as warning to future offenders, preserved by immersion in Red Iron.") "Dracata Halls of Justice" (location :name "Dracata Halls of Justice" :summary "* The Council of Elders, Dracarta's esteemed legisilative/judicial body holds sway in these large halls. The laws of the land are determined here. Serious crimes are also heard here in open court. Punishments include forced labor, banishment to the wilderness, or for truly heinous offenses: the sentence of Retribution (immersion in red iron).")) :unitmap (unitmap "Dracartan Alchemist" (unit :name "Dracartan Alchemist" :summary "* Dracartan Alchemists are employed to create storm crystals and adamantine for the duneships.") "Dracartan Desert Scout" (unit :name "Dracartan Desert Scout" :summary "* The Dracartan military is largely composed of these scouts. In order to survive in the desert they do not user heavy gear or weapons. When facing difficult foes they will use the desert as their primary weapon.") "Dracartam Duneship" (unit :name "Dracartam Duneship" :summary "* The legendary duneships of the Dracartan army. They race across the desert sand on adamantine runners. They are powered by storm crystals produced and ignited by the Alchemists into the huge wind funnels that propel the duneships across the sand. * The duneships serve as troop carriers and mobile siege engines. Light Ballistas and light greek fire catapults are typically carried. * Despite the name, duneships cannot climb hills and may only travel on level sand. They also lack manueverability and may not travel into headwinds by tacking. * The forward section of the hull can be lowered to allow mounts to enter and exit. * The duneships are expensive to use and maintain, so they are only deployed in special occassions, especially when a show of force is required."))) :Carthage (section :name "Carthage" :summary "* City/State * Worship the Devil King [Baal Moloch].") "Chana Jungles" (section :name "Chana Jungles" :summary "* Home of the Chana Wildmen, the jungles are also home numerous dangerous and noisome insects, snakes, leeches, and even plants. * Wildmen - Many large tribes of Wildmen live throughout the jungle living off of the rich vegetation and animal-life. The Wildmen are deeply addicted to [Skullcap] mushrooms and have been driven violently insane from its hallucinatory effects. They are also warlike in the extreme with tribes constantly ambushing one another to gain territory. In battle, they thrive on brutality, and mercy is considered a weakness. Prisoners are publicly skinned alive to the delight of the tribe." :unitmap (unitmap "Chana Warlord" (unit :name "Chana Warlord" :summary "* The leaders of the wildmen tribes are horrible and immensely obese creatures that have gained power through demonic pacts and are said to be part demon themselves.") "Chana Wildman" (unit :name "Chana Wildman" :summary "* The Wildmen are savage cannibals who cover themselves with terrifying body paints. They only respect bravery and any who show fear are ritually slain to their fearsome gods. They are very superstition and in awe of magic, so they obey the Witchmen without question. They live a nocturnal lifestyle and are skilled at axes, spears, and bolas.") "Chana Witchman" (unit :name "Chana Witchman" :summary "* The Witchmen revere the forces of darkness and despise the enemies of their gods the forces of light. They live a completely nocturnal lifestyle and are skilled at witchcraft and herbalism. * They sing songs of fear and death that are said to strike madness in those that hear them. * They create shrunken heads from their victims and wear them as jujus. It is said that they can capture a person's soul and control their body like a mindless zombie. * Some have trained Death's Head Vipers as pets and wear them as bracelets." :unitpowermap (unitpowermap :Sympathy (unitpower :name "Sympathy") :Enchantment (unitpower :name "Enchantment") :Naturalism (unitpower :name "Naturalism") :Madness (unitpower :name "Madness")) :unitskillmap (unitskillmap "Animal Handling" (unitskill :name "Animal Handling" :unitabilitymap (unitabilitymap "Snake Charming" (unitability :name "Snake Charming"))))) "Death's Head Viper" (unit :name "Death's Head Viper" :summary "* A foot long poisonous viper that can be trained as a pet. Some can be trained to coil around an arm or neck and act as jewelry and as a deadly bodyguard. The Viper cannot be completely domesticated, however, and has been known to turn on their owners when startled." :titles "Wrist Viper"))) :Jhagara (section :name "Jhagara" :summary "* Jhagara is a hot and humid land seldom travelled by visitors. * People - The Jhagarans are a primitive, superstitious race with ungainly, elongated limbs and elliptical heads. They are over six feet tall and very thin and wiry. * Outcasts - Strangest of the Jhagarans are the Outcasts, tribesmen who wander the furthests swamps and jungles. Though few in number, they wield great power. It is believed by the other Jhagarans that the Outcats carry the 'Sitgma of Doom'. Simply being touched by an Outcast immedidately brands one as an Outcast. He or she has two choices, commit suicide or leave the tribe and join the Outcasts. In order to avoid being tainted, the Jhagarans leave tributes to the Outcasts outside their settlements. If the tributes are insufficient, the Outcasts will approach the settlement until they are placated. There is no simple solution to the Cursed Ones. Killing an Outcast brings the curse upon the killer and his family. Sometimes they will try to convince or trick strangers into killing the Outcasts for them. * Concordance - Every seven months, for two weeks while a particular constellation moves across the horizon, the Jhagarans will not venture forth into the swamps at night. They believe an indescribable monster called the Horag stalks the marshes. Though no Jhagaran has ever seen the Horag, their belief in it is unshakable. During theses times, tribesmen accidentally caught in the marshes after sunset have reportedly slit their throats rather than face the terror of this fearsome monster." :unitmap (unitmap "Jhagaran Hunter" (unit :name "Jhagaran Hunter") "Jhagaran Outcast" (unit :name "Jhagaran Outcast"))) "Serpentine River" (section :name "Serpentine River" :summary "* The [Serpentine River] is actually more of a slow moving swamp that flows from the south and pours into the ocean. At the mouth of the river, a large set of thick posts have been sunk into the silt, simultaneously providing tradeships with a place to tie up while blocking entrance into the river. Porters must then be paid to bring goods to [Fiaqua] by barge. This is mostly just another opportunity for corruption. The [Naga] in the area do not allow boat traffic farther upstream from [Fiaqua].") "Shadow Isles" (section :name "Shadow Isles" :summary "* These islands are inhabited by the Malum, a cabal of Arch-Spectres." :locationmap (locationmap "Obsidian Tower" (location :name "Obsidian Tower" :summary "* The Shadow Wizards live in ancient ruined towers of obscure origin. These dark towers dot the landscape of the Shadow Isles, and it is here that they perform their experiments night and day seemingly without rest. Some have entered the tower without molestation but have fled when they viewed the horrorific activities within.")) :unitmap (unitmap "Shadow Wizard" (unit :name "Shadow Wizard" :summary "* Comprised of animate darkness, these spirits of deceased magicians resemble man-like shadows. They cloak themselves inn hooded vestments and bear ebony runestaves studded with black diamonds, and their eyes burn with a fiery incandescense. * They Shadow Wizards consort with beings from the lower planes and perform bizarre magical experiments. The reason for their actions remains unknown, but some fear they are creating an army of monstrosities to unleash upon an unsuspecting world."))) "Sinking Land" (section :name "Sinking Land" :summary "* The Sinking Lands is a vast, fetid swamp of waist-deep water covering a deep layer of loose mud and decomposing vegetation. The entire swamp is basically a quicksand pit that will slowly engulf anything that stands still on the bottom. Numerous creatures that swim, float, or flit across the water have made a home here despite the perils." :unitmap (unitmap :Sludge (unit :name "Sludge" :summary "* The Sludge are a man-sized race of semi-intelligent Slugs that live within the Sinking Land. They swim quickly through the shallow water pushing off of the bottom. The Sludge are very curious and gather around visitors in large numbers. Though intimidating and pushy, they are largely harmless and flee if harmed. The main danger is they have been known to accidentally capsize boats in their enthusiasm. They are knowledgable about the area, but their lack of language makes communication a challenge."))) :Tunis (section :name "Tunis" :summary "* Weather - Tunis is hot and humid all year round. The temperature varies from warm to sweltering. The hot weather encourages the laid back attitude of the locals." :locationmap (locationmap :Fiaqua (location :name "Fiaqua" :reference "Las Vegas" :summary "* Level 6 [Settlement] * Fiaqua means 'The Flower on the Water'. It is named that way because of the beautiful flowers that naturally grow all over the surface of the city as well as for the Black Lotus trade that was the reason for the city's founding. Fiaqua is unofficially known as the 'City of Knives' because of the strong criminal element and rampant assassinations. It is not so much a city as a series of shacks built on planks and pontoons that extend from a sandbar in the [Serpentine River] into the surrounding swamps. * Geography - Fiaqua is a tiny city located a half mile inland on the [Serpentine River] in the country of [Tunis]. * Politics - Fiaqua is currently ruled by Queen Amelia Tremont, a minor crimelord who fancies herself a queen. She assassinated her predecessor and has proven quite adept at maintaining a delicate balance between her criminal compatriots, the [Naga], and the neighboring nations that have made the Lotus trade illegal but tolerate it as long as it doesn't create a disruption. * History - Fiaqua was founded two hundred years ago when the [Black Lotus] flower was discovered there. Initially, only a small band of criminals harvested the Lotus, but their actions attracted the local [Naga] who owned the land. Conflicts continued for many years until a truce was established where the [Naga] cultivated the flower and the humans sold it. This arrangement has worked for over 150 years despite some rather dramatic conflicts. * Law - Few things are illegal in Fiaqua. Fewer still are enforced. Since Fiaqua is a criminal haven created for the express purpose of smuggling, criminal types are widely accepted. The local [Naga] serve as enforcers to keep the peace while also controlling the population of homeless and hopelessly drug addicted. It is widely known that one must not venture out alone at night. Besides the Black Lotus trade, Fiaqua also runs very successful gambling dens and brothels catering both to the wealthy elite and to the desperate. * Visitors - The drug trade attracts addicts and experimenters because of the Lotus' legal status in Fiaqua as well as the large sums that can be gained through smuggling. The wealthy are often attracted to the 'anything for a buck' nature of the city as well as the surprising safety (as long as you have personal bodyguards). Traders come to the city because its position in the swamp requires it to import most of its essentials including the very lumber that makes up the city. Prices are fairly cheap, but unfortunately service is terribly slow because of the rampant drug addiction. * Wildlife - The city is covered with blossoming flowers all the time. These bloom from creeping vines that help hold the decaying wooden structures together. Insects swarm around the city at all times, but the pest insects are kept under control by the ever present [Ekondo] lizards. These small lizards are trained to distinguish pests from pollinating insects and catch them from the sky with their absurdly long tongues. * Units - Drug Addict, Drug Merchant, Gambler, Loan Shark, Pimp, Prostitute, Smuggler, [Naga]" :titles "Flower on the Water, City of Knives")) :unitmap (unitmap "Queen Amelia Tremont" (unit :name "Queen Amelia Tremont"))) :Shinsenkyo (section :name "Shinsenkyo" :reference "* Hell's Paradise * In Chinese legend, Shinsenkyo is an island on which gods reside, a place of true beauty and nature." :summary "* An island of great natural beauty, but it is filled with bizarre, unnatural beings. It is rumored to be the source of the Elixir of Life which is the source of its strange ecology.") :Wraeclast (section :name "Wraeclast" :reference "* Alba, Madagascar, Australia, Count of Monte Cristo, Mayan civilization, Path of Exile" :summary "* Wraeclast is a large subtropical island in the southern hemisphere. It is infamous as a thoughly cursed place where criminals and political prisoners are exiled, never to return. * Cursed - An evil force prevades the land. Here the dead always rise again as zombies or worse. Sleep is filled with dark thoughts of madness and violence. The evil influence has twisted plants and animals into bizarre and hateful things. * Settlements - There are a handful of small towns composed of exiles and shipwreck survivors carving out a meager living from the hostile land. Agriculture is difficult, but ironically hunting is good for those who can avoid becoming the hunted themselves. * Ruins - Though there are no native people on Wraeclast, there is ample evidence of early advanced cultures, apparently predating the evil influences that currently makes civilization so challenging. Many speculate that this previous civilization was destroyed when they unleashed the curse that still devastates the land."))) :Atlantia (section :name "Atlantia" :sectionmap (sectionmap :Antilla (section :name "Antilla" :reference "* Atlantis" :unitmap (unitmap "Antillan Triton" (unit :name "Antillan Triton"))) :Brittania (section :name "Brittania" :reference "England" :locationmap (locationmap :Avalon (location :name "Avalon" :summary "* Rogue * Serf * Squire") :Saxony (location :name "Saxony")) :unitmap (unitmap "Avalan Footman" (unit :name "Avalan Footman") "Avalon Highwayman" (unit :name "Avalon Highwayman" :reference "Robin Hood") "Avalan Knight" (unit :name "Avalan Knight") "Avalon Longbowman" (unit :name "Avalon Longbowman") "Avalan Shieldbearer" (unit :name "Avalan Shieldbearer"))) :Eire (section :name "Eire" :reference "Ireland" :titles "Emerald Island") :Melnibone (section :name "Melnibone" :titles "Dragon Isles" :itemmap (itemmap :Mournblade (item :name "Mournblade") :Stormbringer (item :name "Stormbringer" :reference "* Farewell, friend. I was a thousand times more evil than thou! - Stormbringer, Stormbringer")) :unitmap (unitmap :Elric (unit :name "Elric" :reference "* You sought to imitate the Emperors of Melnibone... You mocked Elric of that line, you tortured him and you abducted his wife. You moulded her body into a hell-shape as you moulded the rest of the world... know how the folk of Melnibone toyed with such upstarts... Jagreen Lern took an hour to die and only because Moonglum begged Elric to finish him swiftly. - Elric, Stormbringer") :Moonglum (unit :name "Moonglum") "Hunting Dogs of Dharzi" (unit :name "Hunting Dogs of Dharzi") "Melnibonean Sorceror" (unit :name "Melnibonean Sorceror") "Melnibonean Soldier" (unit :name "Melnibonean Soldier") :Yykroon (unit :name "Yykroon") :Arioch (unit :name "Arioch" :summary "* Arioch is one of the most powerful of the Dukes of Hell. * Arioch is the patron of Melniboné and has a personal relationship with Elric. He is sophisticated and highly intelligent, though possibly insane, and he usually (but certainly not always) appears as a beautiful youth, usually with blond hair. * He has also been known to take the form of a large black fly or a black alien shape, horrible to look upon." :titles "Knight of the Swords, Lord of the Higher Hell, Lord of the Seven Darks") :Donblas (unit :name "Donblas" :reference "* It was as if some enormous sun, thousands of times larger than earth's, had sent a ray of light pulsing through the cosmos, defying the flimsy barriers of Time and Space... the majestic Lords of Law, their earthly forms so beautiful that they challenged Elric's sanity... Leading them came Donblas, the Justic Maker, a smile upon his perfect lips. He carried a slender sword in his right hand, a sword that was straight and sharp and like a beam of light itself. - Stormbringer" :titles "Justice Bringer") :Elenoin (unit :name "Elenoin") :Kyrenee (unit :name "Kyrenee") :Mabelrode (unit :name "Mabelrode" :summary "* Mabelrode is a Chaos Lord. He appears with his face perpetually in shadow, or simply with blank, featureless skin in place of a face." :titles "Mabelode the Faceless, King of the Swords") :Xiombarg (unit :name "Xiombarg" :summary "* Xiombarg is a Chaos Lord. She prefers to appear as a beautiful young woman but is sometimes referred to with the male pronoun. She is prone to shapeshifting and carries a giant sword. She sometimes rides a creature with the head of a lion and the body of a bull. * Though she prefers the form of a beautiful woman, it is possible her true form is more insect-like." :titles "Queen of the Swords"))) "Sargasso Sea" (section :name "Sargasso Sea" :summary "* The Sargasso Sea is a section of calm water in the center of converging currents. The surrounding current draw seaweed and various debris to accumulate across a vast area. The still air and vast seaweed aspiration accumulates a cloying mist that limits visibility. * Many have found their ships stranded here by the calmed winds and cloying seaweed. Those who stay and survive have found that the Sargasso can support an unusual lifestyle floating in the ocean. Though survival can be a struggle, the Sargasso people have a strong sense of interdependence and enjoy their freedom from outside domination. * It is said that a giant squid calls the Sargasso home." :unitmap (unitmap "Sargassos Sea Nomad" (unit :name "Sargassos Sea Nomad" :summary "* Expert fisherman and salvagers. The sea nomads can be known to be ruthless, since life in the Sargasso can be difficult."))) :Y'ha-nthlei (section :name "Y'ha-nthlei" :reference "We shall swim out to that brooding reef in the sea and dive down through black abysses to Cyclopean and many-columned Y'ha-nthlei, and in that lair of the Deep Ones we shall dwell amidst wonder and glory forever. - The Shadow Over Innsmouth" :summary "* Deep Ones, Human Hybrids, Human Slaves" :titles "City of the Deep Ones"))) :Asiana (section :name "Asiana" :sectionmap (sectionmap "Jade Empire" (section :name "Jade Empire" :titles "Quan Dynasty, Jade Kingdom" :locationmap (locationmap :Tian (location :name "Tian" :summary "* The capital of the Jade Empire is situated on an island within a man-made lake. The metropolis can only be reached by boat. The city was constructed for the Emperor who demanded that the new capital surpass in beauty all of the cities of the world. Gilded towers and domes and the Palace of a thousand fountains are especially noteworthy." :titles "Golden City") "Emperor's Canal" (location :name "Emperor's Canal" :summary "* A man-made waterway connects the River Shan with the lake that surrounds Tian. A system of locks allows traffic on the canal to be strictly monitored, and the canal is not large enough for warships.") "Emperor's Forest" (location :name "Emperor's Forest" :summary "* East of the capital is an artificial forest created for the pleasure of the Emperor and the aristocracy, so they might hunt 'wild' game. The forest is continually restocked with dangerous creatures that have been rendered harmless by declawing and with sedatives.") "Emperor's Road" (location :name "Emperor's Road" :summary "* This highway spans the length and breadth of the Jade Empire. It is extremely well maintained funded by tolls.") "Shoalin Monastery" (location :name "Shoalin Monastery" :summary "* Are you worthy? It is a simple question. * You are a foreigner. Here you will be treated with hatred and disrespect because you are different. We provide aid to no one. If you find this unfair, you are always free to go. Few are strong enough to walk this path. It is up to you whether you are one of them.") "Wudang Monastery" (location :name "Wudang Monastery")) :unitmap (unitmap "Jade Militia" (unit :name "Jade Militia" :summary "* The vast number of people in the Jade Empire are kept in check by a massive regional militia. Most militia are little more than thugs with cheap equipment and a badge.") "Jade Guard" (unit :name "Jade Guard" :summary "* The professional military that oversees the militia.") "Quan Noble" (unit :name "Quan Noble" :summary "* Once a barbarian people, the Quan people have grown rich at the expense of the people subjected long ago by their ancestors. They wield supreme power and are attended by hosts of fawning servitors and slaves. Among these perverse and degenerate folk, obesity is considered a sign of success and ostentatious displays of wealth are in vogue. * The nobles have highly refined tastes and lofty airs. They wave themselves with scented fans when in the presence of outsiders who they consider offensive in apperance and odor.") "Shaolin Monk" (unit :name "Shaolin Monk" :summary "* A Buddhist Monk") "Wudang Monk" (unit :name "Wudang Monk" :summary "* A Taoist Monk"))) :Nepal (section :name "Nepal" :locationmap (locationmap "Himalaya Mountains" (location :name "Himalaya Mountains")) :unitmap (unitmap "Nepal Sherpa" (unit :name "Nepal Sherpa"))) :Nippon (section :name "Nippon" :titles "Land of the Rising Sun" :locationmap (locationmap "Valley of the Mists" (location :name "Valley of the Mists")) :unitmap (unitmap "Nippon Budoka" (unit :name "Nippon Budoka" :titles "Warrior Monk") "Nippon Gakusho" (unit :name "Nippon Gakusho" :titles "Priest") "Nippon Ninja" (unit :name "Nippon Ninja") "Nippon Samurai" (unit :name "Nippon Samurai") "Nippon Sohei" (unit :name "Nippon Sohei"))) :Tibet (section :name "Tibet" :unitmap (unitmap "Tibetan Monk" (unit :name "Tibetan Monk"))))) :Caucasia (section :name "Caucasia" :sectionmap (sectionmap :Anatolia (section :name "Anatolia" :reference "* The Romani were erroneously believed to originate in Egypt (therefore Gypsy)." :summary "* Horseclans - Anatolian horsemen are widely believed to be the greatest light horsemen in the world. The Horseclans live on the plains where their horsemen have maximum effect. They live a semi-nomadic existance moving on when resources become scarce. * Romani - The Romani are a gregarious, nomadic people often travelling in wagons carrying all that they own. They are reknowned as artists, acrobats, fortune tellers, thieves, tricksters, or swindlers depending on your point of view. The Romani religion revolves around two demigods: Fortuna, the lovely but fickle goddess of luck, and the grim entity known as Death. They revere Fortuna but mock Death, whom they strive to cheat at every opportunity. * Carnevale of True Wonders - A large group of Romani and other assorted wanderer/adventurers have banded together to form a semi-organized travelling circus. They show up near a town and rent some unused plaza or farmland and set up their tents and stalls. Their shows are constantly varying including: acrobats, strong men, duelists, wrestlers, theater troupes, musicians, magicians, story tellers, fortune tellers, wonderous creatures, items, foods and drinks. Anyone can join the welcoming troupe. There are a few rules, however: all wonders must be real (per the name) and no theft, fraud, or swindles are allowed on Carnevale grounds." :locationmap (locationmap :Ephesus (location :name "Ephesus" :summary "* Temple of Artemis - One of the Seven Wonders of the World. * The sacred site at Ephesus was far older than the Temple. An archaic, pre-Hellenic fertility goddess was already passionately venerated, and the Greeks associated her with Artemis.") :Galatia (location :name "Galatia") :Halicarnassus (location :name "Halicarnassus" :reference "* Mausolus built the Mausoleum, and the term mausoleum has come to be used generically for any grand tomb." :summary "* Mausoleum of Halicarnassus - One of the Seven Wonders of the World.") :Phrygia (location :name "Phrygia") :Witchwood (location :name "Witchwood" :summary "* The forest home of the Dhuna. * Dhuana - The Dhuana are a primitive, reclusive people highly skilled at witchcraft. They live in huts deep in the forest and perform hedonistic rituals in the numerous ruins, groves, and standing stones in the area. They are mysterious but not unfriendly, and they reputed to have numerous extraordinary attributes including the ability capture a man's heart with a single kiss.")) :unitmap (unitmap "Anatolian Light Cavalry" (unit :name "Anatolian Light Cavalry") "Anatolian Mounted Archer" (unit :name "Anatolian Mounted Archer") "Romani Acrobat" (unit :name "Romani Acrobat" :titles "Juggler") "Romani Animal Trainer" (unit :name "Romani Animal Trainer") "Romani Charlatan" (unit :name "Romani Charlatan" :titles "Magician, Mountebank, Swindler, Trickster") "Romani Dancer" (unit :name "Romani Dancer") "Romani Fortuneteller" (unit :name "Romani Fortuneteller") "Romani Rogue" (unit :name "Romani Rogue" :titles "Thief") "Romani Thespian" (unit :name "Romani Thespian" :titles "Puppeteer"))) :Balkan (section :name "Balkan" :locationmap (locationmap "Dragon's Eye" (location :name "Dragon's Eye" :summary "* A small sea surrounded by mountainous, inhospitable terrain. There are many small islands in the Dragon's Eye, and it is rumored that the great dragon Tiamat lives on one of them." :titles "Black Sea, Transylvania") :Carpathia (location :name "Carpathia" :summary "* The region suffered under a widespread magical disaster of unknown origin. Suddenly the dead began to rise in great numbers and overran the land. Small communities are allowed to live and are 'protected' by the Vampires that feed upon them. * Since the disaster, an unnatural fog surrounds the area. The fog seems to spawn undead and other monstrosities." :titles "Deadlands") "Carpathian Mountains" (location :name "Carpathian Mountains")) :unitmap (unitmap "Carpathian Witchhunter" (unit :name "Carpathian Witchhunter" :summary "* Some of the survivors of the Carpathian disaster formed a group to discover the cause of the disaster and to repair it. They seek magical knowledge of all sorts and fund themselves by using their talents as bounty hunters for the more dangerous bounties." :titles "Witcher"))) :Byzantium (section :name "Byzantium" :reference "Byzantine Empire" :summary "* Byzantium represents a sizable empire. They are an advanced people with an extensive legal system and extremely complex rules, religion, and politics." :titles "Eastern Empire" :locationmap (locationmap :Constantinople (location :name "Constantinople")) :unitmap (unitmap "Byzantine Assassin" (unit :name "Byzantine Assassin") "Byzantine Emperor" (unit :name "Byzantine Emperor" :summary "* The emperor rules with divine right and is considered a god on earth.") "Byzantine Guard" (unit :name "Byzantine Guard") "Byzantine Monk" (unit :name "Byzantine Monk") "Byzantine Noble" (unit :name "Byzantine Noble") "Byzantine Official" (unit :name "Byzantine Official") "Byzantine Priest" (unit :name "Byzantine Priest") "Byzantine Spy" (unit :name "Byzantine Spy"))) "Caspian Sea" (section :name "Caspian Sea" :unitmap (unitmap "Caspian Corsair" (unit :name "Caspian Corsair" :summary "* These corsairs are viscious cutthroats prone to violence and murder. There are a number of different pirate bands, all rivals to one another. In lean times they prey on one another and compete over plunder. When relaxing, they favor Ska-wae, a dangerous game played with curved knives and dice.") "Caspian Mercenary" (unit :name "Caspian Mercenary" :summary "* The Caspians are notable for their lack of discretion concerning the type of work they will take on. Unfortunately, they are also notable for disappearing when they see the risks getting too high.") "Caspian Rogue" (unit :name "Caspian Rogue"))) :Hesperia (section :name "Hesperia" :reference "Turkey" :summary "* Hippolyta - Queen of the Amazons. She was abducted and forced to wed the king of Athens. She was later cast off and returned to the Amazons * Warfare - Amazon combat philosophy takes a very long term view of victory. They do not put much value in military victories. Instead they believe in subverting, frustrating, and outlasting their opponents. They will avoid head-on battles, preferring flanking and strike and fade attacks. For this reason, they do not have maintain heavy units, but instead maintain superior skirmishers, spies, and assassins. * Religion - Amazons revere the image of Gaia, the All-Mother, but they do not worship her as as deity. Instead, the Amazons believe that the female is the natural mother of all things, and that each woman may find all the strength that she needs within herself. The Amazons further believe that with patience and proper nuturing, women will naturally assert their leadership across the world. * Politics - Amazons engage with other nations for trade, but their real power lies in their message of female power which they quietly spread around the world. This has created a vast spy network that spreads vital information as gossip." :titles "Home of the Amazons, Sarmatia" :unitmap (unitmap "Amazon Archer" (unit :name "Amazon Archer" :summary "* Amazon dedication to archery is legendary. Some have one breast removed to prevent interference with the draw of their bow.") "Amazon Assassin" (unit :name "Amazon Assassin") "Amazon Infiltrator" (unit :name "Amazon Infiltrator") "Amazon Peltast" (unit :name "Amazon Peltast") "Amazon Scout" (unit :name "Amazon Scout") "Amazon Trapper" (unit :name "Amazon Trapper") "Amazon Warrior" (unit :name "Amazon Warrior"))) :Scythia (section :name "Scythia" :sectionmap (sectionmap :Arim (section :name "Arim" :summary "* Arim is a land of rough and irregular hills. The weather is usually overcast and windy. It has substantial mineral wealth, especially iron. * People - The people of Arim are a dour and moody lot with swarthy complexions, and long black hair. The men tend to be gaunt and wiry with hatchet-life features. The women tend to be heavy-set and lacking in charm. They are generally a humorless people who have lived hard lives as miners. * Reputation - The Arimites have a not unwarranted reputation of being cutthroats and assassins. * Revenants - Revenant is the name of anyone who exacts revenge for money. If anyone feels they need redress for any offense, they can post a notice in a public place along with a reward, and if the reward is high enough they can expect it to be carried out. Almost any kind of vengence can be commissioned including arson, theft, mugging, extortion, murder, or even slander. Murder for hire is probably the most lucrative. Government officials, laborers, merchants, jealous lovers, and irrate housewifes have all been known to use the Revenants. It is so common, that the mere shaking of a change purse has become a threat of revenge." :unitmap (unitmap "Arimite Knife Fighter" (unit :name "Arimite Knife Fighter") "Arimite Revenant" (unit :name "Arimite Revenant"))))) "Shattered Lands" (section :name "Shattered Lands" :summary "* The Shattered Lands is bleak and desolate. The landscape is nightmarish: jagged spikes of rock jut upward from the cracked and barren earth. The violent upheavals have exposed many mineral deposits. Unfortunately, the residents of this land have used strip mining techniques which have badly polluted the air and rivers. The air is tinged with a fine ash, the waters are foul tasting, and there are many dangerous chemical waste products including bubbling pools of lye. Creatures living in the rivers and lakes are often deformed or mutated. * The Shattered Lands are home to many small, violent clans that violently compete with each other for the scarce resources in this bleak area." :titles "Harak" :locationmap (locationmap :Urag (location :name "Urag" :reference "* A group of scholars entered Urag with the contention that the Ur were not evil but were a product of their harsh environment. They encountered a small band of Ur and offered them gold, fragrant oils and gems. These the savages examined and discarded. Without apparent enmity, they slew the scholars, took their cloths and fed the remains to their hunting dogs. They then killed the scholars' mounts, butchered them for meat, and continued on their way." :summary "* The nation of the barbarous Ur. * Ur - The Ur are a hard-hearted people utterly devoid of mercy or compassion. Ultimate survivalists, they view all other living creatures as prey. Forced by the circumstances of their existence, they are by nature fatalistic and grim. They take what they want, raiding both rival clans and neighboring lands. The Ur are nomadic, traveling from place to place in search of food and water - both precious commodities in this region. All Ur consider themselves to be warriors and trades not related to survival and warfare are considered useless.")) :unitmap (unitmap "Darkling Cutthroat" (unit :name "Darkling Cutthroat" :summary "* The Ur have subjegated the Darkling race and use them as cannon fodder in battle. The Darklings are vile creatures and are extremely difficult to manage, so the Ur are ruthless when administering discipline.") "Stryx Spearman" (unit :name "Stryx Spearman" :summary "* The vile Stryx have allied themselves with the Ur and nominally serve them. The Stryx, however, are loyal to no one and cannot be relied on in battle. The Ur find them frustrating but useful allies.") "Ur Horseman" (unit :name "Ur Horseman" :summary "* Horses are rare in the Shattered Lands, so only the most decorated warriors receive them. However, with nearly no tradition of horsemanship, the Ur usually dismount before combat.") "Ur Shaman" (unit :name "Ur Shaman" :summary "* The Ur have little education and are inept spell casters. They claim they are great seers though their predictions are always open to interpretation. The Ur military leaders use their 'prophesies' to support their own agendas.") "Ur Warlord" (unit :name "Ur Warlord" :summary "* The Ur clans are rules by a series of viscious warlords each trying to increase their own power and influence at the expense of others. The ceaseless infighting amond the Ur clans prevents them from being more than a regional threat.") "Ur Warrior" (unit :name "Ur Warrior" :summary "* The Ur Warrior is the typical shocktrooper of the Ur clans. Most adult Ur, male or female are considered warriors."))) "Volcanic Hills" (section :name "Volcanic Hills" :locationmap (locationmap "Dragon Rock Mountain" (location :name "Dragon Rock Mountain" :summary "* Dragon Rock is an active volcano that has blighted the Volcanic Hills with its many eruptions over the centuries. It has not erupted in recent memory and seems to be content pouring out smoke and lava creating the River of Fire. Dragon Rock is also so named because a number of Fire Dragons live in the area, apparently drawing strength from the volcano.") :Firefalls (location :name "Firefalls" :summary "* The River of Fire ends at an enormous, seemingly bottomless chasm, The lava pours off the edge in a spectacular display before dropping into untold depths. The view is particularly impressive at night. Some believe the chasm is actually a portal to the underworld and the large number of fire demons in the area supports that claim.") "River of Fire" (location :name "River of Fire" :summary "* The River of Fire is actually an everflowing torrent of molten lava pouring from Dragon Rock Mountain and finally dropping over Firefalls. Fire Demons and Elementals are said to swim in the river and Fire Dragons have been seen consuming the lava."))))) :Northlands (section :name "Northlands" :titles "Frozen North" :locationmap (locationmap "Plateau of Leng" (location :name "Plateau of Leng") "Unknown Kadath" (location :name "Unknown Kadath")) :sectionmap (sectionmap :Aurorea (section :name "Aurorea" :reference "* Greenland, Iceland * In Greek mythology the Hyperboreans were mythical people who lived 'beyond the North Wind'. The Greeks thought that Boreas, the god of the North Wind lived in Thrace, and therefore Hyperborea indicates a region that lay far to the north of Thrace. * This land was supposed to be perfect, with the sun shining twenty-four hours a day, which suggests a possible location within the Arctic Circle." :summary "* Auroea is a land of vast snow fields, glittering ice peaks, and frozen lakes. * People - The Auroran people are tall and statuesque and live in crystalline, ice castles. Their artificers work with the unique material Adamant, the fabled permanent ice of lengend. The Aurorans have an amazing resistence to the cold but conversely they are only confortable in freezing temperatures. * Religion - The Aurorans revere Boreas the god of the North Wind. They do not create temples but instead build altars in the open wilderness where one can truly feel his presense." :titles "Hyperborea" :locationmap (locationmap "Sea of Ice" (location :name "Sea of Ice" :summary "* An expanse of shimmering, perpertually frozen water, the Sea of Ice is traversed by the Aurorans on Ice Schooners and personal Ice Skimmers.")) :unitmap (unitmap "Auroran Alchemist" (unit :name "Auroran Alchemist" :summary "* The Auroran Alchemists work with the Auroran Ice Witches to create permanent magical ice with similar properties to steel.") "Auroran Banker" (unit :name "Auroran Banker" :reference "* People say the Northland Bank's true currencies are blood and tears, but mayor, even speaking as a banker, that seems a little unconscionable. - Pantalone, Genshin Impact") "Auroran Ice Queen" (unit :name "Auroran Ice Queen" :reference "* Elsa - Frozen") "Auroran Ice Witch" (unit :name "Auroran Ice Witch" :summary "* Auroran Ice Witches serve as seers and priests of Boreas the god of winter and the North Wind. They are masters of cold magic." :titles "Ice Warlock") "Auroran Tundra Scout" (unit :name "Auroran Tundra Scout" :summary "* The army and hunters of the Auroran people. They are typical skirmishers with phenomenal survival skills.") "Auroran Ice Skimmer" (unit :name "Auroran Ice Skimmer") "Auroran Ice Schooner" (unit :name "Auroran Ice Schooner" :titles "Ice Outrigger"))) :Jotunheim (section :name "Jotunheim" :summary "* Frost Giants - The Frost Giants wage perpetual war on all creatures especially the Aurorans and Nords. Their lack of tactical ability is made up for by their phenomenal strength, endurance, and determination. Their bodies emminate extreme cold, so as they expand their territory the temperatures drop. Their goal actually seems to be to freeze the world." :locationmap (locationmap "Ymir's Teeth" (location :name "Ymir's Teeth" :summary "* A massive ridge of jagged moutains that the Frost Giants believe are the teeth of an inconceivably large god and that the world lies in its open maw awaiting the day when the being awakes. * Home of the Frost Giants, this is also the main location where blue diamonds can be found. Mining of blue diamonds began the war between the Aurorans and Ice Giants."))) :Khazad (section :name "Khazad" :summary "* A strange and unknown realm, Khazad is located in the furthest reaches of the world. It is practically inaccessible. A line of precipitous 200 foot cliffs runs the length of its eastern coast and a ridge of mountains extends along its eastern borders. To the north lie fields of ice and snow. As a result of these impediments to travel, much of what is known is based on a very few hardy adventurers who have survived journeys to this isolated area. According to accounts, the interior is also less than inviting. Patches of bleached and barren gall oak stand like skeletons silhouetted against a dreary purple-grey sky. Broken and irregular lines of hills are interspersed with moors, quagmires, and stagnant ponds. The air is heavy with the stench of moldering vegetation and exudes an unsettling, ancient quality. * Lost Kingdom - Scattered throughout the region are the ruins of a long forgotten civilization. * The eastern cliffs are sheer, 200 foot cliffs that ring the coastline. Giant diabolical visages have been carved into the cliff-sides along portions of the coast. A clan of flying devils makes its home in the mouths and eye-sockets of the immense stone effigies and fly out to attack those who draw too close. * Seas - The seas around Khazad are said to be home to many sea monsters including sea demons. The black ships of the Nefaratus are known to frequent these waters as well." :locationmap (locationmap "Khazad Burial Grounds" (location :name "Khazad Burial Grounds" :summary "* Far to the north are vast burial grounds, denoted by row upon row of age-worn stone markers. The remains of a man-like race have been found in massive sarcophagi of strange design. Some of the more important bodies were buried with gold funerary masks of frightening aspect. These masks are believed to be intended to ward demons or evil spirits from the deceased. Rarely these tombs contain brass urns sealed with paraffin. These artifacts were sometimes used to imprison Bottle Imps or safekeep the corpse-dust of departed wizards. Prized by curio collectors and necromancers, these relics bring high prices. Unfortunately, necrophages haunt the region, craving fresh corpses over the dry bones of the long dead.") :Necron (location :name "Necron" :summary "* There are stories of an entire city and its inhabitants buried beneath the earth. All of its inhabitants supposedly mummified and interred in stone sarcophagi. Very little reliable information is available about this supposed necropolis."))) :Nefaratus (section :name "Nefaratus" :summary "* A bleak island nation, home to the Black Savants. Little is known of their isolated homeland culture or motives. What is known is that they seldom leave their obsidian towers and that they wield powerful magic. Here they stare into their obsidian mirrors and converse with unseen beings. Many believe that the Black Savants are diabolists and receive advice and consel from the giant devils known as Shaitan," :locationmap (locationmap :Maledictus (location :name "Maledictus" :summary "* The capital city of Nefaratus")) :unitmap (unitmap "Black Savant" (unit :name "Black Savant" :summary "* Black Savants are tall and gaunt with deathly pale white skin under their full black robes. They remain fully covered at all times, and it is said that they molder away to nothing after death. There are those who say that the Black Savants are not actually living creatures. * The Black Savants are greatly feared by other folk. They avoid contact with others and mainly communicate by means of arcane signs and gestures.") "Black Ship" (unit :name "Black Ship" :summary "* The Savant's midnight black vessels are said to sail the cursed waters at the edge of the world. It is claimed that they are propelled by demons chained to the oars with silver shackles and driven by giant copper skinned devils. These ships have been known to pull into port cities on moonless nights only to leave again before dawn."))) :Nordland (section :name "Nordland" :reference "Finland, Norse, Sweden" :summary "* The Nords are a large race of humans. Nords have relatively short lifespans, but they do not physically weaken with age until they are near death. * Personality - Nords are deeply emotional and prone to raucous laughter, deep brooding, and intense rage. They generally believe in living in the moment and do not typically hold regrets or grudges. * The Nord Way - The Nords have a tradition of stark minimalism reflecting there severe environment. They tend to discard any activity or tradition not directly related to survival. This simplicity sometimes surprises others to which the Nords steadily reply that it is the 'Nord Way'. * Marriage - The Nords do not formally marry. Instead they prefer to simply live together (The Nord Way) trusting that if they keep their love strong, they will naturally stay together. * Ma and Fa - Endearing terms for Mother and Father" :titles "Aesir, Aesyr, Frostland" :locationmap (locationmap :Skyrim (location :name "Skyrim")) :unitmap (unitmap "Nord Axemen" (unit :name "Nord Axemen") "Nord Berserkers" (unit :name "Nord Berserkers") "Nord Light Archers" (unit :name "Nord Light Archers") "Nord Skirmishers" (unit :name "Nord Skirmishers" :titles "Scouts") "Nord Spearmen" (unit :name "Nord Spearmen") "Nord Valkyrie" (unit :name "Nord Valkyrie"))) "Worlds Edge" (section :name "Worlds Edge" :summary "*"))) :Mediterranea (section :name "Mediterranea" :sectionmap (sectionmap :Aegea (section :name "Aegea" :reference "Aegean Islands, Greece" :summary "* Scholar * Senator * Spartan * Gorgons * Harpies * Status - The Aegean navy dominates the Aegean island chain and enables a thriving merchant trade across Mediterranea. * History - The Aegean city states used to be individual monarchies until the Imperium swept in and conquered Hellas, the capital. During the invasion, the Hellenic leadership fled with its navy and united the other city states under the name Aegea. Since then, the Imperium sent it navy to conquer Crete and was disasterously routed by the Aegean navy. The Aegeans subsequently attempted to retake Hellas and was easily repelled. Now an uneasy truce exists with the Imperials unable to create the navy it needs for conquest and the Aegeans unable to create the army it needs to drive out the Imperials." :locationmap (locationmap :Crete (location :name "Crete") :Hellas (location :name "Hellas" :summary "* Description - Currently a territory of the Imperium, Hellas is an orderly and socially advanced nation. They have a partial democracy (answerable to the Imperium) and a complex legal system that is surprisingly fair. * Universities - Hellan Universities are famous for acedemia, sciences, and philosophy. They do, however, share their Imperial neighbor's prejudices against Naturalism and the Arcane (except for Alchemy and Artifice which are considered sciences).") :Knossus (location :name "Knossus") :Labyrinth (location :name "Labyrinth" :summary "A natural maze of cracked basalt") "Mount Parnassus" (location :name "Mount Parnassus" :summary "* The Oracle of Delphi is on the slopes of Parnassus.") :Minoa (location :name "Minoa") :Olympia (location :name "Olympia" :summary "* Statue of Zeus - One of the Seven Wonders of the World. * Olympiad - The Olympic games.") :Rhodes (location :name "Rhodes" :summary "* Famous for the Colossus of Rhodes, a 30m tall statue of Helios and one of the Seven Wonders of the World. * It is said that the Colossus can move, though there is no evidence to support this. * The Colossus was constructed to celebrate the failure of an invasion force of 40,000 to take the city. Massive siege towers were necessary to take the walls. The first was mounted on six ships, but these capsized in a storm before they could be used. A larger, land-based tower was defeated when the defenders flooded the land in front of the walls so that the rolling tower could not move. The next year, a relief force arrived and the siege was abandoned. Much of the iron and bronze was reforged from the various weapons left behind, and the abandoned second siege tower was used for scaffolding.") :Sparta (location :name "Sparta") "Swamp of Despair" (location :name "Swamp of Despair")) :unitmap (unitmap "Hellenic Scholar" (unit :name "Hellenic Scholar") "Seer of Delphi" (unit :name "Seer of Delphi" :summary "* The seers are recluses who live on Mount Parnassus with the Oracle. Here they tirelessly record their visions in massive leather bound tomes. Those who manage the perilous climb visit the temple seeking knowledge are treated with hospitality and an endless series of questions about the outside world to compare with their visions. Those who seek personal gain may find the Seers to well prepared and to be less than personable hosts. * According to legend, the first great Oracle had a vision that after his death, he would travel in the afterlife for a long time, but that one day he would return to share his experience. It is said, the Seers gather knowledge to share the experiences of the living world with the Oracle when he returns. Though it may seem farfetched, many traditions reflect the expectation of the Oracle's return: lights in the windows at night, an extra place set at meals, an unoccupied bedroom spotlessly maintained, etc.") "Spartan Warrior" (unit :name "Spartan Warrior"))) :Arden (section :name "Arden" :titles "Alfar, Ljossalfar, Elder, Elf, Sidhe, Sidheni, Sylvan, Sylvus" :locationmap (locationmap :Alfheim (location :name "Alfheim") :Ardenwood (location :name "Ardenwood" :reference "* We had entered the Ardenwoods on a scouting mission to probe the Sidhe defenses. We had only been in the woods for half an hour before arrows started raining from the trees. Forms flitted among the leaves and brush all around, but we never saw our attackers. We were forced to flee, and they allowed us to leave. The exact nature and numbers of their defenders remains unknown, but their effectiveness was clear. - Imperial Expeditionary Log") :Ashwood (location :name "Ashwood")) :unitmap (unitmap "Arden Archer" (unit :name "Arden Archer") "Arden Bard" (unit :name "Arden Bard") "Arden Defender" (unit :name "Arden Defender" :titles "Arden Warrior") "Arden Druid" (unit :name "Arden Druid") "Arden Healer" (unit :name "Arden Healer") "Arden Hunter" (unit :name "Arden Hunter") "Arden Lyrist" (unit :name "Arden Lyrist") "Arden Ranger" (unit :name "Arden Ranger") "Arden Scout" (unit :name "Arden Scout") "Arden Unicorn Cavalry" (unit :name "Arden Unicorn Cavalry") "Cu Sith Hunting Dog" (unit :name "Cu Sith Hunting Dog" :summary "* An enormous fairy hound roughly the size of a cow. * Dark green in color with shaggy fur and a long braided or curled tail. * Capable of hunting silently * Will occasionally let out three terrifying barks that can be heard for long distances, including by ships at sea. This was said to be a warning to farmers to lock up their women, lest the beast abduct them and take them to a fairy mound to supply milk for fairy children." :titles "Fairy Dog (pronounced coo shee), Cu Sidhe") "Goddess Selene" (unit :name "Goddess Selene" :reference "* The Moon is our Goddess, the night her kingdom! - Diana, Legends of Runeterra" :summary "* Most Alfar revere the Moon Goddess Selene."))) :Gaul (section :name "Gaul" :reference "France, Gallia" :summary "* Syndicate - The Gaul Syndicate is a sophisticed crime cartel." :locationmap (locationmap :Catacombs (location :name "Catacombs") :Mistridge (location :name "Mistridge" :summary "* A walled town housing the main lodge of the Order of Hermes magical society. Mistridge is loosely affiliated with the Arcanum to the East, but the members of the Mistridge lodge keep a low profile as opposed to the grandiose towers of the Arcanum.")) :sectionmap (sectionmap :Elysia (section :name "Elysia" :reference "Southern France" :summary "* Elysia is a land of gentle hills and sparse woodlands shifting to deep woods along its northern border. It is named after Elysium, the legendary land of the Fae. Elysia was annexed by the Imperium 50 years ago, and no one seems to particularly mind the new owners. * People - The people of Elysia are fond of music, dance and all manner of stimulating pastimes. They enhance their features with makeup and dress in flamboyant apparel including velvet blouses and trousers, capes of silken brocade, soft slippers and so forth. The women hide their faces behind decorative fans to give the impression that they are shy and demure. This is hardly the case. The men are even less subtle and are widely regarded as lechers and philanderers in other lands. The Elysians consider romance to be a wonderful game to be played constantly. * Beliefs - The people believe that the world is filled with mysteries and that these mysteries are ultimately unsolvable. The point of life is not to pursue the answers but to marvel at the mysteries themselves. In these beliefs, there is no right or wrong, only perspective and sublty. * Law - The unusual way they see right and wrong, leads to a fairly arbitrary justice system. Small crimes are basically ignored, so petty theft especially pickpocketing is rampant. Major crimes, on the other hand, are dealt with quickly and severely. Trials are held in public with justice determined by popular vote by those attending. Punishment is arbitrarily and creatively disposed by the Mayor of each city. * The Night of Fools - Once each year, the infamous festival known as the night of fools takes place. During this night almost no crimes are prosecuted. People dress in ludicrous costumes and take to the streets in an evening of revelry, debauchery, and mayhem. On the following day, order is restored. * Beggars - Begging is considered an honest, if unenviable, profession in Elysia. Though many are frauds and thieves, the Elysians are fond of their beggars and expect others to be equally open-minded. It is traditional to scatter coppers when beggars appear or suffer public scorn and ridicule. * Bath - Public and private bath houses (with or without masseuse) are a popular pasttime and meeting place similar to a tavern elsewhere complete with snacks and drinks." :unitmap (unitmap "Elyisan Artisan" (unit :name "Elyisan Artisan") "Elyisan Chevalier" (unit :name "Elyisan Chevalier") "Elyisan Duelist" (unit :name "Elyisan Duelist") "Elyisan Rogue" (unit :name "Elyisan Rogue") "Proprietress Mazilda" (unit :name "Proprietress Mazilda" :summary "* Mazilda was a passable sorcerous until she lost an arcane duel and was cursed with an obsession with cleanliness. She opened a bathhouse where she can make a living while she can clean herself as often as necessary. She is functionally a shut-in now, and longs for tales of the outside world to which she can no longer travel.")))) :unitmap (unitmap "Gallic Acrobat" (unit :name "Gallic Acrobat") "Gallic Charlatan" (unit :name "Gallic Charlatan") "Gallic Duelist" (unit :name "Gallic Duelist") "Gallic Militia" (unit :name "Gallic Militia") "Gallic Warrior" (unit :name "Gallic Warrior"))) :Bavaria (section :name "Bavaria" :locationmap (locationmap :Blackmarsh (location :name "Blackmarsh"))) :Iberia (section :name "Iberia" :reference "Portugal, Spain" :sectionmap (sectionmap "Order, The" (section :name "Order, The" :summary "* The Order is a large, theocratic nation which lies to the west of Elysia. Life in the Order is dominated by religion, the Hierophant, and the Theocracy. * Geography - The Order covers a large mountainous pennisula, separated from Elysia, and the Imperium by the Pyrenees mountains. * Daily Life - The influence of the religion is evident everywhere. Individualism has been throughly suppressed. All citizen dress alike, speak in tired cliches, and effect identical mannerisms. * Laws - Laws of the Order are extremely strict and narrowly interpreted. Those who commit even the slightest transgression are dragged to the Halls of Penance. At the discretion of the Inquisitors, non-believers may be forcibly converted or may simply 'disapper'. * Visitors - Travellers from other lands are rare and stand out like beacons. They are generally treated as inferiors and are only tolerated if their presense is of some advantage to the state. * Alms - A person's spiritual enlightenment is measured by the Theocrats in a spiritual value called Alms. Alms are awarded for specific contributions to the church including tithes, military service, good deeds, church titles, pilgrimages, etc. Each rank provides specific perks within society but is also intened to be a direct measure of the quality of the person's afterlife. * Clash of Champions - The Imperium has tried to invade the Order twice to no avail. The geography and religious zealots of the Order have proven too difficult to overcome. Since the last battle, the Order and Elysia (backed by the Imperium) have waged a propaganda war culminating in the annual event known as the Clash of Champions. Each year both nations scout for worthy (and expendible) warriors to represent their interests in a duel atop the main gates of the Order capital. The winner receives great rewards from their sponsor. Though not technically, a duel to the death, it is expected that the loser will be thrown or forced off the gates to fall 20 feet below to the roar of the crowds. It is considered a particular coup to cause a vanquished foe to fall amongst his or her own supporters. Since the Order and Elysia could scarsely be more different in their outlooks on life, the winners consider their victory to be a referendum on the virtues of their philosophies. The Order takes the competition very seriously and, of course, gambling and drinking are not allowed within the city walls. Elyisians consider the Clash to be one of the social events of the season. Though they must travel through the mountain pass and they are not permitted entrance to the city, they still come in large numbers with their wagons, children, merchants, wenches, gamblers, acrobats, and performers. For the Elysians, the party is equally large whether they win or not." :titles "Chantry, The Order, Papal States, Theocracy" :locationmap (locationmap "Halls of Penance" (location :name "Halls of Penance") "Order Catherdral" (location :name "Order Catherdral") "Order Monastery" (location :name "Order Monastery") "Order Nunnery" (location :name "Order Nunnery") "Order Reliquary" (location :name "Order Reliquary")) :unitmap (unitmap "Order Apostate" (unit :name "Order Apostate" :summary "* An outcast who has lost his Alms and effectively forsaken the religion. Apostates are pariahs within the Order.") "Order Brother" (unit :name "Order Brother" :summary "* Monks of the Order swear numerous oaths of purity including oaths of poverty and celebacy. Most Brothers live in a Monestary, while others travel the world doing good works and spreading the word of their God.") "Order Crusader" (unit :name "Order Crusader" :summary "* The armored knights of the Order. They serve as the officers of the army and navy.") "Order Evangelist" (unit :name "Order Evangelist") "Order Father" (unit :name "Order Father") "Order Hierophant" (unit :name "Order Hierophant" :summary "* The Hierophant is the undisputed religious ruler of the nation. Though he theoretically holds no military power, he is considered to be infallible and a direct emissary of God, so he practically wields absolute power. His power is maintained by the Theocracy, so he must maintain their trust at all times.") "Order Inquisitor" (unit :name "Order Inquisitor" :summary "* The Inquisitors have a single task: to root out and elminate heretics. To this end they act as judges, secret police, and interrogators. Inquisitors preside over rituals desgined to purge unacceptable desires from penitent hearts using methods that some might call torture.") "Order Mother Superior" (unit :name "Order Mother Superior") "Order Priest" (unit :name "Order Priest") "Order Sister" (unit :name "Order Sister" :summary "* Nuns of the Order swear numerous oaths of purity including oaths of poverty and celebacy. Sisters live in a Nunery and seldom leave except to perform tasks in nearby towns.") "Order Templar" (unit :name "Order Templar" :summary "* An official Mage Hunter/Witch Hunter of the Order. * Since magic that is not sanctioned by the church is heresy, the Templars are commissioned to contain or eliminate enemies of the Order that are beyond the capabilities of the Inquisitors. They are given great authority to complete their missions and can rely on the Inquistors and Crusaders for aid.") "Order Theocrat" (unit :name "Order Theocrat" :summary "* The Theocracy serves as both a religious and government center. The Theocrats maintains the Library of Revelations which are the great books of religious canon that supposedly answer any question worth knowing. Interpreting these books allow the Theocrats to rule on all matters of daily life: clothing, trade, law enforcement, etc. These interpretations have led to a very rigid, conservative society where many acts are considered heretical."))))) :Imperium (section :name "Imperium" :reference "Rome, United States" :summary "* Description - The Imperium is the most stable and advanced nation in history. It is known as a conquering nation that has taken over much of the modern world. Its reputation is somewhat exaggerated. The Imperial Legionnaires are the most devastating standing army on the planet, but the Imperium has had its share of defeats and finds it hard to hold territory that it 'conquers'. Fortunately, the Imperium is mostly concerned with trade and is very willing to negotiate with its neighbors and allow autonomy in its territories in order to concentrate on its borders to the east where it faces constant incursions from the Shattered Lands and from the Dragon's Eye. * Currency - Imperial Sovereigns (Imperials or Crowns) are made from gold, have eight sides, and have the image of the current emperor on the front and the imperial seal on the back. They are made of solid gold and are accepted almost everywhere. * Architecture - Imperia has a love of monolithic buildings with towering columns that reflect the Imperial ego. * Roads - The Imperium maintains excellent cobblestone roads throughout its own and its allies territories. All roads lead to Imperia and have armed forts at regular intervals with Centurions, an inn, and a trading post. The forts charge a toll to pass, prices at these forts are high, and any trade done is taxed, but forts are always professionally defended and are generally worth the price. The roads benefit trade, but are also a reminder of the influence of the Imperium." :titles "Italia, Sovereign" :locationmap (locationmap :Imperia (location :name "Imperia" :summary "* The capital city of the Imperium." :titles "Empire" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))) "Mount Vesuvius" (location :name "Mount Vesuvius") :Pompeii (location :name "Pompeii" :summary "* The story of the destruction of Pompeii when Mt. Versuvius erupted is widely known. The story is often used as a cautionary tale to obey the will of the gods. * Pompeii is now an empty ruin that functions as an enormous graveyard for the approximately 20,000 victims of the disaster. The dead remain at rest as long as the the area is undisturbed, and careful travellers may investigate the area at their peril. If there is any disturbance the bodies begin awakening as Burning Dead and are hysterically drawn to the living who will not long survive their embrace.")) :unitmap (unitmap "Imperial Centurion" (unit :name "Imperial Centurion") "Imperial Gladiator" (unit :name "Imperial Gladiator") "Imperial Legionnaire" (unit :name "Imperial Legionnaire") "Imperial Senator" (unit :name "Imperial Senator") "Imperial Slaver" (unit :name "Imperial Slaver") "Borderland Legionnaire" (unit :name "Borderland Legionnaire" :summary "* The far eastern outposts of the empire are manned by the Legion of the Borderlands. This is body of hard-bitten mercenaries, outcasts, and criminals from many lands. Being assigned to the Legion of the Borderlands one way that the Imperium makes use of troublemakers."))) :Teuton (section :name "Teuton" :reference "Germany" :summary "* Description - Currently claimed as a territory of the Imperium. * Dwarves" :itemmap (itemmap "Dark Forge" (item :name "Dark Forge" :summary "* A legendary forge where a man may be forged into the body of an Iron Golem, at the cost of his humanity.")) :locationmap (locationmap "Iron Mountains" (location :name "Iron Mountains" :summary "* The home of a stout race of men who live their lives on the cliffs and in tunnels of the Iron Mountains.") "Iron Citadel" (location :name "Iron Citadel" :summary "* The capital of the Iron Kingdom. It is an enormous castle built into a cliff-face. Though it is huge outside, the citadel is mostly within the mountain. The mountain face makes the citadel basically impregnible from the outside. The true danger, however, lies undergound...") "Deep Roads" (location :name "Deep Roads" :summary "* A fantastic labyrinth of inter-connected, underground tunnels deep within the earth. The tunnels were mostly created by volcanic activity and underground rivers ages ago. They are so extensive that many civilizations live within the Deep Roads." :titles "Dark Roads, Underdark, Underlands"))) :Zura (section :name "Zura" :reference "Switzerland" :summary "* Zurans are small in stature but very well educated people. They are are highly materialistic and suspiscious of others. They prefer windowless towers to minimize the chance of theft. They typically hide and trap their valuables and carry hidden weapons all the time." :titles "Gnomes of Zurich" :locationmap (locationmap "Zuran Academy" (location :name "Zuran Academy" :summary "* The Zuran Academy is large complex of buildings that house schools, libraries, laboratories, and forges. Here can be found worlds most advanced scientific pursuits including: Alchemy, Thaumaturgy, Artifce, Gold/Silversmithing, Timekeeping, Glassblowing, and Tinkering. * Masters take on students as apprentices to dedicate their lives to a craft.") :Zurich (location :name "Zurich")) :unitmap (unitmap "Zuran Inventor" (unit :name "Zuran Inventor" :summary "* Zuran Inventors are masters at fine mechanics including clockworks, locks, and traps.") "Zuran Moneylender" (unit :name "Zuran Moneylender" :summary "* These moneylenders are shrewd negotiators and are always looking for a way to make a profit and manage their risk. They hire enforcers to make sure payment is made in full.") "Zuran Procurer" (unit :name "Zuran Procurer" :summary "* Zuran merchants are unusual in that they tend to not maintain any particular product. Instead, they use their connections to locate and procure whatever is required. They are expensive, but they take great pride in their work and ensure that their customers are always satisfied.") "Zuran Sage" (unit :name "Zuran Sage" :summary "* Zuran Sages are librarians, reasearchers and advisers.") "Zuran Thief" (unit :name "Zuran Thief" :summary "* Zuran thieves materialism of course leads many to steal what they want. The skilled thieves in Zuraare precisely why the Zurans are so paranoid of theft. The skilled locksmiths are met with equally skilled lockpickers in a security arms race."))))) "Middle East" (section :name "Middle East" :sectionmap (sectionmap :Arabia (section :name "Arabia" :reference "Saudi Arabia") :Assyria (section :name "Assyria" :reference "Babylon, Mesopotamia, Sumeria" :summary "* Twin Rivers - Assyria is a verdent valley nestled between the Tigris and Euphrates Rivers." :sectionmap (sectionmap :Magisterium (section :name "Magisterium" :summary "* Magister * Maleficar - A practitioner of Black Magic * Librarian * Certamen - Arcane Duel * Templar" :titles "Magocracy" :locationmap (locationmap :Arcanum (location :name "Arcanum" :reference "Chantry, Ivory Tower, Tower of Babylon" :summary "* The Arcanum is a colossal, tiered, white tower that houses the wizards of the Magisterium and their servants. * Construction - The tower is continually being built wider and higher using a combination of wizardry and labor. Its towering height represents the wizards power and dominion over the area. There are those who argue that the height of the tower has become a liability, but building the tower holds great symbolic and traditional importance, so those voices carry little weight. Inside, the tower has concentric walls that were built outward over time like tree rings. The complex construction has left much room for hidden passages and chambers throughout. * The home of the Arcanum Society, a fraterity of wizards, sages, alchemists, and artificers. Though their only stated goal is the pursuit of arcane knowledge, they are widely known as power brokers across the known world (and perhaps some unknown ones). * Arcanum Awards - The Arcanum Society holds an annual dinner to recognize the greatest magical discoveries of the year.") "Great Ziggurat" (location :name "Great Ziggurat") "Hanging Gardens" (location :name "Hanging Gardens" :reference "Hanging Gardens of Babylon" :summary "* One of the Seven Wonders of the World"))))) :Canaan (section :name "Canaan" :reference "Israel" :locationmap (locationmap "Mount Zion" (location :name "Mount Zion") "Solomon's Temple" (location :name "Solomon's Temple") :Zion (location :name "Zion") "Dead Sea" (location :name "Dead Sea"))) :Pars (section :name "Pars" :reference "Persia" :sectionmap (sectionmap :Farad (section :name "Farad" :summary "* Farad is an ancient land. * People - The country is largely poor and overpopulated. * Politics - Farad is ruled by a figurehead Kaliph, but each city state is actually run by individual Sultans who answer to no one. Assassination is an artform. Their assassins are known for their cunning and ruthlessness. * Justice - Justice is harsh and arbitrary. The militia is highly corrupt, and anything can be gotten for a price. * Economics - Trade caravans and shipping are huge sources of wealth. Spices and exotic dyes and weaves are particularly large industries." :locationmap (locationmap :Faradin (location :name "Faradin")) :unitmap (unitmap "Faradun Mercenary" (unit :name "Faradun Mercenary" :summary "* Since almost all actual Faradun are merchants, the army and navy are all highly paid mercenaries from other lands.") "Faradun Merchant" (unit :name "Faradun Merchant" :summary "* Few actual Faraduns are not merchants. Other tasks are done by slaves, indentured servants, convicted felons, and hired laborers.") "Faradun Procurer" (unit :name "Faradun Procurer" :summary "* A specialized merchant skilled at obtaining any entertainment or diversion imaginable regardless of its legal status ... for the right price. Procurers are famous for their discretion in this 'no questions asked' business. The Farad legal system does not hold Procurers liable for the actions of their customers, so they act with impunity."))) :Phatas (section :name "Phatas" :locationmap (locationmap :Phatasia (location :name "Phatasia" :reference "* Joseph Jacobs, Jack and the Beanstalk * Stratos - Star Trek, The Cloud Minders" :summary "* Phantasia is a unique city. Half of the city is quite normal, the other half is literally floating on a cloud. Long ago when a local hero slew a Cloud Giant, and the giant's floating keep remained hovering over the town where he lived. After the creation of windships, the townsfolk began converting the giant's keep into a human city. The city has towering walls, but has limited floorspace, so only the wealthiest live in the clouds. * Windships - Over time, the town grew and eventually a brilliant wizard discovered a way to construct windships based on his studies of the floating city. He made a fortune by keeping the technique a closely guarded secret. Unfortunately, the secret seems to have died with its creator, and no one has been able create new windships since. * Weather - Phantasia can get chilly and severe weather can be very harrowing.") "Bazaar of the Bizarre" (location :name "Bazaar of the Bizarre" :summary "* Each year for one week, the Phantasias hold an exhibition of oddities and diversions. To gain entrance, you must be attired in costume. Wearers of the most outlandish garb are awarded a silver goblet which allows them to drink for free during the festival. * Multi-colored tents and pavilions litter the festival grounds, each housing some sort of attraction: a duel of spell casters for wagers, abominations from the Aberrant Forest, Illusionary panoramas, romances, sensations, or improbabilities and other things which defy description. Visitors are invited to observer, partake of, or otherwise experience all he or she desires. Rare delicacies from around the world are available. * The climax is the award ceremonies when prizes are given in various categories including: 'Most Unique', 'Most Provacative', 'Most Absurd'. The final award is the most coveted: 'Most Bizarre'. A committee of 12 enchanters judge the competition, registering various degrees of approval or disapproval by means of magically enhanced facial expressions and gestures.")) :unitmap (unitmap "Phantasian Dreamer" (unit :name "Phantasian Dreamer" :summary "* The Dreamers use their [Dreaming] skill to capture and sell the exotic [Dream Essence] to those wealthy enough to afford such luxury.") "Phantasian Windship" (unit :name "Phantasian Windship" :summary "* The windships are wonderous craft which sail upon the winds as sea vessels ply the waters. They are constructed of the lightest possible materials and are therefore somewhat fragile and require constant repair. Extreme weather conditions are a particular concern especially high winds and freezing rain, and lightning. * The sails and rigging are made of gossamer. Flight is maintained by magical devices called levitationals below decks. These levitationals only provide elevational control. Directional control and speed are all subject to the wind."))))) :Raja (section :name "Raja" :summary "* Red Gold - The mines of Raja are rich with very impure gold deposits. Large slave colonies work the mines day and night. Rajans leave the red impurities in the smelting process leaving their gold with a swirled bloody look to it. * Rajan Glory - The only allowed currency of Raja are the blood red gold coins called Glories. They are simple and fearsome with a burning fire on one side and a cackling skull on the other. Like Rajan gold in general, the coins have a swirled bloody look to them and are only about 75% pure. Since Raja is considered a rogue state by other nations, possession of Rajan Glories is sufficient evidence to be imprisoned as a spy. On the black market the coins can get about 25% of their face value, especially in distant lands where the penalies for possession are lower." :unitmap (unitmap "Rajan Desert Warrior" (unit :name "Rajan Desert Warrior" :summary "* An army of religious fanatics who believe that their service in life will be rewarded in the after life, so they obey without question.") "Rajan Agent" (unit :name "Rajan Agent" :summary "* The loyal servants the Black Mystics. They act as spies, assassins, terrorists, and secret police thoughout the country and beyond.") "Rajan Inquisitor" (unit :name "Rajan Inquisitor" :summary "* The elite religious agents of the Black Mystics. They are priest, healers, torturers, and personal bodyguards of the Black Mystics." :titles "Torquar") "Rajan Black Mystic" (unit :name "Rajan Black Mystic" :summary "* The Black Mystics are necromancer/priest who lead the Rajan cult. They are religious fanatics and believe that they channel the will of their dread gods. * Black Mystic religious ceremonies typically feature ritual executions symbolizing conversion of non-believers to the cult. Demons perform the executions which draw great crowds of worshippers to the temples."))) "Desert Wastes" (section :name "Desert Wastes" :locationmap (locationmap "City of Brass" (location :name "City of Brass" :summary "* The City of Brass is a major city of the [Ifrit]. It is a beautiful place with palaces, libraries, and cathedrals all built to giant scale and all built of brass to withstand the withering desert heat.")) :unitmap (unitmap "Juzam Djinn" (unit :name "Juzam Djinn" :summary "* The Juzam Djinn are 14 foot tall, brass skinned devils with curved horns and tusk-like fangs. They wield huge stone clubs carbed with the visages of leering devils. They wear only necklaces of skulls collected as mementos of their grisly conquests. * They are fond of men whom they regard as fine eating. * They entertain themselves by various games including hurling large rocks long distances to crush various animals. They are also extremely fond of games of chance and wagers, though they are not above using their magical powers to tilt games in their favor."))))) :Oceania (section :name "Oceania" :titles "Pacific Ocean" :sectionmap (sectionmap "Cresent Isles" (section :name "Cresent Isles" :locationmap (locationmap "Nauticus Reef" (location :name "Nauticus Reef" :summary "* A great mass of coral filled with beautiful and dangerous sea life. The reef has been the cause of many shipwrecks over the years and is the subject of many perilous salvage operations over the years."))) :Lemuria (section :name "Lemuria"))) "Underground, The" (section :name "Underground, The" :titles "Underdark, Underdeep" :sectionmap (sectionmap "Underground Highway" (section :name "Underground Highway" :summary "* An extensive tunnel system that covers hundreds of miles and travels deep under many countries. * Ages ago an underground river flowed through this region carving out the massive tunnels and tributaries. The receding waters developed a vast underground ecosystem. Phosphorescent fungi even allowed sighted beings to thrive in this spectacular and bizarre underground world."))) :Wilderlands (section :name "Wilderlands" :reference "* Americas" :locationmap (locationmap "Aberrant Rainforest" (location :name "Aberrant Rainforest" :summary "* The Aberrant Rainforest is a weird and grotesque jungle the freakish origins of which are attributed to a magical mishap of unparalleled proportions. * All manner of rare and exotic vegetation can be found here, though nothing that grows here is as nature intended. The plants and trees appear heedless of natural law, growing to immense proportions or becoming gnarled and twisted in form. From the underbrush, animate tentrils of tanglewood reach out to ensnare the incautious. Among the reports of talking Mang trees, giant species of slugs and scavenger slimes, and strange insect-reptile hybrids are tales of intelligent plant creatures. * Murky streams flow uphill, stagnant ponds move slowly across the land, and the ground itself seems to pulse as if it were alive. * Because many varieties of unique and valuable herbs grow throughout the forest, visitors are not unknown.") "Lost Sea" (location :name "Lost Sea" :reference "Salt Flats" :summary "* Deep within the Wilderlands is a flat wasteland known as the Lost Sea. This area appears to be a dry seabed littered with the ancient skeletons of giant aquatic monsters. The area gets little rain and is layered in salt from the former sea, so nothing lives here. It is said that the wrecks of ancient ships can be found in isolated places potentially carrying treasures from ancient civilizations.") "Lost World" (location :name "Lost World" :reference "The Land that Time Forgot" :summary "* Deep within the Wilderland jungles is a towering ridge of a massive caldera formed by an ancient volcano. Within the caldera is a large expanse of jungle cut off from the outside world for millions of years. Numerous creatures though to be extinct still survive in this safe haven." :titles "Pangaea") "Salt Flats" (location :name "Salt Flats") "Sea of Glass" (location :name "Sea of Glass" :summary "* The sea of glass is a vast expanse of mostly flat glass. The sea was presumably formed by a massive firestorm detonating over a sandy desert, but no cause had been discovered. Travelling over the glass is similar to travelling over ice though the glass is much harder and the weather is very hot. The glass creates a blinding glare when the Sun is at the right angle, and the surface can seem like a giant frying pan under the noonday Sun.")) :sectionmap (sectionmap :Azteka (section :name "Azteka") :Maya (section :name "Maya") :Mandragora (section :name "Mandragora" :summary "* Mandragora is named for the unusual sentient plant-life, the Mandragore, who live here. * Mandragores - About three feet high and vaguely man-like, they are roughly humanoid in form with gnarled root-like limbs and leafy 'hair'. Their eyes are like dark knots and their mouths are like the twisted hollow of a tree. The Mandragore usually stand rooted and immobile during the day as they soak in sunlight. During this time, they are well camoflaged among the other plant-life. At night, they move about tending their chores and looking for trespassers who they attempt to capture with nets of vines and grasses. Their unfortunate victims are bound and buried alive as fertilizer. * Abilities - The Mandragore are weak fighters who rely on surprise and numbers to battle large foes." :unitmap (unitmap "Mandragore Herbalist" (unit :name "Mandragore Herbalist" :unitpowermap (unitpowermap :Naturalism (unitpower :name "Naturalism" :unitabilitymap (unitabilitymap "Warp Wood" (unitability :name "Warp Wood")))) :unitskillmap (unitskillmap "Physical Weakness" (unitskill :name "Physical Weakness" :unitabilitymap (unitabilitymap "Vulnerable to Fire" (unitability :name "Vulnerable to Fire")))))))))))) (func chapter_realms_beyond : base/chapter (chapter :name "Realms Beyond" :reference "* Reality is just your mind collapsing under what it doesn't understand, silly. - Zoe, Runeterra" :summary "* The realms beyond our mortal existence. * It is the origin of our souls, dreams, and imagination. It is also the home of spirits and demons. * All of the different realms are like closely packed soap bubbles. Where the bubbles touch, realms touch, and the presense of those realms can be felt. * The Realms Beyond are described by coordinates for +/-x, +/-y, +/-z, +/-t, +/-i (length, height, width, time, imaginary) * Realm Types: ** Universe: +x, +y, +z, +t, 0i ** Positive Planes: +x, +y, +z, +t, +i *** Hyperspace is when you travel through the Positive Planes: +i ** Void -x, +y, -z, -t, +i ** Antiverse: -x, -y, -z, +t, 0i ** Limbo +x, -y, -z, +t, -i ** Negative Planes +x, +y, +z, +t, -i *** Umbra/Subspace connects the Negative Planes -i ** Temporal Realms +/-x, +/-y, +/-z, +/-t, 0i" :titles "Multiverse, Realties, Realms" :sectionmap (sectionmap :Universe (section :name "Universe" :summary "* Location: +x, +y, +z, +t, 0i" :titles "Material Realm, Material Universe, Real World, Space") :Antiverse (section :name "Antiverse" :summary "* Antispace was created with the Big Bang. In this multiverse a larger amount of anti-matter than matter was created. They are very similar to the Material Realms, but their particles are deadly to beings from the Physical Realms and vis-versa." :titles "Antispace, Anti Realm, Negative Zone") :Void (section :name "Void" :summary "* The Void was created with the Big Bang. In this multiverse a roughly equal amount of matter and anti-matter were created. Almost nothing remains in this desolate lightless physical multiverse.") :Limbo (section :name "Limbo" :summary "* The Limbo was created with the Big Bang. In this multiverse a roughly equal amount of matter and anti-matter were created. Almost nothing remains in this desolate lightless spirit multiverse.") "Positive Planes" (section :name "Positive Planes" :titles "Higher Realms, Order Realms, Positive Realms, Positive Space" :locationmap (locationmap :Celestia (location :name "Celestia") :Hyperspace (location :name "Hyperspace" :summary "* Hyperspace is not an actual place, it is what one observes while travelling between Positive Planes.") :Source (location :name "Source" :reference "* I am kindness. I am unity. I am bigotry. I am expansion. I am the end! The DEATH that comes for expansion! For existence! The NULL that comes unto us all. Because I AM the PHOENIX! Life and death INCARNATE! The resurrection and renewal that will never end. Memories reawakened. A life lived and ended, again and again. A perpetual cycle of joy and sorrow. Anger and gratitude. Bliss and grief. All of them, just small parts of what relentlessly perseveres. Infinite, Absolute, Unconditional. - Madelyn Prior, X-men" :summary "* Location: 0x, 0y, 0z, t, +infinity-i * The White Hot Room is a single point at the infinite edge of [Positive Space]. As such, it holds infinite energy. * It is the home of the [Phoenix Force]. * It is speculated that beyond the Source, lies [Oblivion] in an endless cycle. * Some say all of reality is just shadows cast between the Source and Oblivion." :titles "Absolute Order, Positive Infinity, The Beginning, The Fountain, The Source, The White Hole, True Order, White Hot Room"))) "Negative Space" (section :name "Negative Space" :titles "Lower Realms, Negative Realms, Negative Space, Negative Universe, Negaverse" :locationmap (locationmap :Abyss (location :name "Abyss" :titles "Pandemonium, The Well") :Oblivion (location :name "Oblivion" :summary "* It is speculated that beyond Oblivion, lies the [Source] in an endless cycle." :titles "Absolute Chaos, The End, True Chaos") :Umbra (location :name "Umbra" :summary "* Hyperspace is not an actual place, it is what one observes while travelling between Positive Planes." :titles "Subspace") :Wyld (location :name "Wyld" :titles "Wildspace, Wylderlands, Wyldspace"))) "Temporal Realms" (section :name "Temporal Realms" :summary "* The Temporal Realms are described by coordinates for +/-x, +/-y, +/-z +/-t (length, height, width, time)" :locationmap (locationmap :Vortex (location :name "Vortex" :reference "* The Christmas tree, which can be traced in its origins back to pre-Christian European beliefs, represents an axis mundi. * The axis mundi (also cosmic axis, world axis, world pillar and center of the world) is a symbol representing the point of connection between sky and earth. It offers means of travel and correspondence between the two realms. It is also the place where the four compass directions unite. * It was an All-in-One and One-in-All of limitless being and self - not merely a thing of one Space-Time continuum, but allied to the ultimate animating essence of existence's whole unbounded sweep - the last, utter sweep which has no confines and which outreaches fancy and mathematics alike. It was perhaps that which certain secret cults of earth have whispered of as YOG-SOTHOTH, and which has been a deity under other names; that which the crustaceans of Yuggoth worship as the Beyond-One, and which the vaporous brains of the spiral nebulae know by an untranslatable Sign... - Through the Gates of the Silver Key" :summary "* The spiraling tunnel to infinity down all black holes, a corridor where the rules of time and space cease to have meaning. Some theorize that the Vortex is the eye of the storm within [Oblivion] and is the ultimate connection between [Oblivilion] and the [Source]. * It is said that the World Tree's roots are the [Ley Line]s and its fruit are the stars. It grows up through the [Underworld] and soars into the heavens where it suspends the sky. The World Tree is eternal and is connected through both time and space. * The Norns are found here." :titles "Axis Mundi, Chronos, Eye of Harmony, Irminsul, Temporal Zero Point, Tree of Life, Tree of Knowledge of Good and Evil, World Pillar, World Tree, Yggdrasil, Yog-Sothoth"))) "Inner Realms" (section :name "Inner Realms" :summary "* The Periphery consists of a number of Realms that touch the Material Realm. * These Realms are forever separated from the mortal world by thin but strong membrane called the Veil. * Peripheral Vision - Sometimes a glimse of the Outer Realms may be seen at the edge of normal vision. * Gates - Gates are more easily created when both realms resemble each other at both ends of the Gate. * Realm Overlay - Sometimes when an area of both realms closely resembles one another, the areas overlap creating a natural Gate of sorts where one may accidentally wander from one Realm to the other without noticing." :titles "Periphery" :locationmap (locationmap "Ley Line" (location :name "Ley Line" :summary "* Ley Lines are invisible, spiritual energy lines that pass through the universe and serve as the branches and roots of the World Tree. The Ley Lines influence the areas they pass through. Their existence transcends time. Contacting the Lines boosts spiritual powers and connects the past and future. They can be tapped to raise magical effects and they can spread the effect of tragic or corrupted areas, creating haunted or cursed areas. * Dragons are said to choose exposed Ley Lines as lairs and nests. It is possible that Ley Lines are the secret to their power. * Fault Lines and Volcanic activity are side effects of Ley Line power. * Ley Line Memories - Ley Lines exist through history, so it is sometimes possible to witness events from the past or future near the lines. * Ley Line Filth - When negative energy builds up over time near a Ley Line, so a Ley Line can sometimes leak solid dark energy that is called Filth or Corruption. This Filth corrupts the area, withering plants and contaminating animals and water. Since it is a spiritual corruption, it can only be repaired with purification magic or by somehow confronting and addressing the cause of the corruption." :titles "Dragon Lines, Fate Lines, Lines of Power, Threads of Fate, Time Lines") "Digital Realm" (location :name "Digital Realm" :titles "Cyberspace, Cyberrealm") "Dreaming, The" (location :name "Dreaming, The" :titles "Dreamlands, Dreamworld, Fade, Imaginary World, Nod") "Fade, The" (location :name "Fade, The" :summary "* The Fade is a Mirror Realm that is a sort of Dream Realm but is driven by strong emotions. * Fade Curse - A Curse is a spirit that has manifested from strong emotions over a long period of time.") :Luna (location :name "Luna" :summary "* The Spirit Realm of the Moon" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)))) "Hollow World" (location :name "Hollow World") "Memory Realm" (location :name "Memory Realm" :titles "Land of Lost Things, Memory Lane") "Micro Realm" (location :name "Micro Realm" :titles "Microverse, Quantum Realm") "Mirrors Realms" (location :name "Mirrors Realms" :reference "* Alice in Wonderland * Kamen Rider Dragon Knight * Werewolf the Apocalypse * Star Trek - Mirror, Mirror * Stranger Things" :summary "* Beyond all mirrors lie worlds almost identical to our own but more a reflection of mind than of substance. There are an infinite number of these mirror universes, though each is accessible in a slightly different way." :titles "Alternate Dimensions, Mirrorlands, Mirror Universe, Mirror World, Mirrorverse, Mirrors, The Upsidedown, Twilight Zone") "Negative Realms" (location :name "Negative Realms" :summary "* Negative Realms are described by coordinates for -x, -y, -z, t (length, height, width, time) * The Negative Realms are particular mirrors of the Material Realms. They were created at the same moment that the Material Realms were, but while the Material Realms were mostly filled with normal matter, the Negative Realms were mostly filled with anti-matter." :titles "Anti-matter Universes") "Nexus of Realities" (location :name "Nexus of Realities" :summary "* The Nexus of Realities is a place that touches the [Vortex] and through it all other realities. So near the [Vortex], Time is meaningless here, so anyone entering will feel as if they have been in the Nexus for a very long time and may stay here as long as they want with no wants. When they leave, however, no time will have past and their time spent will be remembered like a dream. * Tanelorn - The city Tanelorn has been built at the Nexus and is a sort of waystation for those travelling to other worlds. Tanelorn exists in all inner realms and appears as a simple town native to each reality. One cannot look for Tanelorn for it does not appear on any map, but it can occasionally be stumbled upon by frustrated travellers seeking new horizons. As the existence of Tanelorn can never be proven, it remains a myth throughout the universe." :titles "Tanelorn, Waystation") :Pangea (location :name "Pangea" :titles "Prehistoric Realm") :Yuggoth (location :name "Yuggoth" :summary "* The Spirit Realm of Pluto") :Shadowland (location :name "Shadowland" :summary "* The Realm of the recently dead. * The Shadowland is a dark [Mirrorland] superimposed on the regular living world. Here, the recently dead (Wraiths) can remain among the living, but they (mostly) cannot interact with the living world. Wraiths are invisible and intangible. They can even walk through solid objects but doing this disrupts the Wraith's energy, damaging it slightly. * Noncorporeal Undead - The Shadowlands is the native realm of non-corporeal undead and is where they are strongest. * Corporeal Undead - The remnants of the spirits of corporeal undead can be easily seen in the Shadowlands. Corporeal Undead are particularly vulnerable to exorcism or control from Shadowland attackers. * The [Veil] separating the Shadowland from the living world is called the Shroud. * Many portals lead from here to the [Underworld], but if a [Wraith] loses his connection to the living world, he may not return to the [Shadowlands].") :Veil (location :name "Veil" :summary "* The Veil is a barrier between the natural world and the supernatural worlds. * The Veil is not only a physical barrier but also has an effect on perception and memory. Those without supernatural abilities who encounter supernatural beings will tend to rationalize the supernatural aspects of the encounter, instead interpretting them as natural phenomenon. They will irrationally deny that any supernatural aspect was involved regardless of the evidence. This quality of the Veil applies to recordings and any other evidence and has kept the mythical status of supernatural beings for millenia." :titles "Gauntlet, Mists, Shroud")) :sectionmap (sectionmap "Elemental Air Realm" (section :name "Elemental Air Realm" :summary "* The realm of elemental air is a vast, empty space above the clouds of the world. Here there are no solids or liquids only gases without impurities (e.g. smoke). * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :h'Haarshann (unit :name "h'Haarshann" :reference "Elric of Melnibone" :summary "* Wind Elemental Lord"))) "Elemental Cold Realm" (section :name "Elemental Cold Realm" :summary "* The realm of elemental cold is a vast, barren, snowscape under a sunless sky. Harsh blizzards sweep across the snow that covers the glaciers and frozen seas. There is no heat in this realm. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Earth Realm" (section :name "Elemental Earth Realm" :summary "* The realm of elemental earth is a vast, solid space below the surface of the world. It is mostly solid rock, but cave systems, roots, and underground waterways exist as well. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :Grome (unit :name "Grome" :reference "Elric of Melnibone" :summary "* Earth Elemental Lord"))) "Elemental Fire Realm" (section :name "Elemental Fire Realm" :summary "* The realm of elemental fire is a vast volcanic space seemingly from the dawn of the world. It is all lava, and scorching heat. Here, fire is pure without oxygen or smoke or fuel to burn. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Lightning Realm" (section :name "Elemental Lightning Realm" :summary "* The realm of elemental lightning is a vast lightning storm lighting up the sky, pounding the ground, and electrifying the seas. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Water Realm" (section :name "Elemental Water Realm" :summary "* The realm of elemental water is a vast space deep within the ocean depths of the world. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :Straasha (unit :name "Straasha" :reference "Elric of Melnibone" :summary "* Water Elemental Lord") :Pyaray (unit :name "Pyaray" :reference "Elric of Melnibone" :summary "* Pyaray is a Chaos Lord who rules the deepest parts of the ocean. He appears as a giant red octopus-like creature, and his soul is kept in a blue crystal on his head. Sailors who drown at sea are taken into his Chaos Fleet. One portent of the end of the world is the ascent of the Chaos Fleet to the surface. Pyaray and Straasha are bitter enemies." :titles "Tentacled Whisperer of Impossible Secrets"))) :Elysium (section :name "Elysium" :summary "* The legendary homeland of the Fae. It is a wonderous place of myth and legend deep in the dream world. * Seasons - The Fae realm is driven by the seasons in an eternal cycle of death and rebirth. ** Spring - *** Spring Bloom ** Summer - ** Autumn - *** Autumnal Harvest ** Winter - * Courts - ** Seelie Court - ** Unseelie Court - * Archfae - * Fae Magic - Though the Fae trade in physical objects like gold or food, these things are actually made of imagination and Fae Magic. For the Fae, magic is the one true currency. Having it and using it is the sign of royalty. Those with no magic have no status and no value." :locationmap (locationmap :Arcadia (location :name "Arcadia" :summary "* The capital city of the Fae. It is a land partially of Dream and is not normally accessible to mortals.") "Elysian Forest" (location :name "Elysian Forest" :summary "* The forests of Elysium are filled with living creatures including wild animals, large insects, Sprites, and Pixies.") "Elysian Fields" (location :name "Elysian Fields"))))) "Higher Realms" (section :name "Higher Realms" :titles "Over Realms" :locationmap (locationmap "Celestial Realm" (location :name "Celestial Realm" :summary "* Powerful beings of order inhabit this Realm. They are not overtly hostile, but they unyielding and have a severe approach to justice that makes one wonder if anyone can survive their scrutiny." :titles "Afterworld, Angelic Realm, Celestine Realm") "Imaginary Space" (location :name "Imaginary Space" :reference "* Though the story is fictional, as far as the characters are concerned, their fate is real. Therein lies the rub, are you and I the audience or characters on the stage? Nobody can know for sure. Afterall, nothing is easier to fool than the senses. - Furina, Genshin Impact" :summary "* The Imaginary Realm is the realm of the Mind and of possibilities. It connects all other realms, and some believe all realms are birthed from the infinite potential of the Imaginary Realm. * Description - The realm is filled with a glowing mist and motes of crackly energy called Astral Luminaries (Tachyons). Touching a luminary fills one with energy and inspiration, but contacting too many too quickly will overload the body in a violent explosion. * Transition - When entering the Imaginary Realm, there is a sudden, frightening sensation of fliping forward and sideways at once and then it is over. * Speed - In the Imaginary Realm, the speed of light is the lowest speed that an object can move though due to relativity, the speed of light is effectively zero speed. Here physical objects move at wildly accelerated speeds and can easily become lost or destroyed in the insane speeds and energies of this Realm. * Mind and Will - Everyone seems to experience the Imaginary Realm differently with many experiencing wild and terrible hallicinations. Those entering this Realm with just their minds find that their abilities are vastly increased. They appear as an idealized version of themselves with Body equal to Mind and all abilities may use Mind instead. * Body - Physical rules barely apply. All resistences use Will instead of Body." :titles "Astral Plane, Astral Realm, Complex Space, Ether, Etheral Plane, Etheral Realm, Hyperspace, I-Space, Imaginary Realm, Subjective Reality, Subspace, Superspace, The Pale, Ultraspace") "Realm of Light" (location :name "Realm of Light" :summary "* This is an area of space near the center of the Universe. It is said to be based upon lines and angles instead of surfaces and curves, and it is known to be a region of intense and deadly energies. The realm appears much like a negative image of the known Universe with dark stars on a backdrop of intense light. Few organic creatures can survive in this region regardless of defenses, but this is the home of such creatures as the [Radiance] and the [Hounds of Tindalos]." :titles "Tindalos") :Wyver (location :name "Wyver" :summary "* Wyver is the Creator Being that manifests as a mirror dimension reflecting the world of order. * Travel - Creatures of order can enter Wyvr through any reflective surface." :titles "Weaver") :Wyld (location :name "Wyld" :summary "* Wyld is the Life Bringer Being that manifests as a mirror dimension reflecting the natural world. It is thought that Wyld is the source of all life. * The Wild has stunning natural beauty, but is also a merciless place dominated by natural selection. * Travel - Natural creatures can enter Wyld through any reflective surface." :titles "Manitou, Wellspring") :Wyrm (location :name "Wyrm" :reference "* Sitting in a bunker, here behind my wall. Waiting for the worms to come. In perfect isolation, , here behind my wall. Waiting for the worms to come. Waiting, to cut out the dead wood. Waiting, to clean up the city. Waiting, to follow the worms. Waiting, to put on a black shirt. Waiting, to weed out the weaklings. Waiting, to smash in their windows and kick in their doors. Waiting, for the final solution to strengthen the strain. Waiting, to follow the worms. - Waiting for the Worms, Pink Floyd" :summary "* Wyrm is the Time/Destructor Being that manifests as mirror dimension reflecting the world of entropy and and corruption. Corrupted creatures can enter Wyrm through any reflective surface."))) "Lower Realms" (section :name "Lower Realms" :summary "* Those places closest to the very beginning and the final end of the universe." :titles "Under Realms" :locationmap (locationmap :Oblivion (location :name "Oblivion" :reference "* Leviathan - Hellraiser II * The Great Evil - The Fifth Element" :summary "* At the end of the Universe, lies a metaphysical Black Hole, the Anti-Sun: Oblivion. * It is null, ultimate order, ultimate death, the beginning and the end of the Universe. * Few living beings have managed to survive being close enough to see Oblivion. * As the [Underworld] is in many ways the reverse of the living world, Oblivion hangs above the [Underworld] like a massive Sun. Unlike a sun, however, Oblivion devours light and steals warmth. What little light and warmth that exists in the [Underworld] seeps instead from the land of the living. * Some believe that through Oblivion lies rebirth, but few are willing to personally put that theory to the test, and none who enter has ever returned." :titles "Abyss, End of All Things, Heat Death of the Universe, Lakhesis, Order, Pattern, Primal Destroyer, Primal Void, The End") "Source, The" (location :name "Source, The" :reference "...I started with loathing when told of the monstrous nuclear chaos beyond angled space which the Necronomicon had mercifully cloaked under the name of Azathoth. - The Whisperer in Darkness" :summary "* The Source is the bubbling font at the beginning of existence. It lies at the opposite end of all existence from [Oblivion]. The Source is bursting with the densely packed proto matter/energy of all creation in the septillionth of a second before exploding into all realities. It is also, necessarily, the most destructive place in all existence. * Sublime - Those who somehow survive entering the Sublime find a very different existence. Where our multiverse is a vast empty space containing trace motes of dust, the Sublime is an endless fountain of possiblities. Everywhere you gaze, the Sublime offers a kaleidescope of intriguing details. Even infinity is meaningless where time, distance, and reality cease to matter. * Sublimating - Nothing physical can survive exposure to the Source, but it is possible to transcend the physical and enter Source. This is called Sublimating. There are many magical, spiritual and technological ways to enter the Sublime and entire civilizations have done so. Any who enter the Sublime begin to expand themselves. Absorbing and evolving with each eternal instant. Almost none who enter ever returns regardless of promises or bonds. The few that have returned are very different and almost always quickly return to the Sublime. After being exposed to the endless possiblities of existence, perhaps they no longer see the our existence or our way of understanding our existence as real or important anymore." :titles "Ascension, Azathoth, Atropos, Apep, Apophis, Jormungand (Midgard Serpent), Primal Chaos, The Beginning, The Big Bang, The First Thing, Truth, Sublime") "Tempest, The" (location :name "Tempest, The" :reference "* The Galactic Barrier - Star Trek" :summary "* The final line before ultimate chaos. A swirling mass of chaos and fear on the border of annihilation. * Like a Black Hole, [Oblivion] has a swirling event horizon at its surface. It is the interface between substance and nothingness. * The [Tempest] is a sea of souls and madness. The dreams and memories of those lost within sometimes drift like flotsam in the Tempest. * The Tempest usually manifests as an roiling ocean, sometimes of water, sometimes of blood or souls. * It is rare to see the Tempest calm except in the presence of a [Ferryman]. * Often it is a storm-tossed sea of towering waves and shrieking winds. Fog, foam, and spray obscures vision and rips the words from ones mouth. * Harrowing - [Wraiths] that are destroyed, fall into the sky toward [Oblivion]. Before entering [Oblivion] they pass through the Tempest and find themselves tested. The test is called a [Harrowing] and is always a spiritual confrontation with the [Wraith]'s own weakness. If the [Wraith] passes the test, it will find it has regained the strength to return to the [Underworld]. If it fails, it falls finally and eternally into the cold embrace of [Oblivion]. The appearance of the Tempest during a Harrowing is ever-changing: a drafty dripping dungeon with flagstones and chains, a subway tunnel with flickering buzzing fluorescent lights, a rough-hewn tunnel of sickly pink marble shot through with black veins. * Regardless of where one enters, all its twisting maze-like tunnels lead in the same direction: toward the dark heart of [Oblivion]." :titles "Event Horizon, The Great Barrier, The Edge of the World") :Underworld (location :name "Underworld" :summary "* The Underworld is a psychic realm of the dead. Similar to the [Dreaming], the Underworld is a Spiritual not a physical place. * Appearance - The Underworld seems like an inverted version of the living world. Initially, it appears as a dark, barren landscape with a large, black sun hanging in a cloudy, night sky. On further inspection, however, the dark sun is a black hole, the clouds are floating landscapes, and the night sky is the distant opposite side of what appears to be a hollow world with the black hole in the center. * Oblivion - The black hole at the center of the Underworld is [Oblivion], slowly drawing in everything to a final destruction. * Terraces - The floating landscapes are formed of spiritual flotsom from ages of dissolved dead. They slowly spiral upward eventually becoming the accretion disk of [Oblivion]. The higher one travels upward the more chaotic and intense the environment becomes until it becomes the [Tempest]. * Falling - Spirits may travel freely on any surface in any orientation, but 'gravity' is always toward [Oblivion], so things not touching the 'ground' slowly fall upward with increasing speed. * Shadowland - Holes in the ground lead through long tunnels to the [Shadowland] above. Those who have lost their connections to their old lives (their fetters) will find that all the tunnels lead back to the Underworld. * Time - Time in the Underworld is distinctly different from the living world. Long periods can pass for some while little time has passed for others. Either way, little time passes in the living world compared to the ages that can seem to pass in the Underworld." :titles "Netherworld, Netherrealm, Netherverse, Underrealm, Underverse") "Void, The" (location :name "Void, The" :summary "* The Void is an empty Realm between Realms. It is the Spiritual equivalent to outer space. * The Void is a realm of nothingness and contains no matter, energy, atmosphere, magnetism, inertia, gravity, or any other force. * Light, sound, and heat do not exist in the Void, but those with Spirits can see and hear normally. They also experience no discomfort despite the harsh conditions. Those without Spirits are blind, deaf, and lost in the endless void. * Attributes - Those with Spirits appear as idealistic versions of themselves in the Void. Body, Mind, Spirit, and Speed are increased to the higher of their Mind or Spirit. * Speed - As light and inertia do not exist in the Void, vessels may move much faster than light. Those with Spirits may move at astronomical speeds and can move at the equivalent of [Mind] or [Spirit] x 1 Light Day per second. * Void Ships - Ships created to travel between the realms. Note: physical travel into the Astral Realm by magical means may only be performed without observers." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)))))))) "Outer Realms" (section :name "Outer Realms" :reference "Event Horizon" :summary "* These are the various part of the Spirit Realm where demons live. It is unclear whether these worlds are in distant parts of our dimension or in other dimensions entirely. They are certainly so distant that only dimensional travel can reach them. * Physics are often radically different from our own which often is sanity threatening." :titles "Abyssal Realms, Chaos Realms, Demon Realms, Hells" :locationmap (locationmap "Hell of Being Cut to Pieces" (location :name "Hell of Being Cut to Pieces" :summary "* Souls who arrive here fall into a sea of razor-sharp blades that spin and cut sinners to shreds. * Souls - The domain is a place for those who make a living by violence.") "Hell of Being Skinned Alive" (location :name "Hell of Being Skinned Alive" :summary "* If there is a worse place, no one has yet found it. At a glance it appear as a desert world, but it is infinitely worse. The winds have sculpted the rocks and mesas into horrifying shapes. Those who can see through the sandstorms can see demonic forms torturing souls, but their screams are covered by the winds. * The howling winds that forever whip across the red sands are enough to strip flesh from bone. Shards of glass and metal blown on these sonic-velocity winds can penetrate tank armor. * The winds frequently become funnel clouds sucking sand and souls miles up before letting them plummet onto the jagged rocks below. * The constant motion of wind and sand builds up electric charge, and victims are regularly subjected to bolts of lightning. * At first, the winds only flay only the body, but the worst is yet to come. Once flesh and muscle fall from the bones, the very essence of his being begins peeling off, layer by layer to be carried off in the winds. The only peace is when the winds subside, and the flayed bodies regenerate in these precious seconds. But once the pain begins to subside, the winds start howling again... * Souls trapped here are often those who hoarded and abused power. Such individuals are tormented after death by having everything ripped from them. * Tou Mu - The Yama King, Tou Mu, watches from her enormous upside-down palace high in orbit. Those that the Iron Empress takes note of are drawn up by the winds to the cold silent vacuum above. There she expresses her dissatisfaction personally. * Silent Stronghold - Her orbiting palace is where her allies stay, but as Tou Mu is paranoid, the crystal of this place renders unguarded thought into sound which echoes throughout the palace. * Sinister Fortress - One of the few structures on the surface of this hell, this iron fortress courses with the lightning that constantly strikes it. On the outer walls are lashed the bodies of those that Tou Mu has taken a special interst. Here they are constantly torn by winds and struck by lightning. The Iron Empress has never removed a victim from the wall since the first traitor was lashed there.") "Hell of Boiling Oil" (location :name "Hell of Boiling Oil" :summary "* The name of this hell is a misnomer. The hell is not filled with boiling oil, but rather with rendered human fat. Gobbets of charred and burning fat float atop the ocean of thick, bubbling grease. A dark gray froth of overcooked scum floats to the surface in places. * The atmosphere is hazy with brown smoke and a fine mist of grease. The stench is intolerable. Individuals who manage to survive vomit uncontrollably. Those few who manage to leave this realm never entirely rid themselves of the smell. * This hell is the place of torment for the gluttonous. Corpulent executives and rotund bureaucrats are haunted by the excesses of their lives. * Ruler - This realm is ruled by Hluh, an island-sized, gelatinous, bright red jellyfish with sharp-toothed sucker mouths on each tentacle. * Devils - The devils of this have no names, no faces, and no sense of self. They realm resemble chitinous tapeworms or gigantic water striders that skim acoss the surface of the boiling sea.") "Hell of Burrowing Maggots" (location :name "Hell of Burrowing Maggots" :summary "* A quick glance reveals this place to be a vast plain of white sand. There is no sun, but the overcast sky is not dark. The sand, however, is crawling. The stench of decay staggers any so unfortunate as to need to breathe. * Souls - This is a place of torment for sinners who have met their end by disease including radiation poisoning, cancer, and biological warfare. Boils and tumors grow enormous here and hang from the body and attract the maggots. Within days a soul can feel her skin crawl. Everywhere the worm-ridden souls cry out, tearing at their skin, and vainly trying to escape the worms that are eating them alive. * Ruler - Rangda, the Mistress of Pestilence rules here. * Demons - Maggots grow larger as they age. The largest of them are the size of a whale. * The Great Beast - What appears to be a large white mountain is actually an enormous carcass of an unknown beast. The maggots have been devouring it since the hell was created, and it appears it will take an eternity to complete the job. What the beast is is unknown. Some believe it is tied to creation and the the universe will cease when it is comsumed. A foolish mage once studied it from a distance, but days later he returned screaming gibberish and only said two coherent words before he took his own life: 'It moved.'") "Hell of Seven Burning Seas" (location :name "Hell of Seven Burning Seas" :summary "* If would be hard to chose a worse fate, burning or drowning. Those souls doomed to this hell do both. They may stay above water and have their garments burst into flame or submerge and boil themselves. * Souls - This hell houses sinners whose crimes involve the water. Pirates, polluters, mutineers, and murderers who drowned their victims are drawn here. * Ruler - No one has seen the Empress of Pearls who is rumored to live at the greatest depths of the Great Trench where no other creature can survive. Some believe she is a great 'devil-fish' that can cause tsunamis. * Devils - Devil crabs, devil sharks, and devil squid are some of the horrors that populate the depths.") "Hell of Upside-Down Sinners" (location :name "Hell of Upside-Down Sinners" :summary "* This domain defies description. This is either the cleverest of the Yomi realms or the maddest hell devised by the sickest of minds. Time and space are inverted. Sensation and thought are twisted. Minutes pass like an eternity and millenia rush by in a blink of an eye. In this hell, the strong perish and the weak survive. That which is dull cuts while sharp objects bring comfort. * Souls - Recent arrivals are often driven mad as they begin to see odors, smell sounds, and hear sights. Emotions too become jumbled. Souls begin to hate those who helped them and love those who have done them wrong. They fear the helpless and refuse to flee certain destruction. Skills and powers do not work correctly here. The stronger the ability the more ineffectual it is. * Ruler - No one knows what inconceivable creature would create such a realm.") "Hell: Kakuri, The Night Realm" (location :name "Hell: Kakuri, The Night Realm" :summary "* There is no end to the darkness in the Night Realm. There is no sun, no stars. The winds are bitterly cold, bearing dagger-sharp ice crystals. Facing into the wind is blinding. Fires flicker and die in the winds, but any light attracts the tormented and Shikome alike. The terrain is rocky and frozen black crystal that leech the energy of those who rest on them. Meadows and tree exist, but they are covered with dark crytal blades that tear at passersby. * Kakuri is the hell of those who have lost their honor. The land is therefore the anti-thesis of honor. There are no great battles, no great challenges, no bragging enemies. There is no duty, no honor, and no way to escape. There are no flesh eating devils, no pits of burning oil, no grand ministries of torment. In a land without hope, there don't need to be. * Ruler: Emma-o, perhaps the greatest of the Yama-kings. * Shikome: Beautiful, cold, female devils that delight in speeding their victims to despair. They are subtle and can appear as tormented souls or as friends or lovers. Whatever their form, they will drain the [Spirit] from their victims leaving them to wander in hopelessness and despair. * Kyuden No Kakuri - The Castle of Kakuri is the stronghold of Emma-o. It is situated at the top of an unassailable peak. The castle has elaborate obsidian walls and are a testament to his vanity and conceit. * Cave of Maidens - One of Emma-o's favored traps, the caves appear an oasis from the icy torment and occasionally a way out of Yomi. Edible fungi, shelter, and pretty prisoners can be found in the caves. The prisoners will dote on the visitors, but they will suddenly accuse them of theft, rape, murder, or worse. The visitors are beaten and driven from the caves. The power of the Shikome lets them trick their victims again and again with the lure of false hope. Amazingly, there is actually a chance that a cave is actually an exit from the Hell, the ultimate lure for lost souls.") "Hell: Pit of Iron and Salt" (location :name "Hell: Pit of Iron and Salt" :summary "* The Pit is a vast salt mine with seemingly no bottom. Iron citadels dot the inside of the pit, so the pit resembles a great gaping maw with the citadels resembling teeth. The landscape is unchanging and sterile. It is not a place of shock or disgust, but a hell of quiet oppression. * Souls - Those who labor here do so in the false hope that through hard work they will eventually be relieved of their suffering. They search for treasure they will never find beneath the lashes of cruel overseers. Cuts and lashes are inflamed by the salt everywhere. * Ruler - Yama-king Wu Hua lives at the the bottom of the pit in a great iron city surrounded by six enormous barbed spires on which hundreds of bodies are impaled. Sputtering greenish fires can be seen from a distance that hint at grotesque rituals and obscene torments, but what exactly goes on inside is unknown. * Iron Citadels - The citadels are places of decadence and depravity. The souls are intermittently rotated from the mines to the citadel to act as slaves. Most mine workers view the change as desirable, but every soul chosen learns that this is not the case. In reality, the souls are treated worse here than anywhere else in the domain. Their suffering is more valuable to Wu Hua because it is so much more 'personal'.") "Hell: Wicked City" (location :name "Hell: Wicked City" :summary "* Wicked City is a place of endless urban blight stretching to the horizon in all directions. The perpetually overcast air is dark and thick with acrid vapors and burning smog. The stench of urine, vomit, blood, and excrement blows out of every alley. The streets and buildings are packed with the souls who mindlessly slave away in inescapable agonies and the power-mad demons who torment them. * Souls - This hell is the destination of those who have fallen into the corruption, isolation, and anoymity of urban life. Politicians, artists, criminals, wage slaves, executive, and police are pulled into the sweat shops and dark streets of this doomed megalopolis. The souls are worked beyond their limits, and when they falter or fail the foremen arrive instantly to punish them for their incompetence. Their routine jobs continue day after day with no hope of improving their lot, and their pitiful wages allow them to almost support themselves. Those that fail to keep up are laughed out of their offices and become the homeless of Wicked City, available for demons and embittered salary drones to beat, torture, or set ablaze. There are no safe places in Wicked City. Every coworker could be a demon. Even the doomed may betray each other for advancement. It is a place where the worst elements of greed and capitalism meet. * Ruler - The Yama-king Mikaboshi rules this realm from the Mikaboshi Tower. The tower is a hideous tower of blackened steel and glass whose peak disappears into the clouds. Mikaboshi's executives administer Wicked City from this lofty tower, and Mikaboshi himself is often linked directly into the tower's strange devices allowing him to see, hear, and feel any part of Wicked City. * Undercity - The twisted spires are built atop the crumbling temples and castles of eras past. The cities are built upon cities upon cities, and the farther down one goes, the more monstrous the demonic inhabitants. Some creatures have not seen the sky in centuries. What these monsters have become is unknown, but no one who has entered the abandoned tunnels and subways has returned sane (if they return at all). * Feng Shui - The Yama-king Mikaboshi wants all those who see his city to understand his grand vision of a hellish metropolis. He undermines the known and comfortable trapping of the daily world to increase his subjects' feelings of dread and suffering, and his power over them. The feng shui of the Wicked city is beyond negative, bordering on the impossible. The entire landscape assaults the Chi of the city's victims. 'Poison Arrows' point everywhere, spiraling in directions that cause veritgo from the merest glance. Disharmony saps the will and impedes rational thought. * Gates - It is possible to travel to Wicked City from many of the worst urban hellholes in the mortal world. In these places of corruption and anguish, the [Veil] is weak. The door also swings both ways and denizens of this hell sometimes travel to the mortal realm in search of new souls.")) :sectionmap (sectionmap :Pandemonium (section :name "Pandemonium" :reference "* Dante's Inferno" :summary "* Pandemonium (literally the Place of All Demons), the capital of Hell, the High Capital, of Satan and his Peers, built by the fallen angels at the suggestion of Mammon. The demons built it in about an hour, but it far surpassed all human palaces or dwellings. It was also reputed to be made of solid gold." :titles "Pandaemonium, Place of All Demons" :locationmap (locationmap "Council-Chamber of Pandæmonium" (location :name "Council-Chamber of Pandæmonium" :summary "* The Stygian Council debates here."))) :Phyrexia (section :name "Phyrexia" :reference "* We must improve! We must evolve! - Victor, Runeterra * Metal is perfection. - Victor, Runeterra" :unitmap (unitmap :Yawgmoth (unit :name "Yawgmoth" :titles "Father of Machines, Ineffable")))))))) (func chapter_story_ideas : base/chapter (chapter :name "Story Ideas" :summary "* Accompany zealots on a pilgrimage to holy places. * Participate in a Witch Hunt in the forests. * Protect an individual of status from the assassin's guild. * Go on patrol with Knife Fighters * Sail to obtain concubines, either legally or illicitly. Be wary of the creatures and brutish males, to say nothing of the subtle charms of the concubines themselves. * Join the desert scouts in raids against the Black Mystics. * Commission tomb raiders to unearth ancient sarcophagi. * Sail the far seas in search of adventure, braving corsairs, cannibals, sea serpents, and the black hulled vessels of the Necromancers. * Mine green crystal from the Sea of Glass. * Visit Sactuary the safe haven of thieves and scoundels. * Prowl the jungles looking for rare herbs and black diamonds. * Rescue a captive of the Witchmen who keep shrunken heads as grisly trophies. * Visit the Ice Castles of the north and fight side by side against the Ice Giants. * Trade with the Sea Nomads of Oceanus, a city that floats freely on the water. * Take a windship to the isle of Phantas and visit the Cabal Magicus, home of the Phantasian Dream Merchants. * Travel to the Jade Empire and visit the capital Tian called the Golden City for good reason. * Hire a guide and search for the buried city of Necron where legend has it an entire city and its populace were once interred. * Visit the magical fair, a gala festival attended by magicians, wizards, and charaltans from across the continent. Engage in a duel for wagers with a reknowned spell caster or haggle for potions, powders, and other rare items. * Negotiate a deal with a Zuran moneylender to finance an expedition in return for a cut of the profits. * Attend the Festival of the Bizarre where individuals display oddities and compete in the contest for the title of 'Most Bizarre'. * Accompany a Wizard Hunter on a quest of revenge. * Partake in the 'Night of Fools' when all laws are suspended for a single evening. * Help locate a suitable applicant for the Battle of Champions or enter the competition yourself."))
nx/tactics/books/fantasy / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Fantasy" :image "DaveDormanEasternTerritories.jpg" :chaptermap (base/chaptermap "Fantasy Overview" (chapter_fantasy_overview) "Genshin Impact" (chapter_genshin_impact) "God of War" (chapter_god_of_war) "Lord of the Rings" (chapter_lord_of_the_rings) "Nexus Fantasy Characters" (chapter_nexus_fantasy_characters) "Material Realm" (chapter_material_realm) "Realms Beyond" (chapter_realms_beyond) "Story Ideas" (chapter_story_ideas) )))
nx/tactics/books/fantasy / chapter_fantasy_overview
Description:
Function Name:
  • chapter_fantasy_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_fantasy_overview : base/chapter (chapter :name "Fantasy Overview" :sectionmap (sectionmap "Fantasy Armor" (section :name "Fantasy Armor" :summary "* Cloth Armor - Increases Magical Regeneration * Light Armor - Increases Critical Strike change * Heavy Armor - Maximum Defense" :itemmap (itemmap "Moon Disc" (item :name "Moon Disc" :summary "* A [Silver] Shield." :classification "Shield"))) "Fantasy Weapons" (section :name "Fantasy Weapons" :summary "* Faeblades") "Elder Tongue" (section :name "Elder Tongue" :summary "Prefixes * Alf - Elf * Dverg - Dwarf * Hel - Dead * Jotun - Giant * Man - Human * Muspel - Fire * Nifl - Mist * Svart - Dark * Yo - Demonic Suffixes * Ar - Race * Heim - Home * Ki - Soul * Ma - Creature * Traum - Dream Words * Alfar - Elvish Race * Albtraum - Elf Dream (Nightmare) * Alfheim - Land of Elves * Dvergar - Dwarven Race * Helar - Restless Dead * Helheim - Land of the dead * Manar - Human Race * Manheim - Land of Men * Muspelheim - Land of Fire * Niflheim - Land of Ice * Svartalfheim - Land of Dark Elves * Yoki - Demon Soul * Yoma - Demon"))))
nx/tactics/books/fantasy / chapter_genshin_impact
Description:
Function Name:
  • chapter_genshin_impact
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_genshin_impact : base/chapter (chapter :name "Genshin Impact" :sectionmap (sectionmap :Archons (section :name "Archons" :unitmap (unitmap :Furina (unit :name "Furina" :titles "Focolor") :Nahida (unit :name "Nahida") "Raiden Shogun" (unit :name "Raiden Shogun" :summary "* The Raiden Shogun is the current Electro Archon. There are actually 3 versions of the Shogun that look almost identical: The twin sisters Ei and Makoto, and the artificial duplicate called the Puppet. * Makoto (Baal) - Makoto and Ei shared the title of Electro Archon, pretending to be a single being. Makoto was the diplomat and Ei was the warrior. Ei carried a sword, but she was not known to be a great warrior. Her electro powers were her main ability. Makoto died during the battle of Khaenri'ah. * Ei (Baalzebub) - Ei considered herself to be Makoto's shadow and mostly served as her muscle. After Makoto's death, she constructed the Puppet, tranfered her spirit into her sword, and mostly allowed the puppet to rule in her stead. Ei is divinely skilled in combat. * Puppet - The puppet is an advanced alchemical creation with power and combat ability perfectly equal to Ei in every way. Generally, the puppet is the only version of the Shogun that anyone sees. Even when Ei is in control, she is controlling the puppet, since she no longer has her own physical form. * Feats of Power ** Musou no Hitotachi - A supposedly unblockable sword attack from the Shogun that is her supreme attack. ** She easily defeats the traveller and nearly kills them. ** She easily executes Signora and incinerates her. ** She slew the god Orobashi and split the islands apart. Residual Electro still makes this area dangerous over 2000 years later. ** She creates a perpetual storm around Inazuma for years. ** She states that she can casually stop storms across the world to let people sleep." :titles "Baal, Baalzebub, Ei, Makoto, Puppet, Shadow") :Venti (unit :name "Venti" :summary "* Barbados splits the mountains in Mondstadt with a divine wind and sends entire mountains flying to become the Golden Apple Archepelego. * Barbados is easily considered to be the weakest of the Archons." :titles "Barbados") "Zhong Li" (unit :name "Zhong Li" :summary "* Zhong Li dominated the Archon War." :titles "Morax, Rex Lapis"))))))
nx/tactics/books/fantasy / chapter_god_of_war
Description:
Function Name:
  • chapter_god_of_war
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_god_of_war : base/chapter (chapter :name "God of War" :sectionmap (sectionmap "God of War Equipment" (section :name "God of War Equipment" :itemmap (itemmap "Pandora's Box" (item :name "Pandora's Box" :reference "* The box was actually mistranslated. It is actually Pandora's Jar." :summary "* After the great war with the Titans, Zeus gathered the great evils of the war and bid Hephaestus construct a box to hold them. Later Kratos seeks out the box to use the evils inside against Ares."))) "God of War Units" (section :name "God of War Units" :unitmap (unitmap :Kratos (unit :name "Kratos" :image "Fantasy/Kratos.png"))))))
nx/tactics/books/fantasy / chapter_lord_of_the_rings
Description:
Function Name:
  • chapter_lord_of_the_rings
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_lord_of_the_rings : base/chapter (chapter :name "Lord of the Rings" :sectionmap (sectionmap "Lord of the Rings Units" (section :name "Lord of the Rings Units" :unitmap (unitmap :Galadriel (unit :name "Galadriel" :reference "* If you ask it of me, I will give you the One Ring. You offer it to me freely? I do not deny that my heart has greatly desired this. In the place of a Dark Lord you would have a Queen! Not dark but beautiful and terrible as the Dawn! Treacherous as the Seas! Stronger than the foundations of the Earth! All shall love me and despair! ... I passed the test. I shall diminish, and go to the west, and remain Galadriel. - Frodo and Galadriel - Lord of the Rings"))))))
nx/tactics/books/fantasy / chapter_nexus_fantasy_characters
Description:
Function Name:
  • chapter_nexus_fantasy_characters
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_nexus_fantasy_characters : base/chapter (chapter :name "Nexus Fantasy Characters" :sectionmap (sectionmap "Nexus Fantasy Characters" (section :name "Nexus Fantasy Characters" :unitmap (unitmap "Arinni Taybor" (unit :name "Arinni Taybor" :summary "* Human Priest/Monk" :titles "Taybor the Red" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "5" :unititemmap (unititemmap :Quarterstaff (unititem :name "Quarterstaff"))))) "Eldruf Grundel" (unit :name "Eldruf Grundel" :summary "Gnome Thief Magician") :Flint (unit :name "Flint" :image "Fantasy/Flint.png" :summary "Half-Elven Thief" :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :level "9" :unitabilitymap (unitabilitymap :Backstab (unitability :name "Backstab"))))) "Galamir Mirlesem" (unit :name "Galamir Mirlesem" :image "Fantasy/GalamirMirlesem.png" :summary "* Human Mage * Personality - Galamir is a brilliant Wizard and strategist, but he is impatient with others and has no respect for politics or idle chit-chat. * History - Galamir was born to Chantry trainers, and as a child he was allowed special access to the arcane academy. As a teen, he became obsessed with magic and its effect on the world. His brilliance and magical aptitude were soon recognized and he was accepted into the academy. For the next 25 years he completed his full wizardry and elemental training and received top honors. He was a logical candidate to become a trainer himself, but he was bored of the cloistered life, so he began visiting other Chantries across the world. Along the way he encountered a naive, young half-elf rogue named Phirax living on a simple farm. Galamir recruited Phirax to join him to perform the more dangerous and mundane tasks while Galamir provided the leadership and strategy. Later, he recruited the Warrior Stam and the Cleric Sarak into their party to rounded out their abilities." :unitpowermap (unitpowermap :Wizardry (unitpower :name "Wizardry" :level "11")) :unitskillmap (unitskillmap "Physical Powers" (unitskill :name "Physical Powers" :level "10"))) "Hetman Undrig" (unit :name "Hetman Undrig" :summary "* Orc Assassin * A pragmatic, hardened survivalist who began his career as a lowly militia man in the Orc Army who would later form the infamous mercenary guild, the Blackguard. * Personality - Hetman is noteworthy for his lack of personal pride or conscience. He dislikes authority. He strongly believes the ends justify the means and has no compunction about using any means available. * The Blackguard - When establishing the Blackguard, he insisted that it should never have a central authority and that all decisions were made by popular vote." :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "5" :unititemmap (unititemmap :Longsword (unititem :name "Longsword") :Dagger (unititem :name "Dagger"))))) "Jaris Ransun" (unit :name "Jaris Ransun" :image "Fantasy/Ransun.png" :summary "Human Hunter" :titles "Valen the Hunter" :unitskillmap (unitskillmap :Defense (unitskill :name "Defense" :unititemmap (unititemmap "Chain Mail Armor" (unititem :name "Chain Mail Armor") :Shield (unititem :name "Shield"))))) "Phirax Alganon" (unit :name "Phirax Alganon" :image "Fantasy/PhiraxAlganon.png" :summary "* Half-Elven Bard * Personality - Phirax is an entertaining, friendly, perceptive person who is very focused on 'the now'. He applies all his attention to the current situation and the people around him which gives him a keen eye for detail, deception, and subtle clues of human behavior. He strongly believes he is on the right path in life and has developed very strong emotional confidence which lets him roll with the whatever comes his way. He appreciates plans and planners, but he feels that plans must always be flexible because they rarely predict a situation accurately. * Beliefs - Phirax believes that improving the lives of those around him will also improves his own life. He sees this as selfishness through selflessness, therefore it is always in his own interest to help others. He could easily manipulate those around him, but he abhors the idea of exploiting others and is quick to judge abusers of any kind. He follows the lesser god Seker on his mission to destroy undead, specifically those who feed on or otherwise exploit the living (which is pretty much all of them). * History - Phirax was born into a large family on a farm bordering the Arden Forest. During the day, he learned diverse combat and survival skills with the Elves of the forest. At night he practiced various social skills at the human tavern. He was planning to set out on his own soon when he encountered a rather awkward and self-important Wizard named Galamir. After he confirmed the Wizard's abilities, he agreed to join him as a pair of traveling adventurers. Soon after, the pair teamed up with a Warrior and a Cleric. With the party complete, they set out for danger and treasure." :unitpowermap (unitpowermap :Empathy (unitpower :name "Empathy" :level "12" :unitabilitymap (unitabilitymap :Demoralize (unitability :name "Demoralize") :Inspiration (unitability :name "Inspiration")))) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :level "9" :unitabilitymap (unitabilitymap :Backstab (unitability :name "Backstab") "Hide in Shadows" (unitability :name "Hide in Shadows") "Move Silently" (unitability :name "Move Silently"))))) "Sarak Ishimar" (unit :name "Sarak Ishimar" :image "Fantasy/SarakIshimar.png" :summary "Human Cleric" :unitpowermap (unitpowermap :Faith (unitpower :name "Faith" :level "8") :Invocation (unitpower :name "Invocation" :level "10")) :unitskillmap (unitskillmap "Physical Powers" (unitskill :name "Physical Powers" :level "8"))) "Stam Domindor" (unit :name "Stam Domindor" :image "Fantasy/Stam.png" :summary "Dwarven Warrior" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "7" :unititemmap (unititemmap "Short Bow" (unititem :name "Short Bow"))))))) "Nexus Fantasy Actors" (section :name "Nexus Fantasy Actors" :unitmap (unitmap "Antios Teron" (unit :name "Antios Teron" :summary "* Human Spy * Antios is a spy for Lord Aramel. * He is currently disguised as a mercenary for hire while travelling through the Imperium to assess their defenses. He has been authorized to assassinate any high ranking politician he should encounter to disrupt local politics. His mission has no time limit, and he is periodically scried by Lord Aramel's wizards. * He is a convincing actor who can play most parts well. He is particularly ruthless about his identity and will silence any who might compromise him or his mission." :unitskillmap (unitskillmap :Espionage (unitskill :name "Espionage" :level "5"))) :Blackguard (unit :name "Blackguard" :summary "* An elite mercenary cadre organized by Hetman Undrig. * Their base is a small, walled town dedicated to their needs. * The Dragoons are a loose group. Decisions and leaders are chosen by majority vote. Power can change at anytime (including during combat). * Dragoons pay no dues nor is there direct pay. The Dragoons make money by hiring out as mercenaries. They charge double normal rates, but are reknowned for their excellent training and equipment. Dragoons take great pride in their high status and react poorly to those who do not recognize their talent. * Dragoons are trained professionals in their jobs and recognize the need for discretion. They care little for whether a job is legal or not, and the Dragoons are known for possessing certain 'subtle' skills that make covert missions possible. They do not, however, enjoy excessive risk and are not above abandoning very dangerous missions." :titles "Black Dragoon") "Charn Aramel" (unit :name "Charn Aramel" :summary "Human Dread Knight" :titles "Nighthook, Lord Aramel" :unitpowermap (unitpowermap :Conviction (unitpower :name "Conviction" :level "10")) :unitskillmap (unitskillmap "Psychic Powers" (unitskill :name "Psychic Powers" :level "10"))) "Sarani Kalea" (unit :name "Sarani Kalea" :summary "Human Priestess" :titles "Princess Kalea, High Priestess of Kali" :unitpowermap (unitpowermap :Conviction (unitpower :name "Conviction" :level "12") :Invocation (unitpower :name "Invocation" :level "16" :unitabilitymap (unitabilitymap :Aspecting (unitability :name "Aspecting")))) :unitskillmap (unitskillmap "Psychic Powers" (unitskill :name "Psychic Powers" :level "12"))))))))
nx/tactics/books/fantasy / chapter_material_realm
Description:
Function Name:
  • chapter_material_realm
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_material_realm : base/chapter (chapter :name "Material Realm" :summary "* Those places we can measure and understand. * The universe of Nexus Fantasy is different from the real world. The world is called Ur and the stars are all different planes of existence separated by the void of space and the Ether. * The Material Realm is described by coordinates for +x, +y, +z, +t (length, height, width, time) * Aeur - The sky (Aeurfolk) * Fyur - Flame (Fyurfolk) * Mur - The oceans (Murfolk, Murmen) * Ur - The land (Urfolk, Urmen) * The Primes" :titles "Areth, Archea, Gaia, Koltho, Material Realm, Middle Earth, Middle Kingdom, Middle Realm, Midgard, Mortal Realm, Mother Earth" :sectionmap (sectionmap :Africana (section :name "Africana" :sectionmap (sectionmap :Aegyptus (section :name "Aegyptus" :reference "Ancient Egypt" :summary "* Units - Charioteer, Necromancer, Pharoh, Sun Priest, Sorceror/Hieolphant * The Empire of the Sun - Aegyptus worship the sun and the nile river that brings life. * Sun Disc - Round shield with the image of the sun is a standard decoration. * Sun Spear - Spear with the image of the sun near its point." :titles "Aegypta, Helios, Kemet" :locationmap (locationmap :Alexandria (location :name "Alexandria" :summary "* Lighthouse of Alexandria - One of the Seven Wonders of the World * Library of Alexandra - The foremost center of learning in the world.") "Great Pyramids" (location :name "Great Pyramids" :reference "* The Pyramid of Cheops was originally no less than four hundred and ninety feet high. Its base covers 31 acres...contains 2,300,000 blocks of stone, each averaging two and a half tons...set with joints measuring one ten-thousandth of an inch wide. - Ancient Egypt, Its Culture and History" :summary "* One of the Seven Wonder of the World") :Necropolis (location :name "Necropolis" :summary "* Despite time, the elements, and cataclysmic upheavals, the ruins of the Citystate of Quaran still stands as grim reminders of that dark and nearly forgotten age. Here amidst stark stone towers and nightmarish effigies, once flourished the capital of the most sinister empire in human history. * Over the years, occultists, black magicians, and tomb robbers have come to the ruins in search dark and macabre secrets. Many cursed tomes, diabolical artifacts, and instruments of torture and death have been recovered, often to the great regret of those who discovered them. Countless more lie in tombs, vaults, and underground pits and tunnels, awaiting discovery by those who covet infernal knowledge above all other considerations.") "Pyramid of Skulls" (location :name "Pyramid of Skulls" :summary "* The Quaran Necromancer-Kings erected a mountain of skulls 1000 feet high, representing untold millions of their victims. The mountain stands to this day and appears to be magically resistent to destruction.") :Thebes (location :name "Thebes")) :unitmap (unitmap "Kemet Tomb Robber" (unit :name "Kemet Tomb Robber" :summary "* The tomb robbers are nomadic folk who have found a profitable lifestyle by digging in dangerous tombs for untold riches. They can act as guides for expeditions into the desert."))) :Batrea (section :name "Batrea" :summary "* Home of the Batrean people. The Batrean males and females visually appear to be entirely different races. The males are brutish and ugly while the females are graceful and incredibly beautiful. It is the peculiar custom of Batrean males to sell their females as concubines. The females do not seem to mind leaving their brutish husbands and thatch and mud hovels. * History - The Batreans are a primitive people when they were visited by a Warlock fleeing persecution. The natives marvelled at his magic, so he set up a little fiefdom for himself in the jungle. He took slaves and enchanted a few to be beautiful servants. Later, one of his lovely maidens killed him in his sleep. Unwittingly, however, he had set a selective breeding program in motion. The beautiful servants returned to their village where the males enslaved them and exiled the ordinary women. Within a generation, only the beautiful women reproduced and their daughters were as lovely as themselves while the sons remained simple and primitive. Generations later, the Batreans are a complicated people, completely split by gender." :unitmap (unitmap "Batrean Concubine" (unit :name "Batrean Concubine" :summary "* Batreans women are engaging creatures, slender and lovely beyond compare. Their movements are graceful, and their manner of speech is charming and at times most eloquent. They are reknowned in other lands as the perfect concubines. Some say, however, that the Batrean women exhibit an uncanny ability to sublty influence their masters.") "Batrean Grunt" (unit :name "Batrean Grunt" :summary "* Batrean men are huge, slope shouldered, and remarkably ugly. They are slow and brutish and are constantly arguing and fighting among themselves. They generally ignore the beautiful females except during their week-long mating season."))) "Burning Waste" (section :name "Burning Waste" :reference "Sahara Desert" :summary "* The Burning Waste is a massive desert (the largest in the world) that stretches across the northern Africana continent. Where the desert meet the Mediterrainean, the water creates a long strip of jungles or swamps. These are also the only inhabited areas near the Burning Waste. * Red Iron - The sand of the Burning Wastes has a high iron content in the form of rust dust. With difficulty, the sand can be smelted back into iron. Typically, the red tinge is left in to show its origination. * Politics - Many nations claim large sections of the desert, but no one really maintains any ownership over such a harsh realm.") :Djaffa (section :name "Djaffa" :summary "* Djaffir are a slender, wiry desert people famous for being masterful merchants who always drive a hard bargain. They wear flowing head-dresses, robes, cloaks, and leather masks. They do not remove their masks believing that the face is the mirror to the soul and believe the masks protect them from hostile magic. The more skeptical claim that they were masks to conceal their identities from those they intend to relive of their money." :unitmap (unitmap "Djaffir Bandit" (unit :name "Djaffir Bandit" :summary "* There are small tribes of Djaffir bandits living in the desert preying on caravans. Though they will kill if provoked, they are not prone to wanton violence. Neither are they known to raid the caravans of the Djaffir Merchants, a fact which many attribute to collusion between the Sheiks of the two tribal groups. Some say the differnce between a merchant and a bandit is a matter of semantics.") "Djaffir Merchant" (unit :name "Djaffir Merchant" :summary "* They are shrewd hagglers, but fortunately they are very proud of their reputations so they typically only trade in high quality goods. * The merchants live in walled towns surrounding oases.") "Djaffir Wizard" (unit :name "Djaffir Wizard" :summary "* The Wizards are well regarded by their people as seers and mystics. Like the rest of their people they are superstitious and see omens everywhere."))) :Dracarta (section :name "Dracarta" :summary "* Trade - The Dracatans smelt Red Iron in large quantities, and export it throughout the area. Their prices remain low enough that it is not cost effective to compete with their efficient facilities." :locationmap (locationmap "Dracartan Cisterns" (location :name "Dracartan Cisterns" :summary "* The water supply of Dracarta is perhaps its most precious commodity. The supply is kept in a series of enormous underground cisterns. Tampering with the water supply in any way is a captial offense and there are numerous signs reinforcing that fact.") "Dracata Halls of Infamy" (location :name "Dracata Halls of Infamy" :summary "* Here are arrayed the worst and most despicable criminals in Dracartan history. Their statue-like forms standing as warning to future offenders, preserved by immersion in Red Iron.") "Dracata Halls of Justice" (location :name "Dracata Halls of Justice" :summary "* The Council of Elders, Dracarta's esteemed legisilative/judicial body holds sway in these large halls. The laws of the land are determined here. Serious crimes are also heard here in open court. Punishments include forced labor, banishment to the wilderness, or for truly heinous offenses: the sentence of Retribution (immersion in red iron).")) :unitmap (unitmap "Dracartan Alchemist" (unit :name "Dracartan Alchemist" :summary "* Dracartan Alchemists are employed to create storm crystals and adamantine for the duneships.") "Dracartan Desert Scout" (unit :name "Dracartan Desert Scout" :summary "* The Dracartan military is largely composed of these scouts. In order to survive in the desert they do not user heavy gear or weapons. When facing difficult foes they will use the desert as their primary weapon.") "Dracartam Duneship" (unit :name "Dracartam Duneship" :summary "* The legendary duneships of the Dracartan army. They race across the desert sand on adamantine runners. They are powered by storm crystals produced and ignited by the Alchemists into the huge wind funnels that propel the duneships across the sand. * The duneships serve as troop carriers and mobile siege engines. Light Ballistas and light greek fire catapults are typically carried. * Despite the name, duneships cannot climb hills and may only travel on level sand. They also lack manueverability and may not travel into headwinds by tacking. * The forward section of the hull can be lowered to allow mounts to enter and exit. * The duneships are expensive to use and maintain, so they are only deployed in special occassions, especially when a show of force is required."))) :Carthage (section :name "Carthage" :summary "* City/State * Worship the Devil King [Baal Moloch].") "Chana Jungles" (section :name "Chana Jungles" :summary "* Home of the Chana Wildmen, the jungles are also home numerous dangerous and noisome insects, snakes, leeches, and even plants. * Wildmen - Many large tribes of Wildmen live throughout the jungle living off of the rich vegetation and animal-life. The Wildmen are deeply addicted to [Skullcap] mushrooms and have been driven violently insane from its hallucinatory effects. They are also warlike in the extreme with tribes constantly ambushing one another to gain territory. In battle, they thrive on brutality, and mercy is considered a weakness. Prisoners are publicly skinned alive to the delight of the tribe." :unitmap (unitmap "Chana Warlord" (unit :name "Chana Warlord" :summary "* The leaders of the wildmen tribes are horrible and immensely obese creatures that have gained power through demonic pacts and are said to be part demon themselves.") "Chana Wildman" (unit :name "Chana Wildman" :summary "* The Wildmen are savage cannibals who cover themselves with terrifying body paints. They only respect bravery and any who show fear are ritually slain to their fearsome gods. They are very superstition and in awe of magic, so they obey the Witchmen without question. They live a nocturnal lifestyle and are skilled at axes, spears, and bolas.") "Chana Witchman" (unit :name "Chana Witchman" :summary "* The Witchmen revere the forces of darkness and despise the enemies of their gods the forces of light. They live a completely nocturnal lifestyle and are skilled at witchcraft and herbalism. * They sing songs of fear and death that are said to strike madness in those that hear them. * They create shrunken heads from their victims and wear them as jujus. It is said that they can capture a person's soul and control their body like a mindless zombie. * Some have trained Death's Head Vipers as pets and wear them as bracelets." :unitpowermap (unitpowermap :Sympathy (unitpower :name "Sympathy") :Enchantment (unitpower :name "Enchantment") :Naturalism (unitpower :name "Naturalism") :Madness (unitpower :name "Madness")) :unitskillmap (unitskillmap "Animal Handling" (unitskill :name "Animal Handling" :unitabilitymap (unitabilitymap "Snake Charming" (unitability :name "Snake Charming"))))) "Death's Head Viper" (unit :name "Death's Head Viper" :summary "* A foot long poisonous viper that can be trained as a pet. Some can be trained to coil around an arm or neck and act as jewelry and as a deadly bodyguard. The Viper cannot be completely domesticated, however, and has been known to turn on their owners when startled." :titles "Wrist Viper"))) :Jhagara (section :name "Jhagara" :summary "* Jhagara is a hot and humid land seldom travelled by visitors. * People - The Jhagarans are a primitive, superstitious race with ungainly, elongated limbs and elliptical heads. They are over six feet tall and very thin and wiry. * Outcasts - Strangest of the Jhagarans are the Outcasts, tribesmen who wander the furthests swamps and jungles. Though few in number, they wield great power. It is believed by the other Jhagarans that the Outcats carry the 'Sitgma of Doom'. Simply being touched by an Outcast immedidately brands one as an Outcast. He or she has two choices, commit suicide or leave the tribe and join the Outcasts. In order to avoid being tainted, the Jhagarans leave tributes to the Outcasts outside their settlements. If the tributes are insufficient, the Outcasts will approach the settlement until they are placated. There is no simple solution to the Cursed Ones. Killing an Outcast brings the curse upon the killer and his family. Sometimes they will try to convince or trick strangers into killing the Outcasts for them. * Concordance - Every seven months, for two weeks while a particular constellation moves across the horizon, the Jhagarans will not venture forth into the swamps at night. They believe an indescribable monster called the Horag stalks the marshes. Though no Jhagaran has ever seen the Horag, their belief in it is unshakable. During theses times, tribesmen accidentally caught in the marshes after sunset have reportedly slit their throats rather than face the terror of this fearsome monster." :unitmap (unitmap "Jhagaran Hunter" (unit :name "Jhagaran Hunter") "Jhagaran Outcast" (unit :name "Jhagaran Outcast"))) "Serpentine River" (section :name "Serpentine River" :summary "* The [Serpentine River] is actually more of a slow moving swamp that flows from the south and pours into the ocean. At the mouth of the river, a large set of thick posts have been sunk into the silt, simultaneously providing tradeships with a place to tie up while blocking entrance into the river. Porters must then be paid to bring goods to [Fiaqua] by barge. This is mostly just another opportunity for corruption. The [Naga] in the area do not allow boat traffic farther upstream from [Fiaqua].") "Shadow Isles" (section :name "Shadow Isles" :summary "* These islands are inhabited by the Malum, a cabal of Arch-Spectres." :locationmap (locationmap "Obsidian Tower" (location :name "Obsidian Tower" :summary "* The Shadow Wizards live in ancient ruined towers of obscure origin. These dark towers dot the landscape of the Shadow Isles, and it is here that they perform their experiments night and day seemingly without rest. Some have entered the tower without molestation but have fled when they viewed the horrorific activities within.")) :unitmap (unitmap "Shadow Wizard" (unit :name "Shadow Wizard" :summary "* Comprised of animate darkness, these spirits of deceased magicians resemble man-like shadows. They cloak themselves inn hooded vestments and bear ebony runestaves studded with black diamonds, and their eyes burn with a fiery incandescense. * They Shadow Wizards consort with beings from the lower planes and perform bizarre magical experiments. The reason for their actions remains unknown, but some fear they are creating an army of monstrosities to unleash upon an unsuspecting world."))) "Sinking Land" (section :name "Sinking Land" :summary "* The Sinking Lands is a vast, fetid swamp of waist-deep water covering a deep layer of loose mud and decomposing vegetation. The entire swamp is basically a quicksand pit that will slowly engulf anything that stands still on the bottom. Numerous creatures that swim, float, or flit across the water have made a home here despite the perils." :unitmap (unitmap :Sludge (unit :name "Sludge" :summary "* The Sludge are a man-sized race of semi-intelligent Slugs that live within the Sinking Land. They swim quickly through the shallow water pushing off of the bottom. The Sludge are very curious and gather around visitors in large numbers. Though intimidating and pushy, they are largely harmless and flee if harmed. The main danger is they have been known to accidentally capsize boats in their enthusiasm. They are knowledgable about the area, but their lack of language makes communication a challenge."))) :Tunis (section :name "Tunis" :summary "* Weather - Tunis is hot and humid all year round. The temperature varies from warm to sweltering. The hot weather encourages the laid back attitude of the locals." :locationmap (locationmap :Fiaqua (location :name "Fiaqua" :reference "Las Vegas" :summary "* Level 6 [Settlement] * Fiaqua means 'The Flower on the Water'. It is named that way because of the beautiful flowers that naturally grow all over the surface of the city as well as for the Black Lotus trade that was the reason for the city's founding. Fiaqua is unofficially known as the 'City of Knives' because of the strong criminal element and rampant assassinations. It is not so much a city as a series of shacks built on planks and pontoons that extend from a sandbar in the [Serpentine River] into the surrounding swamps. * Geography - Fiaqua is a tiny city located a half mile inland on the [Serpentine River] in the country of [Tunis]. * Politics - Fiaqua is currently ruled by Queen Amelia Tremont, a minor crimelord who fancies herself a queen. She assassinated her predecessor and has proven quite adept at maintaining a delicate balance between her criminal compatriots, the [Naga], and the neighboring nations that have made the Lotus trade illegal but tolerate it as long as it doesn't create a disruption. * History - Fiaqua was founded two hundred years ago when the [Black Lotus] flower was discovered there. Initially, only a small band of criminals harvested the Lotus, but their actions attracted the local [Naga] who owned the land. Conflicts continued for many years until a truce was established where the [Naga] cultivated the flower and the humans sold it. This arrangement has worked for over 150 years despite some rather dramatic conflicts. * Law - Few things are illegal in Fiaqua. Fewer still are enforced. Since Fiaqua is a criminal haven created for the express purpose of smuggling, criminal types are widely accepted. The local [Naga] serve as enforcers to keep the peace while also controlling the population of homeless and hopelessly drug addicted. It is widely known that one must not venture out alone at night. Besides the Black Lotus trade, Fiaqua also runs very successful gambling dens and brothels catering both to the wealthy elite and to the desperate. * Visitors - The drug trade attracts addicts and experimenters because of the Lotus' legal status in Fiaqua as well as the large sums that can be gained through smuggling. The wealthy are often attracted to the 'anything for a buck' nature of the city as well as the surprising safety (as long as you have personal bodyguards). Traders come to the city because its position in the swamp requires it to import most of its essentials including the very lumber that makes up the city. Prices are fairly cheap, but unfortunately service is terribly slow because of the rampant drug addiction. * Wildlife - The city is covered with blossoming flowers all the time. These bloom from creeping vines that help hold the decaying wooden structures together. Insects swarm around the city at all times, but the pest insects are kept under control by the ever present [Ekondo] lizards. These small lizards are trained to distinguish pests from pollinating insects and catch them from the sky with their absurdly long tongues. * Units - Drug Addict, Drug Merchant, Gambler, Loan Shark, Pimp, Prostitute, Smuggler, [Naga]" :titles "Flower on the Water, City of Knives")) :unitmap (unitmap "Queen Amelia Tremont" (unit :name "Queen Amelia Tremont"))) :Shinsenkyo (section :name "Shinsenkyo" :reference "* Hell's Paradise * In Chinese legend, Shinsenkyo is an island on which gods reside, a place of true beauty and nature." :summary "* An island of great natural beauty, but it is filled with bizarre, unnatural beings. It is rumored to be the source of the Elixir of Life which is the source of its strange ecology.") :Wraeclast (section :name "Wraeclast" :reference "* Alba, Madagascar, Australia, Count of Monte Cristo, Mayan civilization, Path of Exile" :summary "* Wraeclast is a large subtropical island in the southern hemisphere. It is infamous as a thoughly cursed place where criminals and political prisoners are exiled, never to return. * Cursed - An evil force prevades the land. Here the dead always rise again as zombies or worse. Sleep is filled with dark thoughts of madness and violence. The evil influence has twisted plants and animals into bizarre and hateful things. * Settlements - There are a handful of small towns composed of exiles and shipwreck survivors carving out a meager living from the hostile land. Agriculture is difficult, but ironically hunting is good for those who can avoid becoming the hunted themselves. * Ruins - Though there are no native people on Wraeclast, there is ample evidence of early advanced cultures, apparently predating the evil influences that currently makes civilization so challenging. Many speculate that this previous civilization was destroyed when they unleashed the curse that still devastates the land."))) :Atlantia (section :name "Atlantia" :sectionmap (sectionmap :Antilla (section :name "Antilla" :reference "* Atlantis" :unitmap (unitmap "Antillan Triton" (unit :name "Antillan Triton"))) :Brittania (section :name "Brittania" :reference "England" :locationmap (locationmap :Avalon (location :name "Avalon" :summary "* Rogue * Serf * Squire") :Saxony (location :name "Saxony")) :unitmap (unitmap "Avalan Footman" (unit :name "Avalan Footman") "Avalon Highwayman" (unit :name "Avalon Highwayman" :reference "Robin Hood") "Avalan Knight" (unit :name "Avalan Knight") "Avalon Longbowman" (unit :name "Avalon Longbowman") "Avalan Shieldbearer" (unit :name "Avalan Shieldbearer"))) :Eire (section :name "Eire" :reference "Ireland" :titles "Emerald Island") :Melnibone (section :name "Melnibone" :titles "Dragon Isles" :itemmap (itemmap :Mournblade (item :name "Mournblade") :Stormbringer (item :name "Stormbringer" :reference "* Farewell, friend. I was a thousand times more evil than thou! - Stormbringer, Stormbringer")) :unitmap (unitmap :Elric (unit :name "Elric" :reference "* You sought to imitate the Emperors of Melnibone... You mocked Elric of that line, you tortured him and you abducted his wife. You moulded her body into a hell-shape as you moulded the rest of the world... know how the folk of Melnibone toyed with such upstarts... Jagreen Lern took an hour to die and only because Moonglum begged Elric to finish him swiftly. - Elric, Stormbringer") :Moonglum (unit :name "Moonglum") "Hunting Dogs of Dharzi" (unit :name "Hunting Dogs of Dharzi") "Melnibonean Sorceror" (unit :name "Melnibonean Sorceror") "Melnibonean Soldier" (unit :name "Melnibonean Soldier") :Yykroon (unit :name "Yykroon") :Arioch (unit :name "Arioch" :summary "* Arioch is one of the most powerful of the Dukes of Hell. * Arioch is the patron of Melniboné and has a personal relationship with Elric. He is sophisticated and highly intelligent, though possibly insane, and he usually (but certainly not always) appears as a beautiful youth, usually with blond hair. * He has also been known to take the form of a large black fly or a black alien shape, horrible to look upon." :titles "Knight of the Swords, Lord of the Higher Hell, Lord of the Seven Darks") :Donblas (unit :name "Donblas" :reference "* It was as if some enormous sun, thousands of times larger than earth's, had sent a ray of light pulsing through the cosmos, defying the flimsy barriers of Time and Space... the majestic Lords of Law, their earthly forms so beautiful that they challenged Elric's sanity... Leading them came Donblas, the Justic Maker, a smile upon his perfect lips. He carried a slender sword in his right hand, a sword that was straight and sharp and like a beam of light itself. - Stormbringer" :titles "Justice Bringer") :Elenoin (unit :name "Elenoin") :Kyrenee (unit :name "Kyrenee") :Mabelrode (unit :name "Mabelrode" :summary "* Mabelrode is a Chaos Lord. He appears with his face perpetually in shadow, or simply with blank, featureless skin in place of a face." :titles "Mabelode the Faceless, King of the Swords") :Xiombarg (unit :name "Xiombarg" :summary "* Xiombarg is a Chaos Lord. She prefers to appear as a beautiful young woman but is sometimes referred to with the male pronoun. She is prone to shapeshifting and carries a giant sword. She sometimes rides a creature with the head of a lion and the body of a bull. * Though she prefers the form of a beautiful woman, it is possible her true form is more insect-like." :titles "Queen of the Swords"))) "Sargasso Sea" (section :name "Sargasso Sea" :summary "* The Sargasso Sea is a section of calm water in the center of converging currents. The surrounding current draw seaweed and various debris to accumulate across a vast area. The still air and vast seaweed aspiration accumulates a cloying mist that limits visibility. * Many have found their ships stranded here by the calmed winds and cloying seaweed. Those who stay and survive have found that the Sargasso can support an unusual lifestyle floating in the ocean. Though survival can be a struggle, the Sargasso people have a strong sense of interdependence and enjoy their freedom from outside domination. * It is said that a giant squid calls the Sargasso home." :unitmap (unitmap "Sargassos Sea Nomad" (unit :name "Sargassos Sea Nomad" :summary "* Expert fisherman and salvagers. The sea nomads can be known to be ruthless, since life in the Sargasso can be difficult."))) :Y'ha-nthlei (section :name "Y'ha-nthlei" :reference "We shall swim out to that brooding reef in the sea and dive down through black abysses to Cyclopean and many-columned Y'ha-nthlei, and in that lair of the Deep Ones we shall dwell amidst wonder and glory forever. - The Shadow Over Innsmouth" :summary "* Deep Ones, Human Hybrids, Human Slaves" :titles "City of the Deep Ones"))) :Asiana (section :name "Asiana" :sectionmap (sectionmap "Jade Empire" (section :name "Jade Empire" :titles "Quan Dynasty, Jade Kingdom" :locationmap (locationmap :Tian (location :name "Tian" :summary "* The capital of the Jade Empire is situated on an island within a man-made lake. The metropolis can only be reached by boat. The city was constructed for the Emperor who demanded that the new capital surpass in beauty all of the cities of the world. Gilded towers and domes and the Palace of a thousand fountains are especially noteworthy." :titles "Golden City") "Emperor's Canal" (location :name "Emperor's Canal" :summary "* A man-made waterway connects the River Shan with the lake that surrounds Tian. A system of locks allows traffic on the canal to be strictly monitored, and the canal is not large enough for warships.") "Emperor's Forest" (location :name "Emperor's Forest" :summary "* East of the capital is an artificial forest created for the pleasure of the Emperor and the aristocracy, so they might hunt 'wild' game. The forest is continually restocked with dangerous creatures that have been rendered harmless by declawing and with sedatives.") "Emperor's Road" (location :name "Emperor's Road" :summary "* This highway spans the length and breadth of the Jade Empire. It is extremely well maintained funded by tolls.") "Shoalin Monastery" (location :name "Shoalin Monastery" :summary "* Are you worthy? It is a simple question. * You are a foreigner. Here you will be treated with hatred and disrespect because you are different. We provide aid to no one. If you find this unfair, you are always free to go. Few are strong enough to walk this path. It is up to you whether you are one of them.") "Wudang Monastery" (location :name "Wudang Monastery")) :unitmap (unitmap "Jade Militia" (unit :name "Jade Militia" :summary "* The vast number of people in the Jade Empire are kept in check by a massive regional militia. Most militia are little more than thugs with cheap equipment and a badge.") "Jade Guard" (unit :name "Jade Guard" :summary "* The professional military that oversees the militia.") "Quan Noble" (unit :name "Quan Noble" :summary "* Once a barbarian people, the Quan people have grown rich at the expense of the people subjected long ago by their ancestors. They wield supreme power and are attended by hosts of fawning servitors and slaves. Among these perverse and degenerate folk, obesity is considered a sign of success and ostentatious displays of wealth are in vogue. * The nobles have highly refined tastes and lofty airs. They wave themselves with scented fans when in the presence of outsiders who they consider offensive in apperance and odor.") "Shaolin Monk" (unit :name "Shaolin Monk" :summary "* A Buddhist Monk") "Wudang Monk" (unit :name "Wudang Monk" :summary "* A Taoist Monk"))) :Nepal (section :name "Nepal" :locationmap (locationmap "Himalaya Mountains" (location :name "Himalaya Mountains")) :unitmap (unitmap "Nepal Sherpa" (unit :name "Nepal Sherpa"))) :Nippon (section :name "Nippon" :titles "Land of the Rising Sun" :locationmap (locationmap "Valley of the Mists" (location :name "Valley of the Mists")) :unitmap (unitmap "Nippon Budoka" (unit :name "Nippon Budoka" :titles "Warrior Monk") "Nippon Gakusho" (unit :name "Nippon Gakusho" :titles "Priest") "Nippon Ninja" (unit :name "Nippon Ninja") "Nippon Samurai" (unit :name "Nippon Samurai") "Nippon Sohei" (unit :name "Nippon Sohei"))) :Tibet (section :name "Tibet" :unitmap (unitmap "Tibetan Monk" (unit :name "Tibetan Monk"))))) :Caucasia (section :name "Caucasia" :sectionmap (sectionmap :Anatolia (section :name "Anatolia" :reference "* The Romani were erroneously believed to originate in Egypt (therefore Gypsy)." :summary "* Horseclans - Anatolian horsemen are widely believed to be the greatest light horsemen in the world. The Horseclans live on the plains where their horsemen have maximum effect. They live a semi-nomadic existance moving on when resources become scarce. * Romani - The Romani are a gregarious, nomadic people often travelling in wagons carrying all that they own. They are reknowned as artists, acrobats, fortune tellers, thieves, tricksters, or swindlers depending on your point of view. The Romani religion revolves around two demigods: Fortuna, the lovely but fickle goddess of luck, and the grim entity known as Death. They revere Fortuna but mock Death, whom they strive to cheat at every opportunity. * Carnevale of True Wonders - A large group of Romani and other assorted wanderer/adventurers have banded together to form a semi-organized travelling circus. They show up near a town and rent some unused plaza or farmland and set up their tents and stalls. Their shows are constantly varying including: acrobats, strong men, duelists, wrestlers, theater troupes, musicians, magicians, story tellers, fortune tellers, wonderous creatures, items, foods and drinks. Anyone can join the welcoming troupe. There are a few rules, however: all wonders must be real (per the name) and no theft, fraud, or swindles are allowed on Carnevale grounds." :locationmap (locationmap :Ephesus (location :name "Ephesus" :summary "* Temple of Artemis - One of the Seven Wonders of the World. * The sacred site at Ephesus was far older than the Temple. An archaic, pre-Hellenic fertility goddess was already passionately venerated, and the Greeks associated her with Artemis.") :Galatia (location :name "Galatia") :Halicarnassus (location :name "Halicarnassus" :reference "* Mausolus built the Mausoleum, and the term mausoleum has come to be used generically for any grand tomb." :summary "* Mausoleum of Halicarnassus - One of the Seven Wonders of the World.") :Phrygia (location :name "Phrygia") :Witchwood (location :name "Witchwood" :summary "* The forest home of the Dhuna. * Dhuana - The Dhuana are a primitive, reclusive people highly skilled at witchcraft. They live in huts deep in the forest and perform hedonistic rituals in the numerous ruins, groves, and standing stones in the area. They are mysterious but not unfriendly, and they reputed to have numerous extraordinary attributes including the ability capture a man's heart with a single kiss.")) :unitmap (unitmap "Anatolian Light Cavalry" (unit :name "Anatolian Light Cavalry") "Anatolian Mounted Archer" (unit :name "Anatolian Mounted Archer") "Romani Acrobat" (unit :name "Romani Acrobat" :titles "Juggler") "Romani Animal Trainer" (unit :name "Romani Animal Trainer") "Romani Charlatan" (unit :name "Romani Charlatan" :titles "Magician, Mountebank, Swindler, Trickster") "Romani Dancer" (unit :name "Romani Dancer") "Romani Fortuneteller" (unit :name "Romani Fortuneteller") "Romani Rogue" (unit :name "Romani Rogue" :titles "Thief") "Romani Thespian" (unit :name "Romani Thespian" :titles "Puppeteer"))) :Balkan (section :name "Balkan" :locationmap (locationmap "Dragon's Eye" (location :name "Dragon's Eye" :summary "* A small sea surrounded by mountainous, inhospitable terrain. There are many small islands in the Dragon's Eye, and it is rumored that the great dragon Tiamat lives on one of them." :titles "Black Sea, Transylvania") :Carpathia (location :name "Carpathia" :summary "* The region suffered under a widespread magical disaster of unknown origin. Suddenly the dead began to rise in great numbers and overran the land. Small communities are allowed to live and are 'protected' by the Vampires that feed upon them. * Since the disaster, an unnatural fog surrounds the area. The fog seems to spawn undead and other monstrosities." :titles "Deadlands") "Carpathian Mountains" (location :name "Carpathian Mountains")) :unitmap (unitmap "Carpathian Witchhunter" (unit :name "Carpathian Witchhunter" :summary "* Some of the survivors of the Carpathian disaster formed a group to discover the cause of the disaster and to repair it. They seek magical knowledge of all sorts and fund themselves by using their talents as bounty hunters for the more dangerous bounties." :titles "Witcher"))) :Byzantium (section :name "Byzantium" :reference "Byzantine Empire" :summary "* Byzantium represents a sizable empire. They are an advanced people with an extensive legal system and extremely complex rules, religion, and politics." :titles "Eastern Empire" :locationmap (locationmap :Constantinople (location :name "Constantinople")) :unitmap (unitmap "Byzantine Assassin" (unit :name "Byzantine Assassin") "Byzantine Emperor" (unit :name "Byzantine Emperor" :summary "* The emperor rules with divine right and is considered a god on earth.") "Byzantine Guard" (unit :name "Byzantine Guard") "Byzantine Monk" (unit :name "Byzantine Monk") "Byzantine Noble" (unit :name "Byzantine Noble") "Byzantine Official" (unit :name "Byzantine Official") "Byzantine Priest" (unit :name "Byzantine Priest") "Byzantine Spy" (unit :name "Byzantine Spy"))) "Caspian Sea" (section :name "Caspian Sea" :unitmap (unitmap "Caspian Corsair" (unit :name "Caspian Corsair" :summary "* These corsairs are viscious cutthroats prone to violence and murder. There are a number of different pirate bands, all rivals to one another. In lean times they prey on one another and compete over plunder. When relaxing, they favor Ska-wae, a dangerous game played with curved knives and dice.") "Caspian Mercenary" (unit :name "Caspian Mercenary" :summary "* The Caspians are notable for their lack of discretion concerning the type of work they will take on. Unfortunately, they are also notable for disappearing when they see the risks getting too high.") "Caspian Rogue" (unit :name "Caspian Rogue"))) :Hesperia (section :name "Hesperia" :reference "Turkey" :summary "* Hippolyta - Queen of the Amazons. She was abducted and forced to wed the king of Athens. She was later cast off and returned to the Amazons * Warfare - Amazon combat philosophy takes a very long term view of victory. They do not put much value in military victories. Instead they believe in subverting, frustrating, and outlasting their opponents. They will avoid head-on battles, preferring flanking and strike and fade attacks. For this reason, they do not have maintain heavy units, but instead maintain superior skirmishers, spies, and assassins. * Religion - Amazons revere the image of Gaia, the All-Mother, but they do not worship her as as deity. Instead, the Amazons believe that the female is the natural mother of all things, and that each woman may find all the strength that she needs within herself. The Amazons further believe that with patience and proper nuturing, women will naturally assert their leadership across the world. * Politics - Amazons engage with other nations for trade, but their real power lies in their message of female power which they quietly spread around the world. This has created a vast spy network that spreads vital information as gossip." :titles "Home of the Amazons, Sarmatia" :unitmap (unitmap "Amazon Archer" (unit :name "Amazon Archer" :summary "* Amazon dedication to archery is legendary. Some have one breast removed to prevent interference with the draw of their bow.") "Amazon Assassin" (unit :name "Amazon Assassin") "Amazon Infiltrator" (unit :name "Amazon Infiltrator") "Amazon Peltast" (unit :name "Amazon Peltast") "Amazon Scout" (unit :name "Amazon Scout") "Amazon Trapper" (unit :name "Amazon Trapper") "Amazon Warrior" (unit :name "Amazon Warrior"))) :Scythia (section :name "Scythia" :sectionmap (sectionmap :Arim (section :name "Arim" :summary "* Arim is a land of rough and irregular hills. The weather is usually overcast and windy. It has substantial mineral wealth, especially iron. * People - The people of Arim are a dour and moody lot with swarthy complexions, and long black hair. The men tend to be gaunt and wiry with hatchet-life features. The women tend to be heavy-set and lacking in charm. They are generally a humorless people who have lived hard lives as miners. * Reputation - The Arimites have a not unwarranted reputation of being cutthroats and assassins. * Revenants - Revenant is the name of anyone who exacts revenge for money. If anyone feels they need redress for any offense, they can post a notice in a public place along with a reward, and if the reward is high enough they can expect it to be carried out. Almost any kind of vengence can be commissioned including arson, theft, mugging, extortion, murder, or even slander. Murder for hire is probably the most lucrative. Government officials, laborers, merchants, jealous lovers, and irrate housewifes have all been known to use the Revenants. It is so common, that the mere shaking of a change purse has become a threat of revenge." :unitmap (unitmap "Arimite Knife Fighter" (unit :name "Arimite Knife Fighter") "Arimite Revenant" (unit :name "Arimite Revenant"))))) "Shattered Lands" (section :name "Shattered Lands" :summary "* The Shattered Lands is bleak and desolate. The landscape is nightmarish: jagged spikes of rock jut upward from the cracked and barren earth. The violent upheavals have exposed many mineral deposits. Unfortunately, the residents of this land have used strip mining techniques which have badly polluted the air and rivers. The air is tinged with a fine ash, the waters are foul tasting, and there are many dangerous chemical waste products including bubbling pools of lye. Creatures living in the rivers and lakes are often deformed or mutated. * The Shattered Lands are home to many small, violent clans that violently compete with each other for the scarce resources in this bleak area." :titles "Harak" :locationmap (locationmap :Urag (location :name "Urag" :reference "* A group of scholars entered Urag with the contention that the Ur were not evil but were a product of their harsh environment. They encountered a small band of Ur and offered them gold, fragrant oils and gems. These the savages examined and discarded. Without apparent enmity, they slew the scholars, took their cloths and fed the remains to their hunting dogs. They then killed the scholars' mounts, butchered them for meat, and continued on their way." :summary "* The nation of the barbarous Ur. * Ur - The Ur are a hard-hearted people utterly devoid of mercy or compassion. Ultimate survivalists, they view all other living creatures as prey. Forced by the circumstances of their existence, they are by nature fatalistic and grim. They take what they want, raiding both rival clans and neighboring lands. The Ur are nomadic, traveling from place to place in search of food and water - both precious commodities in this region. All Ur consider themselves to be warriors and trades not related to survival and warfare are considered useless.")) :unitmap (unitmap "Darkling Cutthroat" (unit :name "Darkling Cutthroat" :summary "* The Ur have subjegated the Darkling race and use them as cannon fodder in battle. The Darklings are vile creatures and are extremely difficult to manage, so the Ur are ruthless when administering discipline.") "Stryx Spearman" (unit :name "Stryx Spearman" :summary "* The vile Stryx have allied themselves with the Ur and nominally serve them. The Stryx, however, are loyal to no one and cannot be relied on in battle. The Ur find them frustrating but useful allies.") "Ur Horseman" (unit :name "Ur Horseman" :summary "* Horses are rare in the Shattered Lands, so only the most decorated warriors receive them. However, with nearly no tradition of horsemanship, the Ur usually dismount before combat.") "Ur Shaman" (unit :name "Ur Shaman" :summary "* The Ur have little education and are inept spell casters. They claim they are great seers though their predictions are always open to interpretation. The Ur military leaders use their 'prophesies' to support their own agendas.") "Ur Warlord" (unit :name "Ur Warlord" :summary "* The Ur clans are rules by a series of viscious warlords each trying to increase their own power and influence at the expense of others. The ceaseless infighting amond the Ur clans prevents them from being more than a regional threat.") "Ur Warrior" (unit :name "Ur Warrior" :summary "* The Ur Warrior is the typical shocktrooper of the Ur clans. Most adult Ur, male or female are considered warriors."))) "Volcanic Hills" (section :name "Volcanic Hills" :locationmap (locationmap "Dragon Rock Mountain" (location :name "Dragon Rock Mountain" :summary "* Dragon Rock is an active volcano that has blighted the Volcanic Hills with its many eruptions over the centuries. It has not erupted in recent memory and seems to be content pouring out smoke and lava creating the River of Fire. Dragon Rock is also so named because a number of Fire Dragons live in the area, apparently drawing strength from the volcano.") :Firefalls (location :name "Firefalls" :summary "* The River of Fire ends at an enormous, seemingly bottomless chasm, The lava pours off the edge in a spectacular display before dropping into untold depths. The view is particularly impressive at night. Some believe the chasm is actually a portal to the underworld and the large number of fire demons in the area supports that claim.") "River of Fire" (location :name "River of Fire" :summary "* The River of Fire is actually an everflowing torrent of molten lava pouring from Dragon Rock Mountain and finally dropping over Firefalls. Fire Demons and Elementals are said to swim in the river and Fire Dragons have been seen consuming the lava."))))) :Northlands (section :name "Northlands" :titles "Frozen North" :locationmap (locationmap "Plateau of Leng" (location :name "Plateau of Leng") "Unknown Kadath" (location :name "Unknown Kadath")) :sectionmap (sectionmap :Aurorea (section :name "Aurorea" :reference "* Greenland, Iceland * In Greek mythology the Hyperboreans were mythical people who lived 'beyond the North Wind'. The Greeks thought that Boreas, the god of the North Wind lived in Thrace, and therefore Hyperborea indicates a region that lay far to the north of Thrace. * This land was supposed to be perfect, with the sun shining twenty-four hours a day, which suggests a possible location within the Arctic Circle." :summary "* Auroea is a land of vast snow fields, glittering ice peaks, and frozen lakes. * People - The Auroran people are tall and statuesque and live in crystalline, ice castles. Their artificers work with the unique material Adamant, the fabled permanent ice of lengend. The Aurorans have an amazing resistence to the cold but conversely they are only confortable in freezing temperatures. * Religion - The Aurorans revere Boreas the god of the North Wind. They do not create temples but instead build altars in the open wilderness where one can truly feel his presense." :titles "Hyperborea" :locationmap (locationmap "Sea of Ice" (location :name "Sea of Ice" :summary "* An expanse of shimmering, perpertually frozen water, the Sea of Ice is traversed by the Aurorans on Ice Schooners and personal Ice Skimmers.")) :unitmap (unitmap "Auroran Alchemist" (unit :name "Auroran Alchemist" :summary "* The Auroran Alchemists work with the Auroran Ice Witches to create permanent magical ice with similar properties to steel.") "Auroran Banker" (unit :name "Auroran Banker" :reference "* People say the Northland Bank's true currencies are blood and tears, but mayor, even speaking as a banker, that seems a little unconscionable. - Pantalone, Genshin Impact") "Auroran Ice Queen" (unit :name "Auroran Ice Queen" :reference "* Elsa - Frozen") "Auroran Ice Witch" (unit :name "Auroran Ice Witch" :summary "* Auroran Ice Witches serve as seers and priests of Boreas the god of winter and the North Wind. They are masters of cold magic." :titles "Ice Warlock") "Auroran Tundra Scout" (unit :name "Auroran Tundra Scout" :summary "* The army and hunters of the Auroran people. They are typical skirmishers with phenomenal survival skills.") "Auroran Ice Skimmer" (unit :name "Auroran Ice Skimmer") "Auroran Ice Schooner" (unit :name "Auroran Ice Schooner" :titles "Ice Outrigger"))) :Jotunheim (section :name "Jotunheim" :summary "* Frost Giants - The Frost Giants wage perpetual war on all creatures especially the Aurorans and Nords. Their lack of tactical ability is made up for by their phenomenal strength, endurance, and determination. Their bodies emminate extreme cold, so as they expand their territory the temperatures drop. Their goal actually seems to be to freeze the world." :locationmap (locationmap "Ymir's Teeth" (location :name "Ymir's Teeth" :summary "* A massive ridge of jagged moutains that the Frost Giants believe are the teeth of an inconceivably large god and that the world lies in its open maw awaiting the day when the being awakes. * Home of the Frost Giants, this is also the main location where blue diamonds can be found. Mining of blue diamonds began the war between the Aurorans and Ice Giants."))) :Khazad (section :name "Khazad" :summary "* A strange and unknown realm, Khazad is located in the furthest reaches of the world. It is practically inaccessible. A line of precipitous 200 foot cliffs runs the length of its eastern coast and a ridge of mountains extends along its eastern borders. To the north lie fields of ice and snow. As a result of these impediments to travel, much of what is known is based on a very few hardy adventurers who have survived journeys to this isolated area. According to accounts, the interior is also less than inviting. Patches of bleached and barren gall oak stand like skeletons silhouetted against a dreary purple-grey sky. Broken and irregular lines of hills are interspersed with moors, quagmires, and stagnant ponds. The air is heavy with the stench of moldering vegetation and exudes an unsettling, ancient quality. * Lost Kingdom - Scattered throughout the region are the ruins of a long forgotten civilization. * The eastern cliffs are sheer, 200 foot cliffs that ring the coastline. Giant diabolical visages have been carved into the cliff-sides along portions of the coast. A clan of flying devils makes its home in the mouths and eye-sockets of the immense stone effigies and fly out to attack those who draw too close. * Seas - The seas around Khazad are said to be home to many sea monsters including sea demons. The black ships of the Nefaratus are known to frequent these waters as well." :locationmap (locationmap "Khazad Burial Grounds" (location :name "Khazad Burial Grounds" :summary "* Far to the north are vast burial grounds, denoted by row upon row of age-worn stone markers. The remains of a man-like race have been found in massive sarcophagi of strange design. Some of the more important bodies were buried with gold funerary masks of frightening aspect. These masks are believed to be intended to ward demons or evil spirits from the deceased. Rarely these tombs contain brass urns sealed with paraffin. These artifacts were sometimes used to imprison Bottle Imps or safekeep the corpse-dust of departed wizards. Prized by curio collectors and necromancers, these relics bring high prices. Unfortunately, necrophages haunt the region, craving fresh corpses over the dry bones of the long dead.") :Necron (location :name "Necron" :summary "* There are stories of an entire city and its inhabitants buried beneath the earth. All of its inhabitants supposedly mummified and interred in stone sarcophagi. Very little reliable information is available about this supposed necropolis."))) :Nefaratus (section :name "Nefaratus" :summary "* A bleak island nation, home to the Black Savants. Little is known of their isolated homeland culture or motives. What is known is that they seldom leave their obsidian towers and that they wield powerful magic. Here they stare into their obsidian mirrors and converse with unseen beings. Many believe that the Black Savants are diabolists and receive advice and consel from the giant devils known as Shaitan," :locationmap (locationmap :Maledictus (location :name "Maledictus" :summary "* The capital city of Nefaratus")) :unitmap (unitmap "Black Savant" (unit :name "Black Savant" :summary "* Black Savants are tall and gaunt with deathly pale white skin under their full black robes. They remain fully covered at all times, and it is said that they molder away to nothing after death. There are those who say that the Black Savants are not actually living creatures. * The Black Savants are greatly feared by other folk. They avoid contact with others and mainly communicate by means of arcane signs and gestures.") "Black Ship" (unit :name "Black Ship" :summary "* The Savant's midnight black vessels are said to sail the cursed waters at the edge of the world. It is claimed that they are propelled by demons chained to the oars with silver shackles and driven by giant copper skinned devils. These ships have been known to pull into port cities on moonless nights only to leave again before dawn."))) :Nordland (section :name "Nordland" :reference "Finland, Norse, Sweden" :summary "* The Nords are a large race of humans. Nords have relatively short lifespans, but they do not physically weaken with age until they are near death. * Personality - Nords are deeply emotional and prone to raucous laughter, deep brooding, and intense rage. They generally believe in living in the moment and do not typically hold regrets or grudges. * The Nord Way - The Nords have a tradition of stark minimalism reflecting there severe environment. They tend to discard any activity or tradition not directly related to survival. This simplicity sometimes surprises others to which the Nords steadily reply that it is the 'Nord Way'. * Marriage - The Nords do not formally marry. Instead they prefer to simply live together (The Nord Way) trusting that if they keep their love strong, they will naturally stay together. * Ma and Fa - Endearing terms for Mother and Father" :titles "Aesir, Aesyr, Frostland" :locationmap (locationmap :Skyrim (location :name "Skyrim")) :unitmap (unitmap "Nord Axemen" (unit :name "Nord Axemen") "Nord Berserkers" (unit :name "Nord Berserkers") "Nord Light Archers" (unit :name "Nord Light Archers") "Nord Skirmishers" (unit :name "Nord Skirmishers" :titles "Scouts") "Nord Spearmen" (unit :name "Nord Spearmen") "Nord Valkyrie" (unit :name "Nord Valkyrie"))) "Worlds Edge" (section :name "Worlds Edge" :summary "*"))) :Mediterranea (section :name "Mediterranea" :sectionmap (sectionmap :Aegea (section :name "Aegea" :reference "Aegean Islands, Greece" :summary "* Scholar * Senator * Spartan * Gorgons * Harpies * Status - The Aegean navy dominates the Aegean island chain and enables a thriving merchant trade across Mediterranea. * History - The Aegean city states used to be individual monarchies until the Imperium swept in and conquered Hellas, the capital. During the invasion, the Hellenic leadership fled with its navy and united the other city states under the name Aegea. Since then, the Imperium sent it navy to conquer Crete and was disasterously routed by the Aegean navy. The Aegeans subsequently attempted to retake Hellas and was easily repelled. Now an uneasy truce exists with the Imperials unable to create the navy it needs for conquest and the Aegeans unable to create the army it needs to drive out the Imperials." :locationmap (locationmap :Crete (location :name "Crete") :Hellas (location :name "Hellas" :summary "* Description - Currently a territory of the Imperium, Hellas is an orderly and socially advanced nation. They have a partial democracy (answerable to the Imperium) and a complex legal system that is surprisingly fair. * Universities - Hellan Universities are famous for acedemia, sciences, and philosophy. They do, however, share their Imperial neighbor's prejudices against Naturalism and the Arcane (except for Alchemy and Artifice which are considered sciences).") :Knossus (location :name "Knossus") :Labyrinth (location :name "Labyrinth" :summary "A natural maze of cracked basalt") "Mount Parnassus" (location :name "Mount Parnassus" :summary "* The Oracle of Delphi is on the slopes of Parnassus.") :Minoa (location :name "Minoa") :Olympia (location :name "Olympia" :summary "* Statue of Zeus - One of the Seven Wonders of the World. * Olympiad - The Olympic games.") :Rhodes (location :name "Rhodes" :summary "* Famous for the Colossus of Rhodes, a 30m tall statue of Helios and one of the Seven Wonders of the World. * It is said that the Colossus can move, though there is no evidence to support this. * The Colossus was constructed to celebrate the failure of an invasion force of 40,000 to take the city. Massive siege towers were necessary to take the walls. The first was mounted on six ships, but these capsized in a storm before they could be used. A larger, land-based tower was defeated when the defenders flooded the land in front of the walls so that the rolling tower could not move. The next year, a relief force arrived and the siege was abandoned. Much of the iron and bronze was reforged from the various weapons left behind, and the abandoned second siege tower was used for scaffolding.") :Sparta (location :name "Sparta") "Swamp of Despair" (location :name "Swamp of Despair")) :unitmap (unitmap "Hellenic Scholar" (unit :name "Hellenic Scholar") "Seer of Delphi" (unit :name "Seer of Delphi" :summary "* The seers are recluses who live on Mount Parnassus with the Oracle. Here they tirelessly record their visions in massive leather bound tomes. Those who manage the perilous climb visit the temple seeking knowledge are treated with hospitality and an endless series of questions about the outside world to compare with their visions. Those who seek personal gain may find the Seers to well prepared and to be less than personable hosts. * According to legend, the first great Oracle had a vision that after his death, he would travel in the afterlife for a long time, but that one day he would return to share his experience. It is said, the Seers gather knowledge to share the experiences of the living world with the Oracle when he returns. Though it may seem farfetched, many traditions reflect the expectation of the Oracle's return: lights in the windows at night, an extra place set at meals, an unoccupied bedroom spotlessly maintained, etc.") "Spartan Warrior" (unit :name "Spartan Warrior"))) :Arden (section :name "Arden" :titles "Alfar, Ljossalfar, Elder, Elf, Sidhe, Sidheni, Sylvan, Sylvus" :locationmap (locationmap :Alfheim (location :name "Alfheim") :Ardenwood (location :name "Ardenwood" :reference "* We had entered the Ardenwoods on a scouting mission to probe the Sidhe defenses. We had only been in the woods for half an hour before arrows started raining from the trees. Forms flitted among the leaves and brush all around, but we never saw our attackers. We were forced to flee, and they allowed us to leave. The exact nature and numbers of their defenders remains unknown, but their effectiveness was clear. - Imperial Expeditionary Log") :Ashwood (location :name "Ashwood")) :unitmap (unitmap "Arden Archer" (unit :name "Arden Archer") "Arden Bard" (unit :name "Arden Bard") "Arden Defender" (unit :name "Arden Defender" :titles "Arden Warrior") "Arden Druid" (unit :name "Arden Druid") "Arden Healer" (unit :name "Arden Healer") "Arden Hunter" (unit :name "Arden Hunter") "Arden Lyrist" (unit :name "Arden Lyrist") "Arden Ranger" (unit :name "Arden Ranger") "Arden Scout" (unit :name "Arden Scout") "Arden Unicorn Cavalry" (unit :name "Arden Unicorn Cavalry") "Cu Sith Hunting Dog" (unit :name "Cu Sith Hunting Dog" :summary "* An enormous fairy hound roughly the size of a cow. * Dark green in color with shaggy fur and a long braided or curled tail. * Capable of hunting silently * Will occasionally let out three terrifying barks that can be heard for long distances, including by ships at sea. This was said to be a warning to farmers to lock up their women, lest the beast abduct them and take them to a fairy mound to supply milk for fairy children." :titles "Fairy Dog (pronounced coo shee), Cu Sidhe") "Goddess Selene" (unit :name "Goddess Selene" :reference "* The Moon is our Goddess, the night her kingdom! - Diana, Legends of Runeterra" :summary "* Most Alfar revere the Moon Goddess Selene."))) :Gaul (section :name "Gaul" :reference "France, Gallia" :summary "* Syndicate - The Gaul Syndicate is a sophisticed crime cartel." :locationmap (locationmap :Catacombs (location :name "Catacombs") :Mistridge (location :name "Mistridge" :summary "* A walled town housing the main lodge of the Order of Hermes magical society. Mistridge is loosely affiliated with the Arcanum to the East, but the members of the Mistridge lodge keep a low profile as opposed to the grandiose towers of the Arcanum.")) :sectionmap (sectionmap :Elysia (section :name "Elysia" :reference "Southern France" :summary "* Elysia is a land of gentle hills and sparse woodlands shifting to deep woods along its northern border. It is named after Elysium, the legendary land of the Fae. Elysia was annexed by the Imperium 50 years ago, and no one seems to particularly mind the new owners. * People - The people of Elysia are fond of music, dance and all manner of stimulating pastimes. They enhance their features with makeup and dress in flamboyant apparel including velvet blouses and trousers, capes of silken brocade, soft slippers and so forth. The women hide their faces behind decorative fans to give the impression that they are shy and demure. This is hardly the case. The men are even less subtle and are widely regarded as lechers and philanderers in other lands. The Elysians consider romance to be a wonderful game to be played constantly. * Beliefs - The people believe that the world is filled with mysteries and that these mysteries are ultimately unsolvable. The point of life is not to pursue the answers but to marvel at the mysteries themselves. In these beliefs, there is no right or wrong, only perspective and sublty. * Law - The unusual way they see right and wrong, leads to a fairly arbitrary justice system. Small crimes are basically ignored, so petty theft especially pickpocketing is rampant. Major crimes, on the other hand, are dealt with quickly and severely. Trials are held in public with justice determined by popular vote by those attending. Punishment is arbitrarily and creatively disposed by the Mayor of each city. * The Night of Fools - Once each year, the infamous festival known as the night of fools takes place. During this night almost no crimes are prosecuted. People dress in ludicrous costumes and take to the streets in an evening of revelry, debauchery, and mayhem. On the following day, order is restored. * Beggars - Begging is considered an honest, if unenviable, profession in Elysia. Though many are frauds and thieves, the Elysians are fond of their beggars and expect others to be equally open-minded. It is traditional to scatter coppers when beggars appear or suffer public scorn and ridicule. * Bath - Public and private bath houses (with or without masseuse) are a popular pasttime and meeting place similar to a tavern elsewhere complete with snacks and drinks." :unitmap (unitmap "Elyisan Artisan" (unit :name "Elyisan Artisan") "Elyisan Chevalier" (unit :name "Elyisan Chevalier") "Elyisan Duelist" (unit :name "Elyisan Duelist") "Elyisan Rogue" (unit :name "Elyisan Rogue") "Proprietress Mazilda" (unit :name "Proprietress Mazilda" :summary "* Mazilda was a passable sorcerous until she lost an arcane duel and was cursed with an obsession with cleanliness. She opened a bathhouse where she can make a living while she can clean herself as often as necessary. She is functionally a shut-in now, and longs for tales of the outside world to which she can no longer travel.")))) :unitmap (unitmap "Gallic Acrobat" (unit :name "Gallic Acrobat") "Gallic Charlatan" (unit :name "Gallic Charlatan") "Gallic Duelist" (unit :name "Gallic Duelist") "Gallic Militia" (unit :name "Gallic Militia") "Gallic Warrior" (unit :name "Gallic Warrior"))) :Bavaria (section :name "Bavaria" :locationmap (locationmap :Blackmarsh (location :name "Blackmarsh"))) :Iberia (section :name "Iberia" :reference "Portugal, Spain" :sectionmap (sectionmap "Order, The" (section :name "Order, The" :summary "* The Order is a large, theocratic nation which lies to the west of Elysia. Life in the Order is dominated by religion, the Hierophant, and the Theocracy. * Geography - The Order covers a large mountainous pennisula, separated from Elysia, and the Imperium by the Pyrenees mountains. * Daily Life - The influence of the religion is evident everywhere. Individualism has been throughly suppressed. All citizen dress alike, speak in tired cliches, and effect identical mannerisms. * Laws - Laws of the Order are extremely strict and narrowly interpreted. Those who commit even the slightest transgression are dragged to the Halls of Penance. At the discretion of the Inquisitors, non-believers may be forcibly converted or may simply 'disapper'. * Visitors - Travellers from other lands are rare and stand out like beacons. They are generally treated as inferiors and are only tolerated if their presense is of some advantage to the state. * Alms - A person's spiritual enlightenment is measured by the Theocrats in a spiritual value called Alms. Alms are awarded for specific contributions to the church including tithes, military service, good deeds, church titles, pilgrimages, etc. Each rank provides specific perks within society but is also intened to be a direct measure of the quality of the person's afterlife. * Clash of Champions - The Imperium has tried to invade the Order twice to no avail. The geography and religious zealots of the Order have proven too difficult to overcome. Since the last battle, the Order and Elysia (backed by the Imperium) have waged a propaganda war culminating in the annual event known as the Clash of Champions. Each year both nations scout for worthy (and expendible) warriors to represent their interests in a duel atop the main gates of the Order capital. The winner receives great rewards from their sponsor. Though not technically, a duel to the death, it is expected that the loser will be thrown or forced off the gates to fall 20 feet below to the roar of the crowds. It is considered a particular coup to cause a vanquished foe to fall amongst his or her own supporters. Since the Order and Elysia could scarsely be more different in their outlooks on life, the winners consider their victory to be a referendum on the virtues of their philosophies. The Order takes the competition very seriously and, of course, gambling and drinking are not allowed within the city walls. Elyisians consider the Clash to be one of the social events of the season. Though they must travel through the mountain pass and they are not permitted entrance to the city, they still come in large numbers with their wagons, children, merchants, wenches, gamblers, acrobats, and performers. For the Elysians, the party is equally large whether they win or not." :titles "Chantry, The Order, Papal States, Theocracy" :locationmap (locationmap "Halls of Penance" (location :name "Halls of Penance") "Order Catherdral" (location :name "Order Catherdral") "Order Monastery" (location :name "Order Monastery") "Order Nunnery" (location :name "Order Nunnery") "Order Reliquary" (location :name "Order Reliquary")) :unitmap (unitmap "Order Apostate" (unit :name "Order Apostate" :summary "* An outcast who has lost his Alms and effectively forsaken the religion. Apostates are pariahs within the Order.") "Order Brother" (unit :name "Order Brother" :summary "* Monks of the Order swear numerous oaths of purity including oaths of poverty and celebacy. Most Brothers live in a Monestary, while others travel the world doing good works and spreading the word of their God.") "Order Crusader" (unit :name "Order Crusader" :summary "* The armored knights of the Order. They serve as the officers of the army and navy.") "Order Evangelist" (unit :name "Order Evangelist") "Order Father" (unit :name "Order Father") "Order Hierophant" (unit :name "Order Hierophant" :summary "* The Hierophant is the undisputed religious ruler of the nation. Though he theoretically holds no military power, he is considered to be infallible and a direct emissary of God, so he practically wields absolute power. His power is maintained by the Theocracy, so he must maintain their trust at all times.") "Order Inquisitor" (unit :name "Order Inquisitor" :summary "* The Inquisitors have a single task: to root out and elminate heretics. To this end they act as judges, secret police, and interrogators. Inquisitors preside over rituals desgined to purge unacceptable desires from penitent hearts using methods that some might call torture.") "Order Mother Superior" (unit :name "Order Mother Superior") "Order Priest" (unit :name "Order Priest") "Order Sister" (unit :name "Order Sister" :summary "* Nuns of the Order swear numerous oaths of purity including oaths of poverty and celebacy. Sisters live in a Nunery and seldom leave except to perform tasks in nearby towns.") "Order Templar" (unit :name "Order Templar" :summary "* An official Mage Hunter/Witch Hunter of the Order. * Since magic that is not sanctioned by the church is heresy, the Templars are commissioned to contain or eliminate enemies of the Order that are beyond the capabilities of the Inquisitors. They are given great authority to complete their missions and can rely on the Inquistors and Crusaders for aid.") "Order Theocrat" (unit :name "Order Theocrat" :summary "* The Theocracy serves as both a religious and government center. The Theocrats maintains the Library of Revelations which are the great books of religious canon that supposedly answer any question worth knowing. Interpreting these books allow the Theocrats to rule on all matters of daily life: clothing, trade, law enforcement, etc. These interpretations have led to a very rigid, conservative society where many acts are considered heretical."))))) :Imperium (section :name "Imperium" :reference "Rome, United States" :summary "* Description - The Imperium is the most stable and advanced nation in history. It is known as a conquering nation that has taken over much of the modern world. Its reputation is somewhat exaggerated. The Imperial Legionnaires are the most devastating standing army on the planet, but the Imperium has had its share of defeats and finds it hard to hold territory that it 'conquers'. Fortunately, the Imperium is mostly concerned with trade and is very willing to negotiate with its neighbors and allow autonomy in its territories in order to concentrate on its borders to the east where it faces constant incursions from the Shattered Lands and from the Dragon's Eye. * Currency - Imperial Sovereigns (Imperials or Crowns) are made from gold, have eight sides, and have the image of the current emperor on the front and the imperial seal on the back. They are made of solid gold and are accepted almost everywhere. * Architecture - Imperia has a love of monolithic buildings with towering columns that reflect the Imperial ego. * Roads - The Imperium maintains excellent cobblestone roads throughout its own and its allies territories. All roads lead to Imperia and have armed forts at regular intervals with Centurions, an inn, and a trading post. The forts charge a toll to pass, prices at these forts are high, and any trade done is taxed, but forts are always professionally defended and are generally worth the price. The roads benefit trade, but are also a reminder of the influence of the Imperium." :titles "Italia, Sovereign" :locationmap (locationmap :Imperia (location :name "Imperia" :summary "* The capital city of the Imperium." :titles "Empire" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))) "Mount Vesuvius" (location :name "Mount Vesuvius") :Pompeii (location :name "Pompeii" :summary "* The story of the destruction of Pompeii when Mt. Versuvius erupted is widely known. The story is often used as a cautionary tale to obey the will of the gods. * Pompeii is now an empty ruin that functions as an enormous graveyard for the approximately 20,000 victims of the disaster. The dead remain at rest as long as the the area is undisturbed, and careful travellers may investigate the area at their peril. If there is any disturbance the bodies begin awakening as Burning Dead and are hysterically drawn to the living who will not long survive their embrace.")) :unitmap (unitmap "Imperial Centurion" (unit :name "Imperial Centurion") "Imperial Gladiator" (unit :name "Imperial Gladiator") "Imperial Legionnaire" (unit :name "Imperial Legionnaire") "Imperial Senator" (unit :name "Imperial Senator") "Imperial Slaver" (unit :name "Imperial Slaver") "Borderland Legionnaire" (unit :name "Borderland Legionnaire" :summary "* The far eastern outposts of the empire are manned by the Legion of the Borderlands. This is body of hard-bitten mercenaries, outcasts, and criminals from many lands. Being assigned to the Legion of the Borderlands one way that the Imperium makes use of troublemakers."))) :Teuton (section :name "Teuton" :reference "Germany" :summary "* Description - Currently claimed as a territory of the Imperium. * Dwarves" :itemmap (itemmap "Dark Forge" (item :name "Dark Forge" :summary "* A legendary forge where a man may be forged into the body of an Iron Golem, at the cost of his humanity.")) :locationmap (locationmap "Iron Mountains" (location :name "Iron Mountains" :summary "* The home of a stout race of men who live their lives on the cliffs and in tunnels of the Iron Mountains.") "Iron Citadel" (location :name "Iron Citadel" :summary "* The capital of the Iron Kingdom. It is an enormous castle built into a cliff-face. Though it is huge outside, the citadel is mostly within the mountain. The mountain face makes the citadel basically impregnible from the outside. The true danger, however, lies undergound...") "Deep Roads" (location :name "Deep Roads" :summary "* A fantastic labyrinth of inter-connected, underground tunnels deep within the earth. The tunnels were mostly created by volcanic activity and underground rivers ages ago. They are so extensive that many civilizations live within the Deep Roads." :titles "Dark Roads, Underdark, Underlands"))) :Zura (section :name "Zura" :reference "Switzerland" :summary "* Zurans are small in stature but very well educated people. They are are highly materialistic and suspiscious of others. They prefer windowless towers to minimize the chance of theft. They typically hide and trap their valuables and carry hidden weapons all the time." :titles "Gnomes of Zurich" :locationmap (locationmap "Zuran Academy" (location :name "Zuran Academy" :summary "* The Zuran Academy is large complex of buildings that house schools, libraries, laboratories, and forges. Here can be found worlds most advanced scientific pursuits including: Alchemy, Thaumaturgy, Artifce, Gold/Silversmithing, Timekeeping, Glassblowing, and Tinkering. * Masters take on students as apprentices to dedicate their lives to a craft.") :Zurich (location :name "Zurich")) :unitmap (unitmap "Zuran Inventor" (unit :name "Zuran Inventor" :summary "* Zuran Inventors are masters at fine mechanics including clockworks, locks, and traps.") "Zuran Moneylender" (unit :name "Zuran Moneylender" :summary "* These moneylenders are shrewd negotiators and are always looking for a way to make a profit and manage their risk. They hire enforcers to make sure payment is made in full.") "Zuran Procurer" (unit :name "Zuran Procurer" :summary "* Zuran merchants are unusual in that they tend to not maintain any particular product. Instead, they use their connections to locate and procure whatever is required. They are expensive, but they take great pride in their work and ensure that their customers are always satisfied.") "Zuran Sage" (unit :name "Zuran Sage" :summary "* Zuran Sages are librarians, reasearchers and advisers.") "Zuran Thief" (unit :name "Zuran Thief" :summary "* Zuran thieves materialism of course leads many to steal what they want. The skilled thieves in Zuraare precisely why the Zurans are so paranoid of theft. The skilled locksmiths are met with equally skilled lockpickers in a security arms race."))))) "Middle East" (section :name "Middle East" :sectionmap (sectionmap :Arabia (section :name "Arabia" :reference "Saudi Arabia") :Assyria (section :name "Assyria" :reference "Babylon, Mesopotamia, Sumeria" :summary "* Twin Rivers - Assyria is a verdent valley nestled between the Tigris and Euphrates Rivers." :sectionmap (sectionmap :Magisterium (section :name "Magisterium" :summary "* Magister * Maleficar - A practitioner of Black Magic * Librarian * Certamen - Arcane Duel * Templar" :titles "Magocracy" :locationmap (locationmap :Arcanum (location :name "Arcanum" :reference "Chantry, Ivory Tower, Tower of Babylon" :summary "* The Arcanum is a colossal, tiered, white tower that houses the wizards of the Magisterium and their servants. * Construction - The tower is continually being built wider and higher using a combination of wizardry and labor. Its towering height represents the wizards power and dominion over the area. There are those who argue that the height of the tower has become a liability, but building the tower holds great symbolic and traditional importance, so those voices carry little weight. Inside, the tower has concentric walls that were built outward over time like tree rings. The complex construction has left much room for hidden passages and chambers throughout. * The home of the Arcanum Society, a fraterity of wizards, sages, alchemists, and artificers. Though their only stated goal is the pursuit of arcane knowledge, they are widely known as power brokers across the known world (and perhaps some unknown ones). * Arcanum Awards - The Arcanum Society holds an annual dinner to recognize the greatest magical discoveries of the year.") "Great Ziggurat" (location :name "Great Ziggurat") "Hanging Gardens" (location :name "Hanging Gardens" :reference "Hanging Gardens of Babylon" :summary "* One of the Seven Wonders of the World"))))) :Canaan (section :name "Canaan" :reference "Israel" :locationmap (locationmap "Mount Zion" (location :name "Mount Zion") "Solomon's Temple" (location :name "Solomon's Temple") :Zion (location :name "Zion") "Dead Sea" (location :name "Dead Sea"))) :Pars (section :name "Pars" :reference "Persia" :sectionmap (sectionmap :Farad (section :name "Farad" :summary "* Farad is an ancient land. * People - The country is largely poor and overpopulated. * Politics - Farad is ruled by a figurehead Kaliph, but each city state is actually run by individual Sultans who answer to no one. Assassination is an artform. Their assassins are known for their cunning and ruthlessness. * Justice - Justice is harsh and arbitrary. The militia is highly corrupt, and anything can be gotten for a price. * Economics - Trade caravans and shipping are huge sources of wealth. Spices and exotic dyes and weaves are particularly large industries." :locationmap (locationmap :Faradin (location :name "Faradin")) :unitmap (unitmap "Faradun Mercenary" (unit :name "Faradun Mercenary" :summary "* Since almost all actual Faradun are merchants, the army and navy are all highly paid mercenaries from other lands.") "Faradun Merchant" (unit :name "Faradun Merchant" :summary "* Few actual Faraduns are not merchants. Other tasks are done by slaves, indentured servants, convicted felons, and hired laborers.") "Faradun Procurer" (unit :name "Faradun Procurer" :summary "* A specialized merchant skilled at obtaining any entertainment or diversion imaginable regardless of its legal status ... for the right price. Procurers are famous for their discretion in this 'no questions asked' business. The Farad legal system does not hold Procurers liable for the actions of their customers, so they act with impunity."))) :Phatas (section :name "Phatas" :locationmap (locationmap :Phatasia (location :name "Phatasia" :reference "* Joseph Jacobs, Jack and the Beanstalk * Stratos - Star Trek, The Cloud Minders" :summary "* Phantasia is a unique city. Half of the city is quite normal, the other half is literally floating on a cloud. Long ago when a local hero slew a Cloud Giant, and the giant's floating keep remained hovering over the town where he lived. After the creation of windships, the townsfolk began converting the giant's keep into a human city. The city has towering walls, but has limited floorspace, so only the wealthiest live in the clouds. * Windships - Over time, the town grew and eventually a brilliant wizard discovered a way to construct windships based on his studies of the floating city. He made a fortune by keeping the technique a closely guarded secret. Unfortunately, the secret seems to have died with its creator, and no one has been able create new windships since. * Weather - Phantasia can get chilly and severe weather can be very harrowing.") "Bazaar of the Bizarre" (location :name "Bazaar of the Bizarre" :summary "* Each year for one week, the Phantasias hold an exhibition of oddities and diversions. To gain entrance, you must be attired in costume. Wearers of the most outlandish garb are awarded a silver goblet which allows them to drink for free during the festival. * Multi-colored tents and pavilions litter the festival grounds, each housing some sort of attraction: a duel of spell casters for wagers, abominations from the Aberrant Forest, Illusionary panoramas, romances, sensations, or improbabilities and other things which defy description. Visitors are invited to observer, partake of, or otherwise experience all he or she desires. Rare delicacies from around the world are available. * The climax is the award ceremonies when prizes are given in various categories including: 'Most Unique', 'Most Provacative', 'Most Absurd'. The final award is the most coveted: 'Most Bizarre'. A committee of 12 enchanters judge the competition, registering various degrees of approval or disapproval by means of magically enhanced facial expressions and gestures.")) :unitmap (unitmap "Phantasian Dreamer" (unit :name "Phantasian Dreamer" :summary "* The Dreamers use their [Dreaming] skill to capture and sell the exotic [Dream Essence] to those wealthy enough to afford such luxury.") "Phantasian Windship" (unit :name "Phantasian Windship" :summary "* The windships are wonderous craft which sail upon the winds as sea vessels ply the waters. They are constructed of the lightest possible materials and are therefore somewhat fragile and require constant repair. Extreme weather conditions are a particular concern especially high winds and freezing rain, and lightning. * The sails and rigging are made of gossamer. Flight is maintained by magical devices called levitationals below decks. These levitationals only provide elevational control. Directional control and speed are all subject to the wind."))))) :Raja (section :name "Raja" :summary "* Red Gold - The mines of Raja are rich with very impure gold deposits. Large slave colonies work the mines day and night. Rajans leave the red impurities in the smelting process leaving their gold with a swirled bloody look to it. * Rajan Glory - The only allowed currency of Raja are the blood red gold coins called Glories. They are simple and fearsome with a burning fire on one side and a cackling skull on the other. Like Rajan gold in general, the coins have a swirled bloody look to them and are only about 75% pure. Since Raja is considered a rogue state by other nations, possession of Rajan Glories is sufficient evidence to be imprisoned as a spy. On the black market the coins can get about 25% of their face value, especially in distant lands where the penalies for possession are lower." :unitmap (unitmap "Rajan Desert Warrior" (unit :name "Rajan Desert Warrior" :summary "* An army of religious fanatics who believe that their service in life will be rewarded in the after life, so they obey without question.") "Rajan Agent" (unit :name "Rajan Agent" :summary "* The loyal servants the Black Mystics. They act as spies, assassins, terrorists, and secret police thoughout the country and beyond.") "Rajan Inquisitor" (unit :name "Rajan Inquisitor" :summary "* The elite religious agents of the Black Mystics. They are priest, healers, torturers, and personal bodyguards of the Black Mystics." :titles "Torquar") "Rajan Black Mystic" (unit :name "Rajan Black Mystic" :summary "* The Black Mystics are necromancer/priest who lead the Rajan cult. They are religious fanatics and believe that they channel the will of their dread gods. * Black Mystic religious ceremonies typically feature ritual executions symbolizing conversion of non-believers to the cult. Demons perform the executions which draw great crowds of worshippers to the temples."))) "Desert Wastes" (section :name "Desert Wastes" :locationmap (locationmap "City of Brass" (location :name "City of Brass" :summary "* The City of Brass is a major city of the [Ifrit]. It is a beautiful place with palaces, libraries, and cathedrals all built to giant scale and all built of brass to withstand the withering desert heat.")) :unitmap (unitmap "Juzam Djinn" (unit :name "Juzam Djinn" :summary "* The Juzam Djinn are 14 foot tall, brass skinned devils with curved horns and tusk-like fangs. They wield huge stone clubs carbed with the visages of leering devils. They wear only necklaces of skulls collected as mementos of their grisly conquests. * They are fond of men whom they regard as fine eating. * They entertain themselves by various games including hurling large rocks long distances to crush various animals. They are also extremely fond of games of chance and wagers, though they are not above using their magical powers to tilt games in their favor."))))) :Oceania (section :name "Oceania" :titles "Pacific Ocean" :sectionmap (sectionmap "Cresent Isles" (section :name "Cresent Isles" :locationmap (locationmap "Nauticus Reef" (location :name "Nauticus Reef" :summary "* A great mass of coral filled with beautiful and dangerous sea life. The reef has been the cause of many shipwrecks over the years and is the subject of many perilous salvage operations over the years."))) :Lemuria (section :name "Lemuria"))) "Underground, The" (section :name "Underground, The" :titles "Underdark, Underdeep" :sectionmap (sectionmap "Underground Highway" (section :name "Underground Highway" :summary "* An extensive tunnel system that covers hundreds of miles and travels deep under many countries. * Ages ago an underground river flowed through this region carving out the massive tunnels and tributaries. The receding waters developed a vast underground ecosystem. Phosphorescent fungi even allowed sighted beings to thrive in this spectacular and bizarre underground world."))) :Wilderlands (section :name "Wilderlands" :reference "* Americas" :locationmap (locationmap "Aberrant Rainforest" (location :name "Aberrant Rainforest" :summary "* The Aberrant Rainforest is a weird and grotesque jungle the freakish origins of which are attributed to a magical mishap of unparalleled proportions. * All manner of rare and exotic vegetation can be found here, though nothing that grows here is as nature intended. The plants and trees appear heedless of natural law, growing to immense proportions or becoming gnarled and twisted in form. From the underbrush, animate tentrils of tanglewood reach out to ensnare the incautious. Among the reports of talking Mang trees, giant species of slugs and scavenger slimes, and strange insect-reptile hybrids are tales of intelligent plant creatures. * Murky streams flow uphill, stagnant ponds move slowly across the land, and the ground itself seems to pulse as if it were alive. * Because many varieties of unique and valuable herbs grow throughout the forest, visitors are not unknown.") "Lost Sea" (location :name "Lost Sea" :reference "Salt Flats" :summary "* Deep within the Wilderlands is a flat wasteland known as the Lost Sea. This area appears to be a dry seabed littered with the ancient skeletons of giant aquatic monsters. The area gets little rain and is layered in salt from the former sea, so nothing lives here. It is said that the wrecks of ancient ships can be found in isolated places potentially carrying treasures from ancient civilizations.") "Lost World" (location :name "Lost World" :reference "The Land that Time Forgot" :summary "* Deep within the Wilderland jungles is a towering ridge of a massive caldera formed by an ancient volcano. Within the caldera is a large expanse of jungle cut off from the outside world for millions of years. Numerous creatures though to be extinct still survive in this safe haven." :titles "Pangaea") "Salt Flats" (location :name "Salt Flats") "Sea of Glass" (location :name "Sea of Glass" :summary "* The sea of glass is a vast expanse of mostly flat glass. The sea was presumably formed by a massive firestorm detonating over a sandy desert, but no cause had been discovered. Travelling over the glass is similar to travelling over ice though the glass is much harder and the weather is very hot. The glass creates a blinding glare when the Sun is at the right angle, and the surface can seem like a giant frying pan under the noonday Sun.")) :sectionmap (sectionmap :Azteka (section :name "Azteka") :Maya (section :name "Maya") :Mandragora (section :name "Mandragora" :summary "* Mandragora is named for the unusual sentient plant-life, the Mandragore, who live here. * Mandragores - About three feet high and vaguely man-like, they are roughly humanoid in form with gnarled root-like limbs and leafy 'hair'. Their eyes are like dark knots and their mouths are like the twisted hollow of a tree. The Mandragore usually stand rooted and immobile during the day as they soak in sunlight. During this time, they are well camoflaged among the other plant-life. At night, they move about tending their chores and looking for trespassers who they attempt to capture with nets of vines and grasses. Their unfortunate victims are bound and buried alive as fertilizer. * Abilities - The Mandragore are weak fighters who rely on surprise and numbers to battle large foes." :unitmap (unitmap "Mandragore Herbalist" (unit :name "Mandragore Herbalist" :unitpowermap (unitpowermap :Naturalism (unitpower :name "Naturalism" :unitabilitymap (unitabilitymap "Warp Wood" (unitability :name "Warp Wood")))) :unitskillmap (unitskillmap "Physical Weakness" (unitskill :name "Physical Weakness" :unitabilitymap (unitabilitymap "Vulnerable to Fire" (unitability :name "Vulnerable to Fire"))))))))))))
nx/tactics/books/fantasy / chapter_realms_beyond
Description:
Function Name:
  • chapter_realms_beyond
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_realms_beyond : base/chapter (chapter :name "Realms Beyond" :reference "* Reality is just your mind collapsing under what it doesn't understand, silly. - Zoe, Runeterra" :summary "* The realms beyond our mortal existence. * It is the origin of our souls, dreams, and imagination. It is also the home of spirits and demons. * All of the different realms are like closely packed soap bubbles. Where the bubbles touch, realms touch, and the presense of those realms can be felt. * The Realms Beyond are described by coordinates for +/-x, +/-y, +/-z, +/-t, +/-i (length, height, width, time, imaginary) * Realm Types: ** Universe: +x, +y, +z, +t, 0i ** Positive Planes: +x, +y, +z, +t, +i *** Hyperspace is when you travel through the Positive Planes: +i ** Void -x, +y, -z, -t, +i ** Antiverse: -x, -y, -z, +t, 0i ** Limbo +x, -y, -z, +t, -i ** Negative Planes +x, +y, +z, +t, -i *** Umbra/Subspace connects the Negative Planes -i ** Temporal Realms +/-x, +/-y, +/-z, +/-t, 0i" :titles "Multiverse, Realties, Realms" :sectionmap (sectionmap :Universe (section :name "Universe" :summary "* Location: +x, +y, +z, +t, 0i" :titles "Material Realm, Material Universe, Real World, Space") :Antiverse (section :name "Antiverse" :summary "* Antispace was created with the Big Bang. In this multiverse a larger amount of anti-matter than matter was created. They are very similar to the Material Realms, but their particles are deadly to beings from the Physical Realms and vis-versa." :titles "Antispace, Anti Realm, Negative Zone") :Void (section :name "Void" :summary "* The Void was created with the Big Bang. In this multiverse a roughly equal amount of matter and anti-matter were created. Almost nothing remains in this desolate lightless physical multiverse.") :Limbo (section :name "Limbo" :summary "* The Limbo was created with the Big Bang. In this multiverse a roughly equal amount of matter and anti-matter were created. Almost nothing remains in this desolate lightless spirit multiverse.") "Positive Planes" (section :name "Positive Planes" :titles "Higher Realms, Order Realms, Positive Realms, Positive Space" :locationmap (locationmap :Celestia (location :name "Celestia") :Hyperspace (location :name "Hyperspace" :summary "* Hyperspace is not an actual place, it is what one observes while travelling between Positive Planes.") :Source (location :name "Source" :reference "* I am kindness. I am unity. I am bigotry. I am expansion. I am the end! The DEATH that comes for expansion! For existence! The NULL that comes unto us all. Because I AM the PHOENIX! Life and death INCARNATE! The resurrection and renewal that will never end. Memories reawakened. A life lived and ended, again and again. A perpetual cycle of joy and sorrow. Anger and gratitude. Bliss and grief. All of them, just small parts of what relentlessly perseveres. Infinite, Absolute, Unconditional. - Madelyn Prior, X-men" :summary "* Location: 0x, 0y, 0z, t, +infinity-i * The White Hot Room is a single point at the infinite edge of [Positive Space]. As such, it holds infinite energy. * It is the home of the [Phoenix Force]. * It is speculated that beyond the Source, lies [Oblivion] in an endless cycle. * Some say all of reality is just shadows cast between the Source and Oblivion." :titles "Absolute Order, Positive Infinity, The Beginning, The Fountain, The Source, The White Hole, True Order, White Hot Room"))) "Negative Space" (section :name "Negative Space" :titles "Lower Realms, Negative Realms, Negative Space, Negative Universe, Negaverse" :locationmap (locationmap :Abyss (location :name "Abyss" :titles "Pandemonium, The Well") :Oblivion (location :name "Oblivion" :summary "* It is speculated that beyond Oblivion, lies the [Source] in an endless cycle." :titles "Absolute Chaos, The End, True Chaos") :Umbra (location :name "Umbra" :summary "* Hyperspace is not an actual place, it is what one observes while travelling between Positive Planes." :titles "Subspace") :Wyld (location :name "Wyld" :titles "Wildspace, Wylderlands, Wyldspace"))) "Temporal Realms" (section :name "Temporal Realms" :summary "* The Temporal Realms are described by coordinates for +/-x, +/-y, +/-z +/-t (length, height, width, time)" :locationmap (locationmap :Vortex (location :name "Vortex" :reference "* The Christmas tree, which can be traced in its origins back to pre-Christian European beliefs, represents an axis mundi. * The axis mundi (also cosmic axis, world axis, world pillar and center of the world) is a symbol representing the point of connection between sky and earth. It offers means of travel and correspondence between the two realms. It is also the place where the four compass directions unite. * It was an All-in-One and One-in-All of limitless being and self - not merely a thing of one Space-Time continuum, but allied to the ultimate animating essence of existence's whole unbounded sweep - the last, utter sweep which has no confines and which outreaches fancy and mathematics alike. It was perhaps that which certain secret cults of earth have whispered of as YOG-SOTHOTH, and which has been a deity under other names; that which the crustaceans of Yuggoth worship as the Beyond-One, and which the vaporous brains of the spiral nebulae know by an untranslatable Sign... - Through the Gates of the Silver Key" :summary "* The spiraling tunnel to infinity down all black holes, a corridor where the rules of time and space cease to have meaning. Some theorize that the Vortex is the eye of the storm within [Oblivion] and is the ultimate connection between [Oblivilion] and the [Source]. * It is said that the World Tree's roots are the [Ley Line]s and its fruit are the stars. It grows up through the [Underworld] and soars into the heavens where it suspends the sky. The World Tree is eternal and is connected through both time and space. * The Norns are found here." :titles "Axis Mundi, Chronos, Eye of Harmony, Irminsul, Temporal Zero Point, Tree of Life, Tree of Knowledge of Good and Evil, World Pillar, World Tree, Yggdrasil, Yog-Sothoth"))) "Inner Realms" (section :name "Inner Realms" :summary "* The Periphery consists of a number of Realms that touch the Material Realm. * These Realms are forever separated from the mortal world by thin but strong membrane called the Veil. * Peripheral Vision - Sometimes a glimse of the Outer Realms may be seen at the edge of normal vision. * Gates - Gates are more easily created when both realms resemble each other at both ends of the Gate. * Realm Overlay - Sometimes when an area of both realms closely resembles one another, the areas overlap creating a natural Gate of sorts where one may accidentally wander from one Realm to the other without noticing." :titles "Periphery" :locationmap (locationmap "Ley Line" (location :name "Ley Line" :summary "* Ley Lines are invisible, spiritual energy lines that pass through the universe and serve as the branches and roots of the World Tree. The Ley Lines influence the areas they pass through. Their existence transcends time. Contacting the Lines boosts spiritual powers and connects the past and future. They can be tapped to raise magical effects and they can spread the effect of tragic or corrupted areas, creating haunted or cursed areas. * Dragons are said to choose exposed Ley Lines as lairs and nests. It is possible that Ley Lines are the secret to their power. * Fault Lines and Volcanic activity are side effects of Ley Line power. * Ley Line Memories - Ley Lines exist through history, so it is sometimes possible to witness events from the past or future near the lines. * Ley Line Filth - When negative energy builds up over time near a Ley Line, so a Ley Line can sometimes leak solid dark energy that is called Filth or Corruption. This Filth corrupts the area, withering plants and contaminating animals and water. Since it is a spiritual corruption, it can only be repaired with purification magic or by somehow confronting and addressing the cause of the corruption." :titles "Dragon Lines, Fate Lines, Lines of Power, Threads of Fate, Time Lines") "Digital Realm" (location :name "Digital Realm" :titles "Cyberspace, Cyberrealm") "Dreaming, The" (location :name "Dreaming, The" :titles "Dreamlands, Dreamworld, Fade, Imaginary World, Nod") "Fade, The" (location :name "Fade, The" :summary "* The Fade is a Mirror Realm that is a sort of Dream Realm but is driven by strong emotions. * Fade Curse - A Curse is a spirit that has manifested from strong emotions over a long period of time.") :Luna (location :name "Luna" :summary "* The Spirit Realm of the Moon" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)))) "Hollow World" (location :name "Hollow World") "Memory Realm" (location :name "Memory Realm" :titles "Land of Lost Things, Memory Lane") "Micro Realm" (location :name "Micro Realm" :titles "Microverse, Quantum Realm") "Mirrors Realms" (location :name "Mirrors Realms" :reference "* Alice in Wonderland * Kamen Rider Dragon Knight * Werewolf the Apocalypse * Star Trek - Mirror, Mirror * Stranger Things" :summary "* Beyond all mirrors lie worlds almost identical to our own but more a reflection of mind than of substance. There are an infinite number of these mirror universes, though each is accessible in a slightly different way." :titles "Alternate Dimensions, Mirrorlands, Mirror Universe, Mirror World, Mirrorverse, Mirrors, The Upsidedown, Twilight Zone") "Negative Realms" (location :name "Negative Realms" :summary "* Negative Realms are described by coordinates for -x, -y, -z, t (length, height, width, time) * The Negative Realms are particular mirrors of the Material Realms. They were created at the same moment that the Material Realms were, but while the Material Realms were mostly filled with normal matter, the Negative Realms were mostly filled with anti-matter." :titles "Anti-matter Universes") "Nexus of Realities" (location :name "Nexus of Realities" :summary "* The Nexus of Realities is a place that touches the [Vortex] and through it all other realities. So near the [Vortex], Time is meaningless here, so anyone entering will feel as if they have been in the Nexus for a very long time and may stay here as long as they want with no wants. When they leave, however, no time will have past and their time spent will be remembered like a dream. * Tanelorn - The city Tanelorn has been built at the Nexus and is a sort of waystation for those travelling to other worlds. Tanelorn exists in all inner realms and appears as a simple town native to each reality. One cannot look for Tanelorn for it does not appear on any map, but it can occasionally be stumbled upon by frustrated travellers seeking new horizons. As the existence of Tanelorn can never be proven, it remains a myth throughout the universe." :titles "Tanelorn, Waystation") :Pangea (location :name "Pangea" :titles "Prehistoric Realm") :Yuggoth (location :name "Yuggoth" :summary "* The Spirit Realm of Pluto") :Shadowland (location :name "Shadowland" :summary "* The Realm of the recently dead. * The Shadowland is a dark [Mirrorland] superimposed on the regular living world. Here, the recently dead (Wraiths) can remain among the living, but they (mostly) cannot interact with the living world. Wraiths are invisible and intangible. They can even walk through solid objects but doing this disrupts the Wraith's energy, damaging it slightly. * Noncorporeal Undead - The Shadowlands is the native realm of non-corporeal undead and is where they are strongest. * Corporeal Undead - The remnants of the spirits of corporeal undead can be easily seen in the Shadowlands. Corporeal Undead are particularly vulnerable to exorcism or control from Shadowland attackers. * The [Veil] separating the Shadowland from the living world is called the Shroud. * Many portals lead from here to the [Underworld], but if a [Wraith] loses his connection to the living world, he may not return to the [Shadowlands].") :Veil (location :name "Veil" :summary "* The Veil is a barrier between the natural world and the supernatural worlds. * The Veil is not only a physical barrier but also has an effect on perception and memory. Those without supernatural abilities who encounter supernatural beings will tend to rationalize the supernatural aspects of the encounter, instead interpretting them as natural phenomenon. They will irrationally deny that any supernatural aspect was involved regardless of the evidence. This quality of the Veil applies to recordings and any other evidence and has kept the mythical status of supernatural beings for millenia." :titles "Gauntlet, Mists, Shroud")) :sectionmap (sectionmap "Elemental Air Realm" (section :name "Elemental Air Realm" :summary "* The realm of elemental air is a vast, empty space above the clouds of the world. Here there are no solids or liquids only gases without impurities (e.g. smoke). * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :h'Haarshann (unit :name "h'Haarshann" :reference "Elric of Melnibone" :summary "* Wind Elemental Lord"))) "Elemental Cold Realm" (section :name "Elemental Cold Realm" :summary "* The realm of elemental cold is a vast, barren, snowscape under a sunless sky. Harsh blizzards sweep across the snow that covers the glaciers and frozen seas. There is no heat in this realm. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Earth Realm" (section :name "Elemental Earth Realm" :summary "* The realm of elemental earth is a vast, solid space below the surface of the world. It is mostly solid rock, but cave systems, roots, and underground waterways exist as well. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :Grome (unit :name "Grome" :reference "Elric of Melnibone" :summary "* Earth Elemental Lord"))) "Elemental Fire Realm" (section :name "Elemental Fire Realm" :summary "* The realm of elemental fire is a vast volcanic space seemingly from the dawn of the world. It is all lava, and scorching heat. Here, fire is pure without oxygen or smoke or fuel to burn. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Lightning Realm" (section :name "Elemental Lightning Realm" :summary "* The realm of elemental lightning is a vast lightning storm lighting up the sky, pounding the ground, and electrifying the seas. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family.") "Elemental Water Realm" (section :name "Elemental Water Realm" :summary "* The realm of elemental water is a vast space deep within the ocean depths of the world. * Elementals are generally highly emotional and of low intelligence. This is natural given that they have no need for intelligence in their harsh realm. They do not have cities or wars but are more divided into pods of friends and family." :unitmap (unitmap :Straasha (unit :name "Straasha" :reference "Elric of Melnibone" :summary "* Water Elemental Lord") :Pyaray (unit :name "Pyaray" :reference "Elric of Melnibone" :summary "* Pyaray is a Chaos Lord who rules the deepest parts of the ocean. He appears as a giant red octopus-like creature, and his soul is kept in a blue crystal on his head. Sailors who drown at sea are taken into his Chaos Fleet. One portent of the end of the world is the ascent of the Chaos Fleet to the surface. Pyaray and Straasha are bitter enemies." :titles "Tentacled Whisperer of Impossible Secrets"))) :Elysium (section :name "Elysium" :summary "* The legendary homeland of the Fae. It is a wonderous place of myth and legend deep in the dream world. * Seasons - The Fae realm is driven by the seasons in an eternal cycle of death and rebirth. ** Spring - *** Spring Bloom ** Summer - ** Autumn - *** Autumnal Harvest ** Winter - * Courts - ** Seelie Court - ** Unseelie Court - * Archfae - * Fae Magic - Though the Fae trade in physical objects like gold or food, these things are actually made of imagination and Fae Magic. For the Fae, magic is the one true currency. Having it and using it is the sign of royalty. Those with no magic have no status and no value." :locationmap (locationmap :Arcadia (location :name "Arcadia" :summary "* The capital city of the Fae. It is a land partially of Dream and is not normally accessible to mortals.") "Elysian Forest" (location :name "Elysian Forest" :summary "* The forests of Elysium are filled with living creatures including wild animals, large insects, Sprites, and Pixies.") "Elysian Fields" (location :name "Elysian Fields"))))) "Higher Realms" (section :name "Higher Realms" :titles "Over Realms" :locationmap (locationmap "Celestial Realm" (location :name "Celestial Realm" :summary "* Powerful beings of order inhabit this Realm. They are not overtly hostile, but they unyielding and have a severe approach to justice that makes one wonder if anyone can survive their scrutiny." :titles "Afterworld, Angelic Realm, Celestine Realm") "Imaginary Space" (location :name "Imaginary Space" :reference "* Though the story is fictional, as far as the characters are concerned, their fate is real. Therein lies the rub, are you and I the audience or characters on the stage? Nobody can know for sure. Afterall, nothing is easier to fool than the senses. - Furina, Genshin Impact" :summary "* The Imaginary Realm is the realm of the Mind and of possibilities. It connects all other realms, and some believe all realms are birthed from the infinite potential of the Imaginary Realm. * Description - The realm is filled with a glowing mist and motes of crackly energy called Astral Luminaries (Tachyons). Touching a luminary fills one with energy and inspiration, but contacting too many too quickly will overload the body in a violent explosion. * Transition - When entering the Imaginary Realm, there is a sudden, frightening sensation of fliping forward and sideways at once and then it is over. * Speed - In the Imaginary Realm, the speed of light is the lowest speed that an object can move though due to relativity, the speed of light is effectively zero speed. Here physical objects move at wildly accelerated speeds and can easily become lost or destroyed in the insane speeds and energies of this Realm. * Mind and Will - Everyone seems to experience the Imaginary Realm differently with many experiencing wild and terrible hallicinations. Those entering this Realm with just their minds find that their abilities are vastly increased. They appear as an idealized version of themselves with Body equal to Mind and all abilities may use Mind instead. * Body - Physical rules barely apply. All resistences use Will instead of Body." :titles "Astral Plane, Astral Realm, Complex Space, Ether, Etheral Plane, Etheral Realm, Hyperspace, I-Space, Imaginary Realm, Subjective Reality, Subspace, Superspace, The Pale, Ultraspace") "Realm of Light" (location :name "Realm of Light" :summary "* This is an area of space near the center of the Universe. It is said to be based upon lines and angles instead of surfaces and curves, and it is known to be a region of intense and deadly energies. The realm appears much like a negative image of the known Universe with dark stars on a backdrop of intense light. Few organic creatures can survive in this region regardless of defenses, but this is the home of such creatures as the [Radiance] and the [Hounds of Tindalos]." :titles "Tindalos") :Wyver (location :name "Wyver" :summary "* Wyver is the Creator Being that manifests as a mirror dimension reflecting the world of order. * Travel - Creatures of order can enter Wyvr through any reflective surface." :titles "Weaver") :Wyld (location :name "Wyld" :summary "* Wyld is the Life Bringer Being that manifests as a mirror dimension reflecting the natural world. It is thought that Wyld is the source of all life. * The Wild has stunning natural beauty, but is also a merciless place dominated by natural selection. * Travel - Natural creatures can enter Wyld through any reflective surface." :titles "Manitou, Wellspring") :Wyrm (location :name "Wyrm" :reference "* Sitting in a bunker, here behind my wall. Waiting for the worms to come. In perfect isolation, , here behind my wall. Waiting for the worms to come. Waiting, to cut out the dead wood. Waiting, to clean up the city. Waiting, to follow the worms. Waiting, to put on a black shirt. Waiting, to weed out the weaklings. Waiting, to smash in their windows and kick in their doors. Waiting, for the final solution to strengthen the strain. Waiting, to follow the worms. - Waiting for the Worms, Pink Floyd" :summary "* Wyrm is the Time/Destructor Being that manifests as mirror dimension reflecting the world of entropy and and corruption. Corrupted creatures can enter Wyrm through any reflective surface."))) "Lower Realms" (section :name "Lower Realms" :summary "* Those places closest to the very beginning and the final end of the universe." :titles "Under Realms" :locationmap (locationmap :Oblivion (location :name "Oblivion" :reference "* Leviathan - Hellraiser II * The Great Evil - The Fifth Element" :summary "* At the end of the Universe, lies a metaphysical Black Hole, the Anti-Sun: Oblivion. * It is null, ultimate order, ultimate death, the beginning and the end of the Universe. * Few living beings have managed to survive being close enough to see Oblivion. * As the [Underworld] is in many ways the reverse of the living world, Oblivion hangs above the [Underworld] like a massive Sun. Unlike a sun, however, Oblivion devours light and steals warmth. What little light and warmth that exists in the [Underworld] seeps instead from the land of the living. * Some believe that through Oblivion lies rebirth, but few are willing to personally put that theory to the test, and none who enter has ever returned." :titles "Abyss, End of All Things, Heat Death of the Universe, Lakhesis, Order, Pattern, Primal Destroyer, Primal Void, The End") "Source, The" (location :name "Source, The" :reference "...I started with loathing when told of the monstrous nuclear chaos beyond angled space which the Necronomicon had mercifully cloaked under the name of Azathoth. - The Whisperer in Darkness" :summary "* The Source is the bubbling font at the beginning of existence. It lies at the opposite end of all existence from [Oblivion]. The Source is bursting with the densely packed proto matter/energy of all creation in the septillionth of a second before exploding into all realities. It is also, necessarily, the most destructive place in all existence. * Sublime - Those who somehow survive entering the Sublime find a very different existence. Where our multiverse is a vast empty space containing trace motes of dust, the Sublime is an endless fountain of possiblities. Everywhere you gaze, the Sublime offers a kaleidescope of intriguing details. Even infinity is meaningless where time, distance, and reality cease to matter. * Sublimating - Nothing physical can survive exposure to the Source, but it is possible to transcend the physical and enter Source. This is called Sublimating. There are many magical, spiritual and technological ways to enter the Sublime and entire civilizations have done so. Any who enter the Sublime begin to expand themselves. Absorbing and evolving with each eternal instant. Almost none who enter ever returns regardless of promises or bonds. The few that have returned are very different and almost always quickly return to the Sublime. After being exposed to the endless possiblities of existence, perhaps they no longer see the our existence or our way of understanding our existence as real or important anymore." :titles "Ascension, Azathoth, Atropos, Apep, Apophis, Jormungand (Midgard Serpent), Primal Chaos, The Beginning, The Big Bang, The First Thing, Truth, Sublime") "Tempest, The" (location :name "Tempest, The" :reference "* The Galactic Barrier - Star Trek" :summary "* The final line before ultimate chaos. A swirling mass of chaos and fear on the border of annihilation. * Like a Black Hole, [Oblivion] has a swirling event horizon at its surface. It is the interface between substance and nothingness. * The [Tempest] is a sea of souls and madness. The dreams and memories of those lost within sometimes drift like flotsam in the Tempest. * The Tempest usually manifests as an roiling ocean, sometimes of water, sometimes of blood or souls. * It is rare to see the Tempest calm except in the presence of a [Ferryman]. * Often it is a storm-tossed sea of towering waves and shrieking winds. Fog, foam, and spray obscures vision and rips the words from ones mouth. * Harrowing - [Wraiths] that are destroyed, fall into the sky toward [Oblivion]. Before entering [Oblivion] they pass through the Tempest and find themselves tested. The test is called a [Harrowing] and is always a spiritual confrontation with the [Wraith]'s own weakness. If the [Wraith] passes the test, it will find it has regained the strength to return to the [Underworld]. If it fails, it falls finally and eternally into the cold embrace of [Oblivion]. The appearance of the Tempest during a Harrowing is ever-changing: a drafty dripping dungeon with flagstones and chains, a subway tunnel with flickering buzzing fluorescent lights, a rough-hewn tunnel of sickly pink marble shot through with black veins. * Regardless of where one enters, all its twisting maze-like tunnels lead in the same direction: toward the dark heart of [Oblivion]." :titles "Event Horizon, The Great Barrier, The Edge of the World") :Underworld (location :name "Underworld" :summary "* The Underworld is a psychic realm of the dead. Similar to the [Dreaming], the Underworld is a Spiritual not a physical place. * Appearance - The Underworld seems like an inverted version of the living world. Initially, it appears as a dark, barren landscape with a large, black sun hanging in a cloudy, night sky. On further inspection, however, the dark sun is a black hole, the clouds are floating landscapes, and the night sky is the distant opposite side of what appears to be a hollow world with the black hole in the center. * Oblivion - The black hole at the center of the Underworld is [Oblivion], slowly drawing in everything to a final destruction. * Terraces - The floating landscapes are formed of spiritual flotsom from ages of dissolved dead. They slowly spiral upward eventually becoming the accretion disk of [Oblivion]. The higher one travels upward the more chaotic and intense the environment becomes until it becomes the [Tempest]. * Falling - Spirits may travel freely on any surface in any orientation, but 'gravity' is always toward [Oblivion], so things not touching the 'ground' slowly fall upward with increasing speed. * Shadowland - Holes in the ground lead through long tunnels to the [Shadowland] above. Those who have lost their connections to their old lives (their fetters) will find that all the tunnels lead back to the Underworld. * Time - Time in the Underworld is distinctly different from the living world. Long periods can pass for some while little time has passed for others. Either way, little time passes in the living world compared to the ages that can seem to pass in the Underworld." :titles "Netherworld, Netherrealm, Netherverse, Underrealm, Underverse") "Void, The" (location :name "Void, The" :summary "* The Void is an empty Realm between Realms. It is the Spiritual equivalent to outer space. * The Void is a realm of nothingness and contains no matter, energy, atmosphere, magnetism, inertia, gravity, or any other force. * Light, sound, and heat do not exist in the Void, but those with Spirits can see and hear normally. They also experience no discomfort despite the harsh conditions. Those without Spirits are blind, deaf, and lost in the endless void. * Attributes - Those with Spirits appear as idealistic versions of themselves in the Void. Body, Mind, Spirit, and Speed are increased to the higher of their Mind or Spirit. * Speed - As light and inertia do not exist in the Void, vessels may move much faster than light. Those with Spirits may move at astronomical speeds and can move at the equivalent of [Mind] or [Spirit] x 1 Light Day per second. * Void Ships - Ships created to travel between the realms. Note: physical travel into the Astral Realm by magical means may only be performed without observers." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "unit") :severity 2)))))))) "Outer Realms" (section :name "Outer Realms" :reference "Event Horizon" :summary "* These are the various part of the Spirit Realm where demons live. It is unclear whether these worlds are in distant parts of our dimension or in other dimensions entirely. They are certainly so distant that only dimensional travel can reach them. * Physics are often radically different from our own which often is sanity threatening." :titles "Abyssal Realms, Chaos Realms, Demon Realms, Hells" :locationmap (locationmap "Hell of Being Cut to Pieces" (location :name "Hell of Being Cut to Pieces" :summary "* Souls who arrive here fall into a sea of razor-sharp blades that spin and cut sinners to shreds. * Souls - The domain is a place for those who make a living by violence.") "Hell of Being Skinned Alive" (location :name "Hell of Being Skinned Alive" :summary "* If there is a worse place, no one has yet found it. At a glance it appear as a desert world, but it is infinitely worse. The winds have sculpted the rocks and mesas into horrifying shapes. Those who can see through the sandstorms can see demonic forms torturing souls, but their screams are covered by the winds. * The howling winds that forever whip across the red sands are enough to strip flesh from bone. Shards of glass and metal blown on these sonic-velocity winds can penetrate tank armor. * The winds frequently become funnel clouds sucking sand and souls miles up before letting them plummet onto the jagged rocks below. * The constant motion of wind and sand builds up electric charge, and victims are regularly subjected to bolts of lightning. * At first, the winds only flay only the body, but the worst is yet to come. Once flesh and muscle fall from the bones, the very essence of his being begins peeling off, layer by layer to be carried off in the winds. The only peace is when the winds subside, and the flayed bodies regenerate in these precious seconds. But once the pain begins to subside, the winds start howling again... * Souls trapped here are often those who hoarded and abused power. Such individuals are tormented after death by having everything ripped from them. * Tou Mu - The Yama King, Tou Mu, watches from her enormous upside-down palace high in orbit. Those that the Iron Empress takes note of are drawn up by the winds to the cold silent vacuum above. There she expresses her dissatisfaction personally. * Silent Stronghold - Her orbiting palace is where her allies stay, but as Tou Mu is paranoid, the crystal of this place renders unguarded thought into sound which echoes throughout the palace. * Sinister Fortress - One of the few structures on the surface of this hell, this iron fortress courses with the lightning that constantly strikes it. On the outer walls are lashed the bodies of those that Tou Mu has taken a special interst. Here they are constantly torn by winds and struck by lightning. The Iron Empress has never removed a victim from the wall since the first traitor was lashed there.") "Hell of Boiling Oil" (location :name "Hell of Boiling Oil" :summary "* The name of this hell is a misnomer. The hell is not filled with boiling oil, but rather with rendered human fat. Gobbets of charred and burning fat float atop the ocean of thick, bubbling grease. A dark gray froth of overcooked scum floats to the surface in places. * The atmosphere is hazy with brown smoke and a fine mist of grease. The stench is intolerable. Individuals who manage to survive vomit uncontrollably. Those few who manage to leave this realm never entirely rid themselves of the smell. * This hell is the place of torment for the gluttonous. Corpulent executives and rotund bureaucrats are haunted by the excesses of their lives. * Ruler - This realm is ruled by Hluh, an island-sized, gelatinous, bright red jellyfish with sharp-toothed sucker mouths on each tentacle. * Devils - The devils of this have no names, no faces, and no sense of self. They realm resemble chitinous tapeworms or gigantic water striders that skim acoss the surface of the boiling sea.") "Hell of Burrowing Maggots" (location :name "Hell of Burrowing Maggots" :summary "* A quick glance reveals this place to be a vast plain of white sand. There is no sun, but the overcast sky is not dark. The sand, however, is crawling. The stench of decay staggers any so unfortunate as to need to breathe. * Souls - This is a place of torment for sinners who have met their end by disease including radiation poisoning, cancer, and biological warfare. Boils and tumors grow enormous here and hang from the body and attract the maggots. Within days a soul can feel her skin crawl. Everywhere the worm-ridden souls cry out, tearing at their skin, and vainly trying to escape the worms that are eating them alive. * Ruler - Rangda, the Mistress of Pestilence rules here. * Demons - Maggots grow larger as they age. The largest of them are the size of a whale. * The Great Beast - What appears to be a large white mountain is actually an enormous carcass of an unknown beast. The maggots have been devouring it since the hell was created, and it appears it will take an eternity to complete the job. What the beast is is unknown. Some believe it is tied to creation and the the universe will cease when it is comsumed. A foolish mage once studied it from a distance, but days later he returned screaming gibberish and only said two coherent words before he took his own life: 'It moved.'") "Hell of Seven Burning Seas" (location :name "Hell of Seven Burning Seas" :summary "* If would be hard to chose a worse fate, burning or drowning. Those souls doomed to this hell do both. They may stay above water and have their garments burst into flame or submerge and boil themselves. * Souls - This hell houses sinners whose crimes involve the water. Pirates, polluters, mutineers, and murderers who drowned their victims are drawn here. * Ruler - No one has seen the Empress of Pearls who is rumored to live at the greatest depths of the Great Trench where no other creature can survive. Some believe she is a great 'devil-fish' that can cause tsunamis. * Devils - Devil crabs, devil sharks, and devil squid are some of the horrors that populate the depths.") "Hell of Upside-Down Sinners" (location :name "Hell of Upside-Down Sinners" :summary "* This domain defies description. This is either the cleverest of the Yomi realms or the maddest hell devised by the sickest of minds. Time and space are inverted. Sensation and thought are twisted. Minutes pass like an eternity and millenia rush by in a blink of an eye. In this hell, the strong perish and the weak survive. That which is dull cuts while sharp objects bring comfort. * Souls - Recent arrivals are often driven mad as they begin to see odors, smell sounds, and hear sights. Emotions too become jumbled. Souls begin to hate those who helped them and love those who have done them wrong. They fear the helpless and refuse to flee certain destruction. Skills and powers do not work correctly here. The stronger the ability the more ineffectual it is. * Ruler - No one knows what inconceivable creature would create such a realm.") "Hell: Kakuri, The Night Realm" (location :name "Hell: Kakuri, The Night Realm" :summary "* There is no end to the darkness in the Night Realm. There is no sun, no stars. The winds are bitterly cold, bearing dagger-sharp ice crystals. Facing into the wind is blinding. Fires flicker and die in the winds, but any light attracts the tormented and Shikome alike. The terrain is rocky and frozen black crystal that leech the energy of those who rest on them. Meadows and tree exist, but they are covered with dark crytal blades that tear at passersby. * Kakuri is the hell of those who have lost their honor. The land is therefore the anti-thesis of honor. There are no great battles, no great challenges, no bragging enemies. There is no duty, no honor, and no way to escape. There are no flesh eating devils, no pits of burning oil, no grand ministries of torment. In a land without hope, there don't need to be. * Ruler: Emma-o, perhaps the greatest of the Yama-kings. * Shikome: Beautiful, cold, female devils that delight in speeding their victims to despair. They are subtle and can appear as tormented souls or as friends or lovers. Whatever their form, they will drain the [Spirit] from their victims leaving them to wander in hopelessness and despair. * Kyuden No Kakuri - The Castle of Kakuri is the stronghold of Emma-o. It is situated at the top of an unassailable peak. The castle has elaborate obsidian walls and are a testament to his vanity and conceit. * Cave of Maidens - One of Emma-o's favored traps, the caves appear an oasis from the icy torment and occasionally a way out of Yomi. Edible fungi, shelter, and pretty prisoners can be found in the caves. The prisoners will dote on the visitors, but they will suddenly accuse them of theft, rape, murder, or worse. The visitors are beaten and driven from the caves. The power of the Shikome lets them trick their victims again and again with the lure of false hope. Amazingly, there is actually a chance that a cave is actually an exit from the Hell, the ultimate lure for lost souls.") "Hell: Pit of Iron and Salt" (location :name "Hell: Pit of Iron and Salt" :summary "* The Pit is a vast salt mine with seemingly no bottom. Iron citadels dot the inside of the pit, so the pit resembles a great gaping maw with the citadels resembling teeth. The landscape is unchanging and sterile. It is not a place of shock or disgust, but a hell of quiet oppression. * Souls - Those who labor here do so in the false hope that through hard work they will eventually be relieved of their suffering. They search for treasure they will never find beneath the lashes of cruel overseers. Cuts and lashes are inflamed by the salt everywhere. * Ruler - Yama-king Wu Hua lives at the the bottom of the pit in a great iron city surrounded by six enormous barbed spires on which hundreds of bodies are impaled. Sputtering greenish fires can be seen from a distance that hint at grotesque rituals and obscene torments, but what exactly goes on inside is unknown. * Iron Citadels - The citadels are places of decadence and depravity. The souls are intermittently rotated from the mines to the citadel to act as slaves. Most mine workers view the change as desirable, but every soul chosen learns that this is not the case. In reality, the souls are treated worse here than anywhere else in the domain. Their suffering is more valuable to Wu Hua because it is so much more 'personal'.") "Hell: Wicked City" (location :name "Hell: Wicked City" :summary "* Wicked City is a place of endless urban blight stretching to the horizon in all directions. The perpetually overcast air is dark and thick with acrid vapors and burning smog. The stench of urine, vomit, blood, and excrement blows out of every alley. The streets and buildings are packed with the souls who mindlessly slave away in inescapable agonies and the power-mad demons who torment them. * Souls - This hell is the destination of those who have fallen into the corruption, isolation, and anoymity of urban life. Politicians, artists, criminals, wage slaves, executive, and police are pulled into the sweat shops and dark streets of this doomed megalopolis. The souls are worked beyond their limits, and when they falter or fail the foremen arrive instantly to punish them for their incompetence. Their routine jobs continue day after day with no hope of improving their lot, and their pitiful wages allow them to almost support themselves. Those that fail to keep up are laughed out of their offices and become the homeless of Wicked City, available for demons and embittered salary drones to beat, torture, or set ablaze. There are no safe places in Wicked City. Every coworker could be a demon. Even the doomed may betray each other for advancement. It is a place where the worst elements of greed and capitalism meet. * Ruler - The Yama-king Mikaboshi rules this realm from the Mikaboshi Tower. The tower is a hideous tower of blackened steel and glass whose peak disappears into the clouds. Mikaboshi's executives administer Wicked City from this lofty tower, and Mikaboshi himself is often linked directly into the tower's strange devices allowing him to see, hear, and feel any part of Wicked City. * Undercity - The twisted spires are built atop the crumbling temples and castles of eras past. The cities are built upon cities upon cities, and the farther down one goes, the more monstrous the demonic inhabitants. Some creatures have not seen the sky in centuries. What these monsters have become is unknown, but no one who has entered the abandoned tunnels and subways has returned sane (if they return at all). * Feng Shui - The Yama-king Mikaboshi wants all those who see his city to understand his grand vision of a hellish metropolis. He undermines the known and comfortable trapping of the daily world to increase his subjects' feelings of dread and suffering, and his power over them. The feng shui of the Wicked city is beyond negative, bordering on the impossible. The entire landscape assaults the Chi of the city's victims. 'Poison Arrows' point everywhere, spiraling in directions that cause veritgo from the merest glance. Disharmony saps the will and impedes rational thought. * Gates - It is possible to travel to Wicked City from many of the worst urban hellholes in the mortal world. In these places of corruption and anguish, the [Veil] is weak. The door also swings both ways and denizens of this hell sometimes travel to the mortal realm in search of new souls.")) :sectionmap (sectionmap :Pandemonium (section :name "Pandemonium" :reference "* Dante's Inferno" :summary "* Pandemonium (literally the Place of All Demons), the capital of Hell, the High Capital, of Satan and his Peers, built by the fallen angels at the suggestion of Mammon. The demons built it in about an hour, but it far surpassed all human palaces or dwellings. It was also reputed to be made of solid gold." :titles "Pandaemonium, Place of All Demons" :locationmap (locationmap "Council-Chamber of Pandæmonium" (location :name "Council-Chamber of Pandæmonium" :summary "* The Stygian Council debates here."))) :Phyrexia (section :name "Phyrexia" :reference "* We must improve! We must evolve! - Victor, Runeterra * Metal is perfection. - Victor, Runeterra" :unitmap (unitmap :Yawgmoth (unit :name "Yawgmoth" :titles "Father of Machines, Ineffable"))))))))
nx/tactics/books/fantasy / chapter_story_ideas
Description:
Function Name:
  • chapter_story_ideas
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_story_ideas : base/chapter (chapter :name "Story Ideas" :summary "* Accompany zealots on a pilgrimage to holy places. * Participate in a Witch Hunt in the forests. * Protect an individual of status from the assassin's guild. * Go on patrol with Knife Fighters * Sail to obtain concubines, either legally or illicitly. Be wary of the creatures and brutish males, to say nothing of the subtle charms of the concubines themselves. * Join the desert scouts in raids against the Black Mystics. * Commission tomb raiders to unearth ancient sarcophagi. * Sail the far seas in search of adventure, braving corsairs, cannibals, sea serpents, and the black hulled vessels of the Necromancers. * Mine green crystal from the Sea of Glass. * Visit Sactuary the safe haven of thieves and scoundels. * Prowl the jungles looking for rare herbs and black diamonds. * Rescue a captive of the Witchmen who keep shrunken heads as grisly trophies. * Visit the Ice Castles of the north and fight side by side against the Ice Giants. * Trade with the Sea Nomads of Oceanus, a city that floats freely on the water. * Take a windship to the isle of Phantas and visit the Cabal Magicus, home of the Phantasian Dream Merchants. * Travel to the Jade Empire and visit the capital Tian called the Golden City for good reason. * Hire a guide and search for the buried city of Necron where legend has it an entire city and its populace were once interred. * Visit the magical fair, a gala festival attended by magicians, wizards, and charaltans from across the continent. Engage in a duel for wagers with a reknowned spell caster or haggle for potions, powders, and other rare items. * Negotiate a deal with a Zuran moneylender to finance an expedition in return for a cut of the profits. * Attend the Festival of the Bizarre where individuals display oddities and compete in the contest for the title of 'Most Bizarre'. * Accompany a Wizard Hunter on a quest of revenge. * Partake in the 'Night of Fools' when all laws are suspended for a single evening. * Help locate a suitable applicant for the Battle of Champions or enter the competition yourself."))
nx/tactics/books/gear
Description:
Package Name:
  • nx/tactics/books/gear
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_gear_overview, chapter_gear_construction, chapter_gear_items
Source Code:
  • (package nx/tactics/books/gear :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Gear" :chaptermap (base/chaptermap "Gear Overview" (chapter_gear_overview) "Gear Construction" (chapter_gear_construction) "Gear Items" (chapter_gear_items) ))) (func chapter_gear_overview : base/chapter (chapter :name "Gear Overview" :sectionmap (sectionmap "Why Tactics: Gear?" (section :name "Why Tactics: Gear?")))) (func chapter_gear_construction : base/chapter (chapter :name "Gear Construction")) (func chapter_gear_items : base/chapter (chapter :name "Gear Items" :sectionmap (sectionmap "Alchemical Devices" (section :name "Alchemical Devices" :itemmap (itemmap :Alembic (item :name "Alembic") :Aludel (item :name "Aludel" :summary "* The philosophical vase of the alchemist.") :Athanor (item :name "Athanor" :summary "* The philosophical furnace of the alchemist.") :Bellows (item :name "Bellows") :Blowtube (item :name "Blowtube") :Brazier (item :name "Brazier") :Cadeucus (item :name "Cadeucus") :Calcinator (item :name "Calcinator") :Censer (item :name "Censer") :Crucible (item :name "Crucible") :Glassware (item :name "Glassware") :Hourglass (item :name "Hourglass") :Inkwell (item :name "Inkwell") "Mortar and Pestle" (item :name "Mortar and Pestle") :Piping (item :name "Piping") "Quill Pen" (item :name "Quill Pen") :Retort (item :name "Retort") "Scrying Glass" (item :name "Scrying Glass") :Tongs (item :name "Tongs") :Vial (item :name "Vial"))) :Poisons (section :name "Poisons" :itemmap (itemmap "Narcotic Poison" (item :name "Narcotic Poison") "Paralytic Poison" (item :name "Paralytic Poison"))) "Alchemical Substance" (section :name "Alchemical Substance" :itemmap (itemmap :Alkahest (item :name "Alkahest" :summary "* The universal solvent, having the power to dissolve every substance into its constituent elemental parts. It cannot dissolve anything that is absolutely pure." :titles "Alchahest, Universal Solvent") :Aphrodisiac (item :name "Aphrodisiac") "Aqua Fortis" (item :name "Aqua Fortis" :summary "Nitric acid. Easier to make, lesser version of Aqua Regia." :titles "Strong Water") "Aqua Regia" (item :name "Aqua Regia" :summary "* Highly corrosive acid made from Nitric and Hydrochloric acid. It is one of the few reagents that dissolves gold and platinum." :titles "Royal Water") "Aqua Vitae" (item :name "Aqua Vitae" :summary "* Magical liquid used to create artificial life, particularly the Homonculus." :titles "Elixir of Vitality, Water of Life") "Amber Crystal" (item :name "Amber Crystal") "Antidote: Amnesia" (item :name "Antidote: Amnesia") "Antidote: Blindness" (item :name "Antidote: Blindness") "Antidote: Burns" (item :name "Antidote: Burns") "Antidote: Curse" (item :name "Antidote: Curse") "Antidote: Deafness" (item :name "Antidote: Deafness") "Antidote: Disease" (item :name "Antidote: Disease") "Antidote: Fear" (item :name "Antidote: Fear") "Antidote: Insanity" (item :name "Antidote: Insanity") "Antidote: Paralysis" (item :name "Antidote: Paralysis") "Antidote: Poison" (item :name "Antidote: Poison") "Devilroot Powder" (item :name "Devilroot Powder") :Dipilatory (item :name "Dipilatory") "Dream Essence" (item :name "Dream Essence" :summary "* The elusive essence from which dreams are made. It is gathered from a subject and then distilled into a liquid. * The effects last for 2-8 hours and are very intense. * Effects vary by color: ** Purple - Passion, Romance ** Blue - Poignancy ** Red - Violent Emotions ** Silver - Imagination, Flights of Fancy ** Gold - Prophetic Visions ** Rainbow - Unpredictable ** Black - Nightmares") "Elixir of Clarity" (item :name "Elixir of Clarity" :summary "* [Effect]: [+1 Mind]") "Elixir of Healing" (item :name "Elixir of Healing") "Elixir of Life" (item :name "Elixir of Life" :summary "* [Effect]: Extends lifespan by 10 years. Each use of this Elixir increases the difficulty of the next use.") "Elixir of Regrowth" (item :name "Elixir of Regrowth" :summary "* Effect: Drop into a coma and heals damage including repairing/regrowing damaged organs or limbs.") "Elixir of Strength" (item :name "Elixir of Strength" :summary "* [Effect]: [+1 Body]") "Essense of Longing" (item :name "Essense of Longing" :titles "Perfume of Attraction") "Essential Quicksilver" (item :name "Essential Quicksilver" :summary "A magically animate liquid metal used in the crafting of enchanted weapons.") :Glowball (item :name "Glowball" :summary "* A glass ball that will radiate light like a torch for [Level] hours without requiring air.") :Homonculyte (item :name "Homonculyte") "Ice Crystals" (item :name "Ice Crystals" :summary "Intense cold captured into powdery crystal form.") "Incense of Conjuration" (item :name "Incense of Conjuration" :summary "* [Action]: Burn for +1 [Conjuration] for the next 5 turns.") "Incense of Divination" (item :name "Incense of Divination" :summary "* [Action]: Burn for +1 [Divination] for the next 5 turns.") "Incense of Dreaming" (item :name "Incense of Dreaming" :summary "* [Action]: Burn for +1 [Dreaming] for the next 5 turns.") "Incense of Shamanism" (item :name "Incense of Shamanism" :summary "* [Action]: Burn for +1 [Shamanism] for the next 5 turns.") "Lightning in a Bottle" (item :name "Lightning in a Bottle") "Lyrium Potion" (item :name "Lyrium Potion" :summary "* Natural Lyrium is a white, radioactive dust extracted from Uranium mines. * Lyrium Ore - Direct contact with lyrium ore produces nausea, blistering of the skin, and dementia. * Lyrium Potions - Lyrium dust can be mixed into a potion that bestows resistance to magic to those who use it regularly. However, Lyrium is extremely physically and psychologically addictive not unlike heroin. * Chantry Templars are all required to take Lyrium regularly. The addictive qualities of Lyrium ensure that the Templars remain under Chantry control. * History - It is thought that Lyrium is created from Ley Lines (Dragon Lines) traveling through the earth. * [Passive]: +1 [Defense] vs. any magical effect and -1 [Action] when using any magical effect." :titles "Radium") "Makeup of Beauty" (item :name "Makeup of Beauty") "Mandrake Powder" (item :name "Mandrake Powder") "Oil of Slipperiness" (item :name "Oil of Slipperiness") :Panacea (item :name "Panacea") "Philosopher's Stone" (item :name "Philosopher's Stone" :summary "* A legendary alchemical substance said to be capable of turning base metals such as lead into gold (chrysopoeia) or silver. It was also sometimes believed to be an elixir of life, useful for rejuvenation and possibly for achieving immortality. For many centuries, it was the most sought-after goal in alchemy. The philosophers' stone is the central symbol of alchemy, symbolizing perfection at its finest, enlightenment, and heavenly bliss. Efforts to discover the philosophers' stone were known as the Magnum Opus ('Great Work'). * The first component of the philosopher's stone is Prima Materia: 'the first matter of the stone is the very same with the first matter of all things.'" :titles "Magnum Opus, Great Work, Stone of the Philosopher, Variable Mercury") "Philtre of Courage" (item :name "Philtre of Courage" :summary "* [Effect]: [+1 Spirit]") "Philtre of Fear" (item :name "Philtre of Fear" :summary "* [Effect]: [-1 Spirit]") "Philtre of Hate" (item :name "Philtre of Hate") "Philtre of Loyalty" (item :name "Philtre of Loyalty") "Philtre of Love" (item :name "Philtre of Love" :reference "Love Potion #9" :titles "Love Potion, Potion of Passion") "Philtre of Mirth" (item :name "Philtre of Mirth") "Philtre of Sorrow" (item :name "Philtre of Sorrow") "Philtre of Trechery" (item :name "Philtre of Trechery") "Philtre of Violence" (item :name "Philtre of Violence" :titles "Berserk Potion") "Potion of Fire Resistance" (item :name "Potion of Fire Resistance" :summary "* Effect: +1 [Defense] vs. [Fire].") "Potion of Grounding" (item :name "Potion of Grounding" :summary "* Effect: +1 [Defense] vs. [Electricity].") "Potion of Healing" (item :name "Potion of Healing") "Potion of Regeneration" (item :name "Potion of Regeneration") "Potion of Restoration" (item :name "Potion of Restoration") "Potion of Strength" (item :name "Potion of Strength") "Potion of Venom" (item :name "Potion of Venom" :summary "* Effect: Body becomes a deadly storehouse of caustic venoms. The blood, sweat, tears, and spit are all deadly weapons. User is immune to its own effects and is also resistant to all poison, acid, and disease.") "Potion of Warmth" (item :name "Potion of Warmth" :summary "* Effect: +1 [Defense] vs. [Cold].") "Potion of Water Breathing" (item :name "Potion of Water Breathing") "Prima Materia" (item :name "Prima Materia" :summary "* The primitive formless base of all matter, the primal substance that may be changed into any other matter." :titles "Aether, Akasha, Ether, Proteus, Quintessence") "Rare Earths" (item :name "Rare Earths" :summary "* Rare Earths are the most important of all alchemical ingredients because they are the catalysts that unleash the innate powers of other ingredients." :titles "Antimony, Cinnabar, Pitchblend, various salts, and metal oxides") "Sleeping Potion" (item :name "Sleeping Potion" :reference "Sleeping Beauty" :titles "Soporific") :Smokestick (item :name "Smokestick" :summary "* An alchemically treated wooden stick that creates thick, opaque smoke when ignited.") :Soulstone (item :name "Soulstone") "Soverign Glue" (item :name "Soverign Glue" :titles "Universal Adhesive") "Storm Crystals" (item :name "Storm Crystals") :Thunderstone (item :name "Thunderstone" :summary "* A stone that emits a deafening sound when it is first struck againsts a hard surface.") :Tindertwig (item :name "Tindertwig" :reference "A match" :summary "* A sulfurous substance that ignites when rubbed against a rough surface."))) :Artifacts (section :name "Artifacts" :itemmap (itemmap "Icy Manipulator" (item :name "Icy Manipulator" :summary "* [Action]: Roll vs. [Mind]. If successful, target loses its next [Action].") "Zuran Orb" (item :name "Zuran Orb" :reference "* I will go to any length to achieve my goal. Eternal life is worth any sacrifice. - Zur the Enchanter, Magic the Gathering" :summary "* [Action]: -1 [Spirit] permanently. -2 Damage, -1 Critical, -10 Age."))) :Artwork (section :name "Artwork" :itemmap (itemmap "Bronze Sculpture" (item :name "Bronze Sculpture") "Calligraphed Scroll" (item :name "Calligraphed Scroll") :Carving (item :name "Carving") "Cave Drawing" (item :name "Cave Drawing") "Ceramic Vase" (item :name "Ceramic Vase") "Clay Pot" (item :name "Clay Pot") :Goblet (item :name "Goblet") "Fine China" (item :name "Fine China") "Iron Sculpture" (item :name "Iron Sculpture") "Oriental Carpet" (item :name "Oriental Carpet") "Landscape Painting" (item :name "Landscape Painting") "Marble Sculpture" (item :name "Marble Sculpture") "Painted Fan" (item :name "Painted Fan") "Painted Folding Screen" (item :name "Painted Folding Screen") "Painted Scroll" (item :name "Painted Scroll") "Portrait Painting" (item :name "Portrait Painting") :Scrimshaw (item :name "Scrimshaw") "Silver Bowl" (item :name "Silver Bowl") "Silver Cup" (item :name "Silver Cup") "Silver Plate" (item :name "Silver Plate") :Silverware (item :name "Silverware") "Still Life Painting" (item :name "Still Life Painting") "Stone Sculpture" (item :name "Stone Sculpture") "Wooden Sculpture" (item :name "Wooden Sculpture"))) "Book Types" (section :name "Book Types" :titles "Book, Musings, Notes, Scroll, Writings" :itemmap (itemmap :Almanac (item :name "Almanac") "Atlas of Maps" (item :name "Atlas of Maps") :Biography (item :name "Biography") "Book of Shadows" (item :name "Book of Shadows" :summary "A private journal, history or core religious text kept by practitioners.") :Codex (item :name "Codex") :Encyclopedia (item :name "Encyclopedia") :Fragments (item :name "Fragments") :Grimoire (item :name "Grimoire" :summary "A set of rules for doing something and is a journal kept by practitioners containing information and contributions relevant to their specific field of study.") :Manual (item :name "Manual") :Memoir (item :name "Memoir") :Poems (item :name "Poems") :Spellbook (item :name "Spellbook") :Tome (item :name "Tome"))) "Books, Unique" (section :name "Books, Unique" :itemmap (itemmap "Book of Enoch" (item :name "Book of Enoch") "Book of the Law" (item :name "Book of the Law") "Charge of the Goddess" (item :name "Charge of the Goddess") "I Ching" (item :name "I Ching") "Lemegeton Clavicula Salomonis" (item :name "Lemegeton Clavicula Salomonis" :titles "The Lesser Key of Solomon") "Liber Legis" (item :name "Liber Legis") "Liber Null" (item :name "Liber Null") "Malleus Maleficarum" (item :name "Malleus Maleficarum" :summary "One of the most famous medieval treatises on witches." :titles "The Hammer of Witches, Hexenhammer") "Tabula Rasa" (item :name "Tabula Rasa" :summary "* A unique blank stone tablet of unknown origin vaguely connected to the legends of the River Lethe. * If a person writes a description of a memory on the tablet, then the text will slowly fade from the tablet and as it does the memory will also permanently fade from the user's mind. This item can be used to remove trauma as well as reset unwanted skills and abilities.") "Wiccan Rede" (item :name "Wiccan Rede"))) :Clothing (section :name "Clothing" :itemmap (itemmap :Bracers (item :name "Bracers") :Circlet (item :name "Circlet") :Cloak (item :name "Cloak") :Collar (item :name "Collar") :Coronal (item :name "Coronal") :Headdress (item :name "Headdress") :Leggings (item :name "Leggings") :Mantle (item :name "Mantle") :Mask (item :name "Mask") :Rainment (item :name "Rainment") :Robe (item :name "Robe") :Torque (item :name "Torque"))) :Drugs (section :name "Drugs" :reference "* We had two bags of grass, seventy-five pellets of mescaline, five sheets of high-powered blotter acid, a saltshaker half-full of cocaine, and a whole galaxy of multi-colored uppers, downers, screamers, laughers... Also, a quart of tequila, a quart of rum, a case of beer, a pint of raw ether, and two dozen amyls...The only thing that really worried me was the ether. There is nothing in the world more helpless and irresponsible and depraved than a man in the depths of an ether binge, and I knew we'd get into that rotten stuff pretty soon. - Raoul Duke, Fear and Loathing in Las Vegas" :itemmap (itemmap :Amphetamine (item :name "Amphetamine" :titles "Crank, Speed, Uppers") :Anesthetic (item :name "Anesthetic") :Anti-Fungal (item :name "Anti-Fungal") :Anti-Parasitic (item :name "Anti-Parasitic") :Antiseptic (item :name "Antiseptic") :Atropine (item :name "Atropine") "Birth Control" (item :name "Birth Control") :Cocaine (item :name "Cocaine") "Crack Cocaine" (item :name "Crack Cocaine") :Depresant (item :name "Depresant" :titles "Downers") :Ecstasy (item :name "Ecstasy" :titles "XTC") "Fertility Drug" (item :name "Fertility Drug") :Hallucinogen (item :name "Hallucinogen") :Hashish (item :name "Hashish") :Heroin (item :name "Heroin") :LSD (item :name "LSD" :titles "Acid") :Marijuana (item :name "Marijuana") :Mescaline (item :name "Mescaline" :summary "* Derived from the [Peyote] Plant") :Morphine (item :name "Morphine") :Sedative (item :name "Sedative") :Steroid (item :name "Steroid") :Stimulant (item :name "Stimulant") :Tranquilizer (item :name "Tranquilizer"))) "Food and Drink" (section :name "Food and Drink" :itemmap (itemmap :Ale (item :name "Ale") :Beer (item :name "Beer") "Blossom Wine" (item :name "Blossom Wine") :Grog (item :name "Grog") "Fire Ale" (item :name "Fire Ale") :Mead (item :name "Mead" :summary "Fermented Honey") "Mushroom Ale" (item :name "Mushroom Ale") :Nectar (item :name "Nectar") :Whiskey (item :name "Whiskey") :Wine (item :name "Wine") :Vinesap (item :name "Vinesap") :Vodka (item :name "Vodka"))) :Jewelry (section :name "Jewelry" :itemmap (itemmap :Amulet (item :name "Amulet") :Anklet (item :name "Anklet") :Bracelet (item :name "Bracelet") :Brooch (item :name "Brooch" :titles "Decorative Pin") :Cameo (item :name "Cameo") :Earring (item :name "Earring") :Ingot (item :name "Ingot") :Medallion (item :name "Medallion") :Necklace (item :name "Necklace") :Pendant (item :name "Pendant") :Ring (item :name "Ring") :Tiara (item :name "Tiara") :Torc (item :name "Torc") :Valknut (item :name "Valknut" :summary "* Purpose - The valknut pendant is a magical symbol for warrior types. The Valknut pendant is used by those who swear allegiance to Odin in both life and death and want to fight alongside the gods during Ragnarok. When a valknut is found, Odin is also near. This is true for engravings of the valknut as well as for those who decide to wear Odin’s symbol. * Description - Valknut literally translates into 'the knot of the fallen warriors.' This symbol is also strongly connected to the deceased as is apparent in its linguistic meaning. The symbol itself represents the 9 worlds of existence. It is created through the fierce binding of three triangles. The Valknut also has the power over both life and death, as it weaves both into a knot." :titles "Knot of the Fallen Warriors"))) :Materials (section :name "Materials" :itemmap (itemmap "Animal Hide" (item :name "Animal Hide") :Brass (item :name "Brass") :Bronze (item :name "Bronze") :Ceramic (item :name "Ceramic") :Clay (item :name "Clay") :Gauze (item :name "Gauze") :Glass (item :name "Glass") :Gossamer (item :name "Gossamer") :Ice (item :name "Ice") :Iron (item :name "Iron") :Linen (item :name "Linen") :Obsidian (item :name "Obsidian") :Quartz (item :name "Quartz") :Snow (item :name "Snow") :Soil (item :name "Soil") :Stone (item :name "Stone") :Water (item :name "Water") :Wind (item :name "Wind") :Wood (item :name "Wood"))) :Mechanisms (section :name "Mechanisms" :itemmap (itemmap "Secret Compartment" (item :name "Secret Compartment") "Secret Door" (item :name "Secret Door"))) "Precious Materials" (section :name "Precious Materials" :itemmap (itemmap :Amber (item :name "Amber") :Amethyst (item :name "Amethyst") "Blue Diamond" (item :name "Blue Diamond") :Copper (item :name "Copper") :Diamond (item :name "Diamond") :Electrum (item :name "Electrum" :reference "* Electrum is a naturally occurring alloy of gold and silver, with trace amounts of copper and other metals. * The color of electrum is pale yellow or yellowish-white. * It is usually a good conductor of electricity. * Electrum is much better for coinage than gold, mostly because it is harder and more durable." :titles "White Gold") :Emerald (item :name "Emerald") :Gold (item :name "Gold") :Moonstone (item :name "Moonstone") :Onyx (item :name "Onyx") :Pearl (item :name "Pearl") "Rose Gold" (item :name "Rose Gold" :reference "* Rose gold is a gold and copper alloy. The higher the copper content the redder the color." :titles "Red Gold") :Ruby (item :name "Ruby") :Sapphire (item :name "Sapphire") :Silver (item :name "Silver" :reference "* Silver is a brilliant white metal with a luster that can take a high degree of polish. * It is very ductile and malleable (slightly harder than gold). * It has the highest electrical conductivity of all metals, even higher than copper * Among metals, pure silver has the highest thermal conductivity (only the non-metal diamond's is higher), whitest color, and the highest optical reflectivity. * Jewellery and silverware are traditionally made from Sterling silver (Standard silver) an alloy of 92.5 % silver with 7.5% copper. Sterling silver is harder than pure silver, and has a lower melting point. * It has certain antimicrobial activity. Dilute solutions of silver nitrate can be used as disinfectants. Silver-ions and silver compounds show a toxic effect on some bacteria, viruses, algae and fungi. Its germicidal effects make silver utensils valued, and increase its value as jewelry. The exact process of silver's germicidal effect is still not well understood. * The name of the United Kingdom monetary unit 'pound' originally had the value of one troy pound of sterling silver. * The words for 'silver' and 'money' are the same in at least 14 languages. * Hippocrates, the father of modern medicine, wrote that silver had beneficial healing and anti-disease properties, and the Phoenicians used to store water, wine, and vinegar in silver bottles to prevent spoiling. In the early 1900s people would put silver dollars in milk bottles to prolong the milk's freshness. * Silver was believed to be a repellent against vampires; also, mirrors were originally polished silver, and as such, vampires allegedly cannot be seen in them because they have no soul) and it was also believed that a werewolf, in his bestial form, could only be killed by a weapon or bullet made of silver. This has given rise to the term 'silver bullet', which is used to describe things that very effectively deal with one specific problem.") "Tiger's Eye" (item :name "Tiger's Eye"))) "Fantastic Precious Materials" (section :name "Fantastic Precious Materials" :itemmap (itemmap :Adamant (item :name "Adamant" :summary "* Requires: 10 carats of powdered blue diamonds and 1 pound of silver to create 1 pound of Adamant.") "Black Diamond" (item :name "Black Diamond") :Mithril (item :name "Mithril" :summary "* A steel alloy that is as strong as steel with only half the weight. It is extremely difficult to forge even for master smiths, so it is extremely rare and valuable." :titles "Elven Steel, Titanium Steel") :Orichalcum (item :name "Orichalcum" :reference "* A legendary metal mentioned in several ancient writings, most notably the story of Atlantis."))) "Religious Items" (section :name "Religious Items" :itemmap (itemmap "Holy Water" (item :name "Holy Water" :summary "* Holy Water consists of water with salt added that has been blessed in a ritual. Both water and salt are symbol of cleansing and disinfecting."))) "Musical Instruments" (section :name "Musical Instruments" :itemmap (itemmap :Banjo (item :name "Banjo") :Bells (item :name "Bells") :Chime (item :name "Chime") :Drums (item :name "Drums") "Drums, Koto" (item :name "Drums, Koto") "Drums, Timpani" (item :name "Drums, Timpani") :Gong (item :name "Gong") :Guitar (item :name "Guitar") "Guitar, 12 String" (item :name "Guitar, 12 String") "Guitar, Electric" (item :name "Guitar, Electric") :Flute (item :name "Flute") "Flute, Pan" (item :name "Flute, Pan") :Harmonica (item :name "Harmonica") :Harp (item :name "Harp") :Harpsicord (item :name "Harpsicord") :Horn (item :name "Horn") "Horn, French" (item :name "Horn, French") :Juiceharp (item :name "Juiceharp") :Lute (item :name "Lute") :Mandolin (item :name "Mandolin") :Piano (item :name "Piano") :Pipes (item :name "Pipes") :Recorder (item :name "Recorder") :Sitar (item :name "Sitar") :Tambour (item :name "Tambour") :Trombone (item :name "Trombone") :Trumpet (item :name "Trumpet") :Violin (item :name "Violin"))) :Powders (section :name "Powders" :itemmap (itemmap "Amnesia Powder" (item :name "Amnesia Powder" :titles "Powder of Forgetfulness") "Blinding Powder" (item :name "Blinding Powder" :summary "Temporarily Blind a target.") "Confusing Powder" (item :name "Confusing Powder") "Dust of Disappearing Trail" (item :name "Dust of Disappearing Trail" :summary "* Resettles an area to make it appear as if no one has been there in a long time.") "Dust of Dryness" (item :name "Dust of Dryness" :summary "* Evaporates water on contact. Destroys up to level^2 liters of water.") "Exploding Powder" (item :name "Exploding Powder") "Flash Powder" (item :name "Flash Powder" :summary "* [Move]: Place a [Smoke] Terrain with 1 Duration Token on this unit's space.") "Freezing Powder" (item :name "Freezing Powder") "Hallucination Powder" (item :name "Hallucination Powder") "Incendiary Powder" (item :name "Incendiary Powder" :titles "Dragon's Breath") "Iocaine Powder" (item :name "Iocaine Powder" :reference "* What you do not smell is called iocane powder. It is odorless, tasteless, dissolves instantly in liquid, and is among the more deadlier poisons known to man. - Man in Black * Iocane comes from Australia, as everyone knows! And Australia is entirely peopled with criminals. - Vizzini" :titles "Arcenic Trioxide") "Irritating Powder" (item :name "Irritating Powder" :titles "Itching Powder") "Noxious Powder" (item :name "Noxious Powder" :titles "Powder of Nausea") "Paralysing Powder" (item :name "Paralysing Powder") "Poison Powder" (item :name "Poison Powder") "Powder of Desire" (item :name "Powder of Desire" :titles "Aphrodisiac Powder") "Powder of False Death" (item :name "Powder of False Death" :summary "* A more powerful version of Sleeping Powder, that simulates death.") "Powder of Fear" (item :name "Powder of Fear") "Powder of Rage" (item :name "Powder of Rage") "Sleeping Powder" (item :name "Sleeping Powder" :titles "Morphius Powder") "Smoke Powder" (item :name "Smoke Powder") "Vertigo Powder" (item :name "Vertigo Powder"))) "Ritual Items" (section :name "Ritual Items" :summary "* holy oil, lamp, bell * [Dreamcatcher] - hung above the bed, is then used as a charm to protect sleeping children from nightmares. &quot;Only good dreams would be allowed to filter through . . . Bad dreams would stay in the net, disappearing with the light of day.&quot; * Medicine Bag * Phylactery - An amulet to protect the wearer from harm, enclosing magical text, herbs, or relics." :itemmap (itemmap :Athame (item :name "Athame" :reference "As a masculine principle, it is often used in combination with the cup or Graal, as feminine principle, and evokes the act of procreation, as symbol of universal creativity." :summary "* Symbolizes Air, the Mental, and Masculinity. Air appears as nothing, can only be felt with subtle senses and never gripped and commanded. * A ritual dagger" :titles "Swords") :Graal (item :name "Graal" :summary "* Symbolizes Water, the Emotional, and Feminity. The emotions are tidal like the the ocean, flowing like rivers and streams. * As a feminie principle, it is often used in combination with the dagger or Athame, as masculine principle, and evokes the act of procreation, as symbol of universal creativity." :titles "Cup, Grail") "Mummified Hand" (item :name "Mummified Hand") :Pentacle (item :name "Pentacle" :image "Units/Equipment/Pentacle.jpg" :summary "* Symbolizes Earth and the Physical An amulet used in magical evocation, generally made of parchment, paper or metal, on which the symbol of a spirit or energy being evoked is drawn. It is often worn around the neck, or placed within the triangle of evocation. Protective symbols may also be included (sometimes on the reverse), a common one being the five-point Seal of Solomon. The pentacle is always drawn in one continuous stroke, earning it the title the 'endless knot'." :titles "Disks, Endless Knot, Stone") "Ritual Claw" (item :name "Ritual Claw") "Shrunken Head" (item :name "Shrunken Head") :Thurible (item :name "Thurible" :titles "Censer") :Tool (item :name "Tool") :Wand (item :name "Wand" :summary "Symbolizes Fire, Energy, and the Spirtual"))) :Tools (section :name "Tools" :itemmap (itemmap :Astrolabe (item :name "Astrolabe" :summary "* Astronomical computer for solving problems relating to time and the position of the Sun and stars in the sky. To use an astrolabe, you adjust the moveable components to a specific date and time. Once set, the entire sky, both visible and invisible, is represented on the face of the instrument. This allows a great many astronomical problems to be solved in a very visual way. * Typical uses of the astrolabe include finding the time during the day or night, finding the time of a celestial event such as sunrise or sunset and as a handy reference of celestial positions.") :Compass (item :name "Compass") "Jeweler's Loop" (item :name "Jeweler's Loop") :Key (item :name "Key") :Lodestone (item :name "Lodestone") "Magifying Glass" (item :name "Magifying Glass") "Magifying Glasses" (item :name "Magifying Glasses") "Magifying Lenses" (item :name "Magifying Lenses") :Monicle (item :name "Monicle") :Pendulum (item :name "Pendulum") :Prism (item :name "Prism") :Scales (item :name "Scales") :Sextant (item :name "Sextant") :Telescope (item :name "Telescope" :titles "Spy Glass") :Weathervane (item :name "Weathervane") :Whistle (item :name "Whistle"))) :Traps (section :name "Traps" :itemmap (itemmap :Caltrops (item :name "Caltrops") "Nightengail Floor" (item :name "Nightengail Floor" :reference "Nijo Castle - Kyoto, Japan" :summary "* Floors designed to make a chirping sound when walked upon assuring that none could sneak through the corridors undetected. Dry boards naturally creak under pressure, but these floors were designed so that the flooring nails rubbed against a jacket or clamp, causing chirping noises." :titles "Uguisubari") "Pressure Plate" (item :name "Pressure Plate") :Tanglewire (item :name "Tanglewire") :Trapdoor (item :name "Trapdoor") :Tripwire (item :name "Tripwire"))) :Vehicles (section :name "Vehicles" :unitmap (unitmap :Airship (unit :name "Airship") :Barge (unit :name "Barge") :Coracle (unit :name "Coracle") :Duneship (unit :name "Duneship") "Ice Schooner" (unit :name "Ice Schooner") :Palanquin (unit :name "Palanquin") :Skiff (unit :name "Skiff") "Wagon, Enclosed" (unit :name "Wagon, Enclosed") "Wagon, Open" (unit :name "Wagon, Open"))) "Unfiled Gear" (section :name "Unfiled Gear" :summary "* Acid * Alabaster * Barricade * Blood * Cage * Chariot * Conch Horn * Fireworks * Trumpet * War Machine !Symbols * Banner * Coat of Arms * Crest * Crown * Fasces * Helix * Rod * Scepter * Signet * Standard * Thyrsus !Arcane Items * Airship * Armageddon Clock * Flying Carpet !Containers * Chest * Cauldron * Coffer * Goblet * Jar * Puzzle Box * Vat * Vessel !Technology * [Blinding Bulb] * [Phone Tap]] * [Shotgun Microphone] * [Sleepteacher] * [Subliminal Broadcaster] * [Surveillance Cameras] * [Telephoto Lens]" :itemmap (itemmap "Beast Claw" (item :name "Beast Claw") :Tooth (item :name "Tooth") "Vampire Blood" (item :name "Vampire Blood" :summary "* Black Token * Drinking Vampire Blood is addictive and creates a psychological dependency on the original Vampire called the [[Blood Bond]]. * [Move] - Vampiric Healing - Remove a Vampire Blood Token and remove another Token of your choice. * [Move] - Vampiric Strength - Remove a Vampire Blood Token and gain +1 Melee for 3 turns. * [Move] - Vampiric Speed - Remove a Vampire Blood Token and gain +1 Initiative and +1 Move for 3 turns. * [Move] - Vampiric Fortitude - Remove a Vampire Blood Token and gain +1 Physical Armor for 3 turns.") "Healing Salve" (item :name "Healing Salve") :Lattice (item :name "Lattice") :Mirror (item :name "Mirror") :Matrix (item :name "Matrix") :Candle (item :name "Candle") :Screen (item :name "Screen") :Array (item :name "Array"))))))
nx/tactics/books/gear / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Gear" :chaptermap (base/chaptermap "Gear Overview" (chapter_gear_overview) "Gear Construction" (chapter_gear_construction) "Gear Items" (chapter_gear_items) )))
nx/tactics/books/gear / chapter_gear_overview
Description:
Function Name:
  • chapter_gear_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_gear_overview : base/chapter (chapter :name "Gear Overview" :sectionmap (sectionmap "Why Tactics: Gear?" (section :name "Why Tactics: Gear?"))))
nx/tactics/books/gear / chapter_gear_construction
Description:
Function Name:
  • chapter_gear_construction
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_gear_construction : base/chapter (chapter :name "Gear Construction"))
nx/tactics/books/gear / chapter_gear_items
Description:
Function Name:
  • chapter_gear_items
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_gear_items : base/chapter (chapter :name "Gear Items" :sectionmap (sectionmap "Alchemical Devices" (section :name "Alchemical Devices" :itemmap (itemmap :Alembic (item :name "Alembic") :Aludel (item :name "Aludel" :summary "* The philosophical vase of the alchemist.") :Athanor (item :name "Athanor" :summary "* The philosophical furnace of the alchemist.") :Bellows (item :name "Bellows") :Blowtube (item :name "Blowtube") :Brazier (item :name "Brazier") :Cadeucus (item :name "Cadeucus") :Calcinator (item :name "Calcinator") :Censer (item :name "Censer") :Crucible (item :name "Crucible") :Glassware (item :name "Glassware") :Hourglass (item :name "Hourglass") :Inkwell (item :name "Inkwell") "Mortar and Pestle" (item :name "Mortar and Pestle") :Piping (item :name "Piping") "Quill Pen" (item :name "Quill Pen") :Retort (item :name "Retort") "Scrying Glass" (item :name "Scrying Glass") :Tongs (item :name "Tongs") :Vial (item :name "Vial"))) :Poisons (section :name "Poisons" :itemmap (itemmap "Narcotic Poison" (item :name "Narcotic Poison") "Paralytic Poison" (item :name "Paralytic Poison"))) "Alchemical Substance" (section :name "Alchemical Substance" :itemmap (itemmap :Alkahest (item :name "Alkahest" :summary "* The universal solvent, having the power to dissolve every substance into its constituent elemental parts. It cannot dissolve anything that is absolutely pure." :titles "Alchahest, Universal Solvent") :Aphrodisiac (item :name "Aphrodisiac") "Aqua Fortis" (item :name "Aqua Fortis" :summary "Nitric acid. Easier to make, lesser version of Aqua Regia." :titles "Strong Water") "Aqua Regia" (item :name "Aqua Regia" :summary "* Highly corrosive acid made from Nitric and Hydrochloric acid. It is one of the few reagents that dissolves gold and platinum." :titles "Royal Water") "Aqua Vitae" (item :name "Aqua Vitae" :summary "* Magical liquid used to create artificial life, particularly the Homonculus." :titles "Elixir of Vitality, Water of Life") "Amber Crystal" (item :name "Amber Crystal") "Antidote: Amnesia" (item :name "Antidote: Amnesia") "Antidote: Blindness" (item :name "Antidote: Blindness") "Antidote: Burns" (item :name "Antidote: Burns") "Antidote: Curse" (item :name "Antidote: Curse") "Antidote: Deafness" (item :name "Antidote: Deafness") "Antidote: Disease" (item :name "Antidote: Disease") "Antidote: Fear" (item :name "Antidote: Fear") "Antidote: Insanity" (item :name "Antidote: Insanity") "Antidote: Paralysis" (item :name "Antidote: Paralysis") "Antidote: Poison" (item :name "Antidote: Poison") "Devilroot Powder" (item :name "Devilroot Powder") :Dipilatory (item :name "Dipilatory") "Dream Essence" (item :name "Dream Essence" :summary "* The elusive essence from which dreams are made. It is gathered from a subject and then distilled into a liquid. * The effects last for 2-8 hours and are very intense. * Effects vary by color: ** Purple - Passion, Romance ** Blue - Poignancy ** Red - Violent Emotions ** Silver - Imagination, Flights of Fancy ** Gold - Prophetic Visions ** Rainbow - Unpredictable ** Black - Nightmares") "Elixir of Clarity" (item :name "Elixir of Clarity" :summary "* [Effect]: [+1 Mind]") "Elixir of Healing" (item :name "Elixir of Healing") "Elixir of Life" (item :name "Elixir of Life" :summary "* [Effect]: Extends lifespan by 10 years. Each use of this Elixir increases the difficulty of the next use.") "Elixir of Regrowth" (item :name "Elixir of Regrowth" :summary "* Effect: Drop into a coma and heals damage including repairing/regrowing damaged organs or limbs.") "Elixir of Strength" (item :name "Elixir of Strength" :summary "* [Effect]: [+1 Body]") "Essense of Longing" (item :name "Essense of Longing" :titles "Perfume of Attraction") "Essential Quicksilver" (item :name "Essential Quicksilver" :summary "A magically animate liquid metal used in the crafting of enchanted weapons.") :Glowball (item :name "Glowball" :summary "* A glass ball that will radiate light like a torch for [Level] hours without requiring air.") :Homonculyte (item :name "Homonculyte") "Ice Crystals" (item :name "Ice Crystals" :summary "Intense cold captured into powdery crystal form.") "Incense of Conjuration" (item :name "Incense of Conjuration" :summary "* [Action]: Burn for +1 [Conjuration] for the next 5 turns.") "Incense of Divination" (item :name "Incense of Divination" :summary "* [Action]: Burn for +1 [Divination] for the next 5 turns.") "Incense of Dreaming" (item :name "Incense of Dreaming" :summary "* [Action]: Burn for +1 [Dreaming] for the next 5 turns.") "Incense of Shamanism" (item :name "Incense of Shamanism" :summary "* [Action]: Burn for +1 [Shamanism] for the next 5 turns.") "Lightning in a Bottle" (item :name "Lightning in a Bottle") "Lyrium Potion" (item :name "Lyrium Potion" :summary "* Natural Lyrium is a white, radioactive dust extracted from Uranium mines. * Lyrium Ore - Direct contact with lyrium ore produces nausea, blistering of the skin, and dementia. * Lyrium Potions - Lyrium dust can be mixed into a potion that bestows resistance to magic to those who use it regularly. However, Lyrium is extremely physically and psychologically addictive not unlike heroin. * Chantry Templars are all required to take Lyrium regularly. The addictive qualities of Lyrium ensure that the Templars remain under Chantry control. * History - It is thought that Lyrium is created from Ley Lines (Dragon Lines) traveling through the earth. * [Passive]: +1 [Defense] vs. any magical effect and -1 [Action] when using any magical effect." :titles "Radium") "Makeup of Beauty" (item :name "Makeup of Beauty") "Mandrake Powder" (item :name "Mandrake Powder") "Oil of Slipperiness" (item :name "Oil of Slipperiness") :Panacea (item :name "Panacea") "Philosopher's Stone" (item :name "Philosopher's Stone" :summary "* A legendary alchemical substance said to be capable of turning base metals such as lead into gold (chrysopoeia) or silver. It was also sometimes believed to be an elixir of life, useful for rejuvenation and possibly for achieving immortality. For many centuries, it was the most sought-after goal in alchemy. The philosophers' stone is the central symbol of alchemy, symbolizing perfection at its finest, enlightenment, and heavenly bliss. Efforts to discover the philosophers' stone were known as the Magnum Opus ('Great Work'). * The first component of the philosopher's stone is Prima Materia: 'the first matter of the stone is the very same with the first matter of all things.'" :titles "Magnum Opus, Great Work, Stone of the Philosopher, Variable Mercury") "Philtre of Courage" (item :name "Philtre of Courage" :summary "* [Effect]: [+1 Spirit]") "Philtre of Fear" (item :name "Philtre of Fear" :summary "* [Effect]: [-1 Spirit]") "Philtre of Hate" (item :name "Philtre of Hate") "Philtre of Loyalty" (item :name "Philtre of Loyalty") "Philtre of Love" (item :name "Philtre of Love" :reference "Love Potion #9" :titles "Love Potion, Potion of Passion") "Philtre of Mirth" (item :name "Philtre of Mirth") "Philtre of Sorrow" (item :name "Philtre of Sorrow") "Philtre of Trechery" (item :name "Philtre of Trechery") "Philtre of Violence" (item :name "Philtre of Violence" :titles "Berserk Potion") "Potion of Fire Resistance" (item :name "Potion of Fire Resistance" :summary "* Effect: +1 [Defense] vs. [Fire].") "Potion of Grounding" (item :name "Potion of Grounding" :summary "* Effect: +1 [Defense] vs. [Electricity].") "Potion of Healing" (item :name "Potion of Healing") "Potion of Regeneration" (item :name "Potion of Regeneration") "Potion of Restoration" (item :name "Potion of Restoration") "Potion of Strength" (item :name "Potion of Strength") "Potion of Venom" (item :name "Potion of Venom" :summary "* Effect: Body becomes a deadly storehouse of caustic venoms. The blood, sweat, tears, and spit are all deadly weapons. User is immune to its own effects and is also resistant to all poison, acid, and disease.") "Potion of Warmth" (item :name "Potion of Warmth" :summary "* Effect: +1 [Defense] vs. [Cold].") "Potion of Water Breathing" (item :name "Potion of Water Breathing") "Prima Materia" (item :name "Prima Materia" :summary "* The primitive formless base of all matter, the primal substance that may be changed into any other matter." :titles "Aether, Akasha, Ether, Proteus, Quintessence") "Rare Earths" (item :name "Rare Earths" :summary "* Rare Earths are the most important of all alchemical ingredients because they are the catalysts that unleash the innate powers of other ingredients." :titles "Antimony, Cinnabar, Pitchblend, various salts, and metal oxides") "Sleeping Potion" (item :name "Sleeping Potion" :reference "Sleeping Beauty" :titles "Soporific") :Smokestick (item :name "Smokestick" :summary "* An alchemically treated wooden stick that creates thick, opaque smoke when ignited.") :Soulstone (item :name "Soulstone") "Soverign Glue" (item :name "Soverign Glue" :titles "Universal Adhesive") "Storm Crystals" (item :name "Storm Crystals") :Thunderstone (item :name "Thunderstone" :summary "* A stone that emits a deafening sound when it is first struck againsts a hard surface.") :Tindertwig (item :name "Tindertwig" :reference "A match" :summary "* A sulfurous substance that ignites when rubbed against a rough surface."))) :Artifacts (section :name "Artifacts" :itemmap (itemmap "Icy Manipulator" (item :name "Icy Manipulator" :summary "* [Action]: Roll vs. [Mind]. If successful, target loses its next [Action].") "Zuran Orb" (item :name "Zuran Orb" :reference "* I will go to any length to achieve my goal. Eternal life is worth any sacrifice. - Zur the Enchanter, Magic the Gathering" :summary "* [Action]: -1 [Spirit] permanently. -2 Damage, -1 Critical, -10 Age."))) :Artwork (section :name "Artwork" :itemmap (itemmap "Bronze Sculpture" (item :name "Bronze Sculpture") "Calligraphed Scroll" (item :name "Calligraphed Scroll") :Carving (item :name "Carving") "Cave Drawing" (item :name "Cave Drawing") "Ceramic Vase" (item :name "Ceramic Vase") "Clay Pot" (item :name "Clay Pot") :Goblet (item :name "Goblet") "Fine China" (item :name "Fine China") "Iron Sculpture" (item :name "Iron Sculpture") "Oriental Carpet" (item :name "Oriental Carpet") "Landscape Painting" (item :name "Landscape Painting") "Marble Sculpture" (item :name "Marble Sculpture") "Painted Fan" (item :name "Painted Fan") "Painted Folding Screen" (item :name "Painted Folding Screen") "Painted Scroll" (item :name "Painted Scroll") "Portrait Painting" (item :name "Portrait Painting") :Scrimshaw (item :name "Scrimshaw") "Silver Bowl" (item :name "Silver Bowl") "Silver Cup" (item :name "Silver Cup") "Silver Plate" (item :name "Silver Plate") :Silverware (item :name "Silverware") "Still Life Painting" (item :name "Still Life Painting") "Stone Sculpture" (item :name "Stone Sculpture") "Wooden Sculpture" (item :name "Wooden Sculpture"))) "Book Types" (section :name "Book Types" :titles "Book, Musings, Notes, Scroll, Writings" :itemmap (itemmap :Almanac (item :name "Almanac") "Atlas of Maps" (item :name "Atlas of Maps") :Biography (item :name "Biography") "Book of Shadows" (item :name "Book of Shadows" :summary "A private journal, history or core religious text kept by practitioners.") :Codex (item :name "Codex") :Encyclopedia (item :name "Encyclopedia") :Fragments (item :name "Fragments") :Grimoire (item :name "Grimoire" :summary "A set of rules for doing something and is a journal kept by practitioners containing information and contributions relevant to their specific field of study.") :Manual (item :name "Manual") :Memoir (item :name "Memoir") :Poems (item :name "Poems") :Spellbook (item :name "Spellbook") :Tome (item :name "Tome"))) "Books, Unique" (section :name "Books, Unique" :itemmap (itemmap "Book of Enoch" (item :name "Book of Enoch") "Book of the Law" (item :name "Book of the Law") "Charge of the Goddess" (item :name "Charge of the Goddess") "I Ching" (item :name "I Ching") "Lemegeton Clavicula Salomonis" (item :name "Lemegeton Clavicula Salomonis" :titles "The Lesser Key of Solomon") "Liber Legis" (item :name "Liber Legis") "Liber Null" (item :name "Liber Null") "Malleus Maleficarum" (item :name "Malleus Maleficarum" :summary "One of the most famous medieval treatises on witches." :titles "The Hammer of Witches, Hexenhammer") "Tabula Rasa" (item :name "Tabula Rasa" :summary "* A unique blank stone tablet of unknown origin vaguely connected to the legends of the River Lethe. * If a person writes a description of a memory on the tablet, then the text will slowly fade from the tablet and as it does the memory will also permanently fade from the user's mind. This item can be used to remove trauma as well as reset unwanted skills and abilities.") "Wiccan Rede" (item :name "Wiccan Rede"))) :Clothing (section :name "Clothing" :itemmap (itemmap :Bracers (item :name "Bracers") :Circlet (item :name "Circlet") :Cloak (item :name "Cloak") :Collar (item :name "Collar") :Coronal (item :name "Coronal") :Headdress (item :name "Headdress") :Leggings (item :name "Leggings") :Mantle (item :name "Mantle") :Mask (item :name "Mask") :Rainment (item :name "Rainment") :Robe (item :name "Robe") :Torque (item :name "Torque"))) :Drugs (section :name "Drugs" :reference "* We had two bags of grass, seventy-five pellets of mescaline, five sheets of high-powered blotter acid, a saltshaker half-full of cocaine, and a whole galaxy of multi-colored uppers, downers, screamers, laughers... Also, a quart of tequila, a quart of rum, a case of beer, a pint of raw ether, and two dozen amyls...The only thing that really worried me was the ether. There is nothing in the world more helpless and irresponsible and depraved than a man in the depths of an ether binge, and I knew we'd get into that rotten stuff pretty soon. - Raoul Duke, Fear and Loathing in Las Vegas" :itemmap (itemmap :Amphetamine (item :name "Amphetamine" :titles "Crank, Speed, Uppers") :Anesthetic (item :name "Anesthetic") :Anti-Fungal (item :name "Anti-Fungal") :Anti-Parasitic (item :name "Anti-Parasitic") :Antiseptic (item :name "Antiseptic") :Atropine (item :name "Atropine") "Birth Control" (item :name "Birth Control") :Cocaine (item :name "Cocaine") "Crack Cocaine" (item :name "Crack Cocaine") :Depresant (item :name "Depresant" :titles "Downers") :Ecstasy (item :name "Ecstasy" :titles "XTC") "Fertility Drug" (item :name "Fertility Drug") :Hallucinogen (item :name "Hallucinogen") :Hashish (item :name "Hashish") :Heroin (item :name "Heroin") :LSD (item :name "LSD" :titles "Acid") :Marijuana (item :name "Marijuana") :Mescaline (item :name "Mescaline" :summary "* Derived from the [Peyote] Plant") :Morphine (item :name "Morphine") :Sedative (item :name "Sedative") :Steroid (item :name "Steroid") :Stimulant (item :name "Stimulant") :Tranquilizer (item :name "Tranquilizer"))) "Food and Drink" (section :name "Food and Drink" :itemmap (itemmap :Ale (item :name "Ale") :Beer (item :name "Beer") "Blossom Wine" (item :name "Blossom Wine") :Grog (item :name "Grog") "Fire Ale" (item :name "Fire Ale") :Mead (item :name "Mead" :summary "Fermented Honey") "Mushroom Ale" (item :name "Mushroom Ale") :Nectar (item :name "Nectar") :Whiskey (item :name "Whiskey") :Wine (item :name "Wine") :Vinesap (item :name "Vinesap") :Vodka (item :name "Vodka"))) :Jewelry (section :name "Jewelry" :itemmap (itemmap :Amulet (item :name "Amulet") :Anklet (item :name "Anklet") :Bracelet (item :name "Bracelet") :Brooch (item :name "Brooch" :titles "Decorative Pin") :Cameo (item :name "Cameo") :Earring (item :name "Earring") :Ingot (item :name "Ingot") :Medallion (item :name "Medallion") :Necklace (item :name "Necklace") :Pendant (item :name "Pendant") :Ring (item :name "Ring") :Tiara (item :name "Tiara") :Torc (item :name "Torc") :Valknut (item :name "Valknut" :summary "* Purpose - The valknut pendant is a magical symbol for warrior types. The Valknut pendant is used by those who swear allegiance to Odin in both life and death and want to fight alongside the gods during Ragnarok. When a valknut is found, Odin is also near. This is true for engravings of the valknut as well as for those who decide to wear Odin’s symbol. * Description - Valknut literally translates into 'the knot of the fallen warriors.' This symbol is also strongly connected to the deceased as is apparent in its linguistic meaning. The symbol itself represents the 9 worlds of existence. It is created through the fierce binding of three triangles. The Valknut also has the power over both life and death, as it weaves both into a knot." :titles "Knot of the Fallen Warriors"))) :Materials (section :name "Materials" :itemmap (itemmap "Animal Hide" (item :name "Animal Hide") :Brass (item :name "Brass") :Bronze (item :name "Bronze") :Ceramic (item :name "Ceramic") :Clay (item :name "Clay") :Gauze (item :name "Gauze") :Glass (item :name "Glass") :Gossamer (item :name "Gossamer") :Ice (item :name "Ice") :Iron (item :name "Iron") :Linen (item :name "Linen") :Obsidian (item :name "Obsidian") :Quartz (item :name "Quartz") :Snow (item :name "Snow") :Soil (item :name "Soil") :Stone (item :name "Stone") :Water (item :name "Water") :Wind (item :name "Wind") :Wood (item :name "Wood"))) :Mechanisms (section :name "Mechanisms" :itemmap (itemmap "Secret Compartment" (item :name "Secret Compartment") "Secret Door" (item :name "Secret Door"))) "Precious Materials" (section :name "Precious Materials" :itemmap (itemmap :Amber (item :name "Amber") :Amethyst (item :name "Amethyst") "Blue Diamond" (item :name "Blue Diamond") :Copper (item :name "Copper") :Diamond (item :name "Diamond") :Electrum (item :name "Electrum" :reference "* Electrum is a naturally occurring alloy of gold and silver, with trace amounts of copper and other metals. * The color of electrum is pale yellow or yellowish-white. * It is usually a good conductor of electricity. * Electrum is much better for coinage than gold, mostly because it is harder and more durable." :titles "White Gold") :Emerald (item :name "Emerald") :Gold (item :name "Gold") :Moonstone (item :name "Moonstone") :Onyx (item :name "Onyx") :Pearl (item :name "Pearl") "Rose Gold" (item :name "Rose Gold" :reference "* Rose gold is a gold and copper alloy. The higher the copper content the redder the color." :titles "Red Gold") :Ruby (item :name "Ruby") :Sapphire (item :name "Sapphire") :Silver (item :name "Silver" :reference "* Silver is a brilliant white metal with a luster that can take a high degree of polish. * It is very ductile and malleable (slightly harder than gold). * It has the highest electrical conductivity of all metals, even higher than copper * Among metals, pure silver has the highest thermal conductivity (only the non-metal diamond's is higher), whitest color, and the highest optical reflectivity. * Jewellery and silverware are traditionally made from Sterling silver (Standard silver) an alloy of 92.5 % silver with 7.5% copper. Sterling silver is harder than pure silver, and has a lower melting point. * It has certain antimicrobial activity. Dilute solutions of silver nitrate can be used as disinfectants. Silver-ions and silver compounds show a toxic effect on some bacteria, viruses, algae and fungi. Its germicidal effects make silver utensils valued, and increase its value as jewelry. The exact process of silver's germicidal effect is still not well understood. * The name of the United Kingdom monetary unit 'pound' originally had the value of one troy pound of sterling silver. * The words for 'silver' and 'money' are the same in at least 14 languages. * Hippocrates, the father of modern medicine, wrote that silver had beneficial healing and anti-disease properties, and the Phoenicians used to store water, wine, and vinegar in silver bottles to prevent spoiling. In the early 1900s people would put silver dollars in milk bottles to prolong the milk's freshness. * Silver was believed to be a repellent against vampires; also, mirrors were originally polished silver, and as such, vampires allegedly cannot be seen in them because they have no soul) and it was also believed that a werewolf, in his bestial form, could only be killed by a weapon or bullet made of silver. This has given rise to the term 'silver bullet', which is used to describe things that very effectively deal with one specific problem.") "Tiger's Eye" (item :name "Tiger's Eye"))) "Fantastic Precious Materials" (section :name "Fantastic Precious Materials" :itemmap (itemmap :Adamant (item :name "Adamant" :summary "* Requires: 10 carats of powdered blue diamonds and 1 pound of silver to create 1 pound of Adamant.") "Black Diamond" (item :name "Black Diamond") :Mithril (item :name "Mithril" :summary "* A steel alloy that is as strong as steel with only half the weight. It is extremely difficult to forge even for master smiths, so it is extremely rare and valuable." :titles "Elven Steel, Titanium Steel") :Orichalcum (item :name "Orichalcum" :reference "* A legendary metal mentioned in several ancient writings, most notably the story of Atlantis."))) "Religious Items" (section :name "Religious Items" :itemmap (itemmap "Holy Water" (item :name "Holy Water" :summary "* Holy Water consists of water with salt added that has been blessed in a ritual. Both water and salt are symbol of cleansing and disinfecting."))) "Musical Instruments" (section :name "Musical Instruments" :itemmap (itemmap :Banjo (item :name "Banjo") :Bells (item :name "Bells") :Chime (item :name "Chime") :Drums (item :name "Drums") "Drums, Koto" (item :name "Drums, Koto") "Drums, Timpani" (item :name "Drums, Timpani") :Gong (item :name "Gong") :Guitar (item :name "Guitar") "Guitar, 12 String" (item :name "Guitar, 12 String") "Guitar, Electric" (item :name "Guitar, Electric") :Flute (item :name "Flute") "Flute, Pan" (item :name "Flute, Pan") :Harmonica (item :name "Harmonica") :Harp (item :name "Harp") :Harpsicord (item :name "Harpsicord") :Horn (item :name "Horn") "Horn, French" (item :name "Horn, French") :Juiceharp (item :name "Juiceharp") :Lute (item :name "Lute") :Mandolin (item :name "Mandolin") :Piano (item :name "Piano") :Pipes (item :name "Pipes") :Recorder (item :name "Recorder") :Sitar (item :name "Sitar") :Tambour (item :name "Tambour") :Trombone (item :name "Trombone") :Trumpet (item :name "Trumpet") :Violin (item :name "Violin"))) :Powders (section :name "Powders" :itemmap (itemmap "Amnesia Powder" (item :name "Amnesia Powder" :titles "Powder of Forgetfulness") "Blinding Powder" (item :name "Blinding Powder" :summary "Temporarily Blind a target.") "Confusing Powder" (item :name "Confusing Powder") "Dust of Disappearing Trail" (item :name "Dust of Disappearing Trail" :summary "* Resettles an area to make it appear as if no one has been there in a long time.") "Dust of Dryness" (item :name "Dust of Dryness" :summary "* Evaporates water on contact. Destroys up to level^2 liters of water.") "Exploding Powder" (item :name "Exploding Powder") "Flash Powder" (item :name "Flash Powder" :summary "* [Move]: Place a [Smoke] Terrain with 1 Duration Token on this unit's space.") "Freezing Powder" (item :name "Freezing Powder") "Hallucination Powder" (item :name "Hallucination Powder") "Incendiary Powder" (item :name "Incendiary Powder" :titles "Dragon's Breath") "Iocaine Powder" (item :name "Iocaine Powder" :reference "* What you do not smell is called iocane powder. It is odorless, tasteless, dissolves instantly in liquid, and is among the more deadlier poisons known to man. - Man in Black * Iocane comes from Australia, as everyone knows! And Australia is entirely peopled with criminals. - Vizzini" :titles "Arcenic Trioxide") "Irritating Powder" (item :name "Irritating Powder" :titles "Itching Powder") "Noxious Powder" (item :name "Noxious Powder" :titles "Powder of Nausea") "Paralysing Powder" (item :name "Paralysing Powder") "Poison Powder" (item :name "Poison Powder") "Powder of Desire" (item :name "Powder of Desire" :titles "Aphrodisiac Powder") "Powder of False Death" (item :name "Powder of False Death" :summary "* A more powerful version of Sleeping Powder, that simulates death.") "Powder of Fear" (item :name "Powder of Fear") "Powder of Rage" (item :name "Powder of Rage") "Sleeping Powder" (item :name "Sleeping Powder" :titles "Morphius Powder") "Smoke Powder" (item :name "Smoke Powder") "Vertigo Powder" (item :name "Vertigo Powder"))) "Ritual Items" (section :name "Ritual Items" :summary "* holy oil, lamp, bell * [Dreamcatcher] - hung above the bed, is then used as a charm to protect sleeping children from nightmares. &quot;Only good dreams would be allowed to filter through . . . Bad dreams would stay in the net, disappearing with the light of day.&quot; * Medicine Bag * Phylactery - An amulet to protect the wearer from harm, enclosing magical text, herbs, or relics." :itemmap (itemmap :Athame (item :name "Athame" :reference "As a masculine principle, it is often used in combination with the cup or Graal, as feminine principle, and evokes the act of procreation, as symbol of universal creativity." :summary "* Symbolizes Air, the Mental, and Masculinity. Air appears as nothing, can only be felt with subtle senses and never gripped and commanded. * A ritual dagger" :titles "Swords") :Graal (item :name "Graal" :summary "* Symbolizes Water, the Emotional, and Feminity. The emotions are tidal like the the ocean, flowing like rivers and streams. * As a feminie principle, it is often used in combination with the dagger or Athame, as masculine principle, and evokes the act of procreation, as symbol of universal creativity." :titles "Cup, Grail") "Mummified Hand" (item :name "Mummified Hand") :Pentacle (item :name "Pentacle" :image "Units/Equipment/Pentacle.jpg" :summary "* Symbolizes Earth and the Physical An amulet used in magical evocation, generally made of parchment, paper or metal, on which the symbol of a spirit or energy being evoked is drawn. It is often worn around the neck, or placed within the triangle of evocation. Protective symbols may also be included (sometimes on the reverse), a common one being the five-point Seal of Solomon. The pentacle is always drawn in one continuous stroke, earning it the title the 'endless knot'." :titles "Disks, Endless Knot, Stone") "Ritual Claw" (item :name "Ritual Claw") "Shrunken Head" (item :name "Shrunken Head") :Thurible (item :name "Thurible" :titles "Censer") :Tool (item :name "Tool") :Wand (item :name "Wand" :summary "Symbolizes Fire, Energy, and the Spirtual"))) :Tools (section :name "Tools" :itemmap (itemmap :Astrolabe (item :name "Astrolabe" :summary "* Astronomical computer for solving problems relating to time and the position of the Sun and stars in the sky. To use an astrolabe, you adjust the moveable components to a specific date and time. Once set, the entire sky, both visible and invisible, is represented on the face of the instrument. This allows a great many astronomical problems to be solved in a very visual way. * Typical uses of the astrolabe include finding the time during the day or night, finding the time of a celestial event such as sunrise or sunset and as a handy reference of celestial positions.") :Compass (item :name "Compass") "Jeweler's Loop" (item :name "Jeweler's Loop") :Key (item :name "Key") :Lodestone (item :name "Lodestone") "Magifying Glass" (item :name "Magifying Glass") "Magifying Glasses" (item :name "Magifying Glasses") "Magifying Lenses" (item :name "Magifying Lenses") :Monicle (item :name "Monicle") :Pendulum (item :name "Pendulum") :Prism (item :name "Prism") :Scales (item :name "Scales") :Sextant (item :name "Sextant") :Telescope (item :name "Telescope" :titles "Spy Glass") :Weathervane (item :name "Weathervane") :Whistle (item :name "Whistle"))) :Traps (section :name "Traps" :itemmap (itemmap :Caltrops (item :name "Caltrops") "Nightengail Floor" (item :name "Nightengail Floor" :reference "Nijo Castle - Kyoto, Japan" :summary "* Floors designed to make a chirping sound when walked upon assuring that none could sneak through the corridors undetected. Dry boards naturally creak under pressure, but these floors were designed so that the flooring nails rubbed against a jacket or clamp, causing chirping noises." :titles "Uguisubari") "Pressure Plate" (item :name "Pressure Plate") :Tanglewire (item :name "Tanglewire") :Trapdoor (item :name "Trapdoor") :Tripwire (item :name "Tripwire"))) :Vehicles (section :name "Vehicles" :unitmap (unitmap :Airship (unit :name "Airship") :Barge (unit :name "Barge") :Coracle (unit :name "Coracle") :Duneship (unit :name "Duneship") "Ice Schooner" (unit :name "Ice Schooner") :Palanquin (unit :name "Palanquin") :Skiff (unit :name "Skiff") "Wagon, Enclosed" (unit :name "Wagon, Enclosed") "Wagon, Open" (unit :name "Wagon, Open"))) "Unfiled Gear" (section :name "Unfiled Gear" :summary "* Acid * Alabaster * Barricade * Blood * Cage * Chariot * Conch Horn * Fireworks * Trumpet * War Machine !Symbols * Banner * Coat of Arms * Crest * Crown * Fasces * Helix * Rod * Scepter * Signet * Standard * Thyrsus !Arcane Items * Airship * Armageddon Clock * Flying Carpet !Containers * Chest * Cauldron * Coffer * Goblet * Jar * Puzzle Box * Vat * Vessel !Technology * [Blinding Bulb] * [Phone Tap]] * [Shotgun Microphone] * [Sleepteacher] * [Subliminal Broadcaster] * [Surveillance Cameras] * [Telephoto Lens]" :itemmap (itemmap "Beast Claw" (item :name "Beast Claw") :Tooth (item :name "Tooth") "Vampire Blood" (item :name "Vampire Blood" :summary "* Black Token * Drinking Vampire Blood is addictive and creates a psychological dependency on the original Vampire called the [[Blood Bond]]. * [Move] - Vampiric Healing - Remove a Vampire Blood Token and remove another Token of your choice. * [Move] - Vampiric Strength - Remove a Vampire Blood Token and gain +1 Melee for 3 turns. * [Move] - Vampiric Speed - Remove a Vampire Blood Token and gain +1 Initiative and +1 Move for 3 turns. * [Move] - Vampiric Fortitude - Remove a Vampire Blood Token and gain +1 Physical Armor for 3 turns.") "Healing Salve" (item :name "Healing Salve") :Lattice (item :name "Lattice") :Mirror (item :name "Mirror") :Matrix (item :name "Matrix") :Candle (item :name "Candle") :Screen (item :name "Screen") :Array (item :name "Array"))))))
nx/tactics/books/gettingstarted
Description:
Package Name:
  • nx/tactics/books/gettingstarted
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
  • scenario-murin-a0, scenario-murin-a1, scenario-murin-a2
Functions:
Source Code:
  • (package nx/tactics/books/gettingstarted :libs (lib base :path nx/tactics/base) :doc "") (const scenario-murin-a0 : base/scenario (base/scenario :summary "* Prologue - You've been traveling for a while. Odd jobs here and there have kept you fed, but no opportunity has paid off so far. Your funds are desperately low, and you have to consider giving up a life on the road for something more stable, at least for a while. * Setting - You've ended up among the Iron Cross Mountains. This used to be territory enthusiastically protected by the Dwarves who lived below, but thing have been quiet for a few years and human civilization is tentatively spreading into the area. There are said to be numerous mines and jewels to be found in these mountains, but so far they are just stories. You are currently traveling with a couple of religious aspirants and their fanatical followers. They claim to follow the Sun God and must follow him during the day. For some reason the truly feebleminded seem to gather together. Well, even if their beliefs are nonsense, their coin is real at least. * Plot Hooks - A young man (Jos Halslef) with a mule and cart approach from ahead. His clothes are well made but worn, and he does not appear threatening. He engages the group, but soon finds conversation with the aspirants to go nowhere. He suggests coming with him to Murinton.")) (const scenario-murin-a1 : base/scenario (base/scenario :summary "* Murin Vale - Murin Vale is a misty depression huddled between stout Murin-Lead Mountain and the spiky Murin-Quartz Peak. A hundred years ago, this entire area was controlled by the Murin Dwarf Clan who served the [Dwarven Underking] far down the [Deep Roads]. However, long ago, the Dwarves withdrew without explanation. Murinton, their trading village, was adopted by the human traders who no longer had their main trading partner. * Plot Hooks - A rough trail leads through the wooded vale to a small abandoned town, though smoke can be seen rising from its center.")) (const scenario-murin-a2 : base/scenario (base/scenario :summary "* Murinton - Within Murin Vale, at the base of Murin-Lead Mountain is the abandoned, Dwarven village of Murinton. A small populated outpost lies at its center. The outpost is dominated by the 20ft stone doors that lead into Murin-Lead Mountain. The massive doors are carved with dwarven artwork and sealed tight from within. The only occupied buildings are a general store, a smithy, a small grain mill, and some outlying farm houses. A winding stream runs down the mountain and powers the mill. * Personalities - Only 9 people live in this town though there is probably room for a hundred. ** Jen Halslef - Jen Halslef heads the outpost, negotiates deals, and runs the smithy when needed. She founded the town 2 years ago, taking advantage of the free property and safe territory. Maintaining the town has been difficult with so little resources, so she remains concerned for the town's future. Her smithy is dedicated to the god dwarven god Moradin, and has carved tablets around the walls describing smithing and calling on the blessings of Moradin. She was facinated and has been diligently following both to improve her smithing. Unknown to her, Moradin was intrigued by a human female follower and has blessed her. Skills: Tradeskills: 1 (Smithing), Channeling: 1 (Healing). ** Jos Halslef - Jen's twin brother runs the general store, trades with other villages, and keeps the books. The twins had brought a fair quantity of goods to start the town, but after 2 years resources are getting thin. Chicken, Bread, Jam, and Beer are the staple foods in town. Jos brings a homemade short spear with him when he travels and is passable at its use. Skills: Trade: 1 (Haggling), Melee: 1 (Spears). ** Silas and Marge Defold - This older couple keep the grain mill down by the winding stream. They mill the flour and brew beer. ** Mera Searf and Vela Tram - These two women run a wheat farm and bake bread to the west of the village. ** Thom, Janice, and Gwen Folken - A young couple with their 12 year old daughter run a small farm to the south. Thom hunts deer and rabbit which are plentiful in the nearby woods, while Janice and Gwen raise chickens. Gwen also gathers various berries and makes tasty jams. When food is sufficient, Thom with his woodsman's axe. Skills: Hunting: 1 (Snares), Ranged: 1 (Bows) * Missing Persons - Yesterday morning, the old mill was found abandoned. The miller and his wife were nowhere to be found, but some of their flour, wheat and beer were clearly dragged away, their living quarters were ransacked, and small blood stains were found. A search around the surrounding area left no clues. * Scouts - Recently a small band of [Darkling]s opened up a small ventilation tunnel from the Deep Roads. Three goblins had been scouting the area at night when they came across the mill. After some arguing, they broke in, captured the couple, searched the place for loot, and dragged away what they could. * Hidden Camp - They have a small camp hidden in the woods where they have tied up the couple and are doing their best to drink all the beer they stole and torment their prisoners. They intend to return to gather more loot. * Vent Base - Five miles away is the vent where the darklings broke through from the Deep Roads. An ambitious Hobgoblin leads the 3 Goblin Scouts, 2 Goblin Engineers, and a Bugbear Hunter. ** Goblin Engineers (Sgree, Dley) - The engineers are working to widen the vent. Body 3:1, Mind 2:1, Will 2:1 Skills: Mining (1), Melee: 1 (Picks) ** Goblin Scouts (Grot, Steg, Glel-Female) - The scouts are at the Hidden Camp. Body 3:1, Mind 2:1, Will 2:1 Skills: Scouting: 1 (Survey), Close Combat: 1 (Knives) ** Bugbear (Reegal) - The Bugbear alternates between hunting, eating, and lounging. Like the Hobgoblin, the Bugbear is most interested in his own survival. If the battle goes against them, he will just disappear into the woods. Body 2:2, Mind 3:1, Will 4:1 Skills: [Melee]: 3 [Long Spear], [Hunting]: 2 [Tracking], [Stalking], [Survival]: 2 [Find Shelter], [Live off the Land]. ** Hobgoblin (Gemste) - The Hobgoblin is very pleased with her plan to use the ventilation shaft and hopes to expand it sufficiently for a future raiding force that she hopes to lead. Though, she is a skilled fighter, she has higher ambitions than an early grave and is quick to parley if overwhelmed. Body 8:1, Mind 6:1, Will 5:1 Skills: Melee: 3 (Swords), Armor: 2 (Scale), Leadership: 2 (Command)"))
nx/tactics/books/gettingstarted / scenario-murin-a0
Description:
Constant Name:
  • scenario-murin-a0
Type:
  • nx/tactics/base/scenario
Usage/Test Cases:
Source Code:
  • (const scenario-murin-a0 : base/scenario (base/scenario :summary "* Prologue - You've been traveling for a while. Odd jobs here and there have kept you fed, but no opportunity has paid off so far. Your funds are desperately low, and you have to consider giving up a life on the road for something more stable, at least for a while. * Setting - You've ended up among the Iron Cross Mountains. This used to be territory enthusiastically protected by the Dwarves who lived below, but thing have been quiet for a few years and human civilization is tentatively spreading into the area. There are said to be numerous mines and jewels to be found in these mountains, but so far they are just stories. You are currently traveling with a couple of religious aspirants and their fanatical followers. They claim to follow the Sun God and must follow him during the day. For some reason the truly feebleminded seem to gather together. Well, even if their beliefs are nonsense, their coin is real at least. * Plot Hooks - A young man (Jos Halslef) with a mule and cart approach from ahead. His clothes are well made but worn, and he does not appear threatening. He engages the group, but soon finds conversation with the aspirants to go nowhere. He suggests coming with him to Murinton."))
nx/tactics/books/gettingstarted / scenario-murin-a1
Description:
Constant Name:
  • scenario-murin-a1
Type:
  • nx/tactics/base/scenario
Usage/Test Cases:
Source Code:
  • (const scenario-murin-a1 : base/scenario (base/scenario :summary "* Murin Vale - Murin Vale is a misty depression huddled between stout Murin-Lead Mountain and the spiky Murin-Quartz Peak. A hundred years ago, this entire area was controlled by the Murin Dwarf Clan who served the [Dwarven Underking] far down the [Deep Roads]. However, long ago, the Dwarves withdrew without explanation. Murinton, their trading village, was adopted by the human traders who no longer had their main trading partner. * Plot Hooks - A rough trail leads through the wooded vale to a small abandoned town, though smoke can be seen rising from its center."))
nx/tactics/books/gettingstarted / scenario-murin-a2
Description:
Constant Name:
  • scenario-murin-a2
Type:
  • nx/tactics/base/scenario
Usage/Test Cases:
Source Code:
  • (const scenario-murin-a2 : base/scenario (base/scenario :summary "* Murinton - Within Murin Vale, at the base of Murin-Lead Mountain is the abandoned, Dwarven village of Murinton. A small populated outpost lies at its center. The outpost is dominated by the 20ft stone doors that lead into Murin-Lead Mountain. The massive doors are carved with dwarven artwork and sealed tight from within. The only occupied buildings are a general store, a smithy, a small grain mill, and some outlying farm houses. A winding stream runs down the mountain and powers the mill. * Personalities - Only 9 people live in this town though there is probably room for a hundred. ** Jen Halslef - Jen Halslef heads the outpost, negotiates deals, and runs the smithy when needed. She founded the town 2 years ago, taking advantage of the free property and safe territory. Maintaining the town has been difficult with so little resources, so she remains concerned for the town's future. Her smithy is dedicated to the god dwarven god Moradin, and has carved tablets around the walls describing smithing and calling on the blessings of Moradin. She was facinated and has been diligently following both to improve her smithing. Unknown to her, Moradin was intrigued by a human female follower and has blessed her. Skills: Tradeskills: 1 (Smithing), Channeling: 1 (Healing). ** Jos Halslef - Jen's twin brother runs the general store, trades with other villages, and keeps the books. The twins had brought a fair quantity of goods to start the town, but after 2 years resources are getting thin. Chicken, Bread, Jam, and Beer are the staple foods in town. Jos brings a homemade short spear with him when he travels and is passable at its use. Skills: Trade: 1 (Haggling), Melee: 1 (Spears). ** Silas and Marge Defold - This older couple keep the grain mill down by the winding stream. They mill the flour and brew beer. ** Mera Searf and Vela Tram - These two women run a wheat farm and bake bread to the west of the village. ** Thom, Janice, and Gwen Folken - A young couple with their 12 year old daughter run a small farm to the south. Thom hunts deer and rabbit which are plentiful in the nearby woods, while Janice and Gwen raise chickens. Gwen also gathers various berries and makes tasty jams. When food is sufficient, Thom with his woodsman's axe. Skills: Hunting: 1 (Snares), Ranged: 1 (Bows) * Missing Persons - Yesterday morning, the old mill was found abandoned. The miller and his wife were nowhere to be found, but some of their flour, wheat and beer were clearly dragged away, their living quarters were ransacked, and small blood stains were found. A search around the surrounding area left no clues. * Scouts - Recently a small band of [Darkling]s opened up a small ventilation tunnel from the Deep Roads. Three goblins had been scouting the area at night when they came across the mill. After some arguing, they broke in, captured the couple, searched the place for loot, and dragged away what they could. * Hidden Camp - They have a small camp hidden in the woods where they have tied up the couple and are doing their best to drink all the beer they stole and torment their prisoners. They intend to return to gather more loot. * Vent Base - Five miles away is the vent where the darklings broke through from the Deep Roads. An ambitious Hobgoblin leads the 3 Goblin Scouts, 2 Goblin Engineers, and a Bugbear Hunter. ** Goblin Engineers (Sgree, Dley) - The engineers are working to widen the vent. Body 3:1, Mind 2:1, Will 2:1 Skills: Mining (1), Melee: 1 (Picks) ** Goblin Scouts (Grot, Steg, Glel-Female) - The scouts are at the Hidden Camp. Body 3:1, Mind 2:1, Will 2:1 Skills: Scouting: 1 (Survey), Close Combat: 1 (Knives) ** Bugbear (Reegal) - The Bugbear alternates between hunting, eating, and lounging. Like the Hobgoblin, the Bugbear is most interested in his own survival. If the battle goes against them, he will just disappear into the woods. Body 2:2, Mind 3:1, Will 4:1 Skills: [Melee]: 3 [Long Spear], [Hunting]: 2 [Tracking], [Stalking], [Survival]: 2 [Find Shelter], [Live off the Land]. ** Hobgoblin (Gemste) - The Hobgoblin is very pleased with her plan to use the ventilation shaft and hopes to expand it sufficiently for a future raiding force that she hopes to lead. Though, she is a skilled fighter, she has higher ambitions than an early grave and is quick to parley if overwhelmed. Body 8:1, Mind 6:1, Will 5:1 Skills: Melee: 3 (Swords), Armor: 2 (Scale), Leadership: 2 (Command)"))
nx/tactics/books/giant_monsters
Description:
Package Name:
  • nx/tactics/books/giant_monsters
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_overview, chapter_daikaiju, chapter_giant_robots
Source Code:
  • (package nx/tactics/books/giant_monsters :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Giant Monsters" :image "GiantMonsters.jpg" :chaptermap (base/chaptermap "Overview" (chapter_overview) "Daikaiju" (chapter_daikaiju) "Giant Robots" (chapter_giant_robots) ))) (func chapter_overview : base/chapter (chapter :name "Overview" :sectionmap (sectionmap "Why Tactics:Giant Monsters?" (section :name "Why Tactics:Giant Monsters?")))) (func chapter_daikaiju : base/chapter (chapter :name "Daikaiju" :sectionmap (sectionmap "Human Forces" (section :name "Human Forces" :unitmap (unitmap :Bombers (unit :name "Bombers") :Helicopters (unit :name "Helicopters") :Fighters (unit :name "Fighters" :image "Modern/FighterToken.png") :Tanks (unit :name "Tanks" :image "Modern/TankToken.png") "Mobile Missile Launchers" (unit :name "Mobile Missile Launchers" :image "Modern/MobileMissileToken.png") :Missiles (unit :name "Missiles" :image "Modern/MissilesToken.png") "Dimension Tide" (unit :name "Dimension Tide" :image "Daikaiju/DimensionTide.png" :summary "* Creates a dimensional hole the size of a building. For the next few seconds, all matter nearby is sucked into the hole (presumably never to return). No one knows where the matter goes, but it is known that after the dimension tide passed a dimensional disturbance remained through which a creature passed onto our world.") "Type 66 Maser Cannon" (unit :name "Type 66 Maser Cannon" :image "Daikaiju/MaserCannonToken.png" :mass "80tons" :height "6m" :length "15m") "Super X" (unit :name "Super X" :image "Daikaiju/SuperXToken.png" :summary "* Flight at mach 1 * Cadmium Missiles * Laser Cannons * equipped with a wide variety of missiles * heat resistant layer" :mass "150tons" :height "11m" :length "27m") "Super X-II" (unit :name "Super X-II" :image "Daikaiju/SuperX2.png") "Super X-III" (unit :name "Super X-III" :image "Daikaiju/SuperX3Token.png" :summary "Flight at mach 1.7; can fire a Freezer Beam; equipped with Cadmium Missiles; heat resistant layer" :mass "220tons" :height "7.4m" :length "38.5m" :width "58.7m"))) "Allied Monsters" (section :name "Allied Monsters" :unitmap (unitmap :Gamera (unit :name "Gamera" :image "Daikaiju/GameraToken.png" :summary "* Flight at Mach 3.5 using rockets contained in limbs * Plasma fireballs * Elbow claws * Can open plates in his chest and fire a Mana Blast * Can swim at 180 knots * Burrowing ability * Able to absorb and manipulate fire * Can draw more power by establishing a link with a human host * Orign - Believed to be over 150 million years old and created by an ancient civilization as a guardian of the Earth. * Armor - So tough that it survived the shock of a nuclear weapon." :mass "120tons" :height "80m") "Mecha King Ghidorah" (unit :name "Mecha King Ghidorah" :image "Daikaiju/MechaKingGhidorahToken.png" :summary "Antigravity flight at mach 4; able to fire Gravity beams from its mouths on the left and right head; can fire a Laser Triple beam from the central head; equipped with Godzilla Capture Cables and the large Machine Hand restraint that can also discharge electricity" :mass "80ktons" :length "140m") :Mechagodzilla (unit :name "Mechagodzilla" :image "Daikaiju/MechaGodzillaToken.png" :summary "Flight at mach 2; Mega-Buster ray from mouth; paralysis missiles; Super Heat Shield NT-20, laser beam eyes; Plasma Grenade that fires energy absorbed by the Super Heat Shield; 'G-Crusher;' shock anchors and cables; dual Garuda shoulder mounted laser cannons" :mass "150ktons" :length "120m") :Mogera (unit :name "Mogera" :image "Daikaiju/MogeraToken.png" :summary "Flight at mach 1; can travel through space at mach 44; able to fire Plasma Laser Cannons from eyes; equipped with a rotating drill for a nose; able to fire a beam from its chest; can launch Spiral Grenade missiles from its hands; has treads under feet for faster movement on land; able to fire lasers from its two hands; can separate into the Star Falcon and Land Moguera" :mass "160ktons" :height "120m") :Mothra (unit :name "Mothra" :image "Daikaiju/MothraToken.png" :summary "* Flight at mach 3 * can travel through space * hurricane winds from wings * antenna ray-shooting beams * can release powder from her wings that will reflect energy attacks back on their source * able to conduct energy through its touch or release it as strands of lightning from her wings" :mass "20ktons" :length "65m") "Mothra, Larva" (unit :name "Mothra, Larva" :image "Daikaiju/MothraLarvaeToken.png" :summary "Web Attack" :mass "15ktons" :length "120m"))) "Enemy Monsters" (section :name "Enemy Monsters" :unitmap (unitmap :Battra (unit :name "Battra" :image "Daikaiju/BattraToken.png" :summary "Flight at mach 3; can travel through space; hurricane winds from wings; able to shoot Prism beams from eyes; can conduct energy through its touch" :mass "30ktons" :length "73m") "Battra, Larva" (unit :name "Battra, Larva" :image "Daikaiju/BattraLarvaeToken.png" :summary "Burrowing ability; adept swimmer; able to shoot Prism beams from horn and eyes; body can generate energy pulses to attack others with its touch" :mass "20ktons" :length "90m") :Biollante (unit :name "Biollante" :image "Daikaiju/Biollante.png") :Destroyah (unit :name "Destroyah" :image "Daikaiju/Destroyah.png") :Godzilla (unit :name "Godzilla" :image "Daikaiju/GodzillaToken.png" :summary "* Superheated atomic breath capable of devastating whole city blocks * Remarkably fast regenerative healing factor * Incredibly strong, even for his size * Able to swim at 40 knots * Though extremely powerful, possesses a few weaknesses: has an aversion to electricity, can be weakened by massive amounts of cadmium and other radiation-retardants" :mass "60ktons" :height "100m" :unitskillmap (unitskillmap "Radiation Powers" (unitskill :name "Radiation Powers" :unitabilitymap (unitabilitymap "Radiation Beam" (unitability :name "Radiation Beam") "Radiation Blast" (unitability :name "Radiation Blast"))))) :Gyaos (unit :name "Gyaos" :image "Daikaiju/GyaosToken.png" :summary "* Flight at mach 4.2 * Hurricane winds from wings * A shrill cry serves as an ultrasonic scalpel which amounts to approximately 3 million Hz, and can also cut through solid steel bards with a thickness of 30cm. * Can reproduce asexually * Gyoas easily adapts to its surroundings, growing exponentially in size. * Gyaos has one absolutely perfect pair of chromosomes. * Origin - Gyaos was the product of genetic engineering by a super-ancient civilization. * Vision - As a nocturnal creature, Gyaos avoids and dislikes light." :mass "75tons" :height "85m" :width "185m") "King Ghidorah" (unit :name "King Ghidorah" :image "Daikaiju/KingGhidorahToken.png" :summary "* Speed Mach 3 * Able to fire Gravity beams from its mouths * hurricane winds from wings * constricting necks" :mass "70ktons" :height "140m") :Legion (unit :name "Legion" :image "Daikaiju/LegionToken.png" :reference "And he asked him, What is thy name? And he answered, saying, My name is Legion: for we are many. - New Testament - Mark 5:9" :summary "* Silicone-based life form with cell structure like transistors * Joints operate by pressurized gas. * Communicates via electromagnetic waves * Launches seeds into orbit by generating a high oxygen area and then detonating it. Flight at mach 1; sharp horn, which can open to fire a beam; horn generates a tremendous amount of heat after firing; can burrow and travel, underground, at a speed of 50 kilometers an hour; able to produce up to 100 Symbiotic Legion an hour; can create a magnetic force shield to protect the front of its body using the ten smaller legs near its head; if its horn is destroyed Legion can fire off strands of energy that are able to pierce and burn objects Eye: Legion can see electro-magnetic activity. Voice: The Legion Mother's microwave blast, which eminates from her huge tusks is powerful enough to vaporize a type-90 tank with one blow. Ovaries: Legion's ovaries house a hive of countless soldiers that can be ordered to attack instantly. It is estimated that she can reproduce approximately 100 soldiers every hour. Appendages: Legion's many appendages are used in both battle and burrowing; while they quickly assist in breaking up even the toughest earth, these deadly arms were seen puncturing Gamera's shell. Armored Exoskeleton: Made of a hard silicone-like resin, Legion's exo-skeleton is not only an insulator but protects her body from attacks. Interference wave-blast: Generated in the shape of a parabola, it acts as a shield. Legion was seen disabling the automatic targeting system of missles with this abilaity." :mass "600tons" :height "140m") :Megaguirus (unit :name "Megaguirus" :image "Daikaiju/MegaguirusToken.png" :summary "Flight at mach 4; hurricane winds and sonic waves from wings; claws; stinger with the ability to drain power; claw tipped wings; able to use stinger to discharge a blast of energy comprised of its opponent's beam weapon which it absorbed; flight causes electronic disturbances" :mass "12ktons" :length "50m")))))) (func chapter_giant_robots : base/chapter (chapter :name "Giant Robots" :sectionmap (sectionmap "Allied Robots" (section :name "Allied Robots" :unitmap (unitmap "Getter 1" (unit :name "Getter 1" :image "Daikaiju/Getter_1.png" :summary "* Swimming: 18knots * Flight: Mach 2" :speed "420kph" :mass "220tons" :height "38m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Beam * Tomahawk Boomerang" :level "5"))) "Getter 2" (unit :name "Getter 2" :image "Daikaiju/Getter_2.png" :summary "* Swimming: 18knots * Ground Speed: Mach 3! * Tunnelling: 300kph" :speed "420kph" :mass "220tons" :height "38m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Drill * Drill Missile" :level "5"))) "Getter 3" (unit :name "Getter 3" :image "Daikaiju/Getter_3.png" :summary "* Swimming: 28knots * Flight: Mach 3" :speed "150kph" :mass "220tons" :height "20m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Missile" :level "5"))) "Getter G Dragon" (unit :name "Getter G Dragon" :image "Daikaiju/GetterG_Dragon.png" :summary "* Flight: Mach 3.5" :mass "330tons" :height "50m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Beam * Double Tomahawk Boomerang" :level "5"))) "Getter G Liger" (unit :name "Getter G Liger" :image "Daikaiju/GetterG_Liger.png" :summary "* Swimming: 18knots * Flight: Mach 2 * Ground Speed: Mach 3! * Tunnelling: 800kph" :mass "330tons" :height "50m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Liger Missile" :level "5"))) "Getter G Poseidon" (unit :name "Getter G Poseidon" :image "Daikaiju/GetterG_Poseidon.png" :mass "330tons" :height "40m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Finger Net * Strong Missile * Getter Cyclone" :level "5"))) "Great Mazinger" (unit :name "Great Mazinger" :image "Daikaiju/GreatMazinger.png" :summary "* Swimming: 25knots * Flight: Mach 4 (Mach 5 w/Great Booster) * Ceiling: 50km * Jump: 30m * Dive Depth: 8km" :speed "450kph" :mass "32tons" :height "25m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Navel Missile * Atomic Punch * Great Boomerang * Scramble Cutter - Attack with Great Booster * Great Typhoon * Breast Burn * Thunder Break" :level "5"))) :Grendizer (unit :name "Grendizer" :image "Daikaiju/Grendizer.png") "Mazinger Z" (unit :name "Mazinger Z" :image "Daikaiju/MazingerZ.png" :summary "* Swimming: 20knots * Flight: Mach 3 w/Jet Scrander" :speed "360kph" :mass "20tons" :height "18m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Koushiryoku Beam Mazinger Z can channel pure Photonic Energy through its eyes, unleashing a pair of powerful lasers, which are said to be equal to 10 tons of explosives. This was originally considered Mazinger Z's weakest attack, however, in Shin Mazinger the power of this attacked is greatly magnified to the point where it can now be considered the strongest. Missile Punch Mazinger Z mounts a missile launch bay in its belly, which can store several missiles. Rocket Punch Mazinger Z's eponymous attack; it fires off its forearm like a missile, punching straight through an enemy before returning and docking with the elbow again. Rust Hurricane The powerful turbines in Mazinger Z's head create gale-force winds, launching them through the mouth grill. The attack includes highly corrosive particles (thought to be ionized hydrogen), almost instantaneously causing an enemy to rust over and fall apart. Breast Fire The large red fins on Mazinger Z's chest act as heat sinks for its Photonic Energy reactor. Mazinger Z can fire off this stored thermal energy as a powerful, 30,000 degree white-hot beam that melts almost anything. In the Super Robot Wars series, Kouji and Tetsuya Tsurugi can use the Breast Fire and Breast Burn respectively in the Double Burning Fire attack, which they use in the MX version of the Final Dynamic Special (also involving Grendizer and a Getter). Kyoukagata Rocket Punch Mazinger Z's Rocket Punch was later reinforced with stronger armor, giving it a more powerful punch. Iron Cutter An improved Rocket Punch in which the forearm sprouts a pair of axe-like blades, allowing it to cut and slash as well as bludgeon. This is the only weapon in Mazinger Z:s arsenal which can damage Super-alloy Z. Drill Missile A barrage of small, needle-like missiles fired from ports in Mazinger's upper arms. This attack was typically performed after the Rocket Punch but before the forearm had returned. Daisharin Rocket Punch Mazinger Z spins its arms rapidly, building up momentum before firing off both fists in standard Rocket Punch fashion. Reitou Beam Mazinger unleashes a blast of intense cold; this attack was alternately fired from the mouth grill or the spikes on the sides of Mazinger's head. Finger Missile A rarely-used attack where Mazinger fires the last joint of its fingers as miniature missiles." :level "5"))) :Raideen (unit :name "Raideen" :image "Daikaiju/Raideen.png" :summary "Flight: Mach 10 in God Bird form" :mass "350tons" :height "52m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* God Missile * God Arrow" :level "5"))) :Voltron (unit :name "Voltron" :image "Daikaiju/Voltron.png" :mass "700tons" :height "60m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Wing Boomerang - Boomerang attack from the wings of GoLion. * Space Cutter - Spinning Blades. * Eye Flash - Beams fired from the eyes of GoLion. * Hurricane Attack - Wind attack similar to Daimos Blizzard, but not as strong. * Laser Magnum - Laser-like bullets fired from the mouth of the Green Lion. * Fire Tornado - A burst of flame emits from the mouth of the Red Lion. * Cross Beam - Cross-shaped boomerang fired from the chest. * Gatling Missiles - Small missiles fired from the legs. * Electromagnetic Lance - Weapon used as a spear at times. * Foot Missile - Missiles fired from the mouths of the Blue and Yellow Lions. * Four Lion Attack - The 'Lion Head Attack' 100-Ton Punch. * Grand Fire - A stream of flames fired from the mouths of the Blue and Yellow Lions" :level "5"))))))))
nx/tactics/books/giant_monsters / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Giant Monsters" :image "GiantMonsters.jpg" :chaptermap (base/chaptermap "Overview" (chapter_overview) "Daikaiju" (chapter_daikaiju) "Giant Robots" (chapter_giant_robots) )))
nx/tactics/books/giant_monsters / chapter_overview
Description:
Function Name:
  • chapter_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_overview : base/chapter (chapter :name "Overview" :sectionmap (sectionmap "Why Tactics:Giant Monsters?" (section :name "Why Tactics:Giant Monsters?"))))
nx/tactics/books/giant_monsters / chapter_daikaiju
Description:
Function Name:
  • chapter_daikaiju
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_daikaiju : base/chapter (chapter :name "Daikaiju" :sectionmap (sectionmap "Human Forces" (section :name "Human Forces" :unitmap (unitmap :Bombers (unit :name "Bombers") :Helicopters (unit :name "Helicopters") :Fighters (unit :name "Fighters" :image "Modern/FighterToken.png") :Tanks (unit :name "Tanks" :image "Modern/TankToken.png") "Mobile Missile Launchers" (unit :name "Mobile Missile Launchers" :image "Modern/MobileMissileToken.png") :Missiles (unit :name "Missiles" :image "Modern/MissilesToken.png") "Dimension Tide" (unit :name "Dimension Tide" :image "Daikaiju/DimensionTide.png" :summary "* Creates a dimensional hole the size of a building. For the next few seconds, all matter nearby is sucked into the hole (presumably never to return). No one knows where the matter goes, but it is known that after the dimension tide passed a dimensional disturbance remained through which a creature passed onto our world.") "Type 66 Maser Cannon" (unit :name "Type 66 Maser Cannon" :image "Daikaiju/MaserCannonToken.png" :mass "80tons" :height "6m" :length "15m") "Super X" (unit :name "Super X" :image "Daikaiju/SuperXToken.png" :summary "* Flight at mach 1 * Cadmium Missiles * Laser Cannons * equipped with a wide variety of missiles * heat resistant layer" :mass "150tons" :height "11m" :length "27m") "Super X-II" (unit :name "Super X-II" :image "Daikaiju/SuperX2.png") "Super X-III" (unit :name "Super X-III" :image "Daikaiju/SuperX3Token.png" :summary "Flight at mach 1.7; can fire a Freezer Beam; equipped with Cadmium Missiles; heat resistant layer" :mass "220tons" :height "7.4m" :length "38.5m" :width "58.7m"))) "Allied Monsters" (section :name "Allied Monsters" :unitmap (unitmap :Gamera (unit :name "Gamera" :image "Daikaiju/GameraToken.png" :summary "* Flight at Mach 3.5 using rockets contained in limbs * Plasma fireballs * Elbow claws * Can open plates in his chest and fire a Mana Blast * Can swim at 180 knots * Burrowing ability * Able to absorb and manipulate fire * Can draw more power by establishing a link with a human host * Orign - Believed to be over 150 million years old and created by an ancient civilization as a guardian of the Earth. * Armor - So tough that it survived the shock of a nuclear weapon." :mass "120tons" :height "80m") "Mecha King Ghidorah" (unit :name "Mecha King Ghidorah" :image "Daikaiju/MechaKingGhidorahToken.png" :summary "Antigravity flight at mach 4; able to fire Gravity beams from its mouths on the left and right head; can fire a Laser Triple beam from the central head; equipped with Godzilla Capture Cables and the large Machine Hand restraint that can also discharge electricity" :mass "80ktons" :length "140m") :Mechagodzilla (unit :name "Mechagodzilla" :image "Daikaiju/MechaGodzillaToken.png" :summary "Flight at mach 2; Mega-Buster ray from mouth; paralysis missiles; Super Heat Shield NT-20, laser beam eyes; Plasma Grenade that fires energy absorbed by the Super Heat Shield; 'G-Crusher;' shock anchors and cables; dual Garuda shoulder mounted laser cannons" :mass "150ktons" :length "120m") :Mogera (unit :name "Mogera" :image "Daikaiju/MogeraToken.png" :summary "Flight at mach 1; can travel through space at mach 44; able to fire Plasma Laser Cannons from eyes; equipped with a rotating drill for a nose; able to fire a beam from its chest; can launch Spiral Grenade missiles from its hands; has treads under feet for faster movement on land; able to fire lasers from its two hands; can separate into the Star Falcon and Land Moguera" :mass "160ktons" :height "120m") :Mothra (unit :name "Mothra" :image "Daikaiju/MothraToken.png" :summary "* Flight at mach 3 * can travel through space * hurricane winds from wings * antenna ray-shooting beams * can release powder from her wings that will reflect energy attacks back on their source * able to conduct energy through its touch or release it as strands of lightning from her wings" :mass "20ktons" :length "65m") "Mothra, Larva" (unit :name "Mothra, Larva" :image "Daikaiju/MothraLarvaeToken.png" :summary "Web Attack" :mass "15ktons" :length "120m"))) "Enemy Monsters" (section :name "Enemy Monsters" :unitmap (unitmap :Battra (unit :name "Battra" :image "Daikaiju/BattraToken.png" :summary "Flight at mach 3; can travel through space; hurricane winds from wings; able to shoot Prism beams from eyes; can conduct energy through its touch" :mass "30ktons" :length "73m") "Battra, Larva" (unit :name "Battra, Larva" :image "Daikaiju/BattraLarvaeToken.png" :summary "Burrowing ability; adept swimmer; able to shoot Prism beams from horn and eyes; body can generate energy pulses to attack others with its touch" :mass "20ktons" :length "90m") :Biollante (unit :name "Biollante" :image "Daikaiju/Biollante.png") :Destroyah (unit :name "Destroyah" :image "Daikaiju/Destroyah.png") :Godzilla (unit :name "Godzilla" :image "Daikaiju/GodzillaToken.png" :summary "* Superheated atomic breath capable of devastating whole city blocks * Remarkably fast regenerative healing factor * Incredibly strong, even for his size * Able to swim at 40 knots * Though extremely powerful, possesses a few weaknesses: has an aversion to electricity, can be weakened by massive amounts of cadmium and other radiation-retardants" :mass "60ktons" :height "100m" :unitskillmap (unitskillmap "Radiation Powers" (unitskill :name "Radiation Powers" :unitabilitymap (unitabilitymap "Radiation Beam" (unitability :name "Radiation Beam") "Radiation Blast" (unitability :name "Radiation Blast"))))) :Gyaos (unit :name "Gyaos" :image "Daikaiju/GyaosToken.png" :summary "* Flight at mach 4.2 * Hurricane winds from wings * A shrill cry serves as an ultrasonic scalpel which amounts to approximately 3 million Hz, and can also cut through solid steel bards with a thickness of 30cm. * Can reproduce asexually * Gyoas easily adapts to its surroundings, growing exponentially in size. * Gyaos has one absolutely perfect pair of chromosomes. * Origin - Gyaos was the product of genetic engineering by a super-ancient civilization. * Vision - As a nocturnal creature, Gyaos avoids and dislikes light." :mass "75tons" :height "85m" :width "185m") "King Ghidorah" (unit :name "King Ghidorah" :image "Daikaiju/KingGhidorahToken.png" :summary "* Speed Mach 3 * Able to fire Gravity beams from its mouths * hurricane winds from wings * constricting necks" :mass "70ktons" :height "140m") :Legion (unit :name "Legion" :image "Daikaiju/LegionToken.png" :reference "And he asked him, What is thy name? And he answered, saying, My name is Legion: for we are many. - New Testament - Mark 5:9" :summary "* Silicone-based life form with cell structure like transistors * Joints operate by pressurized gas. * Communicates via electromagnetic waves * Launches seeds into orbit by generating a high oxygen area and then detonating it. Flight at mach 1; sharp horn, which can open to fire a beam; horn generates a tremendous amount of heat after firing; can burrow and travel, underground, at a speed of 50 kilometers an hour; able to produce up to 100 Symbiotic Legion an hour; can create a magnetic force shield to protect the front of its body using the ten smaller legs near its head; if its horn is destroyed Legion can fire off strands of energy that are able to pierce and burn objects Eye: Legion can see electro-magnetic activity. Voice: The Legion Mother's microwave blast, which eminates from her huge tusks is powerful enough to vaporize a type-90 tank with one blow. Ovaries: Legion's ovaries house a hive of countless soldiers that can be ordered to attack instantly. It is estimated that she can reproduce approximately 100 soldiers every hour. Appendages: Legion's many appendages are used in both battle and burrowing; while they quickly assist in breaking up even the toughest earth, these deadly arms were seen puncturing Gamera's shell. Armored Exoskeleton: Made of a hard silicone-like resin, Legion's exo-skeleton is not only an insulator but protects her body from attacks. Interference wave-blast: Generated in the shape of a parabola, it acts as a shield. Legion was seen disabling the automatic targeting system of missles with this abilaity." :mass "600tons" :height "140m") :Megaguirus (unit :name "Megaguirus" :image "Daikaiju/MegaguirusToken.png" :summary "Flight at mach 4; hurricane winds and sonic waves from wings; claws; stinger with the ability to drain power; claw tipped wings; able to use stinger to discharge a blast of energy comprised of its opponent's beam weapon which it absorbed; flight causes electronic disturbances" :mass "12ktons" :length "50m"))))))
nx/tactics/books/giant_monsters / chapter_giant_robots
Description:
Function Name:
  • chapter_giant_robots
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_giant_robots : base/chapter (chapter :name "Giant Robots" :sectionmap (sectionmap "Allied Robots" (section :name "Allied Robots" :unitmap (unitmap "Getter 1" (unit :name "Getter 1" :image "Daikaiju/Getter_1.png" :summary "* Swimming: 18knots * Flight: Mach 2" :speed "420kph" :mass "220tons" :height "38m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Beam * Tomahawk Boomerang" :level "5"))) "Getter 2" (unit :name "Getter 2" :image "Daikaiju/Getter_2.png" :summary "* Swimming: 18knots * Ground Speed: Mach 3! * Tunnelling: 300kph" :speed "420kph" :mass "220tons" :height "38m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Drill * Drill Missile" :level "5"))) "Getter 3" (unit :name "Getter 3" :image "Daikaiju/Getter_3.png" :summary "* Swimming: 28knots * Flight: Mach 3" :speed "150kph" :mass "220tons" :height "20m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Missile" :level "5"))) "Getter G Dragon" (unit :name "Getter G Dragon" :image "Daikaiju/GetterG_Dragon.png" :summary "* Flight: Mach 3.5" :mass "330tons" :height "50m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Getter Beam * Double Tomahawk Boomerang" :level "5"))) "Getter G Liger" (unit :name "Getter G Liger" :image "Daikaiju/GetterG_Liger.png" :summary "* Swimming: 18knots * Flight: Mach 2 * Ground Speed: Mach 3! * Tunnelling: 800kph" :mass "330tons" :height "50m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Liger Missile" :level "5"))) "Getter G Poseidon" (unit :name "Getter G Poseidon" :image "Daikaiju/GetterG_Poseidon.png" :mass "330tons" :height "40m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Finger Net * Strong Missile * Getter Cyclone" :level "5"))) "Great Mazinger" (unit :name "Great Mazinger" :image "Daikaiju/GreatMazinger.png" :summary "* Swimming: 25knots * Flight: Mach 4 (Mach 5 w/Great Booster) * Ceiling: 50km * Jump: 30m * Dive Depth: 8km" :speed "450kph" :mass "32tons" :height "25m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Navel Missile * Atomic Punch * Great Boomerang * Scramble Cutter - Attack with Great Booster * Great Typhoon * Breast Burn * Thunder Break" :level "5"))) :Grendizer (unit :name "Grendizer" :image "Daikaiju/Grendizer.png") "Mazinger Z" (unit :name "Mazinger Z" :image "Daikaiju/MazingerZ.png" :summary "* Swimming: 20knots * Flight: Mach 3 w/Jet Scrander" :speed "360kph" :mass "20tons" :height "18m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Koushiryoku Beam Mazinger Z can channel pure Photonic Energy through its eyes, unleashing a pair of powerful lasers, which are said to be equal to 10 tons of explosives. This was originally considered Mazinger Z's weakest attack, however, in Shin Mazinger the power of this attacked is greatly magnified to the point where it can now be considered the strongest. Missile Punch Mazinger Z mounts a missile launch bay in its belly, which can store several missiles. Rocket Punch Mazinger Z's eponymous attack; it fires off its forearm like a missile, punching straight through an enemy before returning and docking with the elbow again. Rust Hurricane The powerful turbines in Mazinger Z's head create gale-force winds, launching them through the mouth grill. The attack includes highly corrosive particles (thought to be ionized hydrogen), almost instantaneously causing an enemy to rust over and fall apart. Breast Fire The large red fins on Mazinger Z's chest act as heat sinks for its Photonic Energy reactor. Mazinger Z can fire off this stored thermal energy as a powerful, 30,000 degree white-hot beam that melts almost anything. In the Super Robot Wars series, Kouji and Tetsuya Tsurugi can use the Breast Fire and Breast Burn respectively in the Double Burning Fire attack, which they use in the MX version of the Final Dynamic Special (also involving Grendizer and a Getter). Kyoukagata Rocket Punch Mazinger Z's Rocket Punch was later reinforced with stronger armor, giving it a more powerful punch. Iron Cutter An improved Rocket Punch in which the forearm sprouts a pair of axe-like blades, allowing it to cut and slash as well as bludgeon. This is the only weapon in Mazinger Z:s arsenal which can damage Super-alloy Z. Drill Missile A barrage of small, needle-like missiles fired from ports in Mazinger's upper arms. This attack was typically performed after the Rocket Punch but before the forearm had returned. Daisharin Rocket Punch Mazinger Z spins its arms rapidly, building up momentum before firing off both fists in standard Rocket Punch fashion. Reitou Beam Mazinger unleashes a blast of intense cold; this attack was alternately fired from the mouth grill or the spikes on the sides of Mazinger's head. Finger Missile A rarely-used attack where Mazinger fires the last joint of its fingers as miniature missiles." :level "5"))) :Raideen (unit :name "Raideen" :image "Daikaiju/Raideen.png" :summary "Flight: Mach 10 in God Bird form" :mass "350tons" :height "52m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* God Missile * God Arrow" :level "5"))) :Voltron (unit :name "Voltron" :image "Daikaiju/Voltron.png" :mass "700tons" :height "60m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Wing Boomerang - Boomerang attack from the wings of GoLion. * Space Cutter - Spinning Blades. * Eye Flash - Beams fired from the eyes of GoLion. * Hurricane Attack - Wind attack similar to Daimos Blizzard, but not as strong. * Laser Magnum - Laser-like bullets fired from the mouth of the Green Lion. * Fire Tornado - A burst of flame emits from the mouth of the Red Lion. * Cross Beam - Cross-shaped boomerang fired from the chest. * Gatling Missiles - Small missiles fired from the legs. * Electromagnetic Lance - Weapon used as a spear at times. * Foot Missile - Missiles fired from the mouths of the Blue and Yellow Lions. * Four Lion Attack - The 'Lion Head Attack' 100-Ton Punch. * Grand Fire - A stream of flames fired from the mouths of the Blue and Yellow Lions" :level "5"))))))))
nx/tactics/books/high_technology
Description:
Package Name:
  • nx/tactics/books/high_technology
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_high_tech_overview, chapter_cyberpunk_campaign, chapter_high_tech_rules, chapter_high_tech_equipment, chapter_high_tech_spacecraft, chapter_high_tech_aircraft, chapter_high_tech_heavy_armor, chapter_space_colonies, chapter_car_wars, chapter_cyberpunk, chapter_jovian_chronicles, chapter_mobile_suit_gundam_equipment, chapter_mobile_suit_gundam_units, chapter_terminator
Source Code:
  • (package nx/tactics/books/high_technology :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "High Technology" :image "HighTech.jpg" :chaptermap (base/chaptermap "High Tech Overview" (chapter_high_tech_overview) "Cyberpunk Campaign" (chapter_cyberpunk_campaign) "High Tech Rules" (chapter_high_tech_rules) "High Tech Equipment" (chapter_high_tech_equipment) "High Tech Spacecraft" (chapter_high_tech_spacecraft) "High Tech Aircraft" (chapter_high_tech_aircraft) "High Tech Heavy Armor" (chapter_high_tech_heavy_armor) "Space Colonies" (chapter_space_colonies) "Car Wars" (chapter_car_wars) "Cyberpunk" (chapter_cyberpunk) "Jovian Chronicles" (chapter_jovian_chronicles) "Mobile Suit Gundam Equipment" (chapter_mobile_suit_gundam_equipment) "Mobile Suit Gundam Units" (chapter_mobile_suit_gundam_units) "Terminator" (chapter_terminator) ))) (func chapter_high_tech_overview : base/chapter (chapter :name "High Tech Overview" :sectionmap (sectionmap "Why Tactics: High Technology?" (section :name "Why Tactics: High Technology?")))) (func chapter_cyberpunk_campaign : base/chapter (chapter :name "Cyberpunk Campaign" :sectionmap (sectionmap "Cyberpunk Overview" (section :name "Cyberpunk Overview" :summary "* Events Leading to War * Overview of the War * Aftermath") "Car Wars" (section :name "Car Wars" :scenariomap (scenariomap "Escort Duty" (scenario :name "Escort Duty" :summary "* An Agricorp has commissioned some independents to covertly escort an unmarked tractor-trailer 1900 miles from their site in La Jolla to a USDA facility near Nashville, TN. * A rival has sent its own independents to get their hands on the cargo. * Note: The cargo/escort is a decoy for the real shipment." :teammap (teammap :Escort (team :name "Escort" :completevictory "$1000/each if cargo delivered intact." :forces "* 1 Tractor-trailer * 2 Sedans" :partialvictory "Prevent enemy from taking any of the shipment.") :Interceptors (team :name "Interceptors" :completevictory "Capture the entire shipment." :forces "* 1 Van * 3 Sedans" :partialvictory "Capture any of the shipment."))) "Safe House" (scenario :name "Safe House" :summary "* A small-time fixer has evidence of the identity of a cyber serial killer, the Night City Stalker. Two news organizations are bidding on the deal, but the loser contacted the Stalker out of spite.") "Toxic Spill" (scenario :name "Toxic Spill" :summary "* While guarding a 200 person Nomad camp, the well drill discovers a hidden toxic waste dump. Alarms alert the dumping company that their little secret has been discovered, so they send a team to 'clean up' the problem. * The whole Nomad camp must evacuate 3 miles to town before they are silenced, unfortunately they do not have enough vehicles to do it in one trip.") "The Heist" (scenario :name "The Heist" :summary "* In a winter storm, a shipment of Palladium is diverted to a small warehouse in a corporate park. It will not be moved until the weather turns, so it is a perfect opportunity to break in and steal the goods. * During the storm, the skies are dangerous, and even the roads are fairly dicey. Snowmobile are certainly an option." :teammap (teammap :Thieves (team :name "Thieves" :completevictory "Capture the whole shipment." :forces "* 10 Thieves * 5 Snowmobiles * 3 Sedans" :partialvictory "Take at least half of the shipment.") :Guards (team :name "Guards" :completevictory "Protect the entire shipment." :forces "* 10 Armed and Armored Guards * 10 Unarmored, sleeping Guards * 5 Sedans * 2 Helicopters" :partialvictory "Protect at least half of the shipment.")))))))) (func chapter_high_tech_rules : base/chapter (chapter :name "High Tech Rules" :sectionmap (sectionmap :Cyberspace (section :name "Cyberspace" :summary "* A huge, interconnected series of computer networks, software systems, and virtual realities that form a continuous digital universe of nearly infinite scope. * Interface programs sort through this information and produce a virtual world tailored to the user's desire. The most common interface is that of digital cities that mirror their real world equivalents, but display computer systems, data blocks, and information pathways instead of buildings, people, and highways. * Nodes - Nodes in Cyberspace are locations in Cyberspace. Nodes include Telecom lines, Satellite Uplinks, Firewalls, Security Cameras, Remote Controls, Databases, and Virtual Realities. Different Nodes usually require valid security or payment to use. Nodes can also hold nasty surprises including alarms and defense programs. * Movement - Distances are insignificant in Cyberspace. Instead, movement is measured in tasks. Any program can perform a number of tasks each turn equal to [Netrunning] skill. Each node entered in Cyberspace is a task. Performing any [Action] at a node is also a task." :titles "The Digital Web, The Net, The Network, World Wide Web, The Web")))) (func chapter_high_tech_equipment : base/chapter (chapter :name "High Tech Equipment" :sectionmap (sectionmap "Consumer Goods" (section :name "Consumer Goods" :itemmap (itemmap :Autobike (item :name "Autobike" :summary "* Autonomous motorcycle used for most transit. A small fraction of the Autocar fleet is filled by Autobikes. Though slightly cheaper to rent than Autocars and better in tight traffic, most people use Autocars exclusively.") :Autocar (item :name "Autocar" :summary "* Autonomous car used for most transit. Ordinary citizens rarely own their own vehicles, instead they summon an automated rental car with their phone that takes them directly to their destination. Autocars are parked throughout populated areas, so summoning one usually takes seconds. Autocars coordinate with each other and can travel at high speeds in tight traffic without incident. * History - Automated cars took over major cities within years of their invention. They solved traffic, parking, accident, and environmental problems all at once while offering cheaper per mile travel than owning your own vehicle. They rapidly made taxi and ridesharing solutions obsolete, and it soon became illegal for a human to drive a vehicle because autocars were so much safer. Soon all mass transit systems reduced down to autocars and some autobikes.") :Cyberchip (item :name "Cyberchip" :summary "* Standard memory/application chip. All media is stored on cyberchips and can be played by simply plugging the chip into any standard interface. * Plugging cyberchips directly into one's body is called 'Chipping In'.") :Cybercycle (item :name "Cybercycle" :summary "* High performance motorcycle that allows direct neural interface.") :Cyberdeck (item :name "Cyberdeck") :Cyberphone (item :name "Cyberphone") "Direct Neural Interface" (item :name "Direct Neural Interface" :summary "* This implant includes a processor chip and interface plugs that connect directly to the brain. The chip contains an artificial intelligence avatar program that learns from and emulates the user's personality. This AI can then enter cyberspace or control cybernetic equipment at the speed of a computer program while retaining the decision making logic of its user. Further, the AI regularly updates the user with its decisions, and gathers the user's impression, so it can make further decisions. While 'Jacked In' the user is motionless as his mind is overwhelmed with information from the AI. DNI's are powerful tools, but are also risky technology. Since information floods into the mind at incredible speeds, any malfunction in the DNI or the AI can cause sanity threatening sensory overload or sensory deprivation that seem to last for days in mere seconds. * Burn Out - losing one's mind to DNI failure.") :Flitter (item :name "Flitter" :summary "* Light, one-man helicopter" :titles "Aerogyro, Gyrocopter") "Hover Board" (item :name "Hover Board") "Mag Lev Train" (item :name "Mag Lev Train" :summary "* Speed: 200mph") :Metrocar (item :name "Metrocar" :summary "* Ultra-subcompact reverse trike.") "Mister Fusion" (item :name "Mister Fusion" :image "HighTech/MrFusion.jpg") "Quad ATV" (item :name "Quad ATV") "Private Quadcopter" (item :name "Private Quadcopter") :Skimmer (item :name "Skimmer" :summary "* The modern hovercraft creates a tightly computer-controlled air pocket beneath it that allows the Skimmer to move quickly over land or sea. The Skimmer manipulates the pocket to change direction. Though fast and all-terrain, they are not as quiet, maneuverable, or energy efficient as Autocars, so their use is limited to lightly populated areas." :titles "Ground Effect Vehicle, Hovercraft"))) "Corporate Equipment" (section :name "Corporate Equipment" :itemmap (itemmap "Cargo Osprey" (item :name "Cargo Osprey") "Corporate Limosine" (item :name "Corporate Limosine") "Corporate Osprey" (item :name "Corporate Osprey" :summary "* Speed: 275knots * Range: 600miles * The Osprey is a tilt-wing propeller plane that is used as a corporate commuter plane. Like a helicopter, it can land on buildings, and it can also fly directly to nearby cities.") "Personal Aerodyne" (item :name "Personal Aerodyne" :summary "* Speed: 250mph * Range: 400miles") :Transjet (item :name "Transjet" :summary "* The Transjet is the standard commercial airliner across the world. It flies up beyond the atmosphere where it can travel at extreme speeds and then lands anywhere in the world within an hour." :titles "Hopper, Transatmospheric Jet"))) "Police Equipment" (section :name "Police Equipment" :itemmap (itemmap :Aerodyne (item :name "Aerodyne" :reference "Blade Runner" :summary "* Speed: 350mph * Range: 400miles * Short and bulbous, the Aerodyne has the aerodynamics of a brick. It relies on its huge jets to fly." :titles "Air Car, Pegasus"))) "Military Equipment" (section :name "Military Equipment" :unitmap (unitmap "Combat Aerodyne" (unit :name "Combat Aerodyne" :summary "* Speed: 480mph * Range: 600miles * Armored combat Aerodyne") "Barracuda Drone Submarine" (unit :name "Barracuda Drone Submarine" :summary "* Carrier borne small, unmanned, high speed, attack submarine. It is designed as a long range drone that continually scouts the water surrounding a capital ship. Its tip is a HEAT shaped explosive, and it uses a particularly volitle fuel mix, so that it can be used as a torpedo if any serious threat enters its sphere of control.") "Manta VTOL Fighter" (unit :name "Manta VTOL Fighter" :reference "* Carrier Command: Gaea Mission" :summary "* Carrier borne VTOL Fighter. It has four redirectable thrusters that allow it to hover at any altitude including directly over water. It is fully sealed and can be launched and recovered underwater, but its underwater speed is poor. Its thrust is sufficient to ferry a Sea Lion ATV or other medium vehicle when necessary. It has a small, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, bombs, repair, apc, recon, science, transport, and more. Its mission module is interchangable with the Sea Lion Amphibious Tank.") "Pelican VTOL Heavy Transport" (unit :name "Pelican VTOL Heavy Transport" :summary "* Land based VTOL transport plane. It has four redirectable thrusters that allow it to hover at any altitude including directly over water. It is fully sealed and can land and take off from water. It has a single landing deck on top to facilitate in-air refuelling and resupply of VTOL fighters. It has a large, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, bombs, repair, apc, recon, science, transport, and more. It is powerful enough to carry 1 heavy tank, 2 medium tanks, or 3 APCs. It is, however, a large target with limited armor, so it is not suitable for heavy fire situations.") "Sea Lion Amphibious Medium Tank" (unit :name "Sea Lion Amphibious Medium Tank" :reference "* Carrier Command: Gaea Mission" :summary "* Carrier borne All Terrain Vehicle. It has six wheels that work equally well on water or land, but on water it augments its speed using a caterpillar drive. It is fully sealed and submerisble, but its underwater speed is poor. It has a small, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, repair, apc, recon, science, and more. Its mission module is interchangable with the Manta Fighter.") "Sailfin Light Frigate" (unit :name "Sailfin Light Frigate" :summary "* Fully Submersible Light Frigate loaded with 2 Barracuda Submarines. * Purpose - The Sailfin is a high speed interceptor and screening craft. It is equipped with anti-missile and small anti-ship weaponry as well as a large ECM suite. * Hydrofoils - Uses a Magnetohydrodynamic (MHD) to produce high speeds with little noise. It is designed in a catamaran configuration with hydrofoils and an air cushion effect to provide near flight." :titles "Flying Fish") "Hammerhead Destroyer" (unit :name "Hammerhead Destroyer" :summary "* Fully Submersible Destroyer loaded with 2 Manta Fighters and 4 Barracuda Submarines. * Purpose - The Hammerhead is an all round escort ship for larger capital ships.") "Mako Assault Carrier" (unit :name "Mako Assault Carrier" :reference "* Carrier Command: Gaea Mission" :summary "* Fully Submersible Light Carrier loaded with 4 Manta Fighters, 4 Sea Lion ATVs, and 2 Barracuda Submarines. Uses a Magnetohydrodynamic (MHD) to produce high speeds with little noise.") "Orca Medium Cruiser" (unit :name "Orca Medium Cruiser" :summary "* Fully Submersible Medium Cruiser loaded with 6 Manta Fighters, 1 Pelican Transport, 6 Sea Lion ATVs, and 4 Barracuda Submarines.") "Leviathan Command Carrier" (unit :name "Leviathan Command Carrier" :summary "* Fully Submersible Heavy Carrier loaded with 12 Manta Fighters, 4 Pelican Transports, 6 Sea Lion ATVs, and 8 Barracuda Submarines."))) "Body Armor" (section :name "Body Armor" :unitmap (unitmap "Stealth Suit" (unit :name "Stealth Suit" :reference "* Nuclear launch detected... - Starcraft" :titles "Ghost Special Operative") "Powered Body Armor" (unit :name "Powered Body Armor" :summary "* Heavy Body Armor" :titles "Hard Suit")))))) (func chapter_high_tech_spacecraft : base/chapter (chapter :name "High Tech Spacecraft" :summary "* Interplanetary travel is a common reality in the 23rd century. * Types - Spaceships are mostly cargo and ore mining ships, followed by gas tankers. * Prismatic Armor - Modern ships have a very thick ablative skin composed of a honeycomb of diamond nano-fibers filled with a highly refractive, radiation and impact absorbing ceramic compound. This armor has a number of beneficial qualities. It deflects energy in random directions which provides radiation resistance, stealth, and energy weapon defense. It fragments and ablates under energy weapon and kinetic impact which shatters incoming micro-meteors and high speed weaponry and distributes the incoming energy in all directions to prevent penetration. The ablating particles also carry away excess heat in a similar way to evaporation. The resultant particles become a cloud of anti-energy aresol. Any impact strong enough to penetrate the armor will liquify the surrounding armor which quickly solidifies and helps to seal hull breaches. * Deflectors - Most long-range ships are equipped with a deflector array. The array is composed of a wide bank of closely spaced ionizing lasers and particle beams. The lasers ionize the particles and form a strong magnetic force down the length of the beam. Small objects headed toward the ship are ionized by the beams and then redirected away by the magnetic field. Point defense lasers are used for larger particles as well as incoming missiles. * Propulsion - Propulsion spaceward (outward from the Sun) is often provided by massive Stellasers that reflect and concentrate solar radiation into a 'tight' beam similar to a laser. Ships have depolyable solar sails to capture this energy for propulsion and recharging batteries. These sails can even be used to slowly tack inward. Some cargo ships use particularly large sails to slowly sail the solar wind to reduce costs. Most ships rely on powerful nuclear thrusters for sunward (toward the Sun) travel to accelerate the ship at up to 1g. When possible the ship will accelerate for half the voyage, turn around, and then decelerate for the rest of the trip. * Gravity - Except for short periods of weightlessness midway through the trip, the passengers feel gravity during the trip. Up is toward the nose and down is toward the engines. The internal organization of a ship is very similar to a skyscraper. For fuel and reaction mass reasons, the ship may need to travel at slower speeds (and lower gravity) or coast at zero gravity midway through the trip. For this reason, large ships are often equipped with rotating decks to simulate gravity for the crew. * Reentry - Spaceships are generally too heavy and not equipped to survive a landing on anything larger than a small moon. Landing on something as massive as the Earth's Moon is possible, but achieving orbit again requires a powerful Laser Lifter system like the one on Luna. * Travel Costs ** Planet to orbital station skyhooks travel daily and cost 200-300 credits one-way. ** Orbital to moon travel twice weekly and cost 600 credits one-way. ** Interplanetary trips are like cruises. They travel weekly and cost 20,000-30,000 credits one-way. * Safety - Inner ship walls are covered with pillowy-soft panels of 'Space Gel'. This viscous fluid provides a combination of heat insulation, impact padding, radiation shielding, shrapnel absorption, and depressurization protection. Space Gel exposed to freezing temperatures will immediately harden into a very durable solid. If the hull is breached, damaged panels will leak Space Gel. Any gel that touches an area near the breach will instantly freeze, gradually plugging the leak." :sectionmap (sectionmap "High Tech Commercial Spacecraft" (section :name "High Tech Commercial Spacecraft" :unitmap (unitmap :Shuttlecraft (unit :name "Shuttlecraft") "Cargo Spacefreighter" (unit :name "Cargo Spacefreighter") "Ore Spacefreighter" (unit :name "Ore Spacefreighter" :summary "* Magsail ship") "Gas Spacefreighter" (unit :name "Gas Spacefreighter") "Space Rescue Ship" (unit :name "Space Rescue Ship" :reference "Event Horizon" :summary "Emergency Medical and Rescue Craft") "Star Explorer" (unit :name "Star Explorer" :summary "Scout Vessel") :Spaceliner (unit :name "Spaceliner" :summary "Luxury cruise liner for tourism or transport" :titles "Starliner"))) "Fighter Class" (section :name "Fighter Class" :unitmap (unitmap "Star Bomber" (unit :name "Star Bomber") "Star Figher" (unit :name "Star Figher" :summary "* General purpose space fighter that can be fitted with special purpose gear.") "Star Interceptor" (unit :name "Star Interceptor") "Star Torpedo Bomber" (unit :name "Star Torpedo Bomber"))) "High Tech Shuttle Class" (section :name "High Tech Shuttle Class" :unitmap (unitmap "Assault Shuttle" (unit :name "Assault Shuttle") "Eagle Lunar Transport" (unit :name "Eagle Lunar Transport" :summary "* The Eagle is the primary form of transportation for the inhabitants of the various moons of the Solar System. A multipurpose craft, it is divided into three basic sections; the command module, the service pod, and the superstructure. It is powered by four nuclear fusion rockets, and carries fuel reserves for 48 hours of flight. * Type A Transport Eagle is fitted with the standard passenger pod and is capable of holding 8 passengers (up to 12 in an emergency), in addition to the pilot and co-pilot. * Type B Freighter Eagle is used for transporting supplies, equipment and minerals. They can also be used as space-borne tankers for refueling. * Type C Reconnaissance Eagle comes equipped with various types of sensory devices for exploratory missions. * Type D Rescue Eagle, identifiable by the bold red stripes on the pod, has been adapted for field diagnosis and treatment of injury or disease. Manned by medical personnel, Rescue Eagles are equipped with mobile beds, patient-monitor units, and facilities for field surgery. * Type E Laboratory Eagle is equipped with a remote laboratory and can be used to locate and refine crude minerals, eliminating the need to transport bulky raw ores. It can carry food and water and recycle air to support the team for several weeks. * Specialty Modules include a the winch platform used to disperse nuclear waste canisters. There is also an additional booster unit that can be added to the super-structure which can increase the range and power." :titles "Eagle" :speed "162 Mkmh" :mass "238 tons" :length "23m" :range "26 Bkm" :width "9m") "Lunar Rail Capsule" (unit :name "Lunar Rail Capsule" :summary "* A small pod launched from a Lunar Rail Gun. Passenger Capsule are launched from 80 mile long Rail guns at 1G. Cargo capsules are launched from 2 mile long Rail guns at 40G. They are then captured in lunar orbit by drones and lunar satellite bases.") "Star Gunship" (unit :name "Star Gunship" :summary "* General purpose heavy weapons platform that can be fitted with special purpose gear.") "Heavy Star Bomber" (unit :name "Heavy Star Bomber") "Reconnaissance Shuttle" (unit :name "Reconnaissance Shuttle") "Star Torpedo Boat" (unit :name "Star Torpedo Boat"))) "Frigate Class" (section :name "Frigate Class" :unitmap (unitmap "Assault Star Carrier" (unit :name "Assault Star Carrier") "Missile Frigate" (unit :name "Missile Frigate") "Siege Frigate" (unit :name "Siege Frigate") "Star Destroyer" (unit :name "Star Destroyer") "System Defense Corvette" (unit :name "System Defense Corvette" :summary "Interplanetary Defense"))) "High Tech Cruisers" (section :name "High Tech Cruisers" :unitmap (unitmap "Star Battleship" (unit :name "Star Battleship") "Star Carrier" (unit :name "Star Carrier") "Star Cruiser" (unit :name "Star Cruiser"))) "High Tech Dreadnoughts" (section :name "High Tech Dreadnoughts" :unitmap (unitmap "Super Star Battleship" (unit :name "Super Star Battleship") "Super Star Carrier" (unit :name "Super Star Carrier"))) "High Tech Satellites" (section :name "High Tech Satellites" :unitmap (unitmap "Communication Satellite" (unit :name "Communication Satellite") "Damocles Orbital Laser" (unit :name "Damocles Orbital Laser" :image "HighTech/DamoclesSatellite.jpg" :summary "* Orbital Laser Platform designed for strategic strikes against land targets. May also be used agaist large orbital targets or for asteroid defense.") "EMP Satellite" (unit :name "EMP Satellite" :reference "* What's it going to be, Plissken? Them or us? I shut down the third world, you win they lose. I shut down America, they win, you lose. The more things change, the more they stay the same. - Snake Plissken, Escape from LA" :titles "Goldeneye") "Hunter Killer Satellite" (unit :name "Hunter Killer Satellite" :summary "* A combat ready satellite often masquerading as a peaceful version. Hunter Satellites act like UAV's quietly patrolling until their weaponry is needed, then they are disposable." :titles "Battle Satellite") "Orbital Skyhook Satellite" (unit :name "Orbital Skyhook Satellite" :summary "* Large rotating satellite in low orbit. Its purpose is to drop its kilometers long tether to dock with a [Suborbital Shuttle] and use its momentum to fling the shuttle into higher orbit. A few of these Skyhooks at different orbits can pull a shuttle all the way into high orbit. Pulling up shuttles gradually degrades the satellite's orbit, but fortunately, the same system can be used in reverse to slow orbital craft without using fuel which returns lost momentum to the Skyhook.") "Solar Reflector Satellite" (unit :name "Solar Reflector Satellite" :summary "* These are massive, lightweight solar mirrors that can be focused for variouse purposes. They can focus light for solar farms, generate light for long nights like on the moon, generate thrust by light pressure and by heating ablative drives.")))))) (func chapter_high_tech_aircraft : base/chapter (chapter :name "High Tech Aircraft" :sectionmap (sectionmap "High Tech Commercial Aircraft" (section :name "High Tech Commercial Aircraft" :unitmap (unitmap "Hypersonic Airliner" (unit :name "Hypersonic Airliner" :summary "* Suborbital passenger plane that can make intercontinental flights at Mach 5+ * Such high speed planes are all wedge shaped Hypersonic Waveriders.") "Suborbital Shuttle" (unit :name "Suborbital Shuttle" :summary "* Suborbital passenger plane that can reach the upper atmosphere and connect to an [Orbital Skyhook Satellite]'s tether. The end of the tether holds a small wing shaped cargo container. Passengers and cargo are quickly exchanged, and the container is reeled back up to the skyhook while the plane returns to its launch site."))) "High Tech Military Aircraft" (section :name "High Tech Military Aircraft" :unitmap (unitmap "Valkyrie Air Cavalry" (unit :name "Valkyrie Air Cavalry" :classification "Lt. Aircraft") "Aurora Transatmospheric Fighter" (unit :name "Aurora Transatmospheric Fighter" :summary "* A sleek, shuttle-like jet with speeds of Mach 5. A nuclear engine, stealth armor, full environmental containment, and a virtual or direct neural link make this one-man craft the deadliest thing in the skies. * It carries twin 30mm autocannons, a plasma cannon, 16 air-to-air missiles, and 2 fuel air explosives for ground targets." :classification "Lt. Aircraft")))))) (func chapter_high_tech_heavy_armor : base/chapter (chapter :name "High Tech Heavy Armor" :sectionmap (sectionmap "High Mobility Forces" (section :name "High Mobility Forces" :summary "* Mobile - The term Mobile, short for High Mobility, was coined to describe forces that emphasized manueverability and terrain use over raw speed, weaponry, or armor. ** Mobile Infantry - Human sized battle suits capable of increasing an infantry unit's combat ability. Early versions emphasized weapons and armor, but their high cost and attrition rate moved the focus to fast hit-and-run or blitzkreig style armor. ** Mobile Suit - The Mobile Suit is an attempt to create a larger version of Mobile Infantry suits. They remain humanoid and can benefit from infantry tactics on a large scale. The design is a swiss army knife, capable of quickly changing and scavenging weapons and is equally suited for combat and large scale repair operations. The design does have many detractors, however, who argue that the humanoid form is not optimal for ground combat where its height makes it an easy target, air combat where it is not aerodynamic, or space combat where legs have little use. ** Mobile Cavalry - Mobile Cavalry is any High Mobility vehicle that is optimized toward its intended enviroment: Mobile Fighters in atmosphere, Mobile Tanks on land, Mobile Subs underwater, Mobile Insects in space, etc. These system are highly specialized in contrast with the general utility of Mobile Suits. Though such designs seem more optimal, there is an argument that Mobile Suit mass production and spare part availability would ultimately win out. ** Mobile Armor - The ultimate expression of High Mobility weapons, Mobile Armor are large, heavily armed and armored versions of Mobile Cavalry. They are terrifying monstrosities with similar reputations to the King Tiger tank in World War II. Though on paper, they seem to be the ultimate weapon, in practice their high cost and manufacturing complexity severly limited their deployment and losing even one was devastatingly costly. They can turn the tide of any battle, but were overall less effective than smaller units. * Linear Frame - The linear frame is a special harness that mimics the actions of the mobile suit pilot and translates them into mobile suit actions. This gives the mobile suit an uncanny agility and a strangely human grace. A trained pilot can shift the suit's center of gravity to change the armor's orientation without propellent which can substantially increase endurance and survivability. * Piloting - A mobile suit pilot wears a special suit and is secured to a linear frame that help manage the incredible g-forces that the mobile suit produces. Rookie pilots have been knocked unconscious or even killed by their own combat maneuvers, so extensive, specialized training is essential. Ace pilots seem almost superhuman in their ability to take physical stress without blacking out. * Mobile Suits vs. Capital Ships - Mobile suits have a unique ability against capital ships. They can land anywhere on the surface of the ship (typically outside of firing arcs) and attack components directly. Whenever a mobile suit on a capital ship score [Critical Hits], the player may look at the damage deck and choose the critical instead of choosing one at random. * Flight Systems - Spacecraft and Exo-Suits use a ionic plasma drive which ionizes and accelerates gas particles out the exhaust vents at relativistic speeds. These energized particles create a glowing stardust effect at the exhaust ports. These drives also function in atmosphere but their interaction with air creates a massive heat buildup, so they can only be used in short bursts like jump jets. Unusually large vents with heat dispersers can be specially designed for atmosphere, but these are suboptimal in space. * Plasma Lance - The lance is a short mobile suit melee weapon. Its firing end is a hollow magnetic tube lined with layers of copper leaf. When held in a specially designed hand or connector, a direct current from the fusion reactor transforms the copper leaf into a short ionizing plasma jet of incompressible copper. The lance appears as an empty weapon hilt until it fires; then it flashes with a brief, blinding jet that violently pierces almost any material it contacts. It is very effective against armor, but its uses are limited so they may only be used a few times before being depleted. Mobile suits will often carry multiple lances, although larger variants exist. Land based Mobile Suits follow these principles: * Maintain a low profile - Weapons are so destructive that it is much more effective to not be hit. Stay low and use cover at all times. Tracked, Wheeled, Hover and 4 legged vehicles maintain the lowest profile while still being all-terrain. * High mobility - Slow, predictable units are sitting ducks. Also, move in 3 dimensions to maximize mobility. This makes legs and jump jets superior to tracks and wheels. * Projectile weapons are more effective on the ground than in space - High caliber cannons can be mounted on land vehicles. * Land based Mobile Suits developed from dog-like anti-personnel hunter-killer robots. As Electromagnetic Warfare began to defeat digital circuitry, it became necessary to put soldiers back into the war machines and return to larger, more reliable analog systems. Space based Mobile Suits follow these principles: * Propellent must be expended to accelerate - a modern vehicle in space is more limited by its propellent than its fuel. * Arms and Legs are useful - When one part of a mobile suit is moved, it produces a counter-movement in the opposite direction. This effect can be used to adjust the mobile suit's direction without expending propellant. Thus, in zero gravity the mobile suit's arms and legs are not dead weight, but a vital component of its maneuvering system." :titles "Armored Frame, Exo-Suit, MEC (Multi-Environment Cavalry), Mobile Armor, Mobile Cavalry, Mobile Invantry, Mobile Suit" :unitmap (unitmap "Piranha Mobile Armor" (unit :name "Piranha Mobile Armor" :summary "* The current state-of-the-art space mecha is a wedge-shaped, heavily-armored stealth craft with a turreted particle cannon. * Armor Module - The wedge-shaped front, bottom, and sides of the craft are a single hot-swappable module for in combat maintainance. It is primarily composed of ablative, stealth armor. The armor is sharply angled to present the smallest possible angle of penetration and detection from the front. * Core Module - The center of the craft is a gyroscopic sphere. The gyroscope is so powerful, it is used for attitude control instead of maneuver jets. * Core Drone Module - Like most mobile armors, the Piranha is deployed in large packs (schools) of drones with random human piloted command units. Without a pilot, the core module can contain spare ammo or propellent. * Core Pilot Module - The pilot seat is enclosed in this sphere which allows the craft to turn very quickly while rotating the pilot seat separately to minimize angular momentum and G-forces. The escape hatch can be rotated to the top or the bottom of the ship to allow easy exit or connect to ship airlocks. * Mission Module - The top and back of the craft contain the weapon systems, propulsion, and fuel in a single hot swappable module. This entire module can be immediately replaced to customize the craft for a mission or rapidly refuel and reload. * Space Interceptor Module - The standard space module includes a single heavy particle beam turret and nuclear propulsion (including fuel and reaction mass). * Space Bomber Module - This module is identical to the Space Interceptor Modules but replaces the turret with a fixed medium railgun and 2 heavy penetrator nuclear missiles. * Orbital Insertion Module - Though rarely used, this module allows the ship to reach orbit from a planet's surface using chemical rockets. The module is also capable of independent re-entry so it can be refueled and reused without the main craft. * Atmospheric Interceptor Module - Jet engines and anti-aircraft missiles. With this module, the ship is capable of trans-atmospheric flight. Though its wedge shape is aerodynamic, it provides no lift, so it must rely on its thrust to maneuver and to remain airborne. * Atmospheric Bomber Module - Jet engines and precision bombs. * Atmospheric Close Support Module - Jet engines and a single heavy penetrator autocannon. * Air Cavalry Module - Dual turbine rotor systems and fuel with 2 light rail cannons for rescue and light air support. * Land Module - A turret pairing a heavy rail cannon with a high capacity rail machine gun. The rear houses a missile pod housing 6 indirect fire missiles for light bombardment. * Marine Module - Marine caterpillar thrust system that allows high speed surface movement or moderate underwater movement with decent stealth. * Command Module - Advanced communications and coordiation systems. * Sensor Module - Specialized long-range active and passive sensor systems for patroling or spying. * Stealth Module - Enhanced stealth system foregoing firepower and performance for stealth. Contains a single medium rail cannon. * Science Module - Highly sensitive sensor package for detailed analysis. * Service Module - The ship has useful carrying capacity, so besides its combat role, it operates as a repair worker bee and cargo hauler. Typically, repair crews get more flight time on the ship than combat pilots. * Cargo Module - A large cargo container and thruster can be afixed to the rear for transport duties. * Long Range Module - A variant of the cargo container can be attached to the back of another module to increase the range of the ship providing extra thrust and reaction mass. The module is jettisoned once it reaches its target and is hopefully recovered later. * Arms - 6 thin, light-weight arms fold out from under the ship to the front, back, and sides. Each arm has 3 powerful fingers with magnetic clamps and sharp tips that allow the craft to cling to surfaces and walk along them at high speeds like an insect. The arms are strong enough to climb vertical surfaces or be inverted under gravity. The end of each arm has an attitude control jet to aid in high speed manuevers. On land, these jets are replaced with powerful turbines that lets the craft skate across level ground or water. The elbow of each arm is a sphere that can be used as landing gear or wheels on roads or other reasonably flat terrain. 6 arms were chosen, so the craft can still move on 4 arms while carrying or dragging a heavy load with 2. As with insects, 6 arms provides sufficient redundancy in case 1 or even 2 legs are lost to damage. In land combat, the arms allow the craft to maximize cover and peek its gun around corners or over obstacles." :titles "Terrapin") "Panther Mobile Cavalry" (unit :name "Panther Mobile Cavalry" :summary "* The current state-of-the-art land mecha is a 4 legged style reminiscent of big cats or wolves. * Like most mobile armors, the Panther operates in packs of drones with random human piloted command units. The pilot climbs into the back of the unit and rides in the position of a performance motorcycle. If desired, the pilot can open the back and sit up as if riding a horse. Piloted units sacrifice a hardpoint to fit the pilot. * Payloads such as large caliber cannons and shields are mounted on one of two fixed back mounts. This unit can also stand on 2 legs and slide the cannon up to become a shoulder mount. All 4 legs possess manipulative hands with claws and magnets for climbing and can carry the cannon or a shield as needed. Small wheels in the elbows are used when travelling on roads."))) "High Tech Land Vehicles" (section :name "High Tech Land Vehicles" :unitmap (unitmap "Hover Tank" (unit :name "Hover Tank") "Light Walker" (unit :name "Light Walker") "Heavy Walker" (unit :name "Heavy Walker")))))) (func chapter_space_colonies : base/chapter (chapter :name "Space Colonies" :sectionmap (sectionmap "L5 Colonies" (section :name "L5 Colonies" :summary "* The L5 Colonies are enormous space colonies that have been constructed at the five Lagrange points around Earth where gravitational forces are stable. They are 25km to 40km long. * Construction - These stations are constructed inside cylinders of Moon rock and asteroids ferried from the Asteroid Belt. The external surface is heavily armored against meteorite impacts. Industrial complexes are mostly on outermost layer of the colonies to keep them away from habitations. Towns are built on the internal surface of the colony. The internal space is divided into zones with large reflective pressure walls that give the appearance of continuous space while limiting the risk of catastrophic failure to any particular zone. Transport tubes are underground and also serve as emergency shelters. In addition to the outer cylinder, there is also an inner cylinder that forms a pressurized, zero-g drydock through the center of the colony. * Personnel - Those that have travelled from Earth to the Orbital stations are many of the best and brightest that Earth has to offer. Each colony supports up to 20 million people. Living space is about 300 square km, which is not a lot of room for so many people. Three or four story buildings are the norm, but they cannot be built higher than that because of the Coriolis effect. * Resources - Large amounts of solar energy are continuously collected, but life is difficult in space where all materials must be imported (at high tariffs). Orbital industry is generally thriving. * Politics - Because the Orbitals are largely corporate run and lack a specific history, they are largely free of geopolitical politics, as well as cultural and racial conflicts. They do, however, retain fierce, corporate politics. Most of all, the Orbitals chafe under the Earth bound regulatory and military agencies that supervise and tax them. Taxes are necessarily high to support so much technology, and taxes are always a point of conflict." :titles "Orbitals, Orbital Platforms" :unitmap (unitmap "L1: Shangri-la" (unit :name "L1: Shangri-la") "L2: Elysium" (unit :name "L2: Elysium") "L4: Avalon" (unit :name "L4: Avalon" :summary "The first of the L5 colonies, Avalon has the largest starship construction facilities. Its proximity to Earth and the Moon provide it optimal security and resources.") "L3: Eden" (unit :name "L3: Eden") "L5: Valhalla" (unit :name "L5: Valhalla"))) "Nomad Colonies" (section :name "Nomad Colonies" :summary "* Small individual colonies are beginning to dot open space between the planets. These colonies maintain their own solar orbits and can be convenient stop over points between planets. * Culture - Nomad colonists are a hard working, individualistic people. Some are religious or cultural fanatics. Others are essentially criminal organizations or pirates. Nomad colonists are highly desired as crew for interplanetary commercial space flights. They are used to cramped space conditions and they are also talented mechanics and jury-riggers. * Trade - Each Nomad Colony is primarily a trading station. They do not produce anything except food for themselves. Everything else is purchased from other planets. * Politics - Nomad Colonies are each formed for their own reasons and maintain unique governments and social structures. They attempt to remain neutral from other nations and will trade with anyone without regard to political or criminal status. Though the Nomad colonies are each completely unique, they all recognize the other Nomads as allies and treat any threat to one as a threat to all. * Military - Nomad Colonies typically maintain little or no defenses as befits their neutral status. They may, however, maintain hidden defenses or pirate ships nearby.") "Mars Colonies" (section :name "Mars Colonies" :summary "* Colonial Mars is much like the American Frontier. Colonists left the overcrowded and impoverished Earth in search of a new life knowing that there was almost no chance to return to the Old World. They and their children would live or die on Mars, and they proudly adopted the name Martian. * Terraforming - Mars is one of the greatest technological projects ever attempted by humanity. * Climate - Mars is in the later stages of Terraforming. The air is thin and cold but breathable, similar to a mountain top. * Cities - Since the atmosphere became breathable, the population on Mars has sharply increased. Cities that were once domed habitats have grown into large settlements. Land is practically free, so buildings are low and sprawling. * Production - Mining is the primary reason for founding the Martian colony and continues to be the main source of jobs. Terraforming, industrial equipment, and algae farming support the mining effort. * Politics - The Martian Council is a democratic body that establishes and enforces Martian law. Unfortunately, they are largely a puppet of the Earth Authority and have been increasingly squeezing the Martian colonists to increase production for their war efforts. This pressure has spurred the creation of the Free Mars Movement that seeks to free Mars form Earth control. * Corporations - Martial Metals is one of the biggest corporations in the Solar System. It developed the orbital elevator and its steady source of cheap metals feed a large industry of orbital facilities including drydocks." :unitmap (unitmap "Orbital Elevator" (unit :name "Orbital Elevator" :summary "* The Orbital Elevator is a miracle of technology and the only practical way to affordably get materials off the planet. The Orbital Elevator, the Asteroid Belt, and the Lunar Railguns are the only sources of building materials for colonies and spacecraft. * The Elevator is also a majestic symbol of power for the Martian Council and the Earth Authorities.") "Free Mars Radical" (unit :name "Free Mars Radical") "Martian Pirate" (unit :name "Martian Pirate") "Sand Marauder" (unit :name "Sand Marauder"))) "Moon Colonies" (section :name "Moon Colonies" :summary "* The Moon's mineral and ice deposits made it the logical location of the first permanent off-world colony. Robotic solar-powered laser drills cut tunnel complexes into the walls of craters. Human colonists followed soon after. Regular exercise in 1 G training centers is mandatory for all colonists to avoid the dangers of low gravity. * Cities dot the lunar landscape connected by underground transport tubes. * The two largest cities maintain spaceports complete with Laser Lifters to boost large ships into orbit." :titles "Lunars, Lunatics, Moon Men, Moonies, Selenites") "Solar Colonies" (section :name "Solar Colonies" :locationmap (locationmap :Stellaser (location :name "Stellaser" :summary "* Giant mirrors placed in pairs in Solar orbit. The mirrors gather light by reflecting it back and forth between them before releasing it in a concentrated beam to slowly accelerate starships. Though this beam would certainly be deadly to humans, the beam is only dangerous to exposed targets without sufficient radiation shielding." :titles "Starlight Express"))) "Venusiau Colonies" (section :name "Venusiau Colonies") "Asteroid Colonies" (section :name "Asteroid Colonies" :locationmap (locationmap "Asteroid Mining Colony" (location :name "Asteroid Mining Colony")) :unitmap (unitmap "Asteroid Miner" (unit :name "Asteroid Miner" :titles "Belter"))) "Jupiter Colonies" (section :name "Jupiter Colonies" :summary "* Culture - Personal space in Jovian colonies is extremely limited, so people share quarters with multiple people. There are not even enough beds for each person, so most people live with people who work different shifts and use the same beds on off-shifts. Common areas are used for everything except sleeping. The Jovians have adapted to be far more social and reliant on others for day to day life. This communal living has generally made them a tight knit society with a strong sense of group identity. * Science - Jovian science is one of the most advanced in the solar system. Research and development on ways to make their harsh life safer and more comfortable are always high priorites. Jovian scientists crank out a steady stream of innovations across all disciplines. * Military - The military has reaped the rewards of Jovian science and is arguably the most advanced force in the solar system, though certainly nowhere near the largest. Jovian forces are composed of separate standing armies: Alpha, Beta, and Gamma Divisions with Alpha containing the Godsfire flagship. Jovian military theory is based on efficient use of a small number of highly mobile units. They do not fear a large scale assault, since they would receive much forewarning of any attempt to mobilize a large force all the way out to Jupiter. Jupiter's remoteness makes it fairly easy to defend against direct assault, but the harsh environment makes sabotage a much greater threat, so Jovian intelligence forces constantly search for threats. * Agora - The Jovian governing body with primary offices on Elysee colony." :locationmap (locationmap "Elysee Station" (location :name "Elysee Station" :summary "* The largest Jovian Colony and the capital of the Jovian Confederation.") "Joshua Station" (location :name "Joshua Station" :summary "* The second largest Jovian Colony and Jupiter's hub of manufacturing. The station is essentially a giant factory with live in workers. All commercial starships are constructed here. * Jovian Armor Works - The best known aerospace corporation in Jovian space is famous for inventing the Exo-armor and designing almost all of the Exo-armor fleet. * Joshua station also houses the seedier areas of Jovian society. Black markets, drug dens, and bordellos operate freely. Jovians tend to have a live and let live attitude, so little effort is made to stop activities that don't threaten the colony." :titles "Wildest Place in the Solar System") "Khannan Station" (location :name "Khannan Station" :summary "* The third largest Jovian Colony and Jupiter's military center. The station only allows military personnel on board. Large sections of the colony are dedicated to ship construction and others are top secret research labs.") "Jovian Gas Refinery" (location :name "Jovian Gas Refinery" :summary "* These heavily armored, refining stations float in the upper atmosphere of Jupiter. They float by means of enormous rings filled with heated hydrogen and manuever using fusion thrusters. Multiple kilometer long tubes hang from the bottom of the station extracting gases from the differnt layers of the atmosphere. The broad round floatation disc and long tubes give the stations the general appearance of a jelly fish.") "Io Colony" (location :name "Io Colony" :reference "Outland" :summary "* A small, titanium mining colony is located on Io. Miners work intensely to gain maximum bonuses. Life is dangerous and many miners are hooked on amphetimines to maximize productivity. Victimless crime is largely ignored in this generally lawless outpost. Besides miners and transport workers there are only cooks, bartenders, prostitutes, a single doctor, a sheriff and two deputies."))) "Saturn Colonies" (section :name "Saturn Colonies" :summary "* With the exception of Titan, the outer planets are too remote and unimportant to ever be colonized. Jupiter provides an unlimited supply of gas resources, so Saturn, Uranus, and Neptune have little to offer." :locationmap (locationmap "Titan Research Station" (location :name "Titan Research Station" :summary "* A small, permanent research colony has been erected on Titan to study its unique atmosphere and geology. The hope was to discover evidence of primitive life, but no life has yet to be discovered.")))))) (func chapter_car_wars : base/chapter (chapter :name "Car Wars")) (func chapter_cyberpunk : base/chapter (chapter :name "Cyberpunk" :summary "* The year is 2151. Things are pretty bad on planet Earth: * Global Warming - The build up of smothering greenhouse effect gases has resulted in the complete melting of the Arctic ice cap as well as much of the Antartic ice cap. Coastal areas have been inundated and global temperatures continue to rise, a new record every year. * Resource Depletion - As the climate changed, desperate farmers overfarmed their land, increasing erosion and therefore food prices. Fossil fuels became increasingly scarce and given the ongoing climate problems, ecologically unsuitable. * Overpopulation - * Economic Collapse - Things are slightly better in space: * Orbital Stations - For the last hundred years, large space colonies have been constructed at the five Lagrange points around Earth. Relative to Earth, the Orbital stations are gleaming paradises of corporate efficiency. Corporate interests are certainly strong on the Orbital colonies, and the Orbitals increasingly chafe at Earth's taxation of their goods and the high tariffs on imports. * Luna - Huge moon bases dot the lunar surface. With its low gravity and limitless lunar rock, the Moon is the natural construction center for most Orbital facilities and spaceships. Surface and underground mining operations go around the clock. Enormous massdrivers propel the material into Earth orbit. * Mercury - Solar stations on Mercury provide limitless power while the molten surface provides limitless ore. Though the surface is hellish and survival is difficult, Mercury provides wealth beyond imagining to those able to survive. The population is 90% male with most residents on a 6 year work contract. After the contract they usually return to wherever they came from with enough money to buy a house and start a family. Like a military veteran, Mercury companies also offer generous benefits for the rest of the contractor's life or generous death benefits to their family if they don't survive. Despite extensive safety systems, the fatatlity rate remains 1 in 20 even among these hardy folk. Politically, Mercury is extremely independent and has little patience for the affairs of the other planets. * Venus * Mars * Asteroid Belt - Though Luna provides a steady supply of material to the colonies, whole Asteroids can be ferried from the Asteroid Belt to create instant colonies. Further, the valuable minerals in an asteroid are easier to detect and mine than in either Lunar or Terrestrial mines. The Asteroid field is large, however, so a whole crop of freelance prospectors have travelled to the Asteroid Belt in a high-tech gold-rush. * Jupiter * Saturn * Cryomax - Maximum security prison where prisoners are stored in partial cryonic suspension to maximize space. ** Reference - Demolition Man * Crystal - Liquid crystal computer matrix" :sectionmap (sectionmap :Government (section :name "Government" :unitmap (unitmap :Innovator (unit :name "Innovator" :reference "Appleseed, Genetic Android, Bioroid" :summary "* Genetically engineered artificial human. Theoretically superior to humans in every way, they are purposely implanted with a number of limitations: * They cannot reproduce. * They must undergo routine medical treatments or their genetic structure breaks down. * They are peaceful in nature to buffer mankind's tendency to violence. * They defer to human authority unless they believe that the authority will harm mankind.") "Cycle Police" (unit :name "Cycle Police" :unitskillmap (unitskillmap :Driving (unitskill :name "Driving" :level "4" :unitspecialtymap (unitspecialtymap :Motorcycles (unitspecialty :name "Motorcycles"))))) :E.S.W.A.T. (unit :name "E.S.W.A.T." :reference "Appleseed") "Mobile Police" (unit :name "Mobile Police" :reference "Appleseed"))) :Military (section :name "Military" :unitmap (unitmap "Combat Android" (unit :name "Combat Android") "Planetary Defense Navy" (unit :name "Planetary Defense Navy") "Planetary Defense Pilot" (unit :name "Planetary Defense Pilot") "Eugenic Warrior" (unit :name "Eugenic Warrior" :reference "* Khan, Star Trek II" :summary "* Through bioengineering, an elite warrior caste has been created combining strategic genius, leadership skills, and physical perfection. Unfortunately, they also develop incredible egos and megalomania." :titles "Master Race, Super Soldier"))) :MegaCorps (section :name "MegaCorps" :summary "* After the world stock market crash and subsequent collapse of many economies and governments around the world (including the US), only international corporations were left with the ability to exert power on a global scale. * The economic collapse acted as a purge, the strongest conglomerates consuming the weaker ones until only the biggest and strongest remained. With most governments enfeebled and the competition obliterated, the megacorps were left to fill a huge power vacuum. Naturally there was some disagreement as to how to divide the spoils. The result was a series of wars as each corporation attempted to destroy its competition physically and finacially. Smaller conflicts, covert and overt, continue to this day, with full scale war threatening to resurface at any time." :unitmap (unitmap "Corporate Man" (unit :name "Corporate Man" :titles "Collarboy, Company Man, Suit") "Corporate Security" (unit :name "Corporate Security") "System Administrator" (unit :name "System Administrator" :titles "Cyber Engineer, Icemen, SysOp, SysAdmin, Weasel") "Kildren Pilot" (unit :name "Kildren Pilot" :summary "* Kildren are genetically modified before birth to halt the aging process. Physically, they are eternally teenagers. Mentally, however, they are quiet and serious. A side effect of their frozen aging process is the inability to recall distant memories. Kildren, therefore, lack a strong sense of time or the past. They live for the now and are fearless pilots. For some, however, the sense of timelessness lacks purpose and turns into hopelessness.") :Media (unit :name "Media" :summary "* Ethnicity: Greek-American * Hair: Black Short Waved Hair * Eyes: Pale Grey * Clothes: Clean White Shirt under black leather thigh-length light-armored jacket (occasional loose tie), grey hardwearing slacks, black shoes or running sneakers, Aviator sunglasses when being 'too cool'. * Equipment: Beeper, Camera, Colt automatic pistol and shoulder holster, 1 room apartment * Contacts: Camera Man, Police Officer" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :summary "Pistol" :level "4"))) "Medical Technician" (unit :name "Medical Technician" :titles "Med Tech") :Scientist (unit :name "Scientist"))) "Offworld Colonies" (section :name "Offworld Colonies" :unitmap (unitmap :Miner (unit :name "Miner") :Pirate (unit :name "Pirate"))) :Sprawls (section :name "Sprawls" :titles "Dirtboys, Dirtgirls" :unitmap (unitmap "Bounty Hunter" (unit :name "Bounty Hunter") "Cyber Psycho" (unit :name "Cyber Psycho" :summary "* Buttonhead - someone addicted to artificially stimulating the pleasure centers of the brain." :titles "Buttonhead") :Enforcer (unit :name "Enforcer") :Fixer (unit :name "Fixer" :summary "* Fixers buy and sell information, goods, and services. * Some of their services merely require the right connections. Others are not quite legal." :titles "Bookie, Executive Secretary, Gobetween, Information Broker, Negotiator, Organizer, Producer, Roadie, Thirdman") "Gang Member" (unit :name "Gang Member") :Netrunner (unit :name "Netrunner" :summary "* Outlaw computer jocks or hackers. Some people do it for the glory; most do it for the money. Information is power in the modern world and all the information is somewhere on the Net. Further, the modern world is a marvel of automation, so a clever person may turn that automation to his own uses." :titles "Crystaljock, Hacker") :Nomad (unit :name "Nomad" :summary "* Deltajock - A pilot of delta-winged smuggling craft * Panzerjock - A driver of armored smuggling hovercraft" :titles "Deltajock, Gypsy, Linerunner, Panzerjock, Road Warrior, Smuggler") :Rocker (unit :name "Rocker" :summary "* Zonedancing - Dancing turned into a dominance game. A dancer attempts to persuade other dancers in his zone to conform to his movements using charisma, talent or violence." :titles "Bard") :Solo (unit :name "Solo" :reference "* I don't want to walk this Earth if I gotta do it solo...so...low. - Iyaz, Solo" :titles "Assassin, Hit Man") :Tech (unit :name "Tech" :titles "Cybertech")))))) (func chapter_jovian_chronicles : base/chapter (chapter :name "Jovian Chronicles" :sectionmap (sectionmap "Orbital Revolution" (section :name "Orbital Revolution" :summary "Events Leading to War * Air Tax Overview of the War * Rock War Aftermath * Terran Union" :scenariomap (scenariomap "Rock War" (scenario :name "Rock War") "Battle in the Depths" (scenario :name "Battle in the Depths" :summary "* An undersea fission cannon is discovered before it becomes operational. * A squadron is sent ahead of the fleet to destroy the cannon before it is brought to bear on the fleet. * The base defenders need to stall for 10 minutes until the cannon can be fired destroying most of the fleet. 5 minutes later a second shot will ensure victory. * The battle takes place completely underwater.") "Destroy the Downlink" (scenario :name "Destroy the Downlink" :summary "* The rebels choose to destroy a microwave receiver converting power from a vast orbital solar satellite array. If they can destroy it, the entire area will be without power and defenseless for days allowing the rebels free reign to take territory. * The defenders realize the vulnerability of the station and it is heavily defended.") "Rat Warren" (scenario :name "Rat Warren" :summary "* The mechs stationed to defend the city are cut off from reinforcements. * The rebels see an opportunity, but they have only powersuits and their wits to take the colossal defenders down. They can use the sewers and subways as cover to launch hit and run attacks.") "Traitorous Acts" (scenario :name "Traitorous Acts" :summary "* An surprise attack is launched on a munitions depot, but there is a problem. The defenders are not surprised: there is a mole in your group. * Attackers have a superior force, but one of them is a traitor. They will have to watch their backs. * Defender secretly chooses one attacking unit as the traitor and can choose to activate it at any time.") "Joy Ride" (scenario :name "Joy Ride" :summary "* A young, hotshot rebel manages to sneak into an enemy test facility and steal a prototype mecha. The whole base is on his tail, and he will need to use urban cover and speed to try to get away.") "Train Spotting" (scenario :name "Train Spotting" :summary "* Ambush a mag-lev train and stop it before it escapes. * Attackers must disable the train and destroy the defenders. * Defenders must escape or drive off the attackers.") "Breaking Damocles" (scenario :name "Breaking Damocles" :summary "* The Damocles is an orbital facility equipped with a powerful laser. Its existence has put major pressure on Earth governments to comply with UEA demands. * Attackers must placed explosives along the edge of the facility and destroy the attitude control thrusters to send the facility into a death spiral that would make it burn up in orbit. Hopefully, it will crash in an uninhabited area. * Defenders must destroy the attackers or the explosives to prevent this nightmare scenario.") "Moon Rocket" (scenario :name "Moon Rocket" :summary "* A huge rocket is about to be launched from its silo in a crater on the Moon. * The attackers must destroy the launch silo or failing that the missile itself before it leaves the combat area. Critical hits on the missile may cause it to explode, destroying the launch base.") "Mirage Storm" (scenario :name "Mirage Storm" :summary "* Two recon mechs gather intelligence around Jupiter but are pursued. The recon units try to even the odds by flying into the atmosphere directly into a super storm. The storm plays havoc with normal sensors, but the recon units can sort out the jumble of sensor data. * The 5 attackers must destroy the 2 escaping mechs. * The defenders must drive off or destroy the superior attackers. * Special Rules: For each defender place 2 additional ghost mechs on the battlefield. These represent false image data produced by the cloud. After each attack, the defenders may secretly switch which unit is the real mech among the three identical images. The ghost mechs are obviously immune to all damage."))) "Jovian Odyssey" (section :name "Jovian Odyssey" :scenariomap (scenariomap "Dreams OF Phantoms" (scenario :name "Dreams OF Phantoms" :summary "* Call of Jupiter - Jovian scientists discovered an odd life form floating in Juptier's atmosphere, the Jovian Floater. A floating research station was proposed, but the extreme funding could not be secured. Spies for the Venusian Bank determined that the Floaters may be responsible for the phenomenon called the 'Call of Jupiter', where explorers to Jupiter have often explained that they were drawn to Jupiter because of dreams they had of Jupiter singing to them. This would imply that the Floaters can communicate telepathically over interplanetary space: an incredible finding. * Slumbering Eidolon - The Venusians established a top secret floating base in Jupiter's atmosphere under the noses of the Jovians. The intense atmosphere combined with the powerful radiation and magnetic fields effectively hide them from any watching eyes above. Eidolon is secretly supported by a group in the largely lawless Joshua Station to procure or ship supplies and provide emergency rescue if necessary. * Mission - Discover the Slumbering Eidolon and capture or destroy it. They could discover it by finding a supply or courier ship headed there during a patrol, or stumble across a supporting organization on a Jovian colony. The assault force would most probably consist of two Thunderbolts, one Javelin, and a small number of Pathfinders and Retaliators. If they choose to capture the Eidolon, a hurried scramble as a self-destruct timer counts down and bulkheads slam shut is just as exciting as an action-packed firefight in the command center. Agents and reporters are harder to integrate with the destruction of the station, but are more easily involved in the discovery process.") "Dreams OF Secrets" (scenario :name "Dreams OF Secrets" :summary "* Summary - After the discovery and decomissioning of the secret Venusian research station, the Jovian government found some advanced mech prototypes that the Venusians had been testing in the Jovian atmosphere. This led to the Agora paying more attention to a request of assylum from one Dr. Peyarje, and sent the PCs to help retrieve him. * Dr. Peyarje - UEA has conscripted the brilliant Dr. Peyarje into their service, forcing him to develop next generation exo-weapons at a hidden base. In the interests of keeping an appearance of openness, they have allowed Peyarje to attend the 2210 Intersettlement Scientific Convention (ISC), though he is accompanied by a detachment of the UEA military. He has managed to get a plea for help and request for asylum to the Jovian embassy. His crowning achievement is a telepathic mech control system based on discoveries found from the Floaters over Jupiter. * Georgia On My Mind - The players have been dispatched to extract Peyarje from the ISC conference in Venus orbit. They are hidden among the large Jovian delegation to the ISC aboard the Georgia On My Mind space liner. However, in order to smuggle them aboard, they can carry now weapons or equipment and will need an alternate means of escape. * Stanton Station - A space station in Venus Orbit where the Internation Scientific Convention (ISC) is being held. Here, Peyarje will be allowed to present a carefully censored summary of his work on cyberlinkage technologies. The players should take part in the early stages of the ISC while they investigate the conference and find a way to get Peyarje away from his UEA handlers and off-station. * Jovians - The Jovians wish to reap the PR benefits to be found in rescuing a brilliant, pacifist scientist from UEA’s militaristic clutches and also hope that Peyarje can shed some light on some samples of his CAT/Rapid-Scan system found on a secret research station. * UEA - Unfortunately for these operatives, the UEA is taking the security of their prisoner very seriously. The third division of the UEA 4th fleet are moored just off Stanton, at the invitation of the Venusian Plantary Council, and permission has been granted for several officers and marines to accompany Peyarje as a security detail. Though the ISC filed a formal protest over the admittance of UEA military officers acting in an official capacity, the issue has since been dismissed and other nations have been allowed to included similarly-limited security details for their detachments. * Beautiful Dreamer - The PC's meet their contact, Ysa Cantroini and through her, Aglaee Dessources. Both seem to be independents commissioned by the Jovians. Ysa is surpisingly competent at many abilities and Aglaee has a ship for escape along with the characters' gear and mechs. * CHARACTER INVOLVEMENT JAF pilots could be members of an official JAF escort, added (as mentioned above) to balance out the UEA military forces escorting Dr. Peyarje. The pilots would still be instructed to ask questions and discretely investigate, but would be intended to act as a decoy and backup for the real extraction team. By asking questions and poking their noses into places they don’t belong, they would be expected to draw attention away from the real JIS operatives. Who could, in turn, be exposed and captured at the last minute, forcing the players to pull off the heist on their own with insufficient planning. The players could be the backup JIS team instead of the primary, tasked with investigating and doing footwork for the primary team. This puts them on the front lines, while the primary team works to solidify their own cover. The primary team’s cover could then be blown, forcing the players to execute the operation, and keeping them on the front lines. This has many hooks for complications and intruigue. What if the compromised team wasn’t discovered, but betrayed by a double agent in their own ranks? This goes well with the scenario (see below) that has the players trapped in hiding on Stanton. What if the Venusians (specifically, Malachai) were aware of the operation all along and either want the operatives to expose themselves or for the operation to succeed/fail for reasons of their own? Reporters have the easiest time finding cover identities - they don’t need them. The ISC is a big deal, and reporters from all over the solar system can be expected to attend. And reporters are expected to be nosy, so no-one’s going to take excessive notice of a few asking questions where they shouldn’t. However, due to their typical lack of combat skills, reporters will probably be harder to handle for the actual freeing of Peyarje. They would probably have to resort to subterfuge and trickery if called upon to get Peyarje away from his guards themselves. One possibility is to have JIS agents already in place on Stanton handle the snatch, then pass Peyarje off to the reporters for transport, as in the JAF pilots write-up above. The 3rd Division of the CEGA 4th fleet is composed of: • 2 Tengu carriers with extra vehicle bays. • 4 Bricru corvettes. • 1 Hachiman destroyer. One Tengu carries a Wyvern and three Wraiths, while the other carries four Syreens. The squadron is accompanied by several fuel ships, to give extra range to the short-legged CEGA warships. Garand’s Wyvern is the Command variant. While the Hachiman is technically the flagship of the squadron, Garand usually commands from aboard his Tengu where he has easy access to his exo-armor. This can be used to involve Kleb in the scenario without Garand’s knowledge - Kleb could be travelling aboard the Hachiman, watching and ready to take command should the situation demand it. * Escape - The 3rd Divison lacks is deployed far from reinforcements, so it will act cautiously. They know that they don’t need to kill the players - they need to capture the Dreamer. The PCs should realize this, and be careful not to let themselves be drawn away... For what seems like a retreat could really be an attempt to lure them away so that another force can slip in and disable the Dreamer’s engines.") "Dreams oF Freedom" (scenario :name "Dreams oF Freedom" :summary "* Beautiful Dreamer - Rescued from his UEA handlers at the Intersettlement Scientific Convention, Dr. Peyarje and his rescuers have fled Venus aboard the Beautiful Dreamer, privateer ship commanded by Aglaee DesSources. Unfortunately, they have not lost the UEA forces seeking to recapture Peyarje. The 3rd Division of the UEA 4th fleet, commanded by ace pilot Ranho Garand, is in hot pursuit. * Intercept Course - DesSources’ skillful helmsmanship makes the most of their limited reaction mass, but Garand’s 3rd Division is slowly closing in, blocking the orbits they could use to travel out-system. Garand's fleet makes a high energy burn and manages to intercept them and another heated battle ensues. After the battle, the UEA force, having used their remaining reaction mass to intercept must wait for a fuel tender to continue the pursuit. * The Long Trip to Earth - Low on fuel, with the UEA pursuit fleet closing in fast, the crew of the Beautiful Dreamer find themselves with only one option: change course and head for the Earth system, the heart of the UEA and the only source of supplies and fuel in range. Perhaps they can loose their pursuers in the high-traffic Orbitals and find another way to Jupiter. Because reaction mass is low and they need to run silent, the trip takes many days at zero-g. Many days in radio silence are spent discussing ways to get out of this mess.") "Moonlight Sonata" (scenario :name "Moonlight Sonata" :summary "* Ismael Li - Fortunately, the Jovians have been working hard to save the mission and have made a deal with a burgeoning rebel group on the Moon which can to provide them with the fuel and parts they need... For a price! * The Eagle has Landed - Now they just need to avoid the blockade and land on the Moon. Though the Moon has very low gravity, the Beautiful Dreamer is not designed to land on a Moon. Even if they survive the landing, they may not be able to take off again. However, there is no choice in the matter. After a harrowing landing, the rebels help bury the Dreamer in lunar dust and begin repairs and refueling. * Copernicus Base - The characters are invited to the underground, domed city known as Coperinus Base. Here the charismatic Ismael Li introduces them to the harsh life of the Lunar miners. There is nothing to do but wait and meet the pleasant locals while the ship is repaired and the UEA prepares its next move. * The Plot Thickens - Gradually, Ismael brings the characters to see supporters and see his gear. Ismael intends to lead a rebellion to take over Copernicus Base and he needs the characters' help. His group lacks seasoned fighters and they lack tactics, organization, and strategy. This revelation sparks a heated debate over the wisdom of this endevour. No one can argue that their situation is difficult, but even if they succeed the Lunar Authority and the UEA will not just sit back and allow a rebellion. Ismael argues that once they seize control, the Lunar Authority will have to negotiate. Others fear a strong, military response. Any armed conflict in a space station is loaded with risk. If one of the characters befriends or falls in love with one of the rebels, it would add a more personal edge to the rebellion. * Eleventh Hour - With or without the characters' help, Ismael begins to grease the wheels of revolution through raids, assassinations, sabotage, and public relations campaigns. Their target is Captain Ansevik the head of Copernicus security. If they can capture her, they believe they can secure the base. * Moon Strike - After providing the characters with the repairs and fuel they need, he launches his armed uprising in the depths of Copernicus hoping to drag them into the fight. Moving barricades outwards at carefully-regulated intervals, his troops and exo-suits advance through the dome, driving out the UEA bureaucrats and policemen as they go. The few initial firefights go well for the rebels. * The Tide Turns - About six hours into the fighting, things begin to turn. Ansevik manages to get her exo-suit forces into Copernicus, and their numbers mean bad things for the rebels. * Evacuation - Catherine Glit starts an evacuation of refugees. The rebels lift as many to hastily-contracted merchant and passenger ships in lunar orbit as they can. Things become even more chaotic as the Selenties abandon their posts and the rebels fall back before the UEA forces. Organizing such a retreat is no easy task. Dessources takes as many refugees as possible aboard the Dreamer. Ysa wants to help the rebels fight. The characters should be involved in the fighting or evacuation effort somehow. After all, it was their presence that provided the catalyst that started the rebellion. * Escape - Her holds crammed with refugees and UAE ships starting to move in, Aglaee orders the characters back to the ship. Greatful for their help, Li lets them go. He sends Catherine Glit with them at the last minute, against her wishes. As the characters head for the spaceport, the rebels begin another counter-attack, slowly forcing the UAE ground troops back and taking the spaceport and ground-to-orbit weapons. The citizens who couldn’t be evacuated riot, pelting helpless UEA infantry and marines with rocks and bricks. Things are obviously not going well for the UEA troops. * Copernicus Dome Disaster - Ansevik realizes that the rebels could use the city's ground-to-orbit weapons to attack his warships. He must now choose whether to withdraw or fire on the defensive batteries. In a panic, Ansevik orders his ships to attack the laser and missile batteries. The resulting explosions are far larger than expected and shatter the dome. A hasty retreat ensues as the Dome opens to vacuum, killing rebel, civilian, and UEA marine alike. * Chaos - Ismael Li operates the Laser Lifter to boost the refugee ships away, including the Dreamer. Li's last words, relayed to his friends and helpers aboard the Dreamer, are My life for freedom! The Dreamer attempts to escape with the other refugee ships, but the UEA ships are positioned to easily stop them. The UEA demands their surrender, but the UEA ships are then ordered to focus on rescue instead of pursuing the refugee ships. * Aftermath - In the end, thousands are killed in Copernicus Dome. The UEA, of course, refuses to take the blame for the Dome disaster. Their first desperate response is to put the blame on the Jovian terrorists who abducted Peyarje. Reporters use Ansevik’s actions as fodder for their own counter-attack against UEA’s propaganda. * Notes - Develop the rebellion and the rebels, especially Ismael Li. Emphasize the moon’s restrained and industrious culture and the rampant poverty and utilitarian nature of the underground cities. If appropriate, show the corruption of the UEA officials that oversee the colonies. Play up the initial hope and final despair of the rebels, the desperation of the refugees to find a better life, and the chaos of close-quarters fighting in the Lunar warrens.") "Dreams of War" (scenario :name "Dreams of War" :summary "* Mission to Mars - The UEA is in pursuit again and logically expects the Dreamer to head to Jupiter. However, with its high speed escape and her holds crammed with refugees, there’s no way for the Beautiful Dreamer to make Jupiter without running out of supplies or fuel. Fortunately for her crew and desperate passengers, the ship can easily make Mars. There, Aglaee DesSources hopes that the Martian Republic will be able to provide homes to the refugees. * Decoy - The UEA pursuit will soon catch up and they cannot be allowed to follow the Dreamer to Mars, so a desperate plan is devised. The booster rockets from the Moon are removed and fitted with decoy gear to make the rockets appear as the Dreamer. The pilots will escort the rockets on the current course while the Dreamer makes a course correction and silently coasts towards Mars. The escort will engage enemy mechs drawing out the enemies resources while maintaining the charade as long as possible. Once the decoy is discovered the pilots must return to the rockets and activate the massive rockets to boost away at high speed to rendevous with the Dreamer. This plan is loaded with risk and the pilots will probably be caught or killed. Their farewell is long and emotional. After the Moon, the pursuit fleet commander has been ordered to kill everyone aboard the Dreamer both in revenge and to eliminate witnesses. When the UEA pursuit fleet catches up to the decoy, a heated fight begins with no quarter given. Because the UEA is out for blood, they focus on the pilots instead of the 'Dreamer'. The pilots are driven back and the ruse is discovered. The pilots must make a desperate dash to the booster and escape before they are blown out of the sky. Fortunately, they escape though with heavy losses and damage and rendevous with the Dreamer on schedule. The UEA fleet has overcommitted to Jupiter and are unable to pursue to Mars. Anxious days pass as the Dreamer travels at full speed to Mars. When they arrive they will have to hope that the Martian government doesn't arrest them on the spot. Meanwhile, Garand has deduced that the refugees will divert the Dreamer to Mars (because that's what he would do), but his disgust with his superiors' handling of the battle on the Moon causes him to go to Mars on his own. * Mars Arrival - The Dreamer enters Mars orbit and is immediately escorted by a fighter wing and two destroyers. The escort demands that the Dreamer stand down all weapons and prepare to be boarded. They have little choice in the matter. There is nowhere else to go. The boarding party secures the engine room and bridge and dock the Dreamer at the massive Orbital Elevator space station called Heaven. All passengers are taken to immigration while their ship is searched. Here they meet Yanna Summers, the chief adminstrator of the Elevator. Little information is forthcoming and all senior staff are to be taken by shuttle to Mars Federation police headquarters. As they descend, they get an amazing view of the incredible Orbital Elevator in action. * Stairway to Heaven - Constructed with the aid of Venus Bank, the Martian Orbital Elevator, Stairway to Heaven is a marvel of engineering. It stretches upwards from its base at Hell Station just north of the Federation capital of Kurtzenheim to the Heaven Station counterweight. The elevator is dominates the landscape and has become a symbol of Mars Federation authority. It shines like a moon day or night, and it catches the first light of day every sunrise before the rest of Mars. Its ore containers crawl up and down the tether 24 hours a day. The current chief adminstrator, Yanna Summers, is extremely organized and professional and keeps very tight ship. * Martian Politics - Since its creation, the Orbital Elevator has become the center of Martian politics. Mars has two major political factions: the Mars Federation and the Free Republic of Mars. The Mars Federation is an authoritarian regime. It controls most of Mars and is loosely allied with the UEA. The Free Republic of Mars is smaller and is largely at odds with everything the Federation does. The Orbital Elevator has become the center of Martian debate because the Federation controls the Elevator and the huge profits it produces will allow the Federation to dominate the Free Republic in just a few years. Open conflict on Mars has become common and numerous terrorist organizations perform increasingly savage raids on the Mars Federation. The Federation in turn blames the Republic of backing the terrorists which is not entirely without merit. * Life on Mars - At police headquarters, they must negotiate for asylum for the refugees and avoid arrest and extridition to the UEA. They meet with Paul Treben of the Solar Police who is surprised to learn of the unofficial version of the events on the Moon. He will report everything he learns to his superiors who will in turn secretly inform the UEA. Representatives from both political factions arrive intending to use the characters to their own ends. The Mars Federation wants to extridite the characters as terrorists, but the Free Republic grants the refugees asylum and puts a hold on the extridition of the crew of the Dreamer. * Waiting Around - Support for the UEA is weak here, so the characters are released for the time being, though they are escorted by an armed detail at all times. Garand and his elite unit are also poking around and soon confronts the high profile characters, but he has no authority on Mars and can do nothing while the characters remain. In the meantime, the refugees are brought to the Free Republic and a media circus begins as their stories hit the airwaves. The public is shocked and sympathetic to the Selenites, but this soon turns to rage as it becomes clear that the same thing could happen to them. The normal protests for fair use of the Orbital Elevator break out into massive riots and terrorist activity spikes across Mars. * Dangerous Liason - Though the govenments seems to treat the characters like criminals, the public treats them like celebrities or even heroes. While out and about, a pretty young woman approaches one of the males and gushes about how wonderful he is and leaves him her contact code on a slip of paper. After further inspection, the contact code is not a personal address but a secure web site. Following the link, they speak with the girl, Lydia Ketchum, but her manner is very different. She is a political radical who has been implicated in terrorist activity including attacks on police and bombings. She is proud of her actions and believes that giving her life for a free Mars would be a fair trade. She proposes a daring escape plan. Her people will help smuggle the characters up the elevator in a depressurize ore car. There they must fight their way through the station, take over the administration headquarters, and release their ship and mechs from impound. Her people can then use the station defenses to cover their escape. With the station under her control, she can negotiate fair use of the elevator going forward from a position of strength. * Departure - Lydia's plan does not sound entirely rational, and she is not the sort of person who can be trusted. However, without allies the characters are never going to escape Mars, so they have no choice but to take a chance regardless of the consequences. Catherine and Ibrahim are unsure of their long-term safety on Mars and decide to join the group to continue all the way to Jupiter despite the risks. * Hell Ride - After days of planning, Lydia's people distract the guards and the characters make a run for it. After they make their escape, they are swiftly taken to an ore processing plant and smuggled aboard an ore train car. In the train are guns, pressure suits, Lydia, and four of her people. The train goes to Hell station where the cars are searched. Tense moments pass as they wait for the inspector to get to their car. When he opens the car, he looks right at them, winks at Lydia, waves his scanner, and lets the car pass. The characters must take care not to be crushed when the train contents are dumped into an elevator crawler. Soon, the crawler begins its long, slow trip up the elevator. * Heaven Sent - When the elevator arrives at Heaven, its contents are dumped into an open bin. More of Lydia's sympathizers help them bypass security forces. Now the characters need to get to Heaven's Command Center with as little bloodshed as possible. Complicating the situation, Garand appears on a screen. He and his men have commendeered an elevator crawler and are on their way up with their mechs. Though Heaven is a huge structure, it is not a military installation, so with the help of sympathizers, getting to the Command Center is surprisingly easy. Yanna is enraged, but her actions are always pragmatic, so she surrenders the Command Center when the odds are stacked against her. * Elevator Falls - Once Command is secured, the way to the Dreamer is open. Lydia says she will cover their escape and then begin negotiations with the govenment for release of the station. She is, of course, lying. After the Dreamer departs, she does help the Dreamer escape by threatening the UEA ships who cannot fire on the station, but once the Dreamer is clear, she turns Heaven's weapons on the tether. As the support is destroyed, Heaven begins spinning out of orbit while the elevator cable begins to fall, slowly at first, then faster and faster. Garand uses his mech to punch free of the doomed elevator, but he is a very low orbit. The damage from the cable's impact is incredible, as the white-hot dimond-fiber cable slams into the red dust at several times the speed of sound. The elevator is more than one and a half the length of the planet's equator and slowly wraps itself around Mars destroying everything around it for miles. The impact raises a massive cloud of dust and leaves a huge canyon visible from space. The destruction is unequalled in the history of mankind. The death toll is in the millions. The UEA must rescue Garand and Heaven station, so the Dreamer crew can begin the sad trip to Jupiter.") "Dreams of Death" (scenario :name "Dreams of Death" :summary "* Epilogue - The Heaven crew is rescued from a harrowing tumble into space, but the station spins off into space. Lydia proudly takes full credit for the assault in the name of a free Mars. There is little doubt that Lydia will be tried and executed which seemed to be her plan from the start. Her testimony makes it seem that she duped the Dreamer crew into fighting her battle for her. There are many, however, who draw a connection between the Dreamer crew and the disasters on the Moon and Mars. They are not officially terrorists, but you wouldn't know it from some of the news stations. The elevator disaster almost exclusively harmed the Mars Federation which shifted the balance of power back toward the Free Republic, which was Lydia's intention. Garand was saved by a daring low-orbit rescue. The UEA uses his story and the elevator fall to try to deflect attention from their crimes on the Moon, but the UN determines that the Copernicus Disaster was an act of state oppression and that the UEA should be subjected to sactions. * Jupiter - With fresh supplies and full fuel tanks, the Dreamer is easily able to make Jupiter. There, Dr. Peyarje transfers to the JAW Skunk Works team on Joshua Station. His new thought control system is refitted into the new Prometheus prototype mech. * A Mad Plan - The UEA leadership assesses their situation are are not happy at all. They invested massive resources developing Dr. Peyarje's mech control system to gain the upper hand, but now that technology will shift military power toward the Jovians instead. Their actions have caused the Selenites to openly hate and fear them. The Martian economy is in ruins with their ally the Mars Federation hit hardest. The Venusian Bank is still behind them, but they won't be if UEA influence collapses. The military proposes a heartless plan: destroy the Jovian colonies now before the new technology can be used and the entire Solar System will fall under UEA control. The Venusians can be bought off. The disasters on the Moon and Mars leave them in no position to fight back. The other colonies are too small and will have to fall in line. All of this chaos has created an opportunity to establish a new order, but the time to act is now. * The Hammer Falls - The 4th Fleet, still assigned to recover Peyarje and waiting just outside of Jovian space, is ordered into action. The Elysee Station sensor net has been disabled by a UEA agent, allowing the fleet to close with the colony undetected. A powerful jamming device has been deployed by the fleet to prevent the station from calling for help. The ships and mechs are ordered to attack Joshua Station to disable their defenses and force them to negotiate the extradition of the 'terrorists'. Unknown to them, their attack is a diversion for an elite squad of marines in exo-suits who will use retro-rocket packs to deorbit Elysee Station. Their real plan is to send the capital colony and all its inhabitants plunging into the Jovian atmosphere within twenty-four hours. With its leaders and their central hub gone, the Jovians will fall under UEA control. * Dragonstriker - On Joshua station, the characters are introduced to the new elite Vindicator mechs as well as the prototype Prometheus. Each have been fitted with the new CAT control system, but have yet to be tested. Suddenly advanced warning alarms sound, the station is under attack! Ranho Garand's team of elite mechs are charging toward the station, his massive Dragonstriker armor slicing through the Jovian defenses. His intense will and discipline give him near-perfect control over the still imperfect control system fitted to the prototype Dragonstriker. The characters launch to meet him, and the Dreamer hastily launches to lend support to the defending destroyers. All long range communications are disrupted by jammers, so a courier ship is sent to warn the other colonies. The battle is intense, but before it can be resolved, the courier returns. The pilot, Carl DeMers, broadcasts a warning when the interference clears: there is another larger force that has attacked Elysee station! They have fixed rocket packs to the hull and are decelerating the entire colony out of orbit! Everyone at Elysee will die when the station breaks up in Jupiter's atmosphere. * Taking Sides - Kleb’s total lack of honor have pushed Garand’s loyalties to the breaking point. If he finds out about the true plan for Elysee, he will turn on Kleb’s fleet. This will cause other fleet elements loyal to Garand to turn or withdraw from combat. The mechs board their ships are are quickly, re-outfitted on the short trip to Elysee. * The God and the Dragon - They arrive at Elysee to find the battle in full swing, with the Jovian forces slowly being driven back by the UEA Fleet, and the retro-rockets are just beginning to fire. The JSS Godsfire, its weapon block mauled by enemy fire, is trying to evacuate as many civillians as it can, using its remaining firepower to keep the UEA exos and fighters at a distance. Two teams are deployed: one to fight the UEA special forces and disable the rockets, and the another to battle the UEA fleet. The arrival of the Prometheus and Dragonstriker, and a detachment of other exo-armors, quickly turns the tide of battle. The battle seems unlikely to be resolved soon, thanks to the power of Kleb’s Posideon flagship. Garand confronts his former boss, and flies straight toward the Posideon. The Dragonstriker is heavily damaged by the fire, but manages to clamp unto the Posideon's bridge and opens fire at point blank range. The Dragonstriker and Posideon go up in a massive explosion, damaging nearby ships. The tide of battle suddenly turns. Many UEA soldiers were unhappy with Admiral Kleb's actions and are easy to convince with impassioned plees. The rockets are disabled and Elysee station uses its engines to regain its correct orbit. * Epilogue: Garand - Of Garand, no remains are found. While he could have escaped in the escape pod, it seems unlikely that he survived. That the CSS Karana, an Uller-class missile cruiser believed destroyed during the battle, is missing is noticed during cleanup months later, but no connection is ever made between the two events. Garand did survive, but was horribly wounded, and was recovered later by the crew of the Karana, who had trained under him. * Epilogue: UEA - Kleb was killed in the destruction of the Scylla’s bridge. The UEA government publically him off as a 'lone gunman' who acted without official sanction and engages in a ruthless purge of the Navy’s command structure to 'remove any who might seek to follow Admiral Kleb’s example'. In fact, they use this to eliminate to expunge or marginalize those taught by Garand or 'corrupted' by his philosophy from the upper ranks. Their shadowy ties to Venus remain as strong as ever, and, much to their relief, the diplomatic repercussions of the Odyssey affair fade away over the next year. * Epilogue: Venus - Malachai falls into disgrace with VenusBank for his failure to produce results or protect the existance of Project Methuselah, and becomes a dissatisfied freelancer. For the next decade he wanders the solar system, hatching mad schemes to put him in the good graces of his former employer once more and destroy the Confederation. He is eventually captured by SolaPol and disappears. VenusBank begins scaling back its operations slightly, uncertain of just how much the Confederation knows. No public or private charges are ever made by the Confederation over the poaching of the Floaters or the aims of Project Methuselah, leaving the Bank executives in a very unpleasant information vacuum. * Epilogue: Mars - The consequences of the Martian Elevator take a long time to show themselves. Initially, neither Martian government accuses the other of the collapse. Evidence is sketchy, and the presence of Jovian and UEA agents on-site makes things even more uneasy."))) "Europa Incident" (section :name "Europa Incident" :summary "* The Flashlight Project - Blocked from what they believed to be their rightful control over the colonies at every turn by the Jovian Confederation, UEA launched several top-secret advanced weapons projects. One of the less successful efforts was the Flashlight Project, an attempt to develop heavy autonomous drone combat spacecraft. The two Lucifer prototypes, the ultimate end result of the project, were ideal for commerce raiding. They could operate for years without more than cursory communication with their home base; their stealth systems could hide them from the most determined sensors; and their heavy array of particle beam weapons could savage a warship in a single volley. * The project turned out to be too complicated and expensive to mass-produce, but the prototype was dispatched to Jovian space for 'field trials', with orders to destroy any target with a Jovian registry it came across. The plan was to disrupt the Jovian economy enough to make them more pliable to UEA demands. * After the Battle of Elysee, the UEA council determined that the Lucifer would be a political hand grenade if it was captured. They ordered the Lucifer to self destruct, but it had already disappeared in the radiation and magnetic fields around Jupiter, the very fields they had relied upon to hide the drone as it went about its work. Finally, the crew managed to get a signal through, but some interference caused the drone to change course and crash on Europa instead of self-destructing." :scenariomap (scenariomap "A Damaged Freighter" (scenario :name "A Damaged Freighter" :summary "* The UEA Black Eagle Squadron is smuggled aboard the freighter Narsus to recover the datacore of the Lucifer and destroy any evidence. The Black Eagles had planned to slip onto Europa undetected after the Narsus dropped into orbit around the moon. Supposedly, she was to be taking on water for a journey up to Ganymede. The plan was that she would deploy the Eagles’ exo-armors, head off to deliver the rest of her cargo, then return and pick them up a week later. Faulty parts led to an explosion in Narsus' engines during her insertion burn. The captain managed to drop the freighter into a stable orbit around Europa before the engines completely died, but then, as is standard practice for merchant crews, immediately set off a distress beacon. * With all the unexplained attacks in Jovian space lately, an exo-armor patrol is dispatched from their carrier to investigate. The crew seems to sincerely have severe engine trouble. Some of the Jovians will have to board the Narsus leaving their exos tethered to the hull. The remainder stay on patrol. * Inside, the freighter is in zero-g and is particularly cramped. The crew's story seems to hold up, but the four passengers are uneasy about the situation. The engines are in bad shape and are irradiated. The cargo hold has large, sealed, liquid cargo bins labeled with warnings as liquid methane. If the Jovians start attempt to open the cargo, the captain will lose his nerve and reveal that the passengers are UEA pilots. A firefight erupts and the Black Eagles get into the cargo containers and remotely open the cargo bay to vacuum. The UEA troops escape by detonating the Narsus as a distraction (killing the crew, of course) and releasing an ECM scrambler pod. They have clearly descended to Europa somewhere.") "Escape to the Ice Planet" (scenario :name "Escape to the Ice Planet" :summary "* With Europa's low surface gravity, the Black Eagle team's exo-armors descend to the surface safely using their own thrusters. Europa’s surface is covered by a thick layer of ice. Unlike ice on Earth, this isn’t slippery - it’s nowhere near the freezing point. The surface is perilous with unstable ground and spontaneous geysers. * The UEA team radios for a pickup using a small signal booster in orbit. They then begin a tedious search for the Lucifer. * The JAF patrol rejoins its carrier and begins a search of Europa. * The UEA team eventually discovers the crashed Lucifer but finds footprints and vehicle tracks nearby. The data core has already been removed and taken to the small research station Europa 1. The UEA team breaks the ice beneath the Lucifer to let it fall into the ocean below never to be discovered. Then they must follow the tracks to recover the data core before its secrets are revealed and/or silence the witnesses. * When the JAF arrives, they must deduce what has happened and race to intercept the UEA team.") "Hide and Seek" (scenario :name "Hide and Seek" :summary "* Europa 1 is not well guarded, but it is a large facility with lots of staff. The UEA must infiltrate the base and quickly locate the data core before the rendezvous in 12 hours. The station is unarmed, and if a firefight erupts, everyone will flee to the underground shelters. If they run out of time, the UEA may be forced to destroy the base, but this would not guarantee the destruction of the data core. * The JAF can immediately land at the base and are introduced to Dr. Han Krieger and his attractive daughter Paula. They have recovered the data core, but did not have sufficient equipment to study the downed ship. * If the UEA can get close enough they can hack the core remotely and trigger a data wipe. They may also threaten to blow up the base if they are not given the core. Whether they succeed or not, the UEA will have to retreat back to the rendezvous point or be stranded. When they retreat, the JAF will have to guess at where they are going and why, but either way they will need to pursue them.") "Hell Unchained" (scenario :name "Hell Unchained" :summary "* Suddenly, a large shadow passes overhead. It's a frigate, the UEA pickup has arrived. Six exo-armors exit its bay and begin to advance. * As the JAF prepare to meet them, the frigate opens fire. Suddenly, there is a deep tremor in the ice below. The UEA agents feel it too and stop code. Suddenly, from under the ice, an impossibly brilliant beam of light lances up to engulf one of the descending exo-armors. It doesn't explode but it just melts and disappears in the beam. Soon, the ice seems to explode and the enormous black form of the Lucifer rises from below. * With its data core removed and a firefight nearby, it switched to its limited, secondary systems and it is unable to determine friend from foe. Its massive guns are clearly building another charge and moments later it fires at the frigate's engines. The crippled engines briefly leak fusing hydrogen before destroying the frigate in a nuclear fireball. It then begins to engage the new exo-armors from the frigate. * The JAF and UEA will have to quickly come to terms with the fact that the Lucifer will kill them all unless they work together. * If the Lucifer escapes, it will boosts off Europa into a tight slingshot orbit and then use its ECM systems to hide in Jupiters radiation belt. Without its higher brain functions, the Lucifer is more of a killing machine than an assassin, so it is now a question of how much damage it will do before it is taken down. * If the Lucifer is destroyed over Europa, it will crash into the ice and be lost in the depths. Without their pickup, the UEA agents will have to negotiate the terms of their surrender. Regardless, they will be tried and interrogated for their actions."))) "Jovian History" (section :name "Jovian History" :summary "* Mercury, Helios Station - A permanent colony of 8 million orbiting Mercury is established. Its orbit puts it constantly in Mercury's shadow protecting it from most of the Sun's deadyly rays. Naturally, it has access to almost limitless solar power. All equipment around Mercury is outfitted with a unique heavy armor that combines hard radiation shielding with solar collection. * Venus, New Tokyo - The capital of Venus is a sprawling megaplex of 15 million at the North Pole of Venus. Though terraforming has been going on for decades, the poles are still the only places where the temperatures are survivable. The city is completely enclosed and partially underground. Industry is relegated to the wastelands outside. The Venusian bank invested heavily in developing Venus and has seen phenomenal growth. The bank now effectively owns the entire planet. * Earth 2210 - The UAE launches an attack against the Jovian civilian colonies in an attempt to push the colonies back into line. * Mars, Marsquake - The obital elevator around Mars is destroyed by sabotage, and the enormous, carbon-diamond fiber cable was slowly dragged from orbit as the planet turned. The cable dropped with devastating force, wrapping around the equator two and a half times. Fortunately, the sparse population of Mars reduced the scope of the devastation. There is a common joke that Mars is now the only planet with an actual black line at the equator. Hot heads and smugglers have take to racing down the trench created by the cable. * War Aftermath - Some UAE leaders were found guilty of crimes against humanity for their attacks against the Jovian colonies. The other colonies increasingly see Earth as irrelevant to their future. Earth politics is divided on how to proceed. The UAE has gone underground and now covertly funds a paramilitary group of disgruntled combat veterans and pirates in order to further its aims in space.") "Jovian Characters" (section :name "Jovian Characters" :unitmap (unitmap "Aglaee Dessources" (unit :name "Aglaee Dessources" :summary "* Mysterious, beautiful, and cold, Aglaee DesSources is the captain of the Beautiful Dreamer, a privateer vessel. Once an extremely promising CEGA Navy captain, she retired at the age of thirty to her present position. * 42 year old aristocratic-looking woman.") "Adrian Allen" (unit :name "Adrian Allen" :summary "* Adrian is bookish and quiet pilot unlike the adventurous, rowdy Exo-pilot crowd. He is inexperienced and sometimes panics in combat when clear solutions are not obvious. He is currently single athough he is attracted to Foxy Fujima. * Age: 22") "Madelaine Koudriopoulos" (unit :name "Madelaine Koudriopoulos" :summary "* Strong willed and tenacious fighter pilot. * She is the only daughter of Konrad Koudroipoulos, Khannan's commander. Because of this, she had to fight with pilots who accused her of favoritism and her father who made every effort to get her to step down. * She has been teamed up with Adrian Allen who has become like a big brother to her. She interferes a lot with his personal life, much to his despair. She is bold but is uncomfortable dating, so she currently has no boyfriend. * Age: 21") "Foxy Fujima" (unit :name "Foxy Fujima" :summary "* Freelance reporter travelling from cylinder to cylinder in search of a story. She has a high attitude of the moral importance of reporting, so she will not cover trival stories which has limited her career development. Her beauty has attracted many men, but she seems to only be interested in her career. * Age: 22") "Dr. Agram Peyarje" (unit :name "Dr. Agram Peyarje" :summary "Brilliant scientist researching human/machine interfaces. A staunch pacifist, Peyarje is repelled by war in general and utterly disgusted by what CEGA plans to do with his inventions. He sees the Confederation as his best hope of escape, even if they too are warmongers.") "Dr. Catherine Glit" (unit :name "Dr. Catherine Glit" :summary "* Catherine used to serve as Ismael Li's personal assistant and moderator. She is now the representative of the escaping Lunar refugees. * She is an excellent doctor, highly regarded by all. While she appears cold to everyone, she is shy and only opens up to close friends.") "Ismael Li" (unit :name "Ismael Li" :summary "Ismael Li is the leader and driving force behind the burgeoning Lunar resistance movement. Once a miner, Li worked hard, long hours in the tunnels deep below the Lunar surface and Helium-3 harvesters. He quit in disgust when he realized that the company he’d worked ten hard years for was constantly operating at a loss and systematically abusing its employees in order to provide CEGA and massive Earth corporations with cheap Lunar ores. Using the excellent education provided to all Selenties, Li spoke out against the CEGA “occupationâ€?, making speeches and distributing eloquent pleas for regime change in an attempt to awaken the populace to the truth of their situation. Five years ago, under investigation by CEGA and Lunar police forces, Li took his crusade underground. No matter what he did, legitimate means would only get him arrested. He set about building a proper revolutionary organization out of the public eye, aiming to drive CEGA off the Lunar surface by force of arms. Strangely, this has won him many more converts among the usually peaceful Selenites than his speaches ever did. He finds this somewhat disheartening, but still forges ahead. Li is now ready to launch his uprising. The arrival of the PCs has moved his timetable up a bit, as their actions on Venus have distracted many of CEGA’s forces and their skills can be a great help to him. He is a fundamentally honest man, and will promise fuel, parts, and provisions in exchange for the PCs’ help. He will give them what he promised without short-changing or holding back. He also truly believes in his cause, and would willing sacrifice his life to save any of his supporters.") "Jovian Floater" (unit :name "Jovian Floater" :summary "* The Jovian floater is giant, blimp-sized animal filled with gas that lives its entire life floating in Jupiter's atmosphere. It has a unique biology similar to photosynthesis that consumes water, methane, and radiation to produce food. This biology also produces a short-lived compound that repairs radiation damage to its DNA which allows it to survive in the harsh radioactive environment. The medical significance of this creature especially to space flight cannot be overstated. How life could begin in such high radioactivity remains a mystery.") "Luka Ansevik" (unit :name "Luka Ansevik" :summary "Captain Luka Ansevik is the commander of the small CEGA lunar garrison force. Captain Ansevik is throughly unimaginative, a very by-the-book officer, assigned to a post not likely to tax her capabilities. After all, what threat could the unarmed and industrious Selenites pose to the military might of CEGA? When revolution erupts around her, Ansevik will do her best to contain it, but becomes increasing desperate as the situation unravels. She knows that failure to resolve the situation before her superiors are forced to take notice will be the end of her career. Ansevik is an officer focused on tactics and administrative work. As such, her combat skills are virtually nonexistent - she is much more comfortable ordering others into combat than fighting herself. This leads to disaster, as it leaves Ansevik out of touch with her troops as they desperately fight the rebels in the streets of Copernicus. Finally, increasingly desperate to contain the situation, she could be the one to order the dome blown. (Ind) Ysa Cantroni Ysa will be in her element during the Lunar uprising. Action, crusading for justice, and a bevy of human interest stories to practice her reporting skills on! Having spent a year touring the Earth system at one point, Ysa has a number of useful contacts on Luna that can supplement those provided by DesSources and Li. Even if she doesn’t travel down from the Dreamer with the PCs initially, she will try to find some way down so she can help the Selenites of Copernicus fight for their freedom once the uprising begins. Of course, Ysa might not be quite as good at tunnel fighting as she thinks she is. Saving her from herself could be an exciting and frustrating subplot for a PC, especially one who has become emotionally involved with her. Having a mysterious masked figure in a red CEGA exosuit (Garand, of course) help save her and keep her safe from CEGA forces, but carefully avoid aiding the rebels, might create an interesting mystery... Or not, depending on how sharp your players are.") "Lydia Ketchum" (unit :name "Lydia Ketchum" :summary "* Lydia Ketchum is a Martian Republic Rook, a Ranger trained for deep-cover operations within the Federation. One of the Republic’s best rangers, she’s been assigned to watch the orbital elevator. She takes her job quite seriously, and has so far managed to avoid drawing the notice of the Federation. * Unfortunately, not all is as it appears with Ranger Ketchum. She is from the Isidis Planitia, an isolated area that recently (2207) declared its independence from the rest of the Republic. The Isidisians are even more militant about the Federation than ordinary Republic citizens, and see the Federation’s orbital elevator as a very personal and insufferable insult to their national pride.") "Yanna Summers" (unit :name "Yanna Summers" :summary "Yanna Summers is the decidated and hardworking administrator of the Martian Orbital Elevator. While her actual domain is very small - she only has direct control over Heaven and Hell station - the amount of commerce that travels up and down the beanstalk has given her a sizable amount of influence within the Federation’s government. This is counterbalanced by her attempts to open Federation society up a little. Her position and efforts, however, did draw the attention of the Society of the Evolved Human, which she eagerly joined when offered membership. Yanna’s connection to the Society was what lead Aglaee to steer the players towards her, and inclined her to help them find a home for the refugees. It also could be what leads to her asking the PCs for help with the scientist case - another test by the Society to help them reach their potential. She has contacts all through the Federation bureaucracy, and could use them to help the players with their investigation... But there will likely be a price of some kind, as she’s already stretched her resources thin to secure passage for the refugees. This could, however, lead to the “Refugees Under Attackâ€? subplot. Or Yanna could be a background character that just serves to lead the PCs into the episode.") "Ysa Cantroini" (unit :name "Ysa Cantroini" :summary "Ysa has spent the past several years travelling the solar system and working odd job. This has given her an extremely wide range of skills (though none at more than 2/1 or 2/2) and connections, especially here on her native Venus. Ysa is bright and intelligent, generally assuming a quiet but cheerful air. She’s a wandering soul, and doesn’t think she could ever stay happy in one place or one job for the rest of her life. She is seriously considering becoming a reporter, however, as this gives her a way to travel and encounter a wide variety of experiences while getting paid and doing good. Much to her shame, her father is a high-ranking executive in the Venusian bank. She has cut all ties with him, and does not regret doing so, but this secret connection could still draw suspicion to her.") "Admiral Russel Kleb" (unit :name "Admiral Russel Kleb" :summary "Admiral Kleb is the throughly corrupt commander of the CEGA 4th Fleet. A hard-line war supporter, Kleb believes the inhabitants of the colonies to be completely inferior to native Terrans. This provides him with the justification he needs to take any action in pursuit of CEGA dominance. He is in the pay (and service) of the Venusian bank, as they provide him with the means to further his own ambitions, but he will not hesitate to betray them for his own advantage. They are, after all, just inferior colonists, cowardly employing bribery when they should be using righteous force. * Despite his biases, Kleb is a brilliant tactician, equally adept at combat maneuvers and political backstabbing. He is a staunch member of the UEA ruling faction, and an adherent to the warship-centric old school of military thinking. To him, adherents of the exo-centric school are children playing with fancy new toys. Ranho Garand, as the most prominently successful exopilot in the UEA navy and focus of the Dragonstriker program, is a frequent target of Kleb’s scorn.") "Ranho Garand" (unit :name "Ranho Garand" :summary "* Commander of the 3rd Division of the CEGA 4th fleet, Garand is an ace exo-armor pilot and media darling. Despite his military connections, Garand is a devoted member of Chang’s political faction. While he does believe the military to be a necessary tool, he doesn’t believe that it is the proper one to further UEA’s domination over their wayward colonies. He was one of UEA’s first exo-armor pilots, and taught many of the current generation, passing on both his piloting skills and his philosophy. Garand is a man of honor and discipline, with a spotless service record and excellent reputation. He does not enjoy killing or combat, but his honor demands that he follow orders and defend his people. Despite his iron will, he is prone to fits of irrational rage towards those who have forced him to commit (or involved him in) dishonorable acts."))) "Commercial Spacecraft" (section :name "Commercial Spacecraft" :unitmap (unitmap "Albatross Transorbital Shuttle" (unit :name "Albatross Transorbital Shuttle" :summary "* The Albatross is the latest in a long line of shuttles used for cargo and passenger transfers to various atmospheres. One or two are standard equipment for any large military ship." :mass "45tons" :speedair "1200kph" :speedspace "1.5g") "Beautiful Dreamer Transport" (unit :name "Beautiful Dreamer Transport" :summary "* The Beautiful Dreamer, at first sight, seems to be a standard Inari-class liner. As with many Inari, the Dreamer has been modified heavily, and there are many differences in the ship’s lines. Two concealed railguns run along the ship’s spine, providing an unpleasant and unexpected punch. The cargo bays on the craft’s edges have been modified to carry mechs and fighters, complete with concealed catapults. * 2 Medium Railguns * 4 Mech Bays - Cannot land fighters. * 2 Magnetic Catapults" :crew "54" :mass "10000tons" :length "270m") "Inari Space Liner" (unit :name "Inari Space Liner" :summary "* Unlike the bulk transport Mule, the Inari was designed to be a high speed passenger liner to get people quickly between the planets. Though not as modular as the Mule, the Inari can be heavily customized to specific tasks. Though it is not a military vessel, the Inari is fast and can be modified to be cary significant armor and weapons, thus making it well suited as a privateer." :titles "Georgia on my Mind" :crew "108" :mass "10000tons" :length "200m") "Carver Mining Ship" (unit :name "Carver Mining Ship" :summary "* The Carver is designed for the purpose seeking out and mining asteroids. The ship is very odd looking with three insect-like legs surrounding the main laser drill. The standard protocol for asteroid mining is to land on a mineral-rich feature, drill a deep tunnel, and then pressurize the tunnel so further operations can be done without environment suits. Ore is sent on a conveyor belt to the onboard smelter for separation and purification. * The Carver is intended to work perpetually. Its drive system is slow but extremely robust, able to use mined hydrogen for fuel and any waste material as reaction mass. Small tugs commute back and forth carrying ore to nearby space colonies and returning with supplies and spare parts. The tugs also carry replacement crew members. * The Carver has been in service for so long that their prices have come down dramatically. Since this work is enormously profitable, banks are willing to finance individuals if they can demonstrate a sound business plan." :speed ".15g" :mass "1200tons" :length "80m" :width "80m") "Mule Freighter" (unit :name "Mule Freighter" :summary "* The Mule Freighter is a simple, reliable design for transporting large amounts of cargo across the solar system. It has no interior cargo hold, instead it has a series of connectors to link self contained cargo pods of various sizes. The connectors can also be used to hook onto asteroids or other ships to allow the Mule to act as a tug. * The Mule is the most common ship in the solar system and is used by every government and commercial space organization. Because the Mule is so versatile, it can even be used as a slow carrier or missile gunboat. For similar reasons, it is a favorite ship for smuggling or piracy as well. * Its acceleration reduces as its load increases. It can transport up to 40ktons before its acceleration becomes too low to be practical." :titles "Narsus" :speed ".4g" :crew "6" :mass "4000tons" :length "345m" :width "40m") "Ox Orbital Tug" (unit :name "Ox Orbital Tug" :summary "* The Ox is a space-only shuttle used for short tranports between space stations, tugbot duty, asteroid transport, and salvage operations. It has large manipulator arms to manage unusually shaped loads. It is a very sturdy if slow craft." :speed ".5g" :mass "41tons"))) "Jovian Federation" (section :name "Jovian Federation" :summary "* Jovian capital ships are built for easy maintainance and reuse. They are composed of 4 sections: engine, cargo, habitat, and mission. All but the mission section can be interchanged with the equivalent sections from other ships. The habitat ring can even be removed for short range missions, or additional cargo modules can be added for greater endurance." :unitmap (unitmap "Jovian Pilot" (unit :name "Jovian Pilot") "Jovian Mech Jock" (unit :name "Jovian Mech Jock") "Jovian Tech" (unit :name "Jovian Tech") "Lancer Space Interceptor" (unit :name "Lancer Space Interceptor" :summary "* Despite the heavy investment in Mech Suits, Jovian interceptors remain an important part of Jovian armed forces. Their high acceleration allows them to be sent as the first line of defense ahead of the slower Mech Suits. They are well suited to recon and hit-and-run missions. They carry variable weapon pods for specialized recon, ECM, bomber, or long-range scouting missions. * 1 Light Laser Cannon * 6 Light Missiles * 2 Medium Missiles * 1 Heavy Missile" :mass "50tons" :height "25m" :speedspace "3.2g" :width "10m") "Pathfinder Mech Suit" (unit :name "Pathfinder Mech Suit" :image "JovianChronicles/PathfinderToken.png" :summary "* The Pathfinder is a rugged, simple to maintain Exo Suit design that forms the majority of the Jovian Mech forces. It is very agile but relatively fragile and mounts only light weaponry because it is designed primarily as a scout craft. Its high speed, agility, and exceptional close combat abilities proved the value of Mech Suit design and it remains the most iconic Mech Suit in existence. * 1 Medium Particle Cannon * 2 Medium Missiles * 2 Plasma Lances" :mass "35tons" :height "15.4m" :speedland "26kph" :speedspace "2.8g" :width "11m") "Retaliator Mech Suit" (unit :name "Retaliator Mech Suit" :summary "* The Retailator is the standard Jovian interceptor Mech. Well-armed and fast for its size, it can take on larger opponents and come out on top. Its speed comes at the sacrifice of some armor unfortunately and its thrusters always overheat forcing pilots to take great care or risk burned out thrusters. * 1 Medium Rail Cannon * 4 Medium Missiles * 6 Light Missiles * 2 Plasma Lances" :mass "42tons" :height "15.5m" :speedland "66kph" :speedspace "2.4g" :width "12m") "Vindicator Mech Suit" (unit :name "Vindicator Mech Suit" :summary "* The Vindicator is the most powerful mass-produced Mech in the solar system. It carries massive armor and armament, but its high cost limits its use to a few elite pilots. It is also painfully slow compared to the Pathfinders and Retailators it flies with. * 1 Medium Rail Cannon * 1 Medium Laser Cannon * 10 Heavy Missiles * 3 Plasma Lances * 2 Anti Missile Systems" :mass "70tons" :height "16m" :speedland "36kph" :speedspace "1.8g" :width "14m") "Prometheus Mech Suit" (unit :name "Prometheus Mech Suit" :summary "* The Prometheus was intended to be a prototype for a new generation of mech suits which would be more efficient, better armed, and faster than their predecessors. However, as development progressed, several experimental systems were added that made it a one of a kind wonder that could never be mass produced. * 1 Heavy Plasma Cannon * 2 Light Plasma Cannons * 2 Plasma Lances" :mass "64tons" :height "18m") "Prometheus Storm Attacker" (unit :name "Prometheus Storm Attacker" :summary "* The [Prometheus Mech Suit] can be equipped with a heavy set of extra armor and weapons. The additional mass of the armor is negated by additional thrusters. If these thrusters are damaged the armor can be jettisoned leaving a fully functional Promethus. * 1 Heavy Plasma Cannon * 2 Light Plasma Cannons * 2 Plasma Lances * 2 Heavy Laser Cannons * 1 Particle Scatter Gun * 80 Medium Missiles" :mass "82tons" :height "21m") "Athena Destroyer" (unit :name "Athena Destroyer" :summary "* Athena Destroyers function much as their wet navy ancestors. Depending on the political climate, they are either protective shepards or hunting wolves. The Athena's job is to get in the way of danger. If an unknown vessel is detected, the destroyer will move ahead into a blocking position to defend the rest of the fleet. * The Athena is particularly fast and maneuverable for a capital ship and works closely with any small craft. Weapons: * Point Defense System * 3x Particle Accelerators * 6x Railguns * 2x Area Defense Laser Cannon * 1x Missile Bay" :speed ".8g" :mass "10ktons" :length "291m" :width "81m") "Forge Patrol Carrier" (unit :name "Forge Patrol Carrier" :summary "* Forge class carriers carry 12 pilots including squadron leaders. * There are 24 Forge class vessels commissioned. * Speed: .8g Weapons: * Point Defense System * 8 Rail Cannons * 2 Laser Cannons * 2 Missile Bays Vehicles: * 6x Mobile Suits with room for 12 * 6x Catapults" :mass "39000tons" :length "460m" :width "285m") "Explorer Scout Ship" (unit :name "Explorer Scout Ship" :summary "* One of the earliest planetary exploration ships, the Explorer has been produced for many years and is a reliable though uninspired design. Its modular design is its greatest asset and has ensured its continued use for decades. The crew module can be extended on a tether for artificial gravity with the other end counterbalanced by a water tank." :speed ".4g" :mass "1ktons" :length "345m" :width "40m") "Gagarin Fleet Tender" (unit :name "Gagarin Fleet Tender" :summary "* The Gagarin is a mobile tender designed to facilitate drydock style repairs close to the front lines. * Its mission hull is a gigantic workshop with huge door sections that can surround and refit a vessel in a pressurized environment. * Speed: .1g Weapons: * Point Defense System * 1x Missile Bay" :mass "92ktons" :length "740m" :width "285m") "Javelin Cruiser" (unit :name "Javelin Cruiser" :summary "* The Javelin is the most common warship in the Jovian Navy despite its age and lack of interceptor or Mech Bays. Its design is based on pre-Mech combat philosophy, emphasizing heavy weapons on capital ships as opposed to projection of force using smaller craft. Therefore, it is very heavily armed for a relatively small craft including the deadly heavy particle beam cannon. * Crew accomodations are small but comfortable with cleverly placed mirrors throughout the ship that give the illusion of greater interior space. * Point Defense System * 2 Heavy Rail Cannons * 1 Heavy Particle Beam Cannon Turret * 2 Missile Bay * 6 Space Dart Heavy Missiles" :speed ".6g" :mass "20ktons" :length "235m" :width "72m") "Valiant Strike Carrier" (unit :name "Valiant Strike Carrier" :summary "* The Valiant Strike Carrier is a ship like no other. Every other ship in the fleet is designed to work in cooperation with one another. The Valiant is designed to operate on long range, long term patrols with no backup. It is therefore heavily armed, armored, and carries extensive supplies and fabrication facilities. * It has two rotating crew decks that are very spacious for a spaceship. * 6 Heavy Rail Cannons on 2 Turrets * 1 Missile Bay * 1 Spinal Particle Beam Cannon * 6 Magnetic Catapults * 1 Certifuge Crew Module * 2 Lancer Interceptors * 2 Pathfinder Mech Suits * 2 Retaliator Mech Suits * 2 Vindicator Mech Suits" :speed ".8g" :mass "40ktons" :length "320m" :width "75m"))) :UEA (section :name "UEA" :titles "United Earth Alliance" :unitmap (unitmap "UEA Commando" (unit :name "UEA Commando" :classification "Lt. Infantry") "UEA Marine" (unit :name "UEA Marine" :summary "* Standard issue for all regular infantry and covert ops personnel. * High Impact Plastics with reinforced joints. * Enhanced Sensory gear and Comm System * HUD Targeting * Optional Backpacks with custom gear" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Mobile Infantry" (unit :name "UEA Mobile Infantry" :summary "* Standard issue for assault and special forces personnel. * Hardened Crystalline Lattice Ceramic Compounds * Elaborate Sensory and Comm System * HUD Targeting with Smart Weapon links Powerful Backpack package including: * Ion thrusters * Heat Sink * Mini Fusion Plant * Y-rack gernade launcher (optional I-rack or micro turret) * Weapons can be powered from plant * Environmental Independence * Flamethrowers and Thrusters in arms and legs * Stealth options available" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Mobile Assault Infantry" (unit :name "UEA Mobile Assault Infantry" :summary "* Form is vaguely humanoid * Armor is extremely heavy and hardened * Weapons are built in and smart * Power Assist and Hand to Hand Weaponry make few obstacles a barrier Weapon Packages * When standing still the armor is considered a fixed weapon platform. * Heavy Machine Guns * Light Autocannon * Multiple Missile Launchers Backpack Package * Large Fusion Plant * Improved Heat Sink * Thrusters are extremely powerful * Wheels in legs for fast road movement * Speed and Maneuverability in open terrain are the trademarks of these types. * They are clumsy and overly destructive in tight quarters. * These models are purely Assault/Scorched Earth types similar to miniature tanks." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Pilot" (unit :name "UEA Pilot") "UEA Mecha Pilot" (unit :name "UEA Mecha Pilot") "UEA Tech" (unit :name "UEA Tech") "Cerberus Mech Suit" (unit :name "Cerberus Mech Suit" :summary "* The Cerberus is the first cutting edge Mobile Suit design from the UEA. * The name Cerberus comes from the large ECM pods on each shoulder which continually scan in all directions giving the appearance of 3 heads. * The Cerberus is designed as a hit-and-run unit, so it very fast and manueverable but has limited endurance by design. It is only available to commanders and elite pilots. * 30mm Massdriver with Depleted Uranium/Tungsten rounds. 20 shots. * Linked 20mm Vulcan Autocannons in the head. * 1 Plasma Lance * 1 Mech Combat Knife" :classification "Lt. Spacecraft" :mass "63tons" :height "17m" :speedland "36kph" :speedspace "1.8g" :width "15m") "Dragonstriker Mech Armor" (unit :name "Dragonstriker Mech Armor" :image "JovianChronicles/DragonstrikerToken.png" :summary "* Mechs are designed to battle other mechs and perhaps cripple enemy capital ships. The Dragonstriker is a unique prototype designed to attack enemy capital ships and installations directly. It is a massive mech, towering over other mechs and carrying formidable weapons to battle both capital ship and other mechs. * The Dragonstriker has a detachable booster that provides extra acceleration and range. The booster also houses the 2 Medium Laser cannons for strafing enemy capital ships. * 4 Heavy Anti-Ship Beam Cannon * 2 Medium Anti-Ship Laser Cannon (2 linked under for strafing attacks, mounted to booster) * 6 30mm Vulcan Autocannon (4 linked forward, 2 linked rear in head) * 4 Heavy Anti-Ship Missile (4 forward) * 2 Anti-Missile Laser Turret (1 forward, 1 rear)" :titles "CXE-01" :classification "Lt. Spacecraft" :mass "110tons" :height "24m") "Hachiman Destroyer" (unit :name "Hachiman Destroyer" :summary "* The Hachiman is the workhorse of the UEA navy. They have been produced for many years with minor upgrades. * 1 Point Defense System * 6 Railcannon Turrets * 2 Missile Bays * 2 Laser Turrets" :speed ".6g" :classification "Hvy. Spacecraft" :crew "60" :mass "5500tons" :length "208m" :width "80m") "Lucifer Cybersat" (unit :name "Lucifer Cybersat" :summary "* The Lucifer’s designed for one purpose - to ambush and kill enemy warships. Its sophisticated Stealth systems allow it to hide and its strong electronic warfare suite prevents its prey from calling for help. Powerful thrusters allow it to accelerate at incredible speeds, and a cluster of six small linked particle cannons and two large ones allow it to inflict massive damage very quickly. * Armor - Despite the advanced technology, its armor is quite thin for its size, and in a stand-up fight, it will almost certainly lose. The only questions are how to force it into a stand-up fight and how many of its attackers it can take with it. * Particle Cannons - The combined power of the dual particle cannons are equal to a spaceship's main gun. They have separate fusion engines just to recharge its capacitors, but it still takes 30 seconds between firings. * Particle Array - The 6 smaller particle cannons are designed for rapid fire against fast moving targets and are used between firing of the main guns. * Claws - Its claws are independent wire-guided drones armed with small energy weapons to deal with enemy interceptors. The claws are very fast and agile, but not very tough. They can replenish their fuel reserves by docking with the Lucifer. * Speed - The drones will almost never use their full top speed, and the Lucifer will make every effort to conserve its remass. For long-range travel, it won’t boost at more than 0.4 or 0.6 Gs except in short bursts. Much of its time will be spent drifting along a medium-traffic orbit. * Stealth - The Lucifer carries an advanced ECM/stealth package that allows it to sneak up on enemies and attempt to cripple them while scrambling any distress calls. ECM(6, 10km), Stealth (6); Quantity Name Type Arc ACC DM BR ROF Perks + Flaws Ammo 1 Particle Cannon Cluster E F +0 x12 4 +4 Hw,Red;AD(2),HEAT Unl. 2 Mega Particle Cannon E F -1 x30 7 -1 Red,Hw;AD(2),HEAT;Link Unl." :titles "CXS-01B, Automated Experimental Terror Raider" :classification "Lt. Spacecraft" :mass "95tons" :height "18.8m" :speedspace "4g" :unitskillmap (unitskillmap "Mission Section" (unitskill :name "Mission Section" :unitspecialtymap (unitspecialtymap "Stealth Vessel" (unitspecialty :name "Stealth Vessel"))))) "Lucifer Claw Drone" (unit :name "Lucifer Claw Drone" :summary "Armor: 10/20/30 *Miscellaneous Threat Value (MTV): - Crew: Computer 1 (Dumb, Level 2) (2 actions) Accessories: Autopilot; Arm: Manipulator Arm (R5, Can Punch); Armor: HEAT Resistant(5); Communications (-2, 2km); Hostile Environment Protection: Radiation (4), Vacuum, Extreme Cold; Sensors(+0, 2km); Vulnerable to Haywire; Quantity Name Type Arc ACC DM BR ROF Perks + Flaws Ammo 1 Laser Cannon E FF +1 x10 5 +0 Red;AD(1),HEAT Unl. 1 Plasma Lance E F +0 x15 M +0 AC,Red;HEAT Unl." :classification "Lt. Spacecraft" :mass "3tons" :speedspace "5g") "Siren Space Interceptor" (unit :name "Siren Space Interceptor" :summary "* The Siren Fighter is the standard medium range interceptor spaceship used by the UEA. It is faster than any other short range space craft in the Solar System, but without high mobility verniers it is outclassed by Mobile Suits. It is ideally suited for patrolling and policing the space lanes. * The Siren can be launched from Earth using a booster rocket making it even more practical for Earth defense. * 2 Medium Railguns * 6 Medium Missiles * 4 Light Missiles" :classification "Lt. Spacecraft" :mass "40tons" :length "14m" :speedspace "3.5g" :width "12m") "Syreen Mech Suit" (unit :name "Syreen Mech Suit" :image "JovianChronicles/SyreenToken.png" :summary "* The Syreen Suit is a Siren space fighter retrofitted into a Mech Suit. It was hastily constructed when the first conflict with the Jovians displayed the dominant mobility of the Jovian Mech Suits. * As an efficient and cheap design, it can be fielded in large numbers. However, it does not compare well to the new Mech Suits that it is meant to face, so casualties are high. * The Syreen can be launched from Earth using a booster rocket making it even more practical for Earth defense. * 2 Heavy Missiles * 6 Medium Missiles * 4 Light Missiles * Point defense laser system * 2 Crude manipulator arms for close combat. * The command variant includes a powerful ECM pod." :classification "Lt. Spacecraft" :mass "52tons" :height "17.2m" :speedspace "3g" :width "17.5m") "Poseidon Battlecruiser" (unit :name "Poseidon Battlecruiser" :summary "* The Poseidon Class Battlecruiser is the top of the line UEA warship. It gets its name from the two rotating living sections that give the ship the appearance of a trident. * The Poseidon outclasses any other warship from any faction and is a menancing presense. It was, however, designed before the advent of Mech Suits, so it carries more interceptors than Mechs. * Point Defense System * 4 Particle Accelerator Batteries * 4 Railcannon Batteries * 6 Interceptors * 4 Mech Suits" :classification "Hvy. Spacecraft" :crew "200" :mass "30ktons" :length "325m" :speedspace ".5g" :width "200m") "Tengu Escort Carrier" (unit :name "Tengu Escort Carrier" :summary "* The Tengu is a long range craft designed for limited engagements and policing. It has extensive supplies but lacks firepower. * 1 Point Defense System * 2 Missile Bays * 2 Mech Suits * 2 Fighters * 2 Catapults" :classification "Hvy. Spacecraft" :crew "24" :mass "25ktons" :length "250m" :speedspace ".5g" :width "38m") "Wyvern Mech Suit" (unit :name "Wyvern Mech Suit" :image "JovianChronicles/WyvernToken.png" :summary "* The Wyveern is the first and most numerous of the UEA Mech Suits. Though a copy of the Martial Federation Defender, it is a sturdy, reliable and most importantly mass-produceable design. Its primary limitation is the lack of energy weapons which limits its combat endurance before it needs to be rearmed. * 1 Hyperbazooka * 2 Massdriver Machineguns * 2 Self guided Missiles" :speed "1.4g" :mass "55tons" :height "17m" :length "4m" :speedair "2.4mach" :speedland "36kph" :width "14m")))))) (func chapter_mobile_suit_gundam_equipment : base/chapter (chapter :name "Mobile Suit Gundam Equipment" :sectionmap (sectionmap "Gundam Equipment" (section :name "Gundam Equipment" :summary "* Energy rating for MW weapons assumes a 3 second burst." :itemmap (itemmap "Titanium Composite" (item :name "Titanium Composite" :summary "This is the state of the art armor plate before the discovery of Gundarium Alpha which completely eclipses it.") "Gundarium Alpha" (item :name "Gundarium Alpha" :summary "Originally called Luna Titanium, it was renamed after the success of the RX-78 Gundam built from it. A super high-tensile alloy originally known as Luna Titanium. Originally intended for use inside thermonuclear reactors, this alloy's superb strength, durability, heat resistance and radiation-absorbing properties make it an ideal material for mobile suit armor." :titles "Gundarium, Luna Titanium") "Gundarium Gamma" (item :name "Gundarium Gamma") "60mm Vulcan Cannon" (item :name "60mm Vulcan Cannon" :reference "Stats based on 57mm Bofors Naval Gun" :titles "VCU-505EX-Gry/Ver.009 (Titans) / VCU-505EX-V*B/Ver.012 (AEUG)" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "1000m/s" :range "8.5km" :rof "220/min") "100mm Machine Gun" (item :name "100mm Machine Gun" :titles "NF-GMG-Type.37" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "600m/s") "120mm Machine Gun" (item :name "120mm Machine Gun" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "600m/s" :rounds "100") "180mm Recoilless Cannon" (item :name "180mm Recoilless Cannon" :titles "NFHI-GMCa-type.09" :classification "Cannon" :muzzlevelocity "300m/s") "240mm Recoilless Cannon" (item :name "240mm Recoilless Cannon" :classification "Cannon" :muzzlevelocity "300m/s") "280mm Bazooka" (item :name "280mm Bazooka" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "4") "360mm Hyper Bazooka" (item :name "360mm Hyper Bazooka" :summary "* Capable of destroying a GM in a single hit." :titles "H&amp;L-GB05R (Zeon) / H-Baz-85-Gry/Ver.045 (Titans) / H-Baz-87-A*E/Ver.004 (AEUG)" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "10") "380mm Hyper Bazooka" (item :name "380mm Hyper Bazooka" :titles "BLASH-XHB-L-03/N-STD" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "5") "Clay Bazooka" (item :name "Clay Bazooka" :image "Gundam/ClayBazooka.jpg" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s") ".4MW Beam Saber" (item :name ".4MW Beam Saber" :titles "XB-G-1048L (Titans) / A*E-Br*G-Sc-L (AEUG)" :classification "Hvy. Melee" :energy "1.2MJ" :modifiers "Energy") ".65MW Beam Saber" (item :name ".65MW Beam Saber" :classification "Hvy. Melee" :energy "1.95MJ" :modifiers "Energy") "1.3MW Beam Gun" (item :name "1.3MW Beam Gun" :classification "Cannon" :energy "3.9MJ" :modifiers "Energy") "1.3MW Funnel" (item :name "1.3MW Funnel" :classification "Cannon" :energy "3.9MJ" :modifiers "Energy") "1.9MW Beam Rifle" (item :name "1.9MW Beam Rifle" :summary "Powered by rechargeable energy cap" :titles "BOWA-BR-S-85-C2" :classification "Cannon" :energy "5.7MJ" :modifiers "Energy") "2.2MW Beam Pistol" (item :name "2.2MW Beam Pistol" :summary "Powered by rechargeable energy cap" :classification "Cannon" :energy "6.6MJ" :modifiers "Energy") "2.2MW Funnel" (item :name "2.2MW Funnel" :classification "Hvy. MG" :energy "6.6MJ" :modifiers "Energy") "2.6MW Beam Rifle" (item :name "2.6MW Beam Rifle" :summary "Powered by rechargeable energy cap" :titles "BOWA*XBR-M-86-C2 (Titans), A*E-Br*XBR-87-C (AEUG)" :classification "Cannon" :energy "7.8MJ" :modifiers "Energy") "2.8MW Beam Rifle" (item :name "2.8MW Beam Rifle" :summary "Powered by rechargeable energy cap" :classification "Cannon" :energy "8.4MJ" :modifiers "Energy") "5.7MW Beam Rifle" (item :name "5.7MW Beam Rifle" :image "Gundam/ZetaBeamRifle.jpg" :summary "Powered by replaceable e-pac, doubles as large beam saber" :classification "Cannon" :energy "17.1MJ" :modifiers "Energy") "8.3MW Hyper Mega Launcher" (item :name "8.3MW Hyper Mega Launcher" :summary "Powered by replaceable e-pac, doubles as large beam saber" :classification "Cannon" :energy "24.9MJ" :modifiers "Energy") "19.5MW Mega Particle Gun" (item :name "19.5MW Mega Particle Gun" :classification "Cannon" :energy "58.5MJ" :modifiers "Energy")))))) (func chapter_mobile_suit_gundam_units : base/chapter (chapter :name "Mobile Suit Gundam Units" :sectionmap (sectionmap "Gundam Independents" (section :name "Gundam Independents" :unitmap (unitmap :Side (unit :name "Side" :length "32km"))) "Gundam Federation" (section :name "Gundam Federation" :unitmap (unitmap :Ball (unit :name "Ball" :image "Gundam/Ball.png" :titles "RB-79" :speed ".96g" :classification "Cannon" :mass "17.2tons" :height "12.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon" :facing "F"))))) :Gundam (unit :name "Gundam" :image "Gundam/Gundam.png" :summary "Performance: maximum thruster acceleration 0.93 G; maximum ground running speed 165 km/h Equipment and design features: re-entry coolant system Optional hand armaments: BOWA-XBR-M-79-07G beam rifle, powered by rechargeable energy cap; RX·M-Sh-008/S-01025 shield, can be optionally stored on backpack" :titles "RX-78-2" :classification "Lt. Spacecraft" :mass "43.4tons" :height "18m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2") "380mm Hyper Bazooka" (unititem :name "380mm Hyper Bazooka"))))) "Gundam Ground Type" (unit :name "Gundam Ground Type" :image "Gundam/GundamGroundType.png" :reference `The engineers at Jaburo used spare parts originally manufactured for the RX-78-2 Gundam prototype and built approximately 20 units of a specialized ground combat-model Gundam, the RX-79[G]. Twelve of these units were assigned to the Kojima Battalion stationed in Southeast Asia, particularly to the 04th and 08th MS Teams. Since the RX-79[G]'s were made primarily of spare parts leftover from "Project V," no replacement parts were available. This resulted in hasty field repairs` :summary "Speed: 0.71 G Fixed armaments: multi-launcher, mounted in chest; 2 x X.B.Sa-G-03 beam saber, stored in recharge racks in legs, hand-carried in use Optional fixed armaments: RGM-S-Sh-WF/S-00109 shield, mounted on either forearm Optional hand armaments: P.B.R-0079/A12 S-000011 beam rifle, powered by rechargeable energy cap; bazooka gun, clip-fed, 7 rounds per clip; 6-tube missile launcher;" :titles "RX-79(G)" :classification "Med. Tank" :mass "52.8tons" :height "18.2m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "100mm Machine Gun" (unititem :name "100mm Machine Gun" :summary "Clip-fed, 2 spare clips stored on hip armor") "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :summary "Chest Mount" :facing "FF" :number "1"))))) :Guncannon (unit :name "Guncannon" :image "Gundam/Guncannon.png" :summary "Speed: 0.74 G Optional hand armaments: BOWA-XBR-L beam rifle, powered by rechargeable energy cap" :titles "RX-77-2" :speed "78kph" :classification "Lt. Spacecraft" :mass "51tons" :height "17.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "240mm Recoilless Cannon" (unititem :name "240mm Recoilless Cannon" :facing "FFx2" :number "2" :rounds "40") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Guntank (unit :name "Guntank" :image "Gundam/Guntank.png" :summary "Performance: maximum thruster acceleration 1.10 G; maximum ground driving speed 70 km/h 2 x 4-tube 40mm rocket launcher, mounted on arms" :titles "RX-75" :speed "70kph" :classification "Lt. Spacecraft" :mass "56tons" :height "15.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon" :facing "FFx2" :number "2" :rounds "60"))))) :GM (unit :name "GM" :image "Gundam/GM.png" :titles "RGM-79" :classification "Lt. Spacecraft" :mass "41.2tons" :height "18m") :Magellan (unit :name "Magellan" :image "Gundam/Magellan.png" :classification "Hvy. Spacecraft") "Pegasus Class Carrier" (unit :name "Pegasus Class Carrier" :image "Gundam/WhiteBase.png" :summary "Fixed armaments: 4 x main gun; 2 x mega particle gun; hyper mega particle cannon; 2 x missile launcher Mobile suits: 8 (12) 2x Catapults" :titles "White Base" :classification "Hvy. Spacecraft" :mass "54ktons" :height "76.5m" :length "341.7m" :width "124.1m"))) :Zeon (section :name "Zeon" :unitmap (unitmap :Big-Zam (unit :name "Big-Zam" :image "Gundam/BigZam.png" :classification "Med. Spacecraft" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) :Dom (unit :name "Dom" :image "Gundam/Dom.png" :summary "Ground Mobile Suit" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Elmeth (unit :name "Elmeth" :image "Gundam/Elmeth.png" :classification "Med. Spacecraft") :Gelgoog (unit :name "Gelgoog" :image "Gundam/Gelgoog.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gouf (unit :name "Gouf" :image "Gundam/Gouf.png" :classification "Lt. Spacecraft") "Rick Dom" (unit :name "Rick Dom" :image "Gundam/RickDom.png" :reference "Realizing that the outcome of the war was going to be decided in space, Zeon devoted all of its mobile suit manufacturing resources to space combat units. Refining the Dom design for space was simple, and mostly involved replacing the hover jet thrusters with standard rocket thrusters. Zeon manufacturers began cranking out hundreds of these new units late in the war, replacing the aging MS-06F Zaku II as the premiere front line combat unit." :summary "Performance: maximum thruster acceleration 0.67 G; maximum ground running speed 110 km/h Fixed armaments: scattering beam gun, mounted in torso; heat saber Type7, battery powered, stored in recharge rack on back, hand-carried in use" :titles "MS-09R" :classification "Lt. Spacecraft" :mass "78.6tons" :height "18.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "360mm Hyper Bazooka" (unititem :name "360mm Hyper Bazooka" :rounds "10"))))) "Zaku II" (unit :name "Zaku II" :image "Gundam/ZakuII.png" :summary "Speed: .59G/88kph Sensor radius: 3200 m 180-degree turn time: 1.7 sec Ground speed: 88 km/h Armor: super-high tensile steel Armament: heat hawk x 1 Optional armament: 3-missile pod x 2, cracker" :classification "Lt. Spacecraft" :mass "58.1tons" :height "17.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "280mm Bazooka" (unititem :name "280mm Bazooka" :rounds "4") "120mm Machine Gun" (unititem :name "120mm Machine Gun" :rounds "100"))))) :Z'Gok (unit :name "Z'Gok" :image "Gundam/ZGok.png" :summary "0.86 G; maximum water speed 103 knots Fixed armaments: 6 x 240mm missile launcher, 5 round magazine per launcher, mounted in head; 2 x mega particle cannon, mounted in forearms" :titles "MSM-07" :classification "Lt. Naval Vessel" :crew "1" :mass "65.1tons" :height "18.4m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Zeong (unit :name "Zeong" :image "Gundam/Zeong.png" :summary "maximum thruster acceleration 0.81 G Fixed armaments: 2 x wire-guided 5-barrel mega particle gun, barrels mounted in manipulator fingers, all barrels in each hand are fire-linked; 2 x mega particle gun, mounted in torso; mega particle gun, mounted in head" :titles "MSN-02" :classification "Med. Spacecraft" :crew "1" :mass "151.2tons" :height "17.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "Gwazine Class Battleship" (unit :name "Gwazine Class Battleship" :image "Gundam/Gwazine.png" :reference "The Zeon Gwazine class battleships were more than a match for any Federation Forces warship." :summary "Fixed armaments: 3 x 2-barrel main gun; 10 x 2-barrel secondary gun; many x 155mm machine gun Mobile suits: 20" :classification "Hvy. Spacecraft" :mass "108.1ktons" :height "103m" :length "440m" :width "320m") :Musai (unit :name "Musai" :image "Gundam/Musai.png") "Zanzibar Class Cruiser" (unit :name "Zanzibar Class Cruiser" :image "Gundam/Zanzibar.png" :reference "Zeon's closest answer to the Federation's Pegasus class carrier, the Zeon Zanzibar class mobile cruiser replaced the vulnerable H.L.V. for the purpose of ferrying mobile suits to Earth and back to space. With a capacity of 6 mobile suits and a battery of bow-mounted mega particle guns, the Zanzibar was often used as the command ship for smaller fleets when a Gwazine class battleship was either unavailable or unsuitable. Lacking the Pegasus class' integral Minovsky Craft System, the Zanzibar could only operate for short periods in Earth's atmosphere, using sustained thrust. When being launched back into space, the Zanzibar class required a special rocket booster to supply the necessary thrust to break free of Earth's gravity. like most Zeon warships of the One Year War, lacked launch catapults, instead deploying its complement of mobile suits through a simple hatch on the ventral hull." :summary "Fixed armaments: 1 x 2-barrel main gun; 4 x mega particle gun; 5 x 2-barrel machine gun Mobile suits: 6" :classification "Hvy. Spacecraft" :height "70.5m" :length "255m" :width "221.8m"))) :0083 (section :name "0083" :unitmap (unitmap "Gundam GP01" (unit :name "Gundam GP01" :image "Gundam/GundamGP01.png" :titles "Gundam Unit 01") "Gundam GP02" (unit :name "Gundam GP02" :image "Gundam/GundamGP02.png" :titles "Gundam Unit 02") "Gundam GP03" (unit :name "Gundam GP03" :image "Gundam/GundamGP03.png" :titles "Gundam Unit 03") "Neue Ziel" (unit :name "Neue Ziel" :image "Gundam/NeueZiel.png"))) :AEUG (section :name "AEUG" :unitmap (unitmap "Z Gundam" (unit :name "Z Gundam" :image "Gundam/ZGundam.png" :summary "* Variable Mobile Suit Speed: 1.81 G Fixed armaments: 2 x 2-tube grenade launcher, 2 rounds per tube, mounted in forearms; Optional fixed armaments: grenade launcher cartridge, 18+1 rounds, serves as extended ammunition magazine for grenade launcher; shield, mounted on left forearm" :titles "MSZ-006" :classification "Lt. Spacecraft" :mass "28.7tons" :height "19.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "5.7MW Beam Rifle" (unititem :name "5.7MW Beam Rifle" :summary "2 spare e-pacs stored in shield") "8.3MW Hyper Mega Launcher" (unititem :name "8.3MW Hyper Mega Launcher") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2" :rounds "1200"))))) "Z Gundam Waverider" (unit :name "Z Gundam Waverider" :image "Gundam/Waverider_ZGundam.png" :summary "* Variable Mobile Suit" :titles "MSZ-006" :speed "1.81g" :classification "Lt. Spacecraft" :mass "28.7tons" :length "24.3m" :width "18.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "5.7MW Beam Rifle" (unititem :name "5.7MW Beam Rifle") "1.3MW Beam Gun" (unititem :name "1.3MW Beam Gun"))))) :G-Defenser (unit :name "G-Defenser" :image "Gundam/GDefenser.png" :summary "* Space Fighter * Separatable cockpit capsule Fixed armaments: 2 x 14-tube missile pod, mounted in binders on main body; long beam rifle, mounted on main body; 2 x mini laser gun fire-linked, power rated at 1.7 MW each, mounted in nose of cockpit capsule; 4 x vulcan gun, mounted in pairs in missile pod binders, each pair fire-linked" :titles "FXA-05D" :speed "1.41g" :classification "Lt. Spacecraft" :mass "24.7tons" :length "39.5m" :width "27.1m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "Gundam MK-II" (unit :name "Gundam MK-II" :image "Gundam/GundamMkII.png" :reference "* Paradoxically, the Gundam Mk. II is not armored with the wonderfully durable Gundarium alloy material used by the original RX-78 Gundam, making it no more or less physically durable than mass-production mobile suits." :summary "RX*M-Sh-VT/S-00018 (Titans) / RX*M-Sh-VT/S-001 (AEUG) shield, mounted on either forearm Optional hand armaments: 2 spare e-pacs stored in shield; AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds per clip" :titles "RX-178" :speed "1.5g" :classification "Lt. Spacecraft" :mass "33.4tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "2.6MW Beam Rifle" (unititem :name "2.6MW Beam Rifle") "360mm Hyper Bazooka" (unititem :name "360mm Hyper Bazooka" :rounds "7") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2" :rounds "1400"))))) "Hyaku Shiki" (unit :name "Hyaku Shiki" :image "Gundam/HyakuShiki.png" :summary "Equipment and design features: anti-beam reflective coating on amror Optional hand armaments: AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds per clip; mega bazooka launcher" :titles "MSN-100" :speed "1.37g" :classification "Lt. Spacecraft" :mass "31.5tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "2.8MW Beam Rifle" (unititem :name "2.8MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Nemo (unit :name "Nemo" :image "Gundam/Nemo.png" :summary "Optional fixed armaments: shield, mounted on either forearm Although closely based on the GM II, was far better in performance in terms of generator power, thruster acceleration and maneuverability. To help keep its cost down, the Nemo used many weapons already employed by other existing mobile suits, such as the RMS-099 Rick Dias' beam saber and the GM II's beam rifle." :titles "MSA-003" :speed "1.15g" :classification "Lt. Spacecraft" :mass "36.2tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "1.9MW Beam Rifle" (unititem :name "1.9MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) "Rick Dias" (unit :name "Rick Dias" :image "Gundam/RickDias.png" :reference "* Because many former Zeon engineers worked on the Rick Dias, it featured many similaritys to Zeon suits. It not only features a mono-eye sensor its name is also derived from the MS-09R Rick Dom (Rick comes from the word Remake). The Rick Dias should originally be called Gundam Gamma because it is built out of new Gundarium Gamma. This material was developed by Axis and it makes the suit lighter and thus makes it able to accommodate greater fuel capacity." :summary "* Equipment and design features: 2 x 'random binder' ejectable external propellant tank, mounted on backpack; birdlime launchers in hands; flare launchers in hands * Fixed armaments: 2-barrel 55mm vulcan phalanx anti-missile gun system, mounted in head; * Optional hand armaments: AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds; beam rifle, powered by rechargeable energy cap" :titles "RMS-099, Gundam Gamma" :speed "1.37g" :classification "Lt. Spacecraft" :mass "32.2tons" :height "18.7m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "2.2MW Beam Pistol" (unititem :name "2.2MW Beam Pistol" :number "2") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) "Super Gundam" (unit :name "Super Gundam" :image "Gundam/SuperGundam.png" :summary "Combined Mobile Suit" :titles "FXA-05D+RX-178" :classification "Med. Spacecraft" :mass "72.9tons" :height "18.5m") :Argama (unit :name "Argama" :image "Gundam/Argama.png" :classification "Hvy. Spacecraft") "Garuda Class Transport" (unit :name "Garuda Class Transport" :image "Gundam/Garuda_Audhumla.png" :summary "Propulsion system: jet engine x 10 Armament: laser gun x 10 Mobile suits: 20 Ships of the line: Garuda, Audhumla, Sudori, Melord Mechanical designer: Kazumi Fujita" :titles "Audhumla, Garuda, Melord, Sudori" :classification "Med. Aircraft" :mass "9800tons" :length "317m" :width "524m"))) "Gundam Titans" (section :name "Gundam Titans" :unitmap (unitmap :Asshimar (unit :name "Asshimar" :image "Gundam/Asshimar.png" :summary "* Variable Mobile Suit" :titles "NRX-044" :classification "Lt. Spacecraft" :mass "41.1tons" :height "19.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Baund-Doc (unit :name "Baund-Doc" :image "Gundam/BaundDoc.png" :summary "* Variable Mobile Suit" :titles "NRX-055" :classification "Lt. Spacecraft" :mass "82.7tons" :height "27.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Byalant (unit :name "Byalant" :image "Gundam/Byalant.png" :summary "* Variable Mobile Suit" :titles "PMX-000" :classification "Lt. Spacecraft" :mass "34.2tons" :height "18.6m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gabthley (unit :name "Gabthley" :image "Gundam/Gabthley.png" :summary "* Variable Mobile Suit" :titles "RX-110" :classification "Lt. Spacecraft" :mass "32.6tons" :height "18.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gaplant (unit :name "Gaplant" :image "Gundam/Gaplant.png" :summary "* Variable Mobile Suit" :titles "ORX-005" :classification "Lt. Spacecraft" :mass "50.7tons" :height "19.8m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "GM II" (unit :name "GM II" :image "Gundam/GMII.png" :summary "Fixed armaments: beam saber, power rating unknown Optional fixed armaments: shield, mounted on either forearm" :titles "RMS-179, RGM-79R" :speed "1.06g" :classification "Lt. Spacecraft" :mass "40.5tons" :height "18.1m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "1.9MW Beam Rifle" (unititem :name "1.9MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Hambrabi (unit :name "Hambrabi" :image "Gundam/Hambrabi.png" :summary "* Variable Mobile Suit" :titles "RX-139" :classification "Lt. Spacecraft" :mass "34.6tons" :height "19.9m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Hizack (unit :name "Hizack" :image "Gundam/Hizack.png" :titles "RMS-106" :classification "Lt. Spacecraft" :mass "38.7tons" :height "18m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Marasai (unit :name "Marasai" :image "Gundam/Marasai.png" :titles "RMS-108" :classification "Lt. Spacecraft" :mass "33.1tons" :height "17.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Messala (unit :name "Messala" :image "Gundam/Messala.png" :summary "* Variable Mobile Suit" :titles "PMX-000" :classification "Lt. Spacecraft" :mass "37.3tons" :height "23m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Psycho-Gundam (unit :name "Psycho-Gundam" :image "Gundam/PsychoGundam.png" :summary "* Variable Mobile Suit" :titles "MRX-009" :classification "Med. Spacecraft" :mass "214.1tons" :height "40m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) "Psycho-Gundam MK-II" (unit :name "Psycho-Gundam MK-II" :image "Gundam/PsychoGundamMkII.png" :summary "* Variable Mobile Suit Performance: maximum thruster acceleration: 0.86 G (mobile suit mode), 1.99 G (mobile fortress mode) Equipment and design features: sensors, range 16230 meters; psycho control chair in cockpit; detachable head, can be operated without main body Fixed armaments: 20 x mega beam gun, power rated at 6.3 MW each, 3 mounted in each shoulder, 4 mounted in each leg, 2 mounted in each hip armor, 1 mounted in each front waist armor; 3 x mega scattering beam gun, power rated at 10.7 MW each, mounted in torso; 2 x wire-guided psycommu beam sword, power rated at 1.7 MW each, mounted in forearms; 10 x beam gun, emitter barrels mounted as fingers in hands; 2-barrel mega beam gun, mounted in head Remote weapons: reflector bits, deflects and redirects beam weapons fire, stored in backpack Though armed with the same 3-barreled scattering mega particle gun in its chest and beam gun fingers, the Psyco Gundam Mark II also mounted 20 smaller beam guns all over its body, giving it firepower capable of attacking targets in all directions. Its forearms also mounted large-bladed beam swords, and could be detached and directed at targets via a cable connection and through the control of the Psyco Gundam Mark II's psycommu system, giving the unit an all-range attack capability quite similar to that of the Principality of Zeon's MSN-02 Zeong. The Psyco Gundam Mark II also carried a set of 'reflector bits,' which were unarmed but used to redirect its own beam weapons fire to targets that are out-of-sight, or to deflect incoming enemy beam weapons fire." :titles "MRX-010" :classification "Med. Spacecraft" :mass "187.8tons" :height "40m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) :Qubeley (unit :name "Qubeley" :image "Gundam/Qubeley.png" :summary "Fixed armaments: 2 x beam launcher/beam saber, mounted in forearms in beam launcher mode, hand-carried in beam saber mode" :titles "AMX-004" :speed "1.08g" :classification "Lt. Spacecraft" :mass "35.2tons" :height "18.4m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "1.3MW Funnel" (unititem :name "1.3MW Funnel" :number "10"))))) :The-O (unit :name "The-O" :image "Gundam/TheO.png" :summary "4 x sub-arm, mounted inside front skirt armor" :titles "PMX-003" :speed "1.57g" :classification "Lt. Spacecraft" :mass "57.3tons" :height "24.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "2.6MW Beam Rifle" (unititem :name "2.6MW Beam Rifle"))))) :Saberfish (unit :name "Saberfish" :image "Gundam/Saberfish.png" :summary "High Altitude Fighter" :classification "Lt. Aircraft") :Gwazine (unit :name "Gwazine" :image "Gundam/Gwazine.png") :Jupitris (unit :name "Jupitris" :image "Gundam/Jupitris.png") :Salamis (unit :name "Salamis" :image "Gundam/Salamis.png"))) "Federation (New)" (section :name "Federation (New)" :unitmap (unitmap "Nu Gundam" (unit :name "Nu Gundam" :image "Gundam/NuGundam.png" :titles "RX-93" :classification "Lt. Spacecraft" :mass "27.9tons" :height "22m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Re-GZ (unit :name "Re-GZ" :image "Gundam/ReGZ.png" :summary "* Variable Mobile Suit" :titles "RGZ-91" :classification "Lt. Spacecraft" :mass "24.7tons" :height "20.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))))) "Neo Zion" (section :name "Neo Zion" :unitmap (unitmap :Alpha-Azieru (unit :name "Alpha-Azieru" :image "Gundam/AlphaAzieru.png" :summary "Speed: 8.29 G * 2 x external propellant tank, ejectable, mounted on main body Fixed armaments: 2 x wire-guided psycommu mega arm, each mounts 5 x beam gun, fire-linked, power rated at 12.6 MW each" :titles "NZ-333" :classification "Med. Spacecraft" :mass "267.4tons" :height "58.4m" :length "108m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "19.5 MW Mega Particle Gun" (unititem :name "19.5 MW Mega Particle Gun" :facing "Turret") "2.2MW Funnel" (unititem :name "2.2MW Funnel" :number "9") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx4" :number "4"))))) :Sazabi (unit :name "Sazabi" :image "Gundam/NuGundam.png" :titles "MSN-04" :classification "Lt. Spacecraft" :mass "30.5tons" :height "25m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles")))))))))) (func chapter_terminator : base/chapter (chapter :name "Terminator" :sectionmap (sectionmap "Terminator Units" (section :name "Terminator Units" :unitmap (unitmap "Terminator T-800" (unit :name "Terminator T-800" :image "Terminator/T800.png" :mass "200kg" :unitskillmap (unitskillmap :Strength (unitskill :name "Strength"))) "Terminator T-1000" (unit :name "Terminator T-1000" :image "Terminator/T1000.png" :unitskillmap (unitskillmap :Flexible (unitskill :name "Flexible"))) "Terminator T-X" (unit :name "Terminator T-X" :image "Terminator/TX.png" :summary "* The T-X is designed to not only terminate humans but rogue Terminators reprogrammed by the Resistance. It is a composite of the T-800 and T-1000, a solid endoskeleton covered with polymimetic liquid metal alloy, allowing it to take the shape of any humanoid it touches. The T-X endoskeleton contains many powerful weapons making it considerably more deadly than previous versions." :mass "150kg" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry"))) "Terminator Hunter Killer" (unit :name "Terminator Hunter Killer" :image "Terminator/HunterKiller.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery"))) "Terminator Tank" (unit :name "Terminator Tank" :image "Terminator/HKTank.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery"))))))))
nx/tactics/books/high_technology / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "High Technology" :image "HighTech.jpg" :chaptermap (base/chaptermap "High Tech Overview" (chapter_high_tech_overview) "Cyberpunk Campaign" (chapter_cyberpunk_campaign) "High Tech Rules" (chapter_high_tech_rules) "High Tech Equipment" (chapter_high_tech_equipment) "High Tech Spacecraft" (chapter_high_tech_spacecraft) "High Tech Aircraft" (chapter_high_tech_aircraft) "High Tech Heavy Armor" (chapter_high_tech_heavy_armor) "Space Colonies" (chapter_space_colonies) "Car Wars" (chapter_car_wars) "Cyberpunk" (chapter_cyberpunk) "Jovian Chronicles" (chapter_jovian_chronicles) "Mobile Suit Gundam Equipment" (chapter_mobile_suit_gundam_equipment) "Mobile Suit Gundam Units" (chapter_mobile_suit_gundam_units) "Terminator" (chapter_terminator) )))
nx/tactics/books/high_technology / chapter_high_tech_overview
Description:
Function Name:
  • chapter_high_tech_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_overview : base/chapter (chapter :name "High Tech Overview" :sectionmap (sectionmap "Why Tactics: High Technology?" (section :name "Why Tactics: High Technology?"))))
nx/tactics/books/high_technology / chapter_cyberpunk_campaign
Description:
Function Name:
  • chapter_cyberpunk_campaign
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_cyberpunk_campaign : base/chapter (chapter :name "Cyberpunk Campaign" :sectionmap (sectionmap "Cyberpunk Overview" (section :name "Cyberpunk Overview" :summary "* Events Leading to War * Overview of the War * Aftermath") "Car Wars" (section :name "Car Wars" :scenariomap (scenariomap "Escort Duty" (scenario :name "Escort Duty" :summary "* An Agricorp has commissioned some independents to covertly escort an unmarked tractor-trailer 1900 miles from their site in La Jolla to a USDA facility near Nashville, TN. * A rival has sent its own independents to get their hands on the cargo. * Note: The cargo/escort is a decoy for the real shipment." :teammap (teammap :Escort (team :name "Escort" :completevictory "$1000/each if cargo delivered intact." :forces "* 1 Tractor-trailer * 2 Sedans" :partialvictory "Prevent enemy from taking any of the shipment.") :Interceptors (team :name "Interceptors" :completevictory "Capture the entire shipment." :forces "* 1 Van * 3 Sedans" :partialvictory "Capture any of the shipment."))) "Safe House" (scenario :name "Safe House" :summary "* A small-time fixer has evidence of the identity of a cyber serial killer, the Night City Stalker. Two news organizations are bidding on the deal, but the loser contacted the Stalker out of spite.") "Toxic Spill" (scenario :name "Toxic Spill" :summary "* While guarding a 200 person Nomad camp, the well drill discovers a hidden toxic waste dump. Alarms alert the dumping company that their little secret has been discovered, so they send a team to 'clean up' the problem. * The whole Nomad camp must evacuate 3 miles to town before they are silenced, unfortunately they do not have enough vehicles to do it in one trip.") "The Heist" (scenario :name "The Heist" :summary "* In a winter storm, a shipment of Palladium is diverted to a small warehouse in a corporate park. It will not be moved until the weather turns, so it is a perfect opportunity to break in and steal the goods. * During the storm, the skies are dangerous, and even the roads are fairly dicey. Snowmobile are certainly an option." :teammap (teammap :Thieves (team :name "Thieves" :completevictory "Capture the whole shipment." :forces "* 10 Thieves * 5 Snowmobiles * 3 Sedans" :partialvictory "Take at least half of the shipment.") :Guards (team :name "Guards" :completevictory "Protect the entire shipment." :forces "* 10 Armed and Armored Guards * 10 Unarmored, sleeping Guards * 5 Sedans * 2 Helicopters" :partialvictory "Protect at least half of the shipment."))))))))
nx/tactics/books/high_technology / chapter_high_tech_rules
Description:
Function Name:
  • chapter_high_tech_rules
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_rules : base/chapter (chapter :name "High Tech Rules" :sectionmap (sectionmap :Cyberspace (section :name "Cyberspace" :summary "* A huge, interconnected series of computer networks, software systems, and virtual realities that form a continuous digital universe of nearly infinite scope. * Interface programs sort through this information and produce a virtual world tailored to the user's desire. The most common interface is that of digital cities that mirror their real world equivalents, but display computer systems, data blocks, and information pathways instead of buildings, people, and highways. * Nodes - Nodes in Cyberspace are locations in Cyberspace. Nodes include Telecom lines, Satellite Uplinks, Firewalls, Security Cameras, Remote Controls, Databases, and Virtual Realities. Different Nodes usually require valid security or payment to use. Nodes can also hold nasty surprises including alarms and defense programs. * Movement - Distances are insignificant in Cyberspace. Instead, movement is measured in tasks. Any program can perform a number of tasks each turn equal to [Netrunning] skill. Each node entered in Cyberspace is a task. Performing any [Action] at a node is also a task." :titles "The Digital Web, The Net, The Network, World Wide Web, The Web"))))
nx/tactics/books/high_technology / chapter_high_tech_equipment
Description:
Function Name:
  • chapter_high_tech_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_equipment : base/chapter (chapter :name "High Tech Equipment" :sectionmap (sectionmap "Consumer Goods" (section :name "Consumer Goods" :itemmap (itemmap :Autobike (item :name "Autobike" :summary "* Autonomous motorcycle used for most transit. A small fraction of the Autocar fleet is filled by Autobikes. Though slightly cheaper to rent than Autocars and better in tight traffic, most people use Autocars exclusively.") :Autocar (item :name "Autocar" :summary "* Autonomous car used for most transit. Ordinary citizens rarely own their own vehicles, instead they summon an automated rental car with their phone that takes them directly to their destination. Autocars are parked throughout populated areas, so summoning one usually takes seconds. Autocars coordinate with each other and can travel at high speeds in tight traffic without incident. * History - Automated cars took over major cities within years of their invention. They solved traffic, parking, accident, and environmental problems all at once while offering cheaper per mile travel than owning your own vehicle. They rapidly made taxi and ridesharing solutions obsolete, and it soon became illegal for a human to drive a vehicle because autocars were so much safer. Soon all mass transit systems reduced down to autocars and some autobikes.") :Cyberchip (item :name "Cyberchip" :summary "* Standard memory/application chip. All media is stored on cyberchips and can be played by simply plugging the chip into any standard interface. * Plugging cyberchips directly into one's body is called 'Chipping In'.") :Cybercycle (item :name "Cybercycle" :summary "* High performance motorcycle that allows direct neural interface.") :Cyberdeck (item :name "Cyberdeck") :Cyberphone (item :name "Cyberphone") "Direct Neural Interface" (item :name "Direct Neural Interface" :summary "* This implant includes a processor chip and interface plugs that connect directly to the brain. The chip contains an artificial intelligence avatar program that learns from and emulates the user's personality. This AI can then enter cyberspace or control cybernetic equipment at the speed of a computer program while retaining the decision making logic of its user. Further, the AI regularly updates the user with its decisions, and gathers the user's impression, so it can make further decisions. While 'Jacked In' the user is motionless as his mind is overwhelmed with information from the AI. DNI's are powerful tools, but are also risky technology. Since information floods into the mind at incredible speeds, any malfunction in the DNI or the AI can cause sanity threatening sensory overload or sensory deprivation that seem to last for days in mere seconds. * Burn Out - losing one's mind to DNI failure.") :Flitter (item :name "Flitter" :summary "* Light, one-man helicopter" :titles "Aerogyro, Gyrocopter") "Hover Board" (item :name "Hover Board") "Mag Lev Train" (item :name "Mag Lev Train" :summary "* Speed: 200mph") :Metrocar (item :name "Metrocar" :summary "* Ultra-subcompact reverse trike.") "Mister Fusion" (item :name "Mister Fusion" :image "HighTech/MrFusion.jpg") "Quad ATV" (item :name "Quad ATV") "Private Quadcopter" (item :name "Private Quadcopter") :Skimmer (item :name "Skimmer" :summary "* The modern hovercraft creates a tightly computer-controlled air pocket beneath it that allows the Skimmer to move quickly over land or sea. The Skimmer manipulates the pocket to change direction. Though fast and all-terrain, they are not as quiet, maneuverable, or energy efficient as Autocars, so their use is limited to lightly populated areas." :titles "Ground Effect Vehicle, Hovercraft"))) "Corporate Equipment" (section :name "Corporate Equipment" :itemmap (itemmap "Cargo Osprey" (item :name "Cargo Osprey") "Corporate Limosine" (item :name "Corporate Limosine") "Corporate Osprey" (item :name "Corporate Osprey" :summary "* Speed: 275knots * Range: 600miles * The Osprey is a tilt-wing propeller plane that is used as a corporate commuter plane. Like a helicopter, it can land on buildings, and it can also fly directly to nearby cities.") "Personal Aerodyne" (item :name "Personal Aerodyne" :summary "* Speed: 250mph * Range: 400miles") :Transjet (item :name "Transjet" :summary "* The Transjet is the standard commercial airliner across the world. It flies up beyond the atmosphere where it can travel at extreme speeds and then lands anywhere in the world within an hour." :titles "Hopper, Transatmospheric Jet"))) "Police Equipment" (section :name "Police Equipment" :itemmap (itemmap :Aerodyne (item :name "Aerodyne" :reference "Blade Runner" :summary "* Speed: 350mph * Range: 400miles * Short and bulbous, the Aerodyne has the aerodynamics of a brick. It relies on its huge jets to fly." :titles "Air Car, Pegasus"))) "Military Equipment" (section :name "Military Equipment" :unitmap (unitmap "Combat Aerodyne" (unit :name "Combat Aerodyne" :summary "* Speed: 480mph * Range: 600miles * Armored combat Aerodyne") "Barracuda Drone Submarine" (unit :name "Barracuda Drone Submarine" :summary "* Carrier borne small, unmanned, high speed, attack submarine. It is designed as a long range drone that continually scouts the water surrounding a capital ship. Its tip is a HEAT shaped explosive, and it uses a particularly volitle fuel mix, so that it can be used as a torpedo if any serious threat enters its sphere of control.") "Manta VTOL Fighter" (unit :name "Manta VTOL Fighter" :reference "* Carrier Command: Gaea Mission" :summary "* Carrier borne VTOL Fighter. It has four redirectable thrusters that allow it to hover at any altitude including directly over water. It is fully sealed and can be launched and recovered underwater, but its underwater speed is poor. Its thrust is sufficient to ferry a Sea Lion ATV or other medium vehicle when necessary. It has a small, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, bombs, repair, apc, recon, science, transport, and more. Its mission module is interchangable with the Sea Lion Amphibious Tank.") "Pelican VTOL Heavy Transport" (unit :name "Pelican VTOL Heavy Transport" :summary "* Land based VTOL transport plane. It has four redirectable thrusters that allow it to hover at any altitude including directly over water. It is fully sealed and can land and take off from water. It has a single landing deck on top to facilitate in-air refuelling and resupply of VTOL fighters. It has a large, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, bombs, repair, apc, recon, science, transport, and more. It is powerful enough to carry 1 heavy tank, 2 medium tanks, or 3 APCs. It is, however, a large target with limited armor, so it is not suitable for heavy fire situations.") "Sea Lion Amphibious Medium Tank" (unit :name "Sea Lion Amphibious Medium Tank" :reference "* Carrier Command: Gaea Mission" :summary "* Carrier borne All Terrain Vehicle. It has six wheels that work equally well on water or land, but on water it augments its speed using a caterpillar drive. It is fully sealed and submerisble, but its underwater speed is poor. It has a small, replaceable mission module to custom tailor its missions for anti-air, anti-ship, anti-armor, anti-personnel, missile, repair, apc, recon, science, and more. Its mission module is interchangable with the Manta Fighter.") "Sailfin Light Frigate" (unit :name "Sailfin Light Frigate" :summary "* Fully Submersible Light Frigate loaded with 2 Barracuda Submarines. * Purpose - The Sailfin is a high speed interceptor and screening craft. It is equipped with anti-missile and small anti-ship weaponry as well as a large ECM suite. * Hydrofoils - Uses a Magnetohydrodynamic (MHD) to produce high speeds with little noise. It is designed in a catamaran configuration with hydrofoils and an air cushion effect to provide near flight." :titles "Flying Fish") "Hammerhead Destroyer" (unit :name "Hammerhead Destroyer" :summary "* Fully Submersible Destroyer loaded with 2 Manta Fighters and 4 Barracuda Submarines. * Purpose - The Hammerhead is an all round escort ship for larger capital ships.") "Mako Assault Carrier" (unit :name "Mako Assault Carrier" :reference "* Carrier Command: Gaea Mission" :summary "* Fully Submersible Light Carrier loaded with 4 Manta Fighters, 4 Sea Lion ATVs, and 2 Barracuda Submarines. Uses a Magnetohydrodynamic (MHD) to produce high speeds with little noise.") "Orca Medium Cruiser" (unit :name "Orca Medium Cruiser" :summary "* Fully Submersible Medium Cruiser loaded with 6 Manta Fighters, 1 Pelican Transport, 6 Sea Lion ATVs, and 4 Barracuda Submarines.") "Leviathan Command Carrier" (unit :name "Leviathan Command Carrier" :summary "* Fully Submersible Heavy Carrier loaded with 12 Manta Fighters, 4 Pelican Transports, 6 Sea Lion ATVs, and 8 Barracuda Submarines."))) "Body Armor" (section :name "Body Armor" :unitmap (unitmap "Stealth Suit" (unit :name "Stealth Suit" :reference "* Nuclear launch detected... - Starcraft" :titles "Ghost Special Operative") "Powered Body Armor" (unit :name "Powered Body Armor" :summary "* Heavy Body Armor" :titles "Hard Suit"))))))
nx/tactics/books/high_technology / chapter_high_tech_spacecraft
Description:
Function Name:
  • chapter_high_tech_spacecraft
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_spacecraft : base/chapter (chapter :name "High Tech Spacecraft" :summary "* Interplanetary travel is a common reality in the 23rd century. * Types - Spaceships are mostly cargo and ore mining ships, followed by gas tankers. * Prismatic Armor - Modern ships have a very thick ablative skin composed of a honeycomb of diamond nano-fibers filled with a highly refractive, radiation and impact absorbing ceramic compound. This armor has a number of beneficial qualities. It deflects energy in random directions which provides radiation resistance, stealth, and energy weapon defense. It fragments and ablates under energy weapon and kinetic impact which shatters incoming micro-meteors and high speed weaponry and distributes the incoming energy in all directions to prevent penetration. The ablating particles also carry away excess heat in a similar way to evaporation. The resultant particles become a cloud of anti-energy aresol. Any impact strong enough to penetrate the armor will liquify the surrounding armor which quickly solidifies and helps to seal hull breaches. * Deflectors - Most long-range ships are equipped with a deflector array. The array is composed of a wide bank of closely spaced ionizing lasers and particle beams. The lasers ionize the particles and form a strong magnetic force down the length of the beam. Small objects headed toward the ship are ionized by the beams and then redirected away by the magnetic field. Point defense lasers are used for larger particles as well as incoming missiles. * Propulsion - Propulsion spaceward (outward from the Sun) is often provided by massive Stellasers that reflect and concentrate solar radiation into a 'tight' beam similar to a laser. Ships have depolyable solar sails to capture this energy for propulsion and recharging batteries. These sails can even be used to slowly tack inward. Some cargo ships use particularly large sails to slowly sail the solar wind to reduce costs. Most ships rely on powerful nuclear thrusters for sunward (toward the Sun) travel to accelerate the ship at up to 1g. When possible the ship will accelerate for half the voyage, turn around, and then decelerate for the rest of the trip. * Gravity - Except for short periods of weightlessness midway through the trip, the passengers feel gravity during the trip. Up is toward the nose and down is toward the engines. The internal organization of a ship is very similar to a skyscraper. For fuel and reaction mass reasons, the ship may need to travel at slower speeds (and lower gravity) or coast at zero gravity midway through the trip. For this reason, large ships are often equipped with rotating decks to simulate gravity for the crew. * Reentry - Spaceships are generally too heavy and not equipped to survive a landing on anything larger than a small moon. Landing on something as massive as the Earth's Moon is possible, but achieving orbit again requires a powerful Laser Lifter system like the one on Luna. * Travel Costs ** Planet to orbital station skyhooks travel daily and cost 200-300 credits one-way. ** Orbital to moon travel twice weekly and cost 600 credits one-way. ** Interplanetary trips are like cruises. They travel weekly and cost 20,000-30,000 credits one-way. * Safety - Inner ship walls are covered with pillowy-soft panels of 'Space Gel'. This viscous fluid provides a combination of heat insulation, impact padding, radiation shielding, shrapnel absorption, and depressurization protection. Space Gel exposed to freezing temperatures will immediately harden into a very durable solid. If the hull is breached, damaged panels will leak Space Gel. Any gel that touches an area near the breach will instantly freeze, gradually plugging the leak." :sectionmap (sectionmap "High Tech Commercial Spacecraft" (section :name "High Tech Commercial Spacecraft" :unitmap (unitmap :Shuttlecraft (unit :name "Shuttlecraft") "Cargo Spacefreighter" (unit :name "Cargo Spacefreighter") "Ore Spacefreighter" (unit :name "Ore Spacefreighter" :summary "* Magsail ship") "Gas Spacefreighter" (unit :name "Gas Spacefreighter") "Space Rescue Ship" (unit :name "Space Rescue Ship" :reference "Event Horizon" :summary "Emergency Medical and Rescue Craft") "Star Explorer" (unit :name "Star Explorer" :summary "Scout Vessel") :Spaceliner (unit :name "Spaceliner" :summary "Luxury cruise liner for tourism or transport" :titles "Starliner"))) "Fighter Class" (section :name "Fighter Class" :unitmap (unitmap "Star Bomber" (unit :name "Star Bomber") "Star Figher" (unit :name "Star Figher" :summary "* General purpose space fighter that can be fitted with special purpose gear.") "Star Interceptor" (unit :name "Star Interceptor") "Star Torpedo Bomber" (unit :name "Star Torpedo Bomber"))) "High Tech Shuttle Class" (section :name "High Tech Shuttle Class" :unitmap (unitmap "Assault Shuttle" (unit :name "Assault Shuttle") "Eagle Lunar Transport" (unit :name "Eagle Lunar Transport" :summary "* The Eagle is the primary form of transportation for the inhabitants of the various moons of the Solar System. A multipurpose craft, it is divided into three basic sections; the command module, the service pod, and the superstructure. It is powered by four nuclear fusion rockets, and carries fuel reserves for 48 hours of flight. * Type A Transport Eagle is fitted with the standard passenger pod and is capable of holding 8 passengers (up to 12 in an emergency), in addition to the pilot and co-pilot. * Type B Freighter Eagle is used for transporting supplies, equipment and minerals. They can also be used as space-borne tankers for refueling. * Type C Reconnaissance Eagle comes equipped with various types of sensory devices for exploratory missions. * Type D Rescue Eagle, identifiable by the bold red stripes on the pod, has been adapted for field diagnosis and treatment of injury or disease. Manned by medical personnel, Rescue Eagles are equipped with mobile beds, patient-monitor units, and facilities for field surgery. * Type E Laboratory Eagle is equipped with a remote laboratory and can be used to locate and refine crude minerals, eliminating the need to transport bulky raw ores. It can carry food and water and recycle air to support the team for several weeks. * Specialty Modules include a the winch platform used to disperse nuclear waste canisters. There is also an additional booster unit that can be added to the super-structure which can increase the range and power." :titles "Eagle" :speed "162 Mkmh" :mass "238 tons" :length "23m" :range "26 Bkm" :width "9m") "Lunar Rail Capsule" (unit :name "Lunar Rail Capsule" :summary "* A small pod launched from a Lunar Rail Gun. Passenger Capsule are launched from 80 mile long Rail guns at 1G. Cargo capsules are launched from 2 mile long Rail guns at 40G. They are then captured in lunar orbit by drones and lunar satellite bases.") "Star Gunship" (unit :name "Star Gunship" :summary "* General purpose heavy weapons platform that can be fitted with special purpose gear.") "Heavy Star Bomber" (unit :name "Heavy Star Bomber") "Reconnaissance Shuttle" (unit :name "Reconnaissance Shuttle") "Star Torpedo Boat" (unit :name "Star Torpedo Boat"))) "Frigate Class" (section :name "Frigate Class" :unitmap (unitmap "Assault Star Carrier" (unit :name "Assault Star Carrier") "Missile Frigate" (unit :name "Missile Frigate") "Siege Frigate" (unit :name "Siege Frigate") "Star Destroyer" (unit :name "Star Destroyer") "System Defense Corvette" (unit :name "System Defense Corvette" :summary "Interplanetary Defense"))) "High Tech Cruisers" (section :name "High Tech Cruisers" :unitmap (unitmap "Star Battleship" (unit :name "Star Battleship") "Star Carrier" (unit :name "Star Carrier") "Star Cruiser" (unit :name "Star Cruiser"))) "High Tech Dreadnoughts" (section :name "High Tech Dreadnoughts" :unitmap (unitmap "Super Star Battleship" (unit :name "Super Star Battleship") "Super Star Carrier" (unit :name "Super Star Carrier"))) "High Tech Satellites" (section :name "High Tech Satellites" :unitmap (unitmap "Communication Satellite" (unit :name "Communication Satellite") "Damocles Orbital Laser" (unit :name "Damocles Orbital Laser" :image "HighTech/DamoclesSatellite.jpg" :summary "* Orbital Laser Platform designed for strategic strikes against land targets. May also be used agaist large orbital targets or for asteroid defense.") "EMP Satellite" (unit :name "EMP Satellite" :reference "* What's it going to be, Plissken? Them or us? I shut down the third world, you win they lose. I shut down America, they win, you lose. The more things change, the more they stay the same. - Snake Plissken, Escape from LA" :titles "Goldeneye") "Hunter Killer Satellite" (unit :name "Hunter Killer Satellite" :summary "* A combat ready satellite often masquerading as a peaceful version. Hunter Satellites act like UAV's quietly patrolling until their weaponry is needed, then they are disposable." :titles "Battle Satellite") "Orbital Skyhook Satellite" (unit :name "Orbital Skyhook Satellite" :summary "* Large rotating satellite in low orbit. Its purpose is to drop its kilometers long tether to dock with a [Suborbital Shuttle] and use its momentum to fling the shuttle into higher orbit. A few of these Skyhooks at different orbits can pull a shuttle all the way into high orbit. Pulling up shuttles gradually degrades the satellite's orbit, but fortunately, the same system can be used in reverse to slow orbital craft without using fuel which returns lost momentum to the Skyhook.") "Solar Reflector Satellite" (unit :name "Solar Reflector Satellite" :summary "* These are massive, lightweight solar mirrors that can be focused for variouse purposes. They can focus light for solar farms, generate light for long nights like on the moon, generate thrust by light pressure and by heating ablative drives."))))))
nx/tactics/books/high_technology / chapter_high_tech_aircraft
Description:
Function Name:
  • chapter_high_tech_aircraft
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_aircraft : base/chapter (chapter :name "High Tech Aircraft" :sectionmap (sectionmap "High Tech Commercial Aircraft" (section :name "High Tech Commercial Aircraft" :unitmap (unitmap "Hypersonic Airliner" (unit :name "Hypersonic Airliner" :summary "* Suborbital passenger plane that can make intercontinental flights at Mach 5+ * Such high speed planes are all wedge shaped Hypersonic Waveriders.") "Suborbital Shuttle" (unit :name "Suborbital Shuttle" :summary "* Suborbital passenger plane that can reach the upper atmosphere and connect to an [Orbital Skyhook Satellite]'s tether. The end of the tether holds a small wing shaped cargo container. Passengers and cargo are quickly exchanged, and the container is reeled back up to the skyhook while the plane returns to its launch site."))) "High Tech Military Aircraft" (section :name "High Tech Military Aircraft" :unitmap (unitmap "Valkyrie Air Cavalry" (unit :name "Valkyrie Air Cavalry" :classification "Lt. Aircraft") "Aurora Transatmospheric Fighter" (unit :name "Aurora Transatmospheric Fighter" :summary "* A sleek, shuttle-like jet with speeds of Mach 5. A nuclear engine, stealth armor, full environmental containment, and a virtual or direct neural link make this one-man craft the deadliest thing in the skies. * It carries twin 30mm autocannons, a plasma cannon, 16 air-to-air missiles, and 2 fuel air explosives for ground targets." :classification "Lt. Aircraft"))))))
nx/tactics/books/high_technology / chapter_high_tech_heavy_armor
Description:
Function Name:
  • chapter_high_tech_heavy_armor
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_high_tech_heavy_armor : base/chapter (chapter :name "High Tech Heavy Armor" :sectionmap (sectionmap "High Mobility Forces" (section :name "High Mobility Forces" :summary "* Mobile - The term Mobile, short for High Mobility, was coined to describe forces that emphasized manueverability and terrain use over raw speed, weaponry, or armor. ** Mobile Infantry - Human sized battle suits capable of increasing an infantry unit's combat ability. Early versions emphasized weapons and armor, but their high cost and attrition rate moved the focus to fast hit-and-run or blitzkreig style armor. ** Mobile Suit - The Mobile Suit is an attempt to create a larger version of Mobile Infantry suits. They remain humanoid and can benefit from infantry tactics on a large scale. The design is a swiss army knife, capable of quickly changing and scavenging weapons and is equally suited for combat and large scale repair operations. The design does have many detractors, however, who argue that the humanoid form is not optimal for ground combat where its height makes it an easy target, air combat where it is not aerodynamic, or space combat where legs have little use. ** Mobile Cavalry - Mobile Cavalry is any High Mobility vehicle that is optimized toward its intended enviroment: Mobile Fighters in atmosphere, Mobile Tanks on land, Mobile Subs underwater, Mobile Insects in space, etc. These system are highly specialized in contrast with the general utility of Mobile Suits. Though such designs seem more optimal, there is an argument that Mobile Suit mass production and spare part availability would ultimately win out. ** Mobile Armor - The ultimate expression of High Mobility weapons, Mobile Armor are large, heavily armed and armored versions of Mobile Cavalry. They are terrifying monstrosities with similar reputations to the King Tiger tank in World War II. Though on paper, they seem to be the ultimate weapon, in practice their high cost and manufacturing complexity severly limited their deployment and losing even one was devastatingly costly. They can turn the tide of any battle, but were overall less effective than smaller units. * Linear Frame - The linear frame is a special harness that mimics the actions of the mobile suit pilot and translates them into mobile suit actions. This gives the mobile suit an uncanny agility and a strangely human grace. A trained pilot can shift the suit's center of gravity to change the armor's orientation without propellent which can substantially increase endurance and survivability. * Piloting - A mobile suit pilot wears a special suit and is secured to a linear frame that help manage the incredible g-forces that the mobile suit produces. Rookie pilots have been knocked unconscious or even killed by their own combat maneuvers, so extensive, specialized training is essential. Ace pilots seem almost superhuman in their ability to take physical stress without blacking out. * Mobile Suits vs. Capital Ships - Mobile suits have a unique ability against capital ships. They can land anywhere on the surface of the ship (typically outside of firing arcs) and attack components directly. Whenever a mobile suit on a capital ship score [Critical Hits], the player may look at the damage deck and choose the critical instead of choosing one at random. * Flight Systems - Spacecraft and Exo-Suits use a ionic plasma drive which ionizes and accelerates gas particles out the exhaust vents at relativistic speeds. These energized particles create a glowing stardust effect at the exhaust ports. These drives also function in atmosphere but their interaction with air creates a massive heat buildup, so they can only be used in short bursts like jump jets. Unusually large vents with heat dispersers can be specially designed for atmosphere, but these are suboptimal in space. * Plasma Lance - The lance is a short mobile suit melee weapon. Its firing end is a hollow magnetic tube lined with layers of copper leaf. When held in a specially designed hand or connector, a direct current from the fusion reactor transforms the copper leaf into a short ionizing plasma jet of incompressible copper. The lance appears as an empty weapon hilt until it fires; then it flashes with a brief, blinding jet that violently pierces almost any material it contacts. It is very effective against armor, but its uses are limited so they may only be used a few times before being depleted. Mobile suits will often carry multiple lances, although larger variants exist. Land based Mobile Suits follow these principles: * Maintain a low profile - Weapons are so destructive that it is much more effective to not be hit. Stay low and use cover at all times. Tracked, Wheeled, Hover and 4 legged vehicles maintain the lowest profile while still being all-terrain. * High mobility - Slow, predictable units are sitting ducks. Also, move in 3 dimensions to maximize mobility. This makes legs and jump jets superior to tracks and wheels. * Projectile weapons are more effective on the ground than in space - High caliber cannons can be mounted on land vehicles. * Land based Mobile Suits developed from dog-like anti-personnel hunter-killer robots. As Electromagnetic Warfare began to defeat digital circuitry, it became necessary to put soldiers back into the war machines and return to larger, more reliable analog systems. Space based Mobile Suits follow these principles: * Propellent must be expended to accelerate - a modern vehicle in space is more limited by its propellent than its fuel. * Arms and Legs are useful - When one part of a mobile suit is moved, it produces a counter-movement in the opposite direction. This effect can be used to adjust the mobile suit's direction without expending propellant. Thus, in zero gravity the mobile suit's arms and legs are not dead weight, but a vital component of its maneuvering system." :titles "Armored Frame, Exo-Suit, MEC (Multi-Environment Cavalry), Mobile Armor, Mobile Cavalry, Mobile Invantry, Mobile Suit" :unitmap (unitmap "Piranha Mobile Armor" (unit :name "Piranha Mobile Armor" :summary "* The current state-of-the-art space mecha is a wedge-shaped, heavily-armored stealth craft with a turreted particle cannon. * Armor Module - The wedge-shaped front, bottom, and sides of the craft are a single hot-swappable module for in combat maintainance. It is primarily composed of ablative, stealth armor. The armor is sharply angled to present the smallest possible angle of penetration and detection from the front. * Core Module - The center of the craft is a gyroscopic sphere. The gyroscope is so powerful, it is used for attitude control instead of maneuver jets. * Core Drone Module - Like most mobile armors, the Piranha is deployed in large packs (schools) of drones with random human piloted command units. Without a pilot, the core module can contain spare ammo or propellent. * Core Pilot Module - The pilot seat is enclosed in this sphere which allows the craft to turn very quickly while rotating the pilot seat separately to minimize angular momentum and G-forces. The escape hatch can be rotated to the top or the bottom of the ship to allow easy exit or connect to ship airlocks. * Mission Module - The top and back of the craft contain the weapon systems, propulsion, and fuel in a single hot swappable module. This entire module can be immediately replaced to customize the craft for a mission or rapidly refuel and reload. * Space Interceptor Module - The standard space module includes a single heavy particle beam turret and nuclear propulsion (including fuel and reaction mass). * Space Bomber Module - This module is identical to the Space Interceptor Modules but replaces the turret with a fixed medium railgun and 2 heavy penetrator nuclear missiles. * Orbital Insertion Module - Though rarely used, this module allows the ship to reach orbit from a planet's surface using chemical rockets. The module is also capable of independent re-entry so it can be refueled and reused without the main craft. * Atmospheric Interceptor Module - Jet engines and anti-aircraft missiles. With this module, the ship is capable of trans-atmospheric flight. Though its wedge shape is aerodynamic, it provides no lift, so it must rely on its thrust to maneuver and to remain airborne. * Atmospheric Bomber Module - Jet engines and precision bombs. * Atmospheric Close Support Module - Jet engines and a single heavy penetrator autocannon. * Air Cavalry Module - Dual turbine rotor systems and fuel with 2 light rail cannons for rescue and light air support. * Land Module - A turret pairing a heavy rail cannon with a high capacity rail machine gun. The rear houses a missile pod housing 6 indirect fire missiles for light bombardment. * Marine Module - Marine caterpillar thrust system that allows high speed surface movement or moderate underwater movement with decent stealth. * Command Module - Advanced communications and coordiation systems. * Sensor Module - Specialized long-range active and passive sensor systems for patroling or spying. * Stealth Module - Enhanced stealth system foregoing firepower and performance for stealth. Contains a single medium rail cannon. * Science Module - Highly sensitive sensor package for detailed analysis. * Service Module - The ship has useful carrying capacity, so besides its combat role, it operates as a repair worker bee and cargo hauler. Typically, repair crews get more flight time on the ship than combat pilots. * Cargo Module - A large cargo container and thruster can be afixed to the rear for transport duties. * Long Range Module - A variant of the cargo container can be attached to the back of another module to increase the range of the ship providing extra thrust and reaction mass. The module is jettisoned once it reaches its target and is hopefully recovered later. * Arms - 6 thin, light-weight arms fold out from under the ship to the front, back, and sides. Each arm has 3 powerful fingers with magnetic clamps and sharp tips that allow the craft to cling to surfaces and walk along them at high speeds like an insect. The arms are strong enough to climb vertical surfaces or be inverted under gravity. The end of each arm has an attitude control jet to aid in high speed manuevers. On land, these jets are replaced with powerful turbines that lets the craft skate across level ground or water. The elbow of each arm is a sphere that can be used as landing gear or wheels on roads or other reasonably flat terrain. 6 arms were chosen, so the craft can still move on 4 arms while carrying or dragging a heavy load with 2. As with insects, 6 arms provides sufficient redundancy in case 1 or even 2 legs are lost to damage. In land combat, the arms allow the craft to maximize cover and peek its gun around corners or over obstacles." :titles "Terrapin") "Panther Mobile Cavalry" (unit :name "Panther Mobile Cavalry" :summary "* The current state-of-the-art land mecha is a 4 legged style reminiscent of big cats or wolves. * Like most mobile armors, the Panther operates in packs of drones with random human piloted command units. The pilot climbs into the back of the unit and rides in the position of a performance motorcycle. If desired, the pilot can open the back and sit up as if riding a horse. Piloted units sacrifice a hardpoint to fit the pilot. * Payloads such as large caliber cannons and shields are mounted on one of two fixed back mounts. This unit can also stand on 2 legs and slide the cannon up to become a shoulder mount. All 4 legs possess manipulative hands with claws and magnets for climbing and can carry the cannon or a shield as needed. Small wheels in the elbows are used when travelling on roads."))) "High Tech Land Vehicles" (section :name "High Tech Land Vehicles" :unitmap (unitmap "Hover Tank" (unit :name "Hover Tank") "Light Walker" (unit :name "Light Walker") "Heavy Walker" (unit :name "Heavy Walker"))))))
nx/tactics/books/high_technology / chapter_space_colonies
Description:
Function Name:
  • chapter_space_colonies
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space_colonies : base/chapter (chapter :name "Space Colonies" :sectionmap (sectionmap "L5 Colonies" (section :name "L5 Colonies" :summary "* The L5 Colonies are enormous space colonies that have been constructed at the five Lagrange points around Earth where gravitational forces are stable. They are 25km to 40km long. * Construction - These stations are constructed inside cylinders of Moon rock and asteroids ferried from the Asteroid Belt. The external surface is heavily armored against meteorite impacts. Industrial complexes are mostly on outermost layer of the colonies to keep them away from habitations. Towns are built on the internal surface of the colony. The internal space is divided into zones with large reflective pressure walls that give the appearance of continuous space while limiting the risk of catastrophic failure to any particular zone. Transport tubes are underground and also serve as emergency shelters. In addition to the outer cylinder, there is also an inner cylinder that forms a pressurized, zero-g drydock through the center of the colony. * Personnel - Those that have travelled from Earth to the Orbital stations are many of the best and brightest that Earth has to offer. Each colony supports up to 20 million people. Living space is about 300 square km, which is not a lot of room for so many people. Three or four story buildings are the norm, but they cannot be built higher than that because of the Coriolis effect. * Resources - Large amounts of solar energy are continuously collected, but life is difficult in space where all materials must be imported (at high tariffs). Orbital industry is generally thriving. * Politics - Because the Orbitals are largely corporate run and lack a specific history, they are largely free of geopolitical politics, as well as cultural and racial conflicts. They do, however, retain fierce, corporate politics. Most of all, the Orbitals chafe under the Earth bound regulatory and military agencies that supervise and tax them. Taxes are necessarily high to support so much technology, and taxes are always a point of conflict." :titles "Orbitals, Orbital Platforms" :unitmap (unitmap "L1: Shangri-la" (unit :name "L1: Shangri-la") "L2: Elysium" (unit :name "L2: Elysium") "L4: Avalon" (unit :name "L4: Avalon" :summary "The first of the L5 colonies, Avalon has the largest starship construction facilities. Its proximity to Earth and the Moon provide it optimal security and resources.") "L3: Eden" (unit :name "L3: Eden") "L5: Valhalla" (unit :name "L5: Valhalla"))) "Nomad Colonies" (section :name "Nomad Colonies" :summary "* Small individual colonies are beginning to dot open space between the planets. These colonies maintain their own solar orbits and can be convenient stop over points between planets. * Culture - Nomad colonists are a hard working, individualistic people. Some are religious or cultural fanatics. Others are essentially criminal organizations or pirates. Nomad colonists are highly desired as crew for interplanetary commercial space flights. They are used to cramped space conditions and they are also talented mechanics and jury-riggers. * Trade - Each Nomad Colony is primarily a trading station. They do not produce anything except food for themselves. Everything else is purchased from other planets. * Politics - Nomad Colonies are each formed for their own reasons and maintain unique governments and social structures. They attempt to remain neutral from other nations and will trade with anyone without regard to political or criminal status. Though the Nomad colonies are each completely unique, they all recognize the other Nomads as allies and treat any threat to one as a threat to all. * Military - Nomad Colonies typically maintain little or no defenses as befits their neutral status. They may, however, maintain hidden defenses or pirate ships nearby.") "Mars Colonies" (section :name "Mars Colonies" :summary "* Colonial Mars is much like the American Frontier. Colonists left the overcrowded and impoverished Earth in search of a new life knowing that there was almost no chance to return to the Old World. They and their children would live or die on Mars, and they proudly adopted the name Martian. * Terraforming - Mars is one of the greatest technological projects ever attempted by humanity. * Climate - Mars is in the later stages of Terraforming. The air is thin and cold but breathable, similar to a mountain top. * Cities - Since the atmosphere became breathable, the population on Mars has sharply increased. Cities that were once domed habitats have grown into large settlements. Land is practically free, so buildings are low and sprawling. * Production - Mining is the primary reason for founding the Martian colony and continues to be the main source of jobs. Terraforming, industrial equipment, and algae farming support the mining effort. * Politics - The Martian Council is a democratic body that establishes and enforces Martian law. Unfortunately, they are largely a puppet of the Earth Authority and have been increasingly squeezing the Martian colonists to increase production for their war efforts. This pressure has spurred the creation of the Free Mars Movement that seeks to free Mars form Earth control. * Corporations - Martial Metals is one of the biggest corporations in the Solar System. It developed the orbital elevator and its steady source of cheap metals feed a large industry of orbital facilities including drydocks." :unitmap (unitmap "Orbital Elevator" (unit :name "Orbital Elevator" :summary "* The Orbital Elevator is a miracle of technology and the only practical way to affordably get materials off the planet. The Orbital Elevator, the Asteroid Belt, and the Lunar Railguns are the only sources of building materials for colonies and spacecraft. * The Elevator is also a majestic symbol of power for the Martian Council and the Earth Authorities.") "Free Mars Radical" (unit :name "Free Mars Radical") "Martian Pirate" (unit :name "Martian Pirate") "Sand Marauder" (unit :name "Sand Marauder"))) "Moon Colonies" (section :name "Moon Colonies" :summary "* The Moon's mineral and ice deposits made it the logical location of the first permanent off-world colony. Robotic solar-powered laser drills cut tunnel complexes into the walls of craters. Human colonists followed soon after. Regular exercise in 1 G training centers is mandatory for all colonists to avoid the dangers of low gravity. * Cities dot the lunar landscape connected by underground transport tubes. * The two largest cities maintain spaceports complete with Laser Lifters to boost large ships into orbit." :titles "Lunars, Lunatics, Moon Men, Moonies, Selenites") "Solar Colonies" (section :name "Solar Colonies" :locationmap (locationmap :Stellaser (location :name "Stellaser" :summary "* Giant mirrors placed in pairs in Solar orbit. The mirrors gather light by reflecting it back and forth between them before releasing it in a concentrated beam to slowly accelerate starships. Though this beam would certainly be deadly to humans, the beam is only dangerous to exposed targets without sufficient radiation shielding." :titles "Starlight Express"))) "Venusiau Colonies" (section :name "Venusiau Colonies") "Asteroid Colonies" (section :name "Asteroid Colonies" :locationmap (locationmap "Asteroid Mining Colony" (location :name "Asteroid Mining Colony")) :unitmap (unitmap "Asteroid Miner" (unit :name "Asteroid Miner" :titles "Belter"))) "Jupiter Colonies" (section :name "Jupiter Colonies" :summary "* Culture - Personal space in Jovian colonies is extremely limited, so people share quarters with multiple people. There are not even enough beds for each person, so most people live with people who work different shifts and use the same beds on off-shifts. Common areas are used for everything except sleeping. The Jovians have adapted to be far more social and reliant on others for day to day life. This communal living has generally made them a tight knit society with a strong sense of group identity. * Science - Jovian science is one of the most advanced in the solar system. Research and development on ways to make their harsh life safer and more comfortable are always high priorites. Jovian scientists crank out a steady stream of innovations across all disciplines. * Military - The military has reaped the rewards of Jovian science and is arguably the most advanced force in the solar system, though certainly nowhere near the largest. Jovian forces are composed of separate standing armies: Alpha, Beta, and Gamma Divisions with Alpha containing the Godsfire flagship. Jovian military theory is based on efficient use of a small number of highly mobile units. They do not fear a large scale assault, since they would receive much forewarning of any attempt to mobilize a large force all the way out to Jupiter. Jupiter's remoteness makes it fairly easy to defend against direct assault, but the harsh environment makes sabotage a much greater threat, so Jovian intelligence forces constantly search for threats. * Agora - The Jovian governing body with primary offices on Elysee colony." :locationmap (locationmap "Elysee Station" (location :name "Elysee Station" :summary "* The largest Jovian Colony and the capital of the Jovian Confederation.") "Joshua Station" (location :name "Joshua Station" :summary "* The second largest Jovian Colony and Jupiter's hub of manufacturing. The station is essentially a giant factory with live in workers. All commercial starships are constructed here. * Jovian Armor Works - The best known aerospace corporation in Jovian space is famous for inventing the Exo-armor and designing almost all of the Exo-armor fleet. * Joshua station also houses the seedier areas of Jovian society. Black markets, drug dens, and bordellos operate freely. Jovians tend to have a live and let live attitude, so little effort is made to stop activities that don't threaten the colony." :titles "Wildest Place in the Solar System") "Khannan Station" (location :name "Khannan Station" :summary "* The third largest Jovian Colony and Jupiter's military center. The station only allows military personnel on board. Large sections of the colony are dedicated to ship construction and others are top secret research labs.") "Jovian Gas Refinery" (location :name "Jovian Gas Refinery" :summary "* These heavily armored, refining stations float in the upper atmosphere of Jupiter. They float by means of enormous rings filled with heated hydrogen and manuever using fusion thrusters. Multiple kilometer long tubes hang from the bottom of the station extracting gases from the differnt layers of the atmosphere. The broad round floatation disc and long tubes give the stations the general appearance of a jelly fish.") "Io Colony" (location :name "Io Colony" :reference "Outland" :summary "* A small, titanium mining colony is located on Io. Miners work intensely to gain maximum bonuses. Life is dangerous and many miners are hooked on amphetimines to maximize productivity. Victimless crime is largely ignored in this generally lawless outpost. Besides miners and transport workers there are only cooks, bartenders, prostitutes, a single doctor, a sheriff and two deputies."))) "Saturn Colonies" (section :name "Saturn Colonies" :summary "* With the exception of Titan, the outer planets are too remote and unimportant to ever be colonized. Jupiter provides an unlimited supply of gas resources, so Saturn, Uranus, and Neptune have little to offer." :locationmap (locationmap "Titan Research Station" (location :name "Titan Research Station" :summary "* A small, permanent research colony has been erected on Titan to study its unique atmosphere and geology. The hope was to discover evidence of primitive life, but no life has yet to be discovered."))))))
nx/tactics/books/high_technology / chapter_car_wars
Description:
Function Name:
  • chapter_car_wars
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_car_wars : base/chapter (chapter :name "Car Wars"))
nx/tactics/books/high_technology / chapter_cyberpunk
Description:
Function Name:
  • chapter_cyberpunk
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_cyberpunk : base/chapter (chapter :name "Cyberpunk" :summary "* The year is 2151. Things are pretty bad on planet Earth: * Global Warming - The build up of smothering greenhouse effect gases has resulted in the complete melting of the Arctic ice cap as well as much of the Antartic ice cap. Coastal areas have been inundated and global temperatures continue to rise, a new record every year. * Resource Depletion - As the climate changed, desperate farmers overfarmed their land, increasing erosion and therefore food prices. Fossil fuels became increasingly scarce and given the ongoing climate problems, ecologically unsuitable. * Overpopulation - * Economic Collapse - Things are slightly better in space: * Orbital Stations - For the last hundred years, large space colonies have been constructed at the five Lagrange points around Earth. Relative to Earth, the Orbital stations are gleaming paradises of corporate efficiency. Corporate interests are certainly strong on the Orbital colonies, and the Orbitals increasingly chafe at Earth's taxation of their goods and the high tariffs on imports. * Luna - Huge moon bases dot the lunar surface. With its low gravity and limitless lunar rock, the Moon is the natural construction center for most Orbital facilities and spaceships. Surface and underground mining operations go around the clock. Enormous massdrivers propel the material into Earth orbit. * Mercury - Solar stations on Mercury provide limitless power while the molten surface provides limitless ore. Though the surface is hellish and survival is difficult, Mercury provides wealth beyond imagining to those able to survive. The population is 90% male with most residents on a 6 year work contract. After the contract they usually return to wherever they came from with enough money to buy a house and start a family. Like a military veteran, Mercury companies also offer generous benefits for the rest of the contractor's life or generous death benefits to their family if they don't survive. Despite extensive safety systems, the fatatlity rate remains 1 in 20 even among these hardy folk. Politically, Mercury is extremely independent and has little patience for the affairs of the other planets. * Venus * Mars * Asteroid Belt - Though Luna provides a steady supply of material to the colonies, whole Asteroids can be ferried from the Asteroid Belt to create instant colonies. Further, the valuable minerals in an asteroid are easier to detect and mine than in either Lunar or Terrestrial mines. The Asteroid field is large, however, so a whole crop of freelance prospectors have travelled to the Asteroid Belt in a high-tech gold-rush. * Jupiter * Saturn * Cryomax - Maximum security prison where prisoners are stored in partial cryonic suspension to maximize space. ** Reference - Demolition Man * Crystal - Liquid crystal computer matrix" :sectionmap (sectionmap :Government (section :name "Government" :unitmap (unitmap :Innovator (unit :name "Innovator" :reference "Appleseed, Genetic Android, Bioroid" :summary "* Genetically engineered artificial human. Theoretically superior to humans in every way, they are purposely implanted with a number of limitations: * They cannot reproduce. * They must undergo routine medical treatments or their genetic structure breaks down. * They are peaceful in nature to buffer mankind's tendency to violence. * They defer to human authority unless they believe that the authority will harm mankind.") "Cycle Police" (unit :name "Cycle Police" :unitskillmap (unitskillmap :Driving (unitskill :name "Driving" :level "4" :unitspecialtymap (unitspecialtymap :Motorcycles (unitspecialty :name "Motorcycles"))))) :E.S.W.A.T. (unit :name "E.S.W.A.T." :reference "Appleseed") "Mobile Police" (unit :name "Mobile Police" :reference "Appleseed"))) :Military (section :name "Military" :unitmap (unitmap "Combat Android" (unit :name "Combat Android") "Planetary Defense Navy" (unit :name "Planetary Defense Navy") "Planetary Defense Pilot" (unit :name "Planetary Defense Pilot") "Eugenic Warrior" (unit :name "Eugenic Warrior" :reference "* Khan, Star Trek II" :summary "* Through bioengineering, an elite warrior caste has been created combining strategic genius, leadership skills, and physical perfection. Unfortunately, they also develop incredible egos and megalomania." :titles "Master Race, Super Soldier"))) :MegaCorps (section :name "MegaCorps" :summary "* After the world stock market crash and subsequent collapse of many economies and governments around the world (including the US), only international corporations were left with the ability to exert power on a global scale. * The economic collapse acted as a purge, the strongest conglomerates consuming the weaker ones until only the biggest and strongest remained. With most governments enfeebled and the competition obliterated, the megacorps were left to fill a huge power vacuum. Naturally there was some disagreement as to how to divide the spoils. The result was a series of wars as each corporation attempted to destroy its competition physically and finacially. Smaller conflicts, covert and overt, continue to this day, with full scale war threatening to resurface at any time." :unitmap (unitmap "Corporate Man" (unit :name "Corporate Man" :titles "Collarboy, Company Man, Suit") "Corporate Security" (unit :name "Corporate Security") "System Administrator" (unit :name "System Administrator" :titles "Cyber Engineer, Icemen, SysOp, SysAdmin, Weasel") "Kildren Pilot" (unit :name "Kildren Pilot" :summary "* Kildren are genetically modified before birth to halt the aging process. Physically, they are eternally teenagers. Mentally, however, they are quiet and serious. A side effect of their frozen aging process is the inability to recall distant memories. Kildren, therefore, lack a strong sense of time or the past. They live for the now and are fearless pilots. For some, however, the sense of timelessness lacks purpose and turns into hopelessness.") :Media (unit :name "Media" :summary "* Ethnicity: Greek-American * Hair: Black Short Waved Hair * Eyes: Pale Grey * Clothes: Clean White Shirt under black leather thigh-length light-armored jacket (occasional loose tie), grey hardwearing slacks, black shoes or running sneakers, Aviator sunglasses when being 'too cool'. * Equipment: Beeper, Camera, Colt automatic pistol and shoulder holster, 1 room apartment * Contacts: Camera Man, Police Officer" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :summary "Pistol" :level "4"))) "Medical Technician" (unit :name "Medical Technician" :titles "Med Tech") :Scientist (unit :name "Scientist"))) "Offworld Colonies" (section :name "Offworld Colonies" :unitmap (unitmap :Miner (unit :name "Miner") :Pirate (unit :name "Pirate"))) :Sprawls (section :name "Sprawls" :titles "Dirtboys, Dirtgirls" :unitmap (unitmap "Bounty Hunter" (unit :name "Bounty Hunter") "Cyber Psycho" (unit :name "Cyber Psycho" :summary "* Buttonhead - someone addicted to artificially stimulating the pleasure centers of the brain." :titles "Buttonhead") :Enforcer (unit :name "Enforcer") :Fixer (unit :name "Fixer" :summary "* Fixers buy and sell information, goods, and services. * Some of their services merely require the right connections. Others are not quite legal." :titles "Bookie, Executive Secretary, Gobetween, Information Broker, Negotiator, Organizer, Producer, Roadie, Thirdman") "Gang Member" (unit :name "Gang Member") :Netrunner (unit :name "Netrunner" :summary "* Outlaw computer jocks or hackers. Some people do it for the glory; most do it for the money. Information is power in the modern world and all the information is somewhere on the Net. Further, the modern world is a marvel of automation, so a clever person may turn that automation to his own uses." :titles "Crystaljock, Hacker") :Nomad (unit :name "Nomad" :summary "* Deltajock - A pilot of delta-winged smuggling craft * Panzerjock - A driver of armored smuggling hovercraft" :titles "Deltajock, Gypsy, Linerunner, Panzerjock, Road Warrior, Smuggler") :Rocker (unit :name "Rocker" :summary "* Zonedancing - Dancing turned into a dominance game. A dancer attempts to persuade other dancers in his zone to conform to his movements using charisma, talent or violence." :titles "Bard") :Solo (unit :name "Solo" :reference "* I don't want to walk this Earth if I gotta do it solo...so...low. - Iyaz, Solo" :titles "Assassin, Hit Man") :Tech (unit :name "Tech" :titles "Cybertech"))))))
nx/tactics/books/high_technology / chapter_jovian_chronicles
Description:
Function Name:
  • chapter_jovian_chronicles
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_jovian_chronicles : base/chapter (chapter :name "Jovian Chronicles" :sectionmap (sectionmap "Orbital Revolution" (section :name "Orbital Revolution" :summary "Events Leading to War * Air Tax Overview of the War * Rock War Aftermath * Terran Union" :scenariomap (scenariomap "Rock War" (scenario :name "Rock War") "Battle in the Depths" (scenario :name "Battle in the Depths" :summary "* An undersea fission cannon is discovered before it becomes operational. * A squadron is sent ahead of the fleet to destroy the cannon before it is brought to bear on the fleet. * The base defenders need to stall for 10 minutes until the cannon can be fired destroying most of the fleet. 5 minutes later a second shot will ensure victory. * The battle takes place completely underwater.") "Destroy the Downlink" (scenario :name "Destroy the Downlink" :summary "* The rebels choose to destroy a microwave receiver converting power from a vast orbital solar satellite array. If they can destroy it, the entire area will be without power and defenseless for days allowing the rebels free reign to take territory. * The defenders realize the vulnerability of the station and it is heavily defended.") "Rat Warren" (scenario :name "Rat Warren" :summary "* The mechs stationed to defend the city are cut off from reinforcements. * The rebels see an opportunity, but they have only powersuits and their wits to take the colossal defenders down. They can use the sewers and subways as cover to launch hit and run attacks.") "Traitorous Acts" (scenario :name "Traitorous Acts" :summary "* An surprise attack is launched on a munitions depot, but there is a problem. The defenders are not surprised: there is a mole in your group. * Attackers have a superior force, but one of them is a traitor. They will have to watch their backs. * Defender secretly chooses one attacking unit as the traitor and can choose to activate it at any time.") "Joy Ride" (scenario :name "Joy Ride" :summary "* A young, hotshot rebel manages to sneak into an enemy test facility and steal a prototype mecha. The whole base is on his tail, and he will need to use urban cover and speed to try to get away.") "Train Spotting" (scenario :name "Train Spotting" :summary "* Ambush a mag-lev train and stop it before it escapes. * Attackers must disable the train and destroy the defenders. * Defenders must escape or drive off the attackers.") "Breaking Damocles" (scenario :name "Breaking Damocles" :summary "* The Damocles is an orbital facility equipped with a powerful laser. Its existence has put major pressure on Earth governments to comply with UEA demands. * Attackers must placed explosives along the edge of the facility and destroy the attitude control thrusters to send the facility into a death spiral that would make it burn up in orbit. Hopefully, it will crash in an uninhabited area. * Defenders must destroy the attackers or the explosives to prevent this nightmare scenario.") "Moon Rocket" (scenario :name "Moon Rocket" :summary "* A huge rocket is about to be launched from its silo in a crater on the Moon. * The attackers must destroy the launch silo or failing that the missile itself before it leaves the combat area. Critical hits on the missile may cause it to explode, destroying the launch base.") "Mirage Storm" (scenario :name "Mirage Storm" :summary "* Two recon mechs gather intelligence around Jupiter but are pursued. The recon units try to even the odds by flying into the atmosphere directly into a super storm. The storm plays havoc with normal sensors, but the recon units can sort out the jumble of sensor data. * The 5 attackers must destroy the 2 escaping mechs. * The defenders must drive off or destroy the superior attackers. * Special Rules: For each defender place 2 additional ghost mechs on the battlefield. These represent false image data produced by the cloud. After each attack, the defenders may secretly switch which unit is the real mech among the three identical images. The ghost mechs are obviously immune to all damage."))) "Jovian Odyssey" (section :name "Jovian Odyssey" :scenariomap (scenariomap "Dreams OF Phantoms" (scenario :name "Dreams OF Phantoms" :summary "* Call of Jupiter - Jovian scientists discovered an odd life form floating in Juptier's atmosphere, the Jovian Floater. A floating research station was proposed, but the extreme funding could not be secured. Spies for the Venusian Bank determined that the Floaters may be responsible for the phenomenon called the 'Call of Jupiter', where explorers to Jupiter have often explained that they were drawn to Jupiter because of dreams they had of Jupiter singing to them. This would imply that the Floaters can communicate telepathically over interplanetary space: an incredible finding. * Slumbering Eidolon - The Venusians established a top secret floating base in Jupiter's atmosphere under the noses of the Jovians. The intense atmosphere combined with the powerful radiation and magnetic fields effectively hide them from any watching eyes above. Eidolon is secretly supported by a group in the largely lawless Joshua Station to procure or ship supplies and provide emergency rescue if necessary. * Mission - Discover the Slumbering Eidolon and capture or destroy it. They could discover it by finding a supply or courier ship headed there during a patrol, or stumble across a supporting organization on a Jovian colony. The assault force would most probably consist of two Thunderbolts, one Javelin, and a small number of Pathfinders and Retaliators. If they choose to capture the Eidolon, a hurried scramble as a self-destruct timer counts down and bulkheads slam shut is just as exciting as an action-packed firefight in the command center. Agents and reporters are harder to integrate with the destruction of the station, but are more easily involved in the discovery process.") "Dreams OF Secrets" (scenario :name "Dreams OF Secrets" :summary "* Summary - After the discovery and decomissioning of the secret Venusian research station, the Jovian government found some advanced mech prototypes that the Venusians had been testing in the Jovian atmosphere. This led to the Agora paying more attention to a request of assylum from one Dr. Peyarje, and sent the PCs to help retrieve him. * Dr. Peyarje - UEA has conscripted the brilliant Dr. Peyarje into their service, forcing him to develop next generation exo-weapons at a hidden base. In the interests of keeping an appearance of openness, they have allowed Peyarje to attend the 2210 Intersettlement Scientific Convention (ISC), though he is accompanied by a detachment of the UEA military. He has managed to get a plea for help and request for asylum to the Jovian embassy. His crowning achievement is a telepathic mech control system based on discoveries found from the Floaters over Jupiter. * Georgia On My Mind - The players have been dispatched to extract Peyarje from the ISC conference in Venus orbit. They are hidden among the large Jovian delegation to the ISC aboard the Georgia On My Mind space liner. However, in order to smuggle them aboard, they can carry now weapons or equipment and will need an alternate means of escape. * Stanton Station - A space station in Venus Orbit where the Internation Scientific Convention (ISC) is being held. Here, Peyarje will be allowed to present a carefully censored summary of his work on cyberlinkage technologies. The players should take part in the early stages of the ISC while they investigate the conference and find a way to get Peyarje away from his UEA handlers and off-station. * Jovians - The Jovians wish to reap the PR benefits to be found in rescuing a brilliant, pacifist scientist from UEA’s militaristic clutches and also hope that Peyarje can shed some light on some samples of his CAT/Rapid-Scan system found on a secret research station. * UEA - Unfortunately for these operatives, the UEA is taking the security of their prisoner very seriously. The third division of the UEA 4th fleet are moored just off Stanton, at the invitation of the Venusian Plantary Council, and permission has been granted for several officers and marines to accompany Peyarje as a security detail. Though the ISC filed a formal protest over the admittance of UEA military officers acting in an official capacity, the issue has since been dismissed and other nations have been allowed to included similarly-limited security details for their detachments. * Beautiful Dreamer - The PC's meet their contact, Ysa Cantroini and through her, Aglaee Dessources. Both seem to be independents commissioned by the Jovians. Ysa is surpisingly competent at many abilities and Aglaee has a ship for escape along with the characters' gear and mechs. * CHARACTER INVOLVEMENT JAF pilots could be members of an official JAF escort, added (as mentioned above) to balance out the UEA military forces escorting Dr. Peyarje. The pilots would still be instructed to ask questions and discretely investigate, but would be intended to act as a decoy and backup for the real extraction team. By asking questions and poking their noses into places they don’t belong, they would be expected to draw attention away from the real JIS operatives. Who could, in turn, be exposed and captured at the last minute, forcing the players to pull off the heist on their own with insufficient planning. The players could be the backup JIS team instead of the primary, tasked with investigating and doing footwork for the primary team. This puts them on the front lines, while the primary team works to solidify their own cover. The primary team’s cover could then be blown, forcing the players to execute the operation, and keeping them on the front lines. This has many hooks for complications and intruigue. What if the compromised team wasn’t discovered, but betrayed by a double agent in their own ranks? This goes well with the scenario (see below) that has the players trapped in hiding on Stanton. What if the Venusians (specifically, Malachai) were aware of the operation all along and either want the operatives to expose themselves or for the operation to succeed/fail for reasons of their own? Reporters have the easiest time finding cover identities - they don’t need them. The ISC is a big deal, and reporters from all over the solar system can be expected to attend. And reporters are expected to be nosy, so no-one’s going to take excessive notice of a few asking questions where they shouldn’t. However, due to their typical lack of combat skills, reporters will probably be harder to handle for the actual freeing of Peyarje. They would probably have to resort to subterfuge and trickery if called upon to get Peyarje away from his guards themselves. One possibility is to have JIS agents already in place on Stanton handle the snatch, then pass Peyarje off to the reporters for transport, as in the JAF pilots write-up above. The 3rd Division of the CEGA 4th fleet is composed of: • 2 Tengu carriers with extra vehicle bays. • 4 Bricru corvettes. • 1 Hachiman destroyer. One Tengu carries a Wyvern and three Wraiths, while the other carries four Syreens. The squadron is accompanied by several fuel ships, to give extra range to the short-legged CEGA warships. Garand’s Wyvern is the Command variant. While the Hachiman is technically the flagship of the squadron, Garand usually commands from aboard his Tengu where he has easy access to his exo-armor. This can be used to involve Kleb in the scenario without Garand’s knowledge - Kleb could be travelling aboard the Hachiman, watching and ready to take command should the situation demand it. * Escape - The 3rd Divison lacks is deployed far from reinforcements, so it will act cautiously. They know that they don’t need to kill the players - they need to capture the Dreamer. The PCs should realize this, and be careful not to let themselves be drawn away... For what seems like a retreat could really be an attempt to lure them away so that another force can slip in and disable the Dreamer’s engines.") "Dreams oF Freedom" (scenario :name "Dreams oF Freedom" :summary "* Beautiful Dreamer - Rescued from his UEA handlers at the Intersettlement Scientific Convention, Dr. Peyarje and his rescuers have fled Venus aboard the Beautiful Dreamer, privateer ship commanded by Aglaee DesSources. Unfortunately, they have not lost the UEA forces seeking to recapture Peyarje. The 3rd Division of the UEA 4th fleet, commanded by ace pilot Ranho Garand, is in hot pursuit. * Intercept Course - DesSources’ skillful helmsmanship makes the most of their limited reaction mass, but Garand’s 3rd Division is slowly closing in, blocking the orbits they could use to travel out-system. Garand's fleet makes a high energy burn and manages to intercept them and another heated battle ensues. After the battle, the UEA force, having used their remaining reaction mass to intercept must wait for a fuel tender to continue the pursuit. * The Long Trip to Earth - Low on fuel, with the UEA pursuit fleet closing in fast, the crew of the Beautiful Dreamer find themselves with only one option: change course and head for the Earth system, the heart of the UEA and the only source of supplies and fuel in range. Perhaps they can loose their pursuers in the high-traffic Orbitals and find another way to Jupiter. Because reaction mass is low and they need to run silent, the trip takes many days at zero-g. Many days in radio silence are spent discussing ways to get out of this mess.") "Moonlight Sonata" (scenario :name "Moonlight Sonata" :summary "* Ismael Li - Fortunately, the Jovians have been working hard to save the mission and have made a deal with a burgeoning rebel group on the Moon which can to provide them with the fuel and parts they need... For a price! * The Eagle has Landed - Now they just need to avoid the blockade and land on the Moon. Though the Moon has very low gravity, the Beautiful Dreamer is not designed to land on a Moon. Even if they survive the landing, they may not be able to take off again. However, there is no choice in the matter. After a harrowing landing, the rebels help bury the Dreamer in lunar dust and begin repairs and refueling. * Copernicus Base - The characters are invited to the underground, domed city known as Coperinus Base. Here the charismatic Ismael Li introduces them to the harsh life of the Lunar miners. There is nothing to do but wait and meet the pleasant locals while the ship is repaired and the UEA prepares its next move. * The Plot Thickens - Gradually, Ismael brings the characters to see supporters and see his gear. Ismael intends to lead a rebellion to take over Copernicus Base and he needs the characters' help. His group lacks seasoned fighters and they lack tactics, organization, and strategy. This revelation sparks a heated debate over the wisdom of this endevour. No one can argue that their situation is difficult, but even if they succeed the Lunar Authority and the UEA will not just sit back and allow a rebellion. Ismael argues that once they seize control, the Lunar Authority will have to negotiate. Others fear a strong, military response. Any armed conflict in a space station is loaded with risk. If one of the characters befriends or falls in love with one of the rebels, it would add a more personal edge to the rebellion. * Eleventh Hour - With or without the characters' help, Ismael begins to grease the wheels of revolution through raids, assassinations, sabotage, and public relations campaigns. Their target is Captain Ansevik the head of Copernicus security. If they can capture her, they believe they can secure the base. * Moon Strike - After providing the characters with the repairs and fuel they need, he launches his armed uprising in the depths of Copernicus hoping to drag them into the fight. Moving barricades outwards at carefully-regulated intervals, his troops and exo-suits advance through the dome, driving out the UEA bureaucrats and policemen as they go. The few initial firefights go well for the rebels. * The Tide Turns - About six hours into the fighting, things begin to turn. Ansevik manages to get her exo-suit forces into Copernicus, and their numbers mean bad things for the rebels. * Evacuation - Catherine Glit starts an evacuation of refugees. The rebels lift as many to hastily-contracted merchant and passenger ships in lunar orbit as they can. Things become even more chaotic as the Selenties abandon their posts and the rebels fall back before the UEA forces. Organizing such a retreat is no easy task. Dessources takes as many refugees as possible aboard the Dreamer. Ysa wants to help the rebels fight. The characters should be involved in the fighting or evacuation effort somehow. After all, it was their presence that provided the catalyst that started the rebellion. * Escape - Her holds crammed with refugees and UAE ships starting to move in, Aglaee orders the characters back to the ship. Greatful for their help, Li lets them go. He sends Catherine Glit with them at the last minute, against her wishes. As the characters head for the spaceport, the rebels begin another counter-attack, slowly forcing the UAE ground troops back and taking the spaceport and ground-to-orbit weapons. The citizens who couldn’t be evacuated riot, pelting helpless UEA infantry and marines with rocks and bricks. Things are obviously not going well for the UEA troops. * Copernicus Dome Disaster - Ansevik realizes that the rebels could use the city's ground-to-orbit weapons to attack his warships. He must now choose whether to withdraw or fire on the defensive batteries. In a panic, Ansevik orders his ships to attack the laser and missile batteries. The resulting explosions are far larger than expected and shatter the dome. A hasty retreat ensues as the Dome opens to vacuum, killing rebel, civilian, and UEA marine alike. * Chaos - Ismael Li operates the Laser Lifter to boost the refugee ships away, including the Dreamer. Li's last words, relayed to his friends and helpers aboard the Dreamer, are My life for freedom! The Dreamer attempts to escape with the other refugee ships, but the UEA ships are positioned to easily stop them. The UEA demands their surrender, but the UEA ships are then ordered to focus on rescue instead of pursuing the refugee ships. * Aftermath - In the end, thousands are killed in Copernicus Dome. The UEA, of course, refuses to take the blame for the Dome disaster. Their first desperate response is to put the blame on the Jovian terrorists who abducted Peyarje. Reporters use Ansevik’s actions as fodder for their own counter-attack against UEA’s propaganda. * Notes - Develop the rebellion and the rebels, especially Ismael Li. Emphasize the moon’s restrained and industrious culture and the rampant poverty and utilitarian nature of the underground cities. If appropriate, show the corruption of the UEA officials that oversee the colonies. Play up the initial hope and final despair of the rebels, the desperation of the refugees to find a better life, and the chaos of close-quarters fighting in the Lunar warrens.") "Dreams of War" (scenario :name "Dreams of War" :summary "* Mission to Mars - The UEA is in pursuit again and logically expects the Dreamer to head to Jupiter. However, with its high speed escape and her holds crammed with refugees, there’s no way for the Beautiful Dreamer to make Jupiter without running out of supplies or fuel. Fortunately for her crew and desperate passengers, the ship can easily make Mars. There, Aglaee DesSources hopes that the Martian Republic will be able to provide homes to the refugees. * Decoy - The UEA pursuit will soon catch up and they cannot be allowed to follow the Dreamer to Mars, so a desperate plan is devised. The booster rockets from the Moon are removed and fitted with decoy gear to make the rockets appear as the Dreamer. The pilots will escort the rockets on the current course while the Dreamer makes a course correction and silently coasts towards Mars. The escort will engage enemy mechs drawing out the enemies resources while maintaining the charade as long as possible. Once the decoy is discovered the pilots must return to the rockets and activate the massive rockets to boost away at high speed to rendevous with the Dreamer. This plan is loaded with risk and the pilots will probably be caught or killed. Their farewell is long and emotional. After the Moon, the pursuit fleet commander has been ordered to kill everyone aboard the Dreamer both in revenge and to eliminate witnesses. When the UEA pursuit fleet catches up to the decoy, a heated fight begins with no quarter given. Because the UEA is out for blood, they focus on the pilots instead of the 'Dreamer'. The pilots are driven back and the ruse is discovered. The pilots must make a desperate dash to the booster and escape before they are blown out of the sky. Fortunately, they escape though with heavy losses and damage and rendevous with the Dreamer on schedule. The UEA fleet has overcommitted to Jupiter and are unable to pursue to Mars. Anxious days pass as the Dreamer travels at full speed to Mars. When they arrive they will have to hope that the Martian government doesn't arrest them on the spot. Meanwhile, Garand has deduced that the refugees will divert the Dreamer to Mars (because that's what he would do), but his disgust with his superiors' handling of the battle on the Moon causes him to go to Mars on his own. * Mars Arrival - The Dreamer enters Mars orbit and is immediately escorted by a fighter wing and two destroyers. The escort demands that the Dreamer stand down all weapons and prepare to be boarded. They have little choice in the matter. There is nowhere else to go. The boarding party secures the engine room and bridge and dock the Dreamer at the massive Orbital Elevator space station called Heaven. All passengers are taken to immigration while their ship is searched. Here they meet Yanna Summers, the chief adminstrator of the Elevator. Little information is forthcoming and all senior staff are to be taken by shuttle to Mars Federation police headquarters. As they descend, they get an amazing view of the incredible Orbital Elevator in action. * Stairway to Heaven - Constructed with the aid of Venus Bank, the Martian Orbital Elevator, Stairway to Heaven is a marvel of engineering. It stretches upwards from its base at Hell Station just north of the Federation capital of Kurtzenheim to the Heaven Station counterweight. The elevator is dominates the landscape and has become a symbol of Mars Federation authority. It shines like a moon day or night, and it catches the first light of day every sunrise before the rest of Mars. Its ore containers crawl up and down the tether 24 hours a day. The current chief adminstrator, Yanna Summers, is extremely organized and professional and keeps very tight ship. * Martian Politics - Since its creation, the Orbital Elevator has become the center of Martian politics. Mars has two major political factions: the Mars Federation and the Free Republic of Mars. The Mars Federation is an authoritarian regime. It controls most of Mars and is loosely allied with the UEA. The Free Republic of Mars is smaller and is largely at odds with everything the Federation does. The Orbital Elevator has become the center of Martian debate because the Federation controls the Elevator and the huge profits it produces will allow the Federation to dominate the Free Republic in just a few years. Open conflict on Mars has become common and numerous terrorist organizations perform increasingly savage raids on the Mars Federation. The Federation in turn blames the Republic of backing the terrorists which is not entirely without merit. * Life on Mars - At police headquarters, they must negotiate for asylum for the refugees and avoid arrest and extridition to the UEA. They meet with Paul Treben of the Solar Police who is surprised to learn of the unofficial version of the events on the Moon. He will report everything he learns to his superiors who will in turn secretly inform the UEA. Representatives from both political factions arrive intending to use the characters to their own ends. The Mars Federation wants to extridite the characters as terrorists, but the Free Republic grants the refugees asylum and puts a hold on the extridition of the crew of the Dreamer. * Waiting Around - Support for the UEA is weak here, so the characters are released for the time being, though they are escorted by an armed detail at all times. Garand and his elite unit are also poking around and soon confronts the high profile characters, but he has no authority on Mars and can do nothing while the characters remain. In the meantime, the refugees are brought to the Free Republic and a media circus begins as their stories hit the airwaves. The public is shocked and sympathetic to the Selenites, but this soon turns to rage as it becomes clear that the same thing could happen to them. The normal protests for fair use of the Orbital Elevator break out into massive riots and terrorist activity spikes across Mars. * Dangerous Liason - Though the govenments seems to treat the characters like criminals, the public treats them like celebrities or even heroes. While out and about, a pretty young woman approaches one of the males and gushes about how wonderful he is and leaves him her contact code on a slip of paper. After further inspection, the contact code is not a personal address but a secure web site. Following the link, they speak with the girl, Lydia Ketchum, but her manner is very different. She is a political radical who has been implicated in terrorist activity including attacks on police and bombings. She is proud of her actions and believes that giving her life for a free Mars would be a fair trade. She proposes a daring escape plan. Her people will help smuggle the characters up the elevator in a depressurize ore car. There they must fight their way through the station, take over the administration headquarters, and release their ship and mechs from impound. Her people can then use the station defenses to cover their escape. With the station under her control, she can negotiate fair use of the elevator going forward from a position of strength. * Departure - Lydia's plan does not sound entirely rational, and she is not the sort of person who can be trusted. However, without allies the characters are never going to escape Mars, so they have no choice but to take a chance regardless of the consequences. Catherine and Ibrahim are unsure of their long-term safety on Mars and decide to join the group to continue all the way to Jupiter despite the risks. * Hell Ride - After days of planning, Lydia's people distract the guards and the characters make a run for it. After they make their escape, they are swiftly taken to an ore processing plant and smuggled aboard an ore train car. In the train are guns, pressure suits, Lydia, and four of her people. The train goes to Hell station where the cars are searched. Tense moments pass as they wait for the inspector to get to their car. When he opens the car, he looks right at them, winks at Lydia, waves his scanner, and lets the car pass. The characters must take care not to be crushed when the train contents are dumped into an elevator crawler. Soon, the crawler begins its long, slow trip up the elevator. * Heaven Sent - When the elevator arrives at Heaven, its contents are dumped into an open bin. More of Lydia's sympathizers help them bypass security forces. Now the characters need to get to Heaven's Command Center with as little bloodshed as possible. Complicating the situation, Garand appears on a screen. He and his men have commendeered an elevator crawler and are on their way up with their mechs. Though Heaven is a huge structure, it is not a military installation, so with the help of sympathizers, getting to the Command Center is surprisingly easy. Yanna is enraged, but her actions are always pragmatic, so she surrenders the Command Center when the odds are stacked against her. * Elevator Falls - Once Command is secured, the way to the Dreamer is open. Lydia says she will cover their escape and then begin negotiations with the govenment for release of the station. She is, of course, lying. After the Dreamer departs, she does help the Dreamer escape by threatening the UEA ships who cannot fire on the station, but once the Dreamer is clear, she turns Heaven's weapons on the tether. As the support is destroyed, Heaven begins spinning out of orbit while the elevator cable begins to fall, slowly at first, then faster and faster. Garand uses his mech to punch free of the doomed elevator, but he is a very low orbit. The damage from the cable's impact is incredible, as the white-hot dimond-fiber cable slams into the red dust at several times the speed of sound. The elevator is more than one and a half the length of the planet's equator and slowly wraps itself around Mars destroying everything around it for miles. The impact raises a massive cloud of dust and leaves a huge canyon visible from space. The destruction is unequalled in the history of mankind. The death toll is in the millions. The UEA must rescue Garand and Heaven station, so the Dreamer crew can begin the sad trip to Jupiter.") "Dreams of Death" (scenario :name "Dreams of Death" :summary "* Epilogue - The Heaven crew is rescued from a harrowing tumble into space, but the station spins off into space. Lydia proudly takes full credit for the assault in the name of a free Mars. There is little doubt that Lydia will be tried and executed which seemed to be her plan from the start. Her testimony makes it seem that she duped the Dreamer crew into fighting her battle for her. There are many, however, who draw a connection between the Dreamer crew and the disasters on the Moon and Mars. They are not officially terrorists, but you wouldn't know it from some of the news stations. The elevator disaster almost exclusively harmed the Mars Federation which shifted the balance of power back toward the Free Republic, which was Lydia's intention. Garand was saved by a daring low-orbit rescue. The UEA uses his story and the elevator fall to try to deflect attention from their crimes on the Moon, but the UN determines that the Copernicus Disaster was an act of state oppression and that the UEA should be subjected to sactions. * Jupiter - With fresh supplies and full fuel tanks, the Dreamer is easily able to make Jupiter. There, Dr. Peyarje transfers to the JAW Skunk Works team on Joshua Station. His new thought control system is refitted into the new Prometheus prototype mech. * A Mad Plan - The UEA leadership assesses their situation are are not happy at all. They invested massive resources developing Dr. Peyarje's mech control system to gain the upper hand, but now that technology will shift military power toward the Jovians instead. Their actions have caused the Selenites to openly hate and fear them. The Martian economy is in ruins with their ally the Mars Federation hit hardest. The Venusian Bank is still behind them, but they won't be if UEA influence collapses. The military proposes a heartless plan: destroy the Jovian colonies now before the new technology can be used and the entire Solar System will fall under UEA control. The Venusians can be bought off. The disasters on the Moon and Mars leave them in no position to fight back. The other colonies are too small and will have to fall in line. All of this chaos has created an opportunity to establish a new order, but the time to act is now. * The Hammer Falls - The 4th Fleet, still assigned to recover Peyarje and waiting just outside of Jovian space, is ordered into action. The Elysee Station sensor net has been disabled by a UEA agent, allowing the fleet to close with the colony undetected. A powerful jamming device has been deployed by the fleet to prevent the station from calling for help. The ships and mechs are ordered to attack Joshua Station to disable their defenses and force them to negotiate the extradition of the 'terrorists'. Unknown to them, their attack is a diversion for an elite squad of marines in exo-suits who will use retro-rocket packs to deorbit Elysee Station. Their real plan is to send the capital colony and all its inhabitants plunging into the Jovian atmosphere within twenty-four hours. With its leaders and their central hub gone, the Jovians will fall under UEA control. * Dragonstriker - On Joshua station, the characters are introduced to the new elite Vindicator mechs as well as the prototype Prometheus. Each have been fitted with the new CAT control system, but have yet to be tested. Suddenly advanced warning alarms sound, the station is under attack! Ranho Garand's team of elite mechs are charging toward the station, his massive Dragonstriker armor slicing through the Jovian defenses. His intense will and discipline give him near-perfect control over the still imperfect control system fitted to the prototype Dragonstriker. The characters launch to meet him, and the Dreamer hastily launches to lend support to the defending destroyers. All long range communications are disrupted by jammers, so a courier ship is sent to warn the other colonies. The battle is intense, but before it can be resolved, the courier returns. The pilot, Carl DeMers, broadcasts a warning when the interference clears: there is another larger force that has attacked Elysee station! They have fixed rocket packs to the hull and are decelerating the entire colony out of orbit! Everyone at Elysee will die when the station breaks up in Jupiter's atmosphere. * Taking Sides - Kleb’s total lack of honor have pushed Garand’s loyalties to the breaking point. If he finds out about the true plan for Elysee, he will turn on Kleb’s fleet. This will cause other fleet elements loyal to Garand to turn or withdraw from combat. The mechs board their ships are are quickly, re-outfitted on the short trip to Elysee. * The God and the Dragon - They arrive at Elysee to find the battle in full swing, with the Jovian forces slowly being driven back by the UEA Fleet, and the retro-rockets are just beginning to fire. The JSS Godsfire, its weapon block mauled by enemy fire, is trying to evacuate as many civillians as it can, using its remaining firepower to keep the UEA exos and fighters at a distance. Two teams are deployed: one to fight the UEA special forces and disable the rockets, and the another to battle the UEA fleet. The arrival of the Prometheus and Dragonstriker, and a detachment of other exo-armors, quickly turns the tide of battle. The battle seems unlikely to be resolved soon, thanks to the power of Kleb’s Posideon flagship. Garand confronts his former boss, and flies straight toward the Posideon. The Dragonstriker is heavily damaged by the fire, but manages to clamp unto the Posideon's bridge and opens fire at point blank range. The Dragonstriker and Posideon go up in a massive explosion, damaging nearby ships. The tide of battle suddenly turns. Many UEA soldiers were unhappy with Admiral Kleb's actions and are easy to convince with impassioned plees. The rockets are disabled and Elysee station uses its engines to regain its correct orbit. * Epilogue: Garand - Of Garand, no remains are found. While he could have escaped in the escape pod, it seems unlikely that he survived. That the CSS Karana, an Uller-class missile cruiser believed destroyed during the battle, is missing is noticed during cleanup months later, but no connection is ever made between the two events. Garand did survive, but was horribly wounded, and was recovered later by the crew of the Karana, who had trained under him. * Epilogue: UEA - Kleb was killed in the destruction of the Scylla’s bridge. The UEA government publically him off as a 'lone gunman' who acted without official sanction and engages in a ruthless purge of the Navy’s command structure to 'remove any who might seek to follow Admiral Kleb’s example'. In fact, they use this to eliminate to expunge or marginalize those taught by Garand or 'corrupted' by his philosophy from the upper ranks. Their shadowy ties to Venus remain as strong as ever, and, much to their relief, the diplomatic repercussions of the Odyssey affair fade away over the next year. * Epilogue: Venus - Malachai falls into disgrace with VenusBank for his failure to produce results or protect the existance of Project Methuselah, and becomes a dissatisfied freelancer. For the next decade he wanders the solar system, hatching mad schemes to put him in the good graces of his former employer once more and destroy the Confederation. He is eventually captured by SolaPol and disappears. VenusBank begins scaling back its operations slightly, uncertain of just how much the Confederation knows. No public or private charges are ever made by the Confederation over the poaching of the Floaters or the aims of Project Methuselah, leaving the Bank executives in a very unpleasant information vacuum. * Epilogue: Mars - The consequences of the Martian Elevator take a long time to show themselves. Initially, neither Martian government accuses the other of the collapse. Evidence is sketchy, and the presence of Jovian and UEA agents on-site makes things even more uneasy."))) "Europa Incident" (section :name "Europa Incident" :summary "* The Flashlight Project - Blocked from what they believed to be their rightful control over the colonies at every turn by the Jovian Confederation, UEA launched several top-secret advanced weapons projects. One of the less successful efforts was the Flashlight Project, an attempt to develop heavy autonomous drone combat spacecraft. The two Lucifer prototypes, the ultimate end result of the project, were ideal for commerce raiding. They could operate for years without more than cursory communication with their home base; their stealth systems could hide them from the most determined sensors; and their heavy array of particle beam weapons could savage a warship in a single volley. * The project turned out to be too complicated and expensive to mass-produce, but the prototype was dispatched to Jovian space for 'field trials', with orders to destroy any target with a Jovian registry it came across. The plan was to disrupt the Jovian economy enough to make them more pliable to UEA demands. * After the Battle of Elysee, the UEA council determined that the Lucifer would be a political hand grenade if it was captured. They ordered the Lucifer to self destruct, but it had already disappeared in the radiation and magnetic fields around Jupiter, the very fields they had relied upon to hide the drone as it went about its work. Finally, the crew managed to get a signal through, but some interference caused the drone to change course and crash on Europa instead of self-destructing." :scenariomap (scenariomap "A Damaged Freighter" (scenario :name "A Damaged Freighter" :summary "* The UEA Black Eagle Squadron is smuggled aboard the freighter Narsus to recover the datacore of the Lucifer and destroy any evidence. The Black Eagles had planned to slip onto Europa undetected after the Narsus dropped into orbit around the moon. Supposedly, she was to be taking on water for a journey up to Ganymede. The plan was that she would deploy the Eagles’ exo-armors, head off to deliver the rest of her cargo, then return and pick them up a week later. Faulty parts led to an explosion in Narsus' engines during her insertion burn. The captain managed to drop the freighter into a stable orbit around Europa before the engines completely died, but then, as is standard practice for merchant crews, immediately set off a distress beacon. * With all the unexplained attacks in Jovian space lately, an exo-armor patrol is dispatched from their carrier to investigate. The crew seems to sincerely have severe engine trouble. Some of the Jovians will have to board the Narsus leaving their exos tethered to the hull. The remainder stay on patrol. * Inside, the freighter is in zero-g and is particularly cramped. The crew's story seems to hold up, but the four passengers are uneasy about the situation. The engines are in bad shape and are irradiated. The cargo hold has large, sealed, liquid cargo bins labeled with warnings as liquid methane. If the Jovians start attempt to open the cargo, the captain will lose his nerve and reveal that the passengers are UEA pilots. A firefight erupts and the Black Eagles get into the cargo containers and remotely open the cargo bay to vacuum. The UEA troops escape by detonating the Narsus as a distraction (killing the crew, of course) and releasing an ECM scrambler pod. They have clearly descended to Europa somewhere.") "Escape to the Ice Planet" (scenario :name "Escape to the Ice Planet" :summary "* With Europa's low surface gravity, the Black Eagle team's exo-armors descend to the surface safely using their own thrusters. Europa’s surface is covered by a thick layer of ice. Unlike ice on Earth, this isn’t slippery - it’s nowhere near the freezing point. The surface is perilous with unstable ground and spontaneous geysers. * The UEA team radios for a pickup using a small signal booster in orbit. They then begin a tedious search for the Lucifer. * The JAF patrol rejoins its carrier and begins a search of Europa. * The UEA team eventually discovers the crashed Lucifer but finds footprints and vehicle tracks nearby. The data core has already been removed and taken to the small research station Europa 1. The UEA team breaks the ice beneath the Lucifer to let it fall into the ocean below never to be discovered. Then they must follow the tracks to recover the data core before its secrets are revealed and/or silence the witnesses. * When the JAF arrives, they must deduce what has happened and race to intercept the UEA team.") "Hide and Seek" (scenario :name "Hide and Seek" :summary "* Europa 1 is not well guarded, but it is a large facility with lots of staff. The UEA must infiltrate the base and quickly locate the data core before the rendezvous in 12 hours. The station is unarmed, and if a firefight erupts, everyone will flee to the underground shelters. If they run out of time, the UEA may be forced to destroy the base, but this would not guarantee the destruction of the data core. * The JAF can immediately land at the base and are introduced to Dr. Han Krieger and his attractive daughter Paula. They have recovered the data core, but did not have sufficient equipment to study the downed ship. * If the UEA can get close enough they can hack the core remotely and trigger a data wipe. They may also threaten to blow up the base if they are not given the core. Whether they succeed or not, the UEA will have to retreat back to the rendezvous point or be stranded. When they retreat, the JAF will have to guess at where they are going and why, but either way they will need to pursue them.") "Hell Unchained" (scenario :name "Hell Unchained" :summary "* Suddenly, a large shadow passes overhead. It's a frigate, the UEA pickup has arrived. Six exo-armors exit its bay and begin to advance. * As the JAF prepare to meet them, the frigate opens fire. Suddenly, there is a deep tremor in the ice below. The UEA agents feel it too and stop code. Suddenly, from under the ice, an impossibly brilliant beam of light lances up to engulf one of the descending exo-armors. It doesn't explode but it just melts and disappears in the beam. Soon, the ice seems to explode and the enormous black form of the Lucifer rises from below. * With its data core removed and a firefight nearby, it switched to its limited, secondary systems and it is unable to determine friend from foe. Its massive guns are clearly building another charge and moments later it fires at the frigate's engines. The crippled engines briefly leak fusing hydrogen before destroying the frigate in a nuclear fireball. It then begins to engage the new exo-armors from the frigate. * The JAF and UEA will have to quickly come to terms with the fact that the Lucifer will kill them all unless they work together. * If the Lucifer escapes, it will boosts off Europa into a tight slingshot orbit and then use its ECM systems to hide in Jupiters radiation belt. Without its higher brain functions, the Lucifer is more of a killing machine than an assassin, so it is now a question of how much damage it will do before it is taken down. * If the Lucifer is destroyed over Europa, it will crash into the ice and be lost in the depths. Without their pickup, the UEA agents will have to negotiate the terms of their surrender. Regardless, they will be tried and interrogated for their actions."))) "Jovian History" (section :name "Jovian History" :summary "* Mercury, Helios Station - A permanent colony of 8 million orbiting Mercury is established. Its orbit puts it constantly in Mercury's shadow protecting it from most of the Sun's deadyly rays. Naturally, it has access to almost limitless solar power. All equipment around Mercury is outfitted with a unique heavy armor that combines hard radiation shielding with solar collection. * Venus, New Tokyo - The capital of Venus is a sprawling megaplex of 15 million at the North Pole of Venus. Though terraforming has been going on for decades, the poles are still the only places where the temperatures are survivable. The city is completely enclosed and partially underground. Industry is relegated to the wastelands outside. The Venusian bank invested heavily in developing Venus and has seen phenomenal growth. The bank now effectively owns the entire planet. * Earth 2210 - The UAE launches an attack against the Jovian civilian colonies in an attempt to push the colonies back into line. * Mars, Marsquake - The obital elevator around Mars is destroyed by sabotage, and the enormous, carbon-diamond fiber cable was slowly dragged from orbit as the planet turned. The cable dropped with devastating force, wrapping around the equator two and a half times. Fortunately, the sparse population of Mars reduced the scope of the devastation. There is a common joke that Mars is now the only planet with an actual black line at the equator. Hot heads and smugglers have take to racing down the trench created by the cable. * War Aftermath - Some UAE leaders were found guilty of crimes against humanity for their attacks against the Jovian colonies. The other colonies increasingly see Earth as irrelevant to their future. Earth politics is divided on how to proceed. The UAE has gone underground and now covertly funds a paramilitary group of disgruntled combat veterans and pirates in order to further its aims in space.") "Jovian Characters" (section :name "Jovian Characters" :unitmap (unitmap "Aglaee Dessources" (unit :name "Aglaee Dessources" :summary "* Mysterious, beautiful, and cold, Aglaee DesSources is the captain of the Beautiful Dreamer, a privateer vessel. Once an extremely promising CEGA Navy captain, she retired at the age of thirty to her present position. * 42 year old aristocratic-looking woman.") "Adrian Allen" (unit :name "Adrian Allen" :summary "* Adrian is bookish and quiet pilot unlike the adventurous, rowdy Exo-pilot crowd. He is inexperienced and sometimes panics in combat when clear solutions are not obvious. He is currently single athough he is attracted to Foxy Fujima. * Age: 22") "Madelaine Koudriopoulos" (unit :name "Madelaine Koudriopoulos" :summary "* Strong willed and tenacious fighter pilot. * She is the only daughter of Konrad Koudroipoulos, Khannan's commander. Because of this, she had to fight with pilots who accused her of favoritism and her father who made every effort to get her to step down. * She has been teamed up with Adrian Allen who has become like a big brother to her. She interferes a lot with his personal life, much to his despair. She is bold but is uncomfortable dating, so she currently has no boyfriend. * Age: 21") "Foxy Fujima" (unit :name "Foxy Fujima" :summary "* Freelance reporter travelling from cylinder to cylinder in search of a story. She has a high attitude of the moral importance of reporting, so she will not cover trival stories which has limited her career development. Her beauty has attracted many men, but she seems to only be interested in her career. * Age: 22") "Dr. Agram Peyarje" (unit :name "Dr. Agram Peyarje" :summary "Brilliant scientist researching human/machine interfaces. A staunch pacifist, Peyarje is repelled by war in general and utterly disgusted by what CEGA plans to do with his inventions. He sees the Confederation as his best hope of escape, even if they too are warmongers.") "Dr. Catherine Glit" (unit :name "Dr. Catherine Glit" :summary "* Catherine used to serve as Ismael Li's personal assistant and moderator. She is now the representative of the escaping Lunar refugees. * She is an excellent doctor, highly regarded by all. While she appears cold to everyone, she is shy and only opens up to close friends.") "Ismael Li" (unit :name "Ismael Li" :summary "Ismael Li is the leader and driving force behind the burgeoning Lunar resistance movement. Once a miner, Li worked hard, long hours in the tunnels deep below the Lunar surface and Helium-3 harvesters. He quit in disgust when he realized that the company he’d worked ten hard years for was constantly operating at a loss and systematically abusing its employees in order to provide CEGA and massive Earth corporations with cheap Lunar ores. Using the excellent education provided to all Selenties, Li spoke out against the CEGA “occupationâ€?, making speeches and distributing eloquent pleas for regime change in an attempt to awaken the populace to the truth of their situation. Five years ago, under investigation by CEGA and Lunar police forces, Li took his crusade underground. No matter what he did, legitimate means would only get him arrested. He set about building a proper revolutionary organization out of the public eye, aiming to drive CEGA off the Lunar surface by force of arms. Strangely, this has won him many more converts among the usually peaceful Selenites than his speaches ever did. He finds this somewhat disheartening, but still forges ahead. Li is now ready to launch his uprising. The arrival of the PCs has moved his timetable up a bit, as their actions on Venus have distracted many of CEGA’s forces and their skills can be a great help to him. He is a fundamentally honest man, and will promise fuel, parts, and provisions in exchange for the PCs’ help. He will give them what he promised without short-changing or holding back. He also truly believes in his cause, and would willing sacrifice his life to save any of his supporters.") "Jovian Floater" (unit :name "Jovian Floater" :summary "* The Jovian floater is giant, blimp-sized animal filled with gas that lives its entire life floating in Jupiter's atmosphere. It has a unique biology similar to photosynthesis that consumes water, methane, and radiation to produce food. This biology also produces a short-lived compound that repairs radiation damage to its DNA which allows it to survive in the harsh radioactive environment. The medical significance of this creature especially to space flight cannot be overstated. How life could begin in such high radioactivity remains a mystery.") "Luka Ansevik" (unit :name "Luka Ansevik" :summary "Captain Luka Ansevik is the commander of the small CEGA lunar garrison force. Captain Ansevik is throughly unimaginative, a very by-the-book officer, assigned to a post not likely to tax her capabilities. After all, what threat could the unarmed and industrious Selenites pose to the military might of CEGA? When revolution erupts around her, Ansevik will do her best to contain it, but becomes increasing desperate as the situation unravels. She knows that failure to resolve the situation before her superiors are forced to take notice will be the end of her career. Ansevik is an officer focused on tactics and administrative work. As such, her combat skills are virtually nonexistent - she is much more comfortable ordering others into combat than fighting herself. This leads to disaster, as it leaves Ansevik out of touch with her troops as they desperately fight the rebels in the streets of Copernicus. Finally, increasingly desperate to contain the situation, she could be the one to order the dome blown. (Ind) Ysa Cantroni Ysa will be in her element during the Lunar uprising. Action, crusading for justice, and a bevy of human interest stories to practice her reporting skills on! Having spent a year touring the Earth system at one point, Ysa has a number of useful contacts on Luna that can supplement those provided by DesSources and Li. Even if she doesn’t travel down from the Dreamer with the PCs initially, she will try to find some way down so she can help the Selenites of Copernicus fight for their freedom once the uprising begins. Of course, Ysa might not be quite as good at tunnel fighting as she thinks she is. Saving her from herself could be an exciting and frustrating subplot for a PC, especially one who has become emotionally involved with her. Having a mysterious masked figure in a red CEGA exosuit (Garand, of course) help save her and keep her safe from CEGA forces, but carefully avoid aiding the rebels, might create an interesting mystery... Or not, depending on how sharp your players are.") "Lydia Ketchum" (unit :name "Lydia Ketchum" :summary "* Lydia Ketchum is a Martian Republic Rook, a Ranger trained for deep-cover operations within the Federation. One of the Republic’s best rangers, she’s been assigned to watch the orbital elevator. She takes her job quite seriously, and has so far managed to avoid drawing the notice of the Federation. * Unfortunately, not all is as it appears with Ranger Ketchum. She is from the Isidis Planitia, an isolated area that recently (2207) declared its independence from the rest of the Republic. The Isidisians are even more militant about the Federation than ordinary Republic citizens, and see the Federation’s orbital elevator as a very personal and insufferable insult to their national pride.") "Yanna Summers" (unit :name "Yanna Summers" :summary "Yanna Summers is the decidated and hardworking administrator of the Martian Orbital Elevator. While her actual domain is very small - she only has direct control over Heaven and Hell station - the amount of commerce that travels up and down the beanstalk has given her a sizable amount of influence within the Federation’s government. This is counterbalanced by her attempts to open Federation society up a little. Her position and efforts, however, did draw the attention of the Society of the Evolved Human, which she eagerly joined when offered membership. Yanna’s connection to the Society was what lead Aglaee to steer the players towards her, and inclined her to help them find a home for the refugees. It also could be what leads to her asking the PCs for help with the scientist case - another test by the Society to help them reach their potential. She has contacts all through the Federation bureaucracy, and could use them to help the players with their investigation... But there will likely be a price of some kind, as she’s already stretched her resources thin to secure passage for the refugees. This could, however, lead to the “Refugees Under Attackâ€? subplot. Or Yanna could be a background character that just serves to lead the PCs into the episode.") "Ysa Cantroini" (unit :name "Ysa Cantroini" :summary "Ysa has spent the past several years travelling the solar system and working odd job. This has given her an extremely wide range of skills (though none at more than 2/1 or 2/2) and connections, especially here on her native Venus. Ysa is bright and intelligent, generally assuming a quiet but cheerful air. She’s a wandering soul, and doesn’t think she could ever stay happy in one place or one job for the rest of her life. She is seriously considering becoming a reporter, however, as this gives her a way to travel and encounter a wide variety of experiences while getting paid and doing good. Much to her shame, her father is a high-ranking executive in the Venusian bank. She has cut all ties with him, and does not regret doing so, but this secret connection could still draw suspicion to her.") "Admiral Russel Kleb" (unit :name "Admiral Russel Kleb" :summary "Admiral Kleb is the throughly corrupt commander of the CEGA 4th Fleet. A hard-line war supporter, Kleb believes the inhabitants of the colonies to be completely inferior to native Terrans. This provides him with the justification he needs to take any action in pursuit of CEGA dominance. He is in the pay (and service) of the Venusian bank, as they provide him with the means to further his own ambitions, but he will not hesitate to betray them for his own advantage. They are, after all, just inferior colonists, cowardly employing bribery when they should be using righteous force. * Despite his biases, Kleb is a brilliant tactician, equally adept at combat maneuvers and political backstabbing. He is a staunch member of the UEA ruling faction, and an adherent to the warship-centric old school of military thinking. To him, adherents of the exo-centric school are children playing with fancy new toys. Ranho Garand, as the most prominently successful exopilot in the UEA navy and focus of the Dragonstriker program, is a frequent target of Kleb’s scorn.") "Ranho Garand" (unit :name "Ranho Garand" :summary "* Commander of the 3rd Division of the CEGA 4th fleet, Garand is an ace exo-armor pilot and media darling. Despite his military connections, Garand is a devoted member of Chang’s political faction. While he does believe the military to be a necessary tool, he doesn’t believe that it is the proper one to further UEA’s domination over their wayward colonies. He was one of UEA’s first exo-armor pilots, and taught many of the current generation, passing on both his piloting skills and his philosophy. Garand is a man of honor and discipline, with a spotless service record and excellent reputation. He does not enjoy killing or combat, but his honor demands that he follow orders and defend his people. Despite his iron will, he is prone to fits of irrational rage towards those who have forced him to commit (or involved him in) dishonorable acts."))) "Commercial Spacecraft" (section :name "Commercial Spacecraft" :unitmap (unitmap "Albatross Transorbital Shuttle" (unit :name "Albatross Transorbital Shuttle" :summary "* The Albatross is the latest in a long line of shuttles used for cargo and passenger transfers to various atmospheres. One or two are standard equipment for any large military ship." :mass "45tons" :speedair "1200kph" :speedspace "1.5g") "Beautiful Dreamer Transport" (unit :name "Beautiful Dreamer Transport" :summary "* The Beautiful Dreamer, at first sight, seems to be a standard Inari-class liner. As with many Inari, the Dreamer has been modified heavily, and there are many differences in the ship’s lines. Two concealed railguns run along the ship’s spine, providing an unpleasant and unexpected punch. The cargo bays on the craft’s edges have been modified to carry mechs and fighters, complete with concealed catapults. * 2 Medium Railguns * 4 Mech Bays - Cannot land fighters. * 2 Magnetic Catapults" :crew "54" :mass "10000tons" :length "270m") "Inari Space Liner" (unit :name "Inari Space Liner" :summary "* Unlike the bulk transport Mule, the Inari was designed to be a high speed passenger liner to get people quickly between the planets. Though not as modular as the Mule, the Inari can be heavily customized to specific tasks. Though it is not a military vessel, the Inari is fast and can be modified to be cary significant armor and weapons, thus making it well suited as a privateer." :titles "Georgia on my Mind" :crew "108" :mass "10000tons" :length "200m") "Carver Mining Ship" (unit :name "Carver Mining Ship" :summary "* The Carver is designed for the purpose seeking out and mining asteroids. The ship is very odd looking with three insect-like legs surrounding the main laser drill. The standard protocol for asteroid mining is to land on a mineral-rich feature, drill a deep tunnel, and then pressurize the tunnel so further operations can be done without environment suits. Ore is sent on a conveyor belt to the onboard smelter for separation and purification. * The Carver is intended to work perpetually. Its drive system is slow but extremely robust, able to use mined hydrogen for fuel and any waste material as reaction mass. Small tugs commute back and forth carrying ore to nearby space colonies and returning with supplies and spare parts. The tugs also carry replacement crew members. * The Carver has been in service for so long that their prices have come down dramatically. Since this work is enormously profitable, banks are willing to finance individuals if they can demonstrate a sound business plan." :speed ".15g" :mass "1200tons" :length "80m" :width "80m") "Mule Freighter" (unit :name "Mule Freighter" :summary "* The Mule Freighter is a simple, reliable design for transporting large amounts of cargo across the solar system. It has no interior cargo hold, instead it has a series of connectors to link self contained cargo pods of various sizes. The connectors can also be used to hook onto asteroids or other ships to allow the Mule to act as a tug. * The Mule is the most common ship in the solar system and is used by every government and commercial space organization. Because the Mule is so versatile, it can even be used as a slow carrier or missile gunboat. For similar reasons, it is a favorite ship for smuggling or piracy as well. * Its acceleration reduces as its load increases. It can transport up to 40ktons before its acceleration becomes too low to be practical." :titles "Narsus" :speed ".4g" :crew "6" :mass "4000tons" :length "345m" :width "40m") "Ox Orbital Tug" (unit :name "Ox Orbital Tug" :summary "* The Ox is a space-only shuttle used for short tranports between space stations, tugbot duty, asteroid transport, and salvage operations. It has large manipulator arms to manage unusually shaped loads. It is a very sturdy if slow craft." :speed ".5g" :mass "41tons"))) "Jovian Federation" (section :name "Jovian Federation" :summary "* Jovian capital ships are built for easy maintainance and reuse. They are composed of 4 sections: engine, cargo, habitat, and mission. All but the mission section can be interchanged with the equivalent sections from other ships. The habitat ring can even be removed for short range missions, or additional cargo modules can be added for greater endurance." :unitmap (unitmap "Jovian Pilot" (unit :name "Jovian Pilot") "Jovian Mech Jock" (unit :name "Jovian Mech Jock") "Jovian Tech" (unit :name "Jovian Tech") "Lancer Space Interceptor" (unit :name "Lancer Space Interceptor" :summary "* Despite the heavy investment in Mech Suits, Jovian interceptors remain an important part of Jovian armed forces. Their high acceleration allows them to be sent as the first line of defense ahead of the slower Mech Suits. They are well suited to recon and hit-and-run missions. They carry variable weapon pods for specialized recon, ECM, bomber, or long-range scouting missions. * 1 Light Laser Cannon * 6 Light Missiles * 2 Medium Missiles * 1 Heavy Missile" :mass "50tons" :height "25m" :speedspace "3.2g" :width "10m") "Pathfinder Mech Suit" (unit :name "Pathfinder Mech Suit" :image "JovianChronicles/PathfinderToken.png" :summary "* The Pathfinder is a rugged, simple to maintain Exo Suit design that forms the majority of the Jovian Mech forces. It is very agile but relatively fragile and mounts only light weaponry because it is designed primarily as a scout craft. Its high speed, agility, and exceptional close combat abilities proved the value of Mech Suit design and it remains the most iconic Mech Suit in existence. * 1 Medium Particle Cannon * 2 Medium Missiles * 2 Plasma Lances" :mass "35tons" :height "15.4m" :speedland "26kph" :speedspace "2.8g" :width "11m") "Retaliator Mech Suit" (unit :name "Retaliator Mech Suit" :summary "* The Retailator is the standard Jovian interceptor Mech. Well-armed and fast for its size, it can take on larger opponents and come out on top. Its speed comes at the sacrifice of some armor unfortunately and its thrusters always overheat forcing pilots to take great care or risk burned out thrusters. * 1 Medium Rail Cannon * 4 Medium Missiles * 6 Light Missiles * 2 Plasma Lances" :mass "42tons" :height "15.5m" :speedland "66kph" :speedspace "2.4g" :width "12m") "Vindicator Mech Suit" (unit :name "Vindicator Mech Suit" :summary "* The Vindicator is the most powerful mass-produced Mech in the solar system. It carries massive armor and armament, but its high cost limits its use to a few elite pilots. It is also painfully slow compared to the Pathfinders and Retailators it flies with. * 1 Medium Rail Cannon * 1 Medium Laser Cannon * 10 Heavy Missiles * 3 Plasma Lances * 2 Anti Missile Systems" :mass "70tons" :height "16m" :speedland "36kph" :speedspace "1.8g" :width "14m") "Prometheus Mech Suit" (unit :name "Prometheus Mech Suit" :summary "* The Prometheus was intended to be a prototype for a new generation of mech suits which would be more efficient, better armed, and faster than their predecessors. However, as development progressed, several experimental systems were added that made it a one of a kind wonder that could never be mass produced. * 1 Heavy Plasma Cannon * 2 Light Plasma Cannons * 2 Plasma Lances" :mass "64tons" :height "18m") "Prometheus Storm Attacker" (unit :name "Prometheus Storm Attacker" :summary "* The [Prometheus Mech Suit] can be equipped with a heavy set of extra armor and weapons. The additional mass of the armor is negated by additional thrusters. If these thrusters are damaged the armor can be jettisoned leaving a fully functional Promethus. * 1 Heavy Plasma Cannon * 2 Light Plasma Cannons * 2 Plasma Lances * 2 Heavy Laser Cannons * 1 Particle Scatter Gun * 80 Medium Missiles" :mass "82tons" :height "21m") "Athena Destroyer" (unit :name "Athena Destroyer" :summary "* Athena Destroyers function much as their wet navy ancestors. Depending on the political climate, they are either protective shepards or hunting wolves. The Athena's job is to get in the way of danger. If an unknown vessel is detected, the destroyer will move ahead into a blocking position to defend the rest of the fleet. * The Athena is particularly fast and maneuverable for a capital ship and works closely with any small craft. Weapons: * Point Defense System * 3x Particle Accelerators * 6x Railguns * 2x Area Defense Laser Cannon * 1x Missile Bay" :speed ".8g" :mass "10ktons" :length "291m" :width "81m") "Forge Patrol Carrier" (unit :name "Forge Patrol Carrier" :summary "* Forge class carriers carry 12 pilots including squadron leaders. * There are 24 Forge class vessels commissioned. * Speed: .8g Weapons: * Point Defense System * 8 Rail Cannons * 2 Laser Cannons * 2 Missile Bays Vehicles: * 6x Mobile Suits with room for 12 * 6x Catapults" :mass "39000tons" :length "460m" :width "285m") "Explorer Scout Ship" (unit :name "Explorer Scout Ship" :summary "* One of the earliest planetary exploration ships, the Explorer has been produced for many years and is a reliable though uninspired design. Its modular design is its greatest asset and has ensured its continued use for decades. The crew module can be extended on a tether for artificial gravity with the other end counterbalanced by a water tank." :speed ".4g" :mass "1ktons" :length "345m" :width "40m") "Gagarin Fleet Tender" (unit :name "Gagarin Fleet Tender" :summary "* The Gagarin is a mobile tender designed to facilitate drydock style repairs close to the front lines. * Its mission hull is a gigantic workshop with huge door sections that can surround and refit a vessel in a pressurized environment. * Speed: .1g Weapons: * Point Defense System * 1x Missile Bay" :mass "92ktons" :length "740m" :width "285m") "Javelin Cruiser" (unit :name "Javelin Cruiser" :summary "* The Javelin is the most common warship in the Jovian Navy despite its age and lack of interceptor or Mech Bays. Its design is based on pre-Mech combat philosophy, emphasizing heavy weapons on capital ships as opposed to projection of force using smaller craft. Therefore, it is very heavily armed for a relatively small craft including the deadly heavy particle beam cannon. * Crew accomodations are small but comfortable with cleverly placed mirrors throughout the ship that give the illusion of greater interior space. * Point Defense System * 2 Heavy Rail Cannons * 1 Heavy Particle Beam Cannon Turret * 2 Missile Bay * 6 Space Dart Heavy Missiles" :speed ".6g" :mass "20ktons" :length "235m" :width "72m") "Valiant Strike Carrier" (unit :name "Valiant Strike Carrier" :summary "* The Valiant Strike Carrier is a ship like no other. Every other ship in the fleet is designed to work in cooperation with one another. The Valiant is designed to operate on long range, long term patrols with no backup. It is therefore heavily armed, armored, and carries extensive supplies and fabrication facilities. * It has two rotating crew decks that are very spacious for a spaceship. * 6 Heavy Rail Cannons on 2 Turrets * 1 Missile Bay * 1 Spinal Particle Beam Cannon * 6 Magnetic Catapults * 1 Certifuge Crew Module * 2 Lancer Interceptors * 2 Pathfinder Mech Suits * 2 Retaliator Mech Suits * 2 Vindicator Mech Suits" :speed ".8g" :mass "40ktons" :length "320m" :width "75m"))) :UEA (section :name "UEA" :titles "United Earth Alliance" :unitmap (unitmap "UEA Commando" (unit :name "UEA Commando" :classification "Lt. Infantry") "UEA Marine" (unit :name "UEA Marine" :summary "* Standard issue for all regular infantry and covert ops personnel. * High Impact Plastics with reinforced joints. * Enhanced Sensory gear and Comm System * HUD Targeting * Optional Backpacks with custom gear" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Mobile Infantry" (unit :name "UEA Mobile Infantry" :summary "* Standard issue for assault and special forces personnel. * Hardened Crystalline Lattice Ceramic Compounds * Elaborate Sensory and Comm System * HUD Targeting with Smart Weapon links Powerful Backpack package including: * Ion thrusters * Heat Sink * Mini Fusion Plant * Y-rack gernade launcher (optional I-rack or micro turret) * Weapons can be powered from plant * Environmental Independence * Flamethrowers and Thrusters in arms and legs * Stealth options available" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Mobile Assault Infantry" (unit :name "UEA Mobile Assault Infantry" :summary "* Form is vaguely humanoid * Armor is extremely heavy and hardened * Weapons are built in and smart * Power Assist and Hand to Hand Weaponry make few obstacles a barrier Weapon Packages * When standing still the armor is considered a fixed weapon platform. * Heavy Machine Guns * Light Autocannon * Multiple Missile Launchers Backpack Package * Large Fusion Plant * Improved Heat Sink * Thrusters are extremely powerful * Wheels in legs for fast road movement * Speed and Maneuverability in open terrain are the trademarks of these types. * They are clumsy and overly destructive in tight quarters. * These models are purely Assault/Scorched Earth types similar to miniature tanks." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor"))) "UEA Pilot" (unit :name "UEA Pilot") "UEA Mecha Pilot" (unit :name "UEA Mecha Pilot") "UEA Tech" (unit :name "UEA Tech") "Cerberus Mech Suit" (unit :name "Cerberus Mech Suit" :summary "* The Cerberus is the first cutting edge Mobile Suit design from the UEA. * The name Cerberus comes from the large ECM pods on each shoulder which continually scan in all directions giving the appearance of 3 heads. * The Cerberus is designed as a hit-and-run unit, so it very fast and manueverable but has limited endurance by design. It is only available to commanders and elite pilots. * 30mm Massdriver with Depleted Uranium/Tungsten rounds. 20 shots. * Linked 20mm Vulcan Autocannons in the head. * 1 Plasma Lance * 1 Mech Combat Knife" :classification "Lt. Spacecraft" :mass "63tons" :height "17m" :speedland "36kph" :speedspace "1.8g" :width "15m") "Dragonstriker Mech Armor" (unit :name "Dragonstriker Mech Armor" :image "JovianChronicles/DragonstrikerToken.png" :summary "* Mechs are designed to battle other mechs and perhaps cripple enemy capital ships. The Dragonstriker is a unique prototype designed to attack enemy capital ships and installations directly. It is a massive mech, towering over other mechs and carrying formidable weapons to battle both capital ship and other mechs. * The Dragonstriker has a detachable booster that provides extra acceleration and range. The booster also houses the 2 Medium Laser cannons for strafing enemy capital ships. * 4 Heavy Anti-Ship Beam Cannon * 2 Medium Anti-Ship Laser Cannon (2 linked under for strafing attacks, mounted to booster) * 6 30mm Vulcan Autocannon (4 linked forward, 2 linked rear in head) * 4 Heavy Anti-Ship Missile (4 forward) * 2 Anti-Missile Laser Turret (1 forward, 1 rear)" :titles "CXE-01" :classification "Lt. Spacecraft" :mass "110tons" :height "24m") "Hachiman Destroyer" (unit :name "Hachiman Destroyer" :summary "* The Hachiman is the workhorse of the UEA navy. They have been produced for many years with minor upgrades. * 1 Point Defense System * 6 Railcannon Turrets * 2 Missile Bays * 2 Laser Turrets" :speed ".6g" :classification "Hvy. Spacecraft" :crew "60" :mass "5500tons" :length "208m" :width "80m") "Lucifer Cybersat" (unit :name "Lucifer Cybersat" :summary "* The Lucifer’s designed for one purpose - to ambush and kill enemy warships. Its sophisticated Stealth systems allow it to hide and its strong electronic warfare suite prevents its prey from calling for help. Powerful thrusters allow it to accelerate at incredible speeds, and a cluster of six small linked particle cannons and two large ones allow it to inflict massive damage very quickly. * Armor - Despite the advanced technology, its armor is quite thin for its size, and in a stand-up fight, it will almost certainly lose. The only questions are how to force it into a stand-up fight and how many of its attackers it can take with it. * Particle Cannons - The combined power of the dual particle cannons are equal to a spaceship's main gun. They have separate fusion engines just to recharge its capacitors, but it still takes 30 seconds between firings. * Particle Array - The 6 smaller particle cannons are designed for rapid fire against fast moving targets and are used between firing of the main guns. * Claws - Its claws are independent wire-guided drones armed with small energy weapons to deal with enemy interceptors. The claws are very fast and agile, but not very tough. They can replenish their fuel reserves by docking with the Lucifer. * Speed - The drones will almost never use their full top speed, and the Lucifer will make every effort to conserve its remass. For long-range travel, it won’t boost at more than 0.4 or 0.6 Gs except in short bursts. Much of its time will be spent drifting along a medium-traffic orbit. * Stealth - The Lucifer carries an advanced ECM/stealth package that allows it to sneak up on enemies and attempt to cripple them while scrambling any distress calls. ECM(6, 10km), Stealth (6); Quantity Name Type Arc ACC DM BR ROF Perks + Flaws Ammo 1 Particle Cannon Cluster E F +0 x12 4 +4 Hw,Red;AD(2),HEAT Unl. 2 Mega Particle Cannon E F -1 x30 7 -1 Red,Hw;AD(2),HEAT;Link Unl." :titles "CXS-01B, Automated Experimental Terror Raider" :classification "Lt. Spacecraft" :mass "95tons" :height "18.8m" :speedspace "4g" :unitskillmap (unitskillmap "Mission Section" (unitskill :name "Mission Section" :unitspecialtymap (unitspecialtymap "Stealth Vessel" (unitspecialty :name "Stealth Vessel"))))) "Lucifer Claw Drone" (unit :name "Lucifer Claw Drone" :summary "Armor: 10/20/30 *Miscellaneous Threat Value (MTV): - Crew: Computer 1 (Dumb, Level 2) (2 actions) Accessories: Autopilot; Arm: Manipulator Arm (R5, Can Punch); Armor: HEAT Resistant(5); Communications (-2, 2km); Hostile Environment Protection: Radiation (4), Vacuum, Extreme Cold; Sensors(+0, 2km); Vulnerable to Haywire; Quantity Name Type Arc ACC DM BR ROF Perks + Flaws Ammo 1 Laser Cannon E FF +1 x10 5 +0 Red;AD(1),HEAT Unl. 1 Plasma Lance E F +0 x15 M +0 AC,Red;HEAT Unl." :classification "Lt. Spacecraft" :mass "3tons" :speedspace "5g") "Siren Space Interceptor" (unit :name "Siren Space Interceptor" :summary "* The Siren Fighter is the standard medium range interceptor spaceship used by the UEA. It is faster than any other short range space craft in the Solar System, but without high mobility verniers it is outclassed by Mobile Suits. It is ideally suited for patrolling and policing the space lanes. * The Siren can be launched from Earth using a booster rocket making it even more practical for Earth defense. * 2 Medium Railguns * 6 Medium Missiles * 4 Light Missiles" :classification "Lt. Spacecraft" :mass "40tons" :length "14m" :speedspace "3.5g" :width "12m") "Syreen Mech Suit" (unit :name "Syreen Mech Suit" :image "JovianChronicles/SyreenToken.png" :summary "* The Syreen Suit is a Siren space fighter retrofitted into a Mech Suit. It was hastily constructed when the first conflict with the Jovians displayed the dominant mobility of the Jovian Mech Suits. * As an efficient and cheap design, it can be fielded in large numbers. However, it does not compare well to the new Mech Suits that it is meant to face, so casualties are high. * The Syreen can be launched from Earth using a booster rocket making it even more practical for Earth defense. * 2 Heavy Missiles * 6 Medium Missiles * 4 Light Missiles * Point defense laser system * 2 Crude manipulator arms for close combat. * The command variant includes a powerful ECM pod." :classification "Lt. Spacecraft" :mass "52tons" :height "17.2m" :speedspace "3g" :width "17.5m") "Poseidon Battlecruiser" (unit :name "Poseidon Battlecruiser" :summary "* The Poseidon Class Battlecruiser is the top of the line UEA warship. It gets its name from the two rotating living sections that give the ship the appearance of a trident. * The Poseidon outclasses any other warship from any faction and is a menancing presense. It was, however, designed before the advent of Mech Suits, so it carries more interceptors than Mechs. * Point Defense System * 4 Particle Accelerator Batteries * 4 Railcannon Batteries * 6 Interceptors * 4 Mech Suits" :classification "Hvy. Spacecraft" :crew "200" :mass "30ktons" :length "325m" :speedspace ".5g" :width "200m") "Tengu Escort Carrier" (unit :name "Tengu Escort Carrier" :summary "* The Tengu is a long range craft designed for limited engagements and policing. It has extensive supplies but lacks firepower. * 1 Point Defense System * 2 Missile Bays * 2 Mech Suits * 2 Fighters * 2 Catapults" :classification "Hvy. Spacecraft" :crew "24" :mass "25ktons" :length "250m" :speedspace ".5g" :width "38m") "Wyvern Mech Suit" (unit :name "Wyvern Mech Suit" :image "JovianChronicles/WyvernToken.png" :summary "* The Wyveern is the first and most numerous of the UEA Mech Suits. Though a copy of the Martial Federation Defender, it is a sturdy, reliable and most importantly mass-produceable design. Its primary limitation is the lack of energy weapons which limits its combat endurance before it needs to be rearmed. * 1 Hyperbazooka * 2 Massdriver Machineguns * 2 Self guided Missiles" :speed "1.4g" :mass "55tons" :height "17m" :length "4m" :speedair "2.4mach" :speedland "36kph" :width "14m"))))))
nx/tactics/books/high_technology / chapter_mobile_suit_gundam_equipment
Description:
Function Name:
  • chapter_mobile_suit_gundam_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_mobile_suit_gundam_equipment : base/chapter (chapter :name "Mobile Suit Gundam Equipment" :sectionmap (sectionmap "Gundam Equipment" (section :name "Gundam Equipment" :summary "* Energy rating for MW weapons assumes a 3 second burst." :itemmap (itemmap "Titanium Composite" (item :name "Titanium Composite" :summary "This is the state of the art armor plate before the discovery of Gundarium Alpha which completely eclipses it.") "Gundarium Alpha" (item :name "Gundarium Alpha" :summary "Originally called Luna Titanium, it was renamed after the success of the RX-78 Gundam built from it. A super high-tensile alloy originally known as Luna Titanium. Originally intended for use inside thermonuclear reactors, this alloy's superb strength, durability, heat resistance and radiation-absorbing properties make it an ideal material for mobile suit armor." :titles "Gundarium, Luna Titanium") "Gundarium Gamma" (item :name "Gundarium Gamma") "60mm Vulcan Cannon" (item :name "60mm Vulcan Cannon" :reference "Stats based on 57mm Bofors Naval Gun" :titles "VCU-505EX-Gry/Ver.009 (Titans) / VCU-505EX-V*B/Ver.012 (AEUG)" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "1000m/s" :range "8.5km" :rof "220/min") "100mm Machine Gun" (item :name "100mm Machine Gun" :titles "NF-GMG-Type.37" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "600m/s") "120mm Machine Gun" (item :name "120mm Machine Gun" :classification "Cannon" :modifiers "Auto" :muzzlevelocity "600m/s" :rounds "100") "180mm Recoilless Cannon" (item :name "180mm Recoilless Cannon" :titles "NFHI-GMCa-type.09" :classification "Cannon" :muzzlevelocity "300m/s") "240mm Recoilless Cannon" (item :name "240mm Recoilless Cannon" :classification "Cannon" :muzzlevelocity "300m/s") "280mm Bazooka" (item :name "280mm Bazooka" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "4") "360mm Hyper Bazooka" (item :name "360mm Hyper Bazooka" :summary "* Capable of destroying a GM in a single hit." :titles "H&amp;L-GB05R (Zeon) / H-Baz-85-Gry/Ver.045 (Titans) / H-Baz-87-A*E/Ver.004 (AEUG)" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "10") "380mm Hyper Bazooka" (item :name "380mm Hyper Bazooka" :titles "BLASH-XHB-L-03/N-STD" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s" :rounds "5") "Clay Bazooka" (item :name "Clay Bazooka" :image "Gundam/ClayBazooka.jpg" :classification "Hvy. Rocket Launcher" :modifiers "HE" :muzzlevelocity "120m/s") ".4MW Beam Saber" (item :name ".4MW Beam Saber" :titles "XB-G-1048L (Titans) / A*E-Br*G-Sc-L (AEUG)" :classification "Hvy. Melee" :energy "1.2MJ" :modifiers "Energy") ".65MW Beam Saber" (item :name ".65MW Beam Saber" :classification "Hvy. Melee" :energy "1.95MJ" :modifiers "Energy") "1.3MW Beam Gun" (item :name "1.3MW Beam Gun" :classification "Cannon" :energy "3.9MJ" :modifiers "Energy") "1.3MW Funnel" (item :name "1.3MW Funnel" :classification "Cannon" :energy "3.9MJ" :modifiers "Energy") "1.9MW Beam Rifle" (item :name "1.9MW Beam Rifle" :summary "Powered by rechargeable energy cap" :titles "BOWA-BR-S-85-C2" :classification "Cannon" :energy "5.7MJ" :modifiers "Energy") "2.2MW Beam Pistol" (item :name "2.2MW Beam Pistol" :summary "Powered by rechargeable energy cap" :classification "Cannon" :energy "6.6MJ" :modifiers "Energy") "2.2MW Funnel" (item :name "2.2MW Funnel" :classification "Hvy. MG" :energy "6.6MJ" :modifiers "Energy") "2.6MW Beam Rifle" (item :name "2.6MW Beam Rifle" :summary "Powered by rechargeable energy cap" :titles "BOWA*XBR-M-86-C2 (Titans), A*E-Br*XBR-87-C (AEUG)" :classification "Cannon" :energy "7.8MJ" :modifiers "Energy") "2.8MW Beam Rifle" (item :name "2.8MW Beam Rifle" :summary "Powered by rechargeable energy cap" :classification "Cannon" :energy "8.4MJ" :modifiers "Energy") "5.7MW Beam Rifle" (item :name "5.7MW Beam Rifle" :image "Gundam/ZetaBeamRifle.jpg" :summary "Powered by replaceable e-pac, doubles as large beam saber" :classification "Cannon" :energy "17.1MJ" :modifiers "Energy") "8.3MW Hyper Mega Launcher" (item :name "8.3MW Hyper Mega Launcher" :summary "Powered by replaceable e-pac, doubles as large beam saber" :classification "Cannon" :energy "24.9MJ" :modifiers "Energy") "19.5MW Mega Particle Gun" (item :name "19.5MW Mega Particle Gun" :classification "Cannon" :energy "58.5MJ" :modifiers "Energy"))))))
nx/tactics/books/high_technology / chapter_mobile_suit_gundam_units
Description:
Function Name:
  • chapter_mobile_suit_gundam_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_mobile_suit_gundam_units : base/chapter (chapter :name "Mobile Suit Gundam Units" :sectionmap (sectionmap "Gundam Independents" (section :name "Gundam Independents" :unitmap (unitmap :Side (unit :name "Side" :length "32km"))) "Gundam Federation" (section :name "Gundam Federation" :unitmap (unitmap :Ball (unit :name "Ball" :image "Gundam/Ball.png" :titles "RB-79" :speed ".96g" :classification "Cannon" :mass "17.2tons" :height "12.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon" :facing "F"))))) :Gundam (unit :name "Gundam" :image "Gundam/Gundam.png" :summary "Performance: maximum thruster acceleration 0.93 G; maximum ground running speed 165 km/h Equipment and design features: re-entry coolant system Optional hand armaments: BOWA-XBR-M-79-07G beam rifle, powered by rechargeable energy cap; RX·M-Sh-008/S-01025 shield, can be optionally stored on backpack" :titles "RX-78-2" :classification "Lt. Spacecraft" :mass "43.4tons" :height "18m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2") "380mm Hyper Bazooka" (unititem :name "380mm Hyper Bazooka"))))) "Gundam Ground Type" (unit :name "Gundam Ground Type" :image "Gundam/GundamGroundType.png" :reference `The engineers at Jaburo used spare parts originally manufactured for the RX-78-2 Gundam prototype and built approximately 20 units of a specialized ground combat-model Gundam, the RX-79[G]. Twelve of these units were assigned to the Kojima Battalion stationed in Southeast Asia, particularly to the 04th and 08th MS Teams. Since the RX-79[G]'s were made primarily of spare parts leftover from "Project V," no replacement parts were available. This resulted in hasty field repairs` :summary "Speed: 0.71 G Fixed armaments: multi-launcher, mounted in chest; 2 x X.B.Sa-G-03 beam saber, stored in recharge racks in legs, hand-carried in use Optional fixed armaments: RGM-S-Sh-WF/S-00109 shield, mounted on either forearm Optional hand armaments: P.B.R-0079/A12 S-000011 beam rifle, powered by rechargeable energy cap; bazooka gun, clip-fed, 7 rounds per clip; 6-tube missile launcher;" :titles "RX-79(G)" :classification "Med. Tank" :mass "52.8tons" :height "18.2m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "100mm Machine Gun" (unititem :name "100mm Machine Gun" :summary "Clip-fed, 2 spare clips stored on hip armor") "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :summary "Chest Mount" :facing "FF" :number "1"))))) :Guncannon (unit :name "Guncannon" :image "Gundam/Guncannon.png" :summary "Speed: 0.74 G Optional hand armaments: BOWA-XBR-L beam rifle, powered by rechargeable energy cap" :titles "RX-77-2" :speed "78kph" :classification "Lt. Spacecraft" :mass "51tons" :height "17.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "240mm Recoilless Cannon" (unititem :name "240mm Recoilless Cannon" :facing "FFx2" :number "2" :rounds "40") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Guntank (unit :name "Guntank" :image "Gundam/Guntank.png" :summary "Performance: maximum thruster acceleration 1.10 G; maximum ground driving speed 70 km/h 2 x 4-tube 40mm rocket launcher, mounted on arms" :titles "RX-75" :speed "70kph" :classification "Lt. Spacecraft" :mass "56tons" :height "15.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "180mm Recoilless Cannon" (unititem :name "180mm Recoilless Cannon" :facing "FFx2" :number "2" :rounds "60"))))) :GM (unit :name "GM" :image "Gundam/GM.png" :titles "RGM-79" :classification "Lt. Spacecraft" :mass "41.2tons" :height "18m") :Magellan (unit :name "Magellan" :image "Gundam/Magellan.png" :classification "Hvy. Spacecraft") "Pegasus Class Carrier" (unit :name "Pegasus Class Carrier" :image "Gundam/WhiteBase.png" :summary "Fixed armaments: 4 x main gun; 2 x mega particle gun; hyper mega particle cannon; 2 x missile launcher Mobile suits: 8 (12) 2x Catapults" :titles "White Base" :classification "Hvy. Spacecraft" :mass "54ktons" :height "76.5m" :length "341.7m" :width "124.1m"))) :Zeon (section :name "Zeon" :unitmap (unitmap :Big-Zam (unit :name "Big-Zam" :image "Gundam/BigZam.png" :classification "Med. Spacecraft" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) :Dom (unit :name "Dom" :image "Gundam/Dom.png" :summary "Ground Mobile Suit" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Elmeth (unit :name "Elmeth" :image "Gundam/Elmeth.png" :classification "Med. Spacecraft") :Gelgoog (unit :name "Gelgoog" :image "Gundam/Gelgoog.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gouf (unit :name "Gouf" :image "Gundam/Gouf.png" :classification "Lt. Spacecraft") "Rick Dom" (unit :name "Rick Dom" :image "Gundam/RickDom.png" :reference "Realizing that the outcome of the war was going to be decided in space, Zeon devoted all of its mobile suit manufacturing resources to space combat units. Refining the Dom design for space was simple, and mostly involved replacing the hover jet thrusters with standard rocket thrusters. Zeon manufacturers began cranking out hundreds of these new units late in the war, replacing the aging MS-06F Zaku II as the premiere front line combat unit." :summary "Performance: maximum thruster acceleration 0.67 G; maximum ground running speed 110 km/h Fixed armaments: scattering beam gun, mounted in torso; heat saber Type7, battery powered, stored in recharge rack on back, hand-carried in use" :titles "MS-09R" :classification "Lt. Spacecraft" :mass "78.6tons" :height "18.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "360mm Hyper Bazooka" (unititem :name "360mm Hyper Bazooka" :rounds "10"))))) "Zaku II" (unit :name "Zaku II" :image "Gundam/ZakuII.png" :summary "Speed: .59G/88kph Sensor radius: 3200 m 180-degree turn time: 1.7 sec Ground speed: 88 km/h Armor: super-high tensile steel Armament: heat hawk x 1 Optional armament: 3-missile pod x 2, cracker" :classification "Lt. Spacecraft" :mass "58.1tons" :height "17.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "280mm Bazooka" (unititem :name "280mm Bazooka" :rounds "4") "120mm Machine Gun" (unititem :name "120mm Machine Gun" :rounds "100"))))) :Z'Gok (unit :name "Z'Gok" :image "Gundam/ZGok.png" :summary "0.86 G; maximum water speed 103 knots Fixed armaments: 6 x 240mm missile launcher, 5 round magazine per launcher, mounted in head; 2 x mega particle cannon, mounted in forearms" :titles "MSM-07" :classification "Lt. Naval Vessel" :crew "1" :mass "65.1tons" :height "18.4m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Zeong (unit :name "Zeong" :image "Gundam/Zeong.png" :summary "maximum thruster acceleration 0.81 G Fixed armaments: 2 x wire-guided 5-barrel mega particle gun, barrels mounted in manipulator fingers, all barrels in each hand are fire-linked; 2 x mega particle gun, mounted in torso; mega particle gun, mounted in head" :titles "MSN-02" :classification "Med. Spacecraft" :crew "1" :mass "151.2tons" :height "17.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "Gwazine Class Battleship" (unit :name "Gwazine Class Battleship" :image "Gundam/Gwazine.png" :reference "The Zeon Gwazine class battleships were more than a match for any Federation Forces warship." :summary "Fixed armaments: 3 x 2-barrel main gun; 10 x 2-barrel secondary gun; many x 155mm machine gun Mobile suits: 20" :classification "Hvy. Spacecraft" :mass "108.1ktons" :height "103m" :length "440m" :width "320m") :Musai (unit :name "Musai" :image "Gundam/Musai.png") "Zanzibar Class Cruiser" (unit :name "Zanzibar Class Cruiser" :image "Gundam/Zanzibar.png" :reference "Zeon's closest answer to the Federation's Pegasus class carrier, the Zeon Zanzibar class mobile cruiser replaced the vulnerable H.L.V. for the purpose of ferrying mobile suits to Earth and back to space. With a capacity of 6 mobile suits and a battery of bow-mounted mega particle guns, the Zanzibar was often used as the command ship for smaller fleets when a Gwazine class battleship was either unavailable or unsuitable. Lacking the Pegasus class' integral Minovsky Craft System, the Zanzibar could only operate for short periods in Earth's atmosphere, using sustained thrust. When being launched back into space, the Zanzibar class required a special rocket booster to supply the necessary thrust to break free of Earth's gravity. like most Zeon warships of the One Year War, lacked launch catapults, instead deploying its complement of mobile suits through a simple hatch on the ventral hull." :summary "Fixed armaments: 1 x 2-barrel main gun; 4 x mega particle gun; 5 x 2-barrel machine gun Mobile suits: 6" :classification "Hvy. Spacecraft" :height "70.5m" :length "255m" :width "221.8m"))) :0083 (section :name "0083" :unitmap (unitmap "Gundam GP01" (unit :name "Gundam GP01" :image "Gundam/GundamGP01.png" :titles "Gundam Unit 01") "Gundam GP02" (unit :name "Gundam GP02" :image "Gundam/GundamGP02.png" :titles "Gundam Unit 02") "Gundam GP03" (unit :name "Gundam GP03" :image "Gundam/GundamGP03.png" :titles "Gundam Unit 03") "Neue Ziel" (unit :name "Neue Ziel" :image "Gundam/NeueZiel.png"))) :AEUG (section :name "AEUG" :unitmap (unitmap "Z Gundam" (unit :name "Z Gundam" :image "Gundam/ZGundam.png" :summary "* Variable Mobile Suit Speed: 1.81 G Fixed armaments: 2 x 2-tube grenade launcher, 2 rounds per tube, mounted in forearms; Optional fixed armaments: grenade launcher cartridge, 18+1 rounds, serves as extended ammunition magazine for grenade launcher; shield, mounted on left forearm" :titles "MSZ-006" :classification "Lt. Spacecraft" :mass "28.7tons" :height "19.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "5.7MW Beam Rifle" (unititem :name "5.7MW Beam Rifle" :summary "2 spare e-pacs stored in shield") "8.3MW Hyper Mega Launcher" (unititem :name "8.3MW Hyper Mega Launcher") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2" :rounds "1200"))))) "Z Gundam Waverider" (unit :name "Z Gundam Waverider" :image "Gundam/Waverider_ZGundam.png" :summary "* Variable Mobile Suit" :titles "MSZ-006" :speed "1.81g" :classification "Lt. Spacecraft" :mass "28.7tons" :length "24.3m" :width "18.6m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "5.7MW Beam Rifle" (unititem :name "5.7MW Beam Rifle") "1.3MW Beam Gun" (unititem :name "1.3MW Beam Gun"))))) :G-Defenser (unit :name "G-Defenser" :image "Gundam/GDefenser.png" :summary "* Space Fighter * Separatable cockpit capsule Fixed armaments: 2 x 14-tube missile pod, mounted in binders on main body; long beam rifle, mounted on main body; 2 x mini laser gun fire-linked, power rated at 1.7 MW each, mounted in nose of cockpit capsule; 4 x vulcan gun, mounted in pairs in missile pod binders, each pair fire-linked" :titles "FXA-05D" :speed "1.41g" :classification "Lt. Spacecraft" :mass "24.7tons" :length "39.5m" :width "27.1m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "Gundam MK-II" (unit :name "Gundam MK-II" :image "Gundam/GundamMkII.png" :reference "* Paradoxically, the Gundam Mk. II is not armored with the wonderfully durable Gundarium alloy material used by the original RX-78 Gundam, making it no more or less physically durable than mass-production mobile suits." :summary "RX*M-Sh-VT/S-00018 (Titans) / RX*M-Sh-VT/S-001 (AEUG) shield, mounted on either forearm Optional hand armaments: 2 spare e-pacs stored in shield; AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds per clip" :titles "RX-178" :speed "1.5g" :classification "Lt. Spacecraft" :mass "33.4tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "2.6MW Beam Rifle" (unititem :name "2.6MW Beam Rifle") "360mm Hyper Bazooka" (unititem :name "360mm Hyper Bazooka" :rounds "7") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2" :rounds "1400"))))) "Hyaku Shiki" (unit :name "Hyaku Shiki" :image "Gundam/HyakuShiki.png" :summary "Equipment and design features: anti-beam reflective coating on amror Optional hand armaments: AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds per clip; mega bazooka launcher" :titles "MSN-100" :speed "1.37g" :classification "Lt. Spacecraft" :mass "31.5tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "2.8MW Beam Rifle" (unititem :name "2.8MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Nemo (unit :name "Nemo" :image "Gundam/Nemo.png" :summary "Optional fixed armaments: shield, mounted on either forearm Although closely based on the GM II, was far better in performance in terms of generator power, thruster acceleration and maneuverability. To help keep its cost down, the Nemo used many weapons already employed by other existing mobile suits, such as the RMS-099 Rick Dias' beam saber and the GM II's beam rifle." :titles "MSA-003" :speed "1.15g" :classification "Lt. Spacecraft" :mass "36.2tons" :height "18.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "1.9MW Beam Rifle" (unititem :name "1.9MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) "Rick Dias" (unit :name "Rick Dias" :image "Gundam/RickDias.png" :reference "* Because many former Zeon engineers worked on the Rick Dias, it featured many similaritys to Zeon suits. It not only features a mono-eye sensor its name is also derived from the MS-09R Rick Dom (Rick comes from the word Remake). The Rick Dias should originally be called Gundam Gamma because it is built out of new Gundarium Gamma. This material was developed by Axis and it makes the suit lighter and thus makes it able to accommodate greater fuel capacity." :summary "* Equipment and design features: 2 x 'random binder' ejectable external propellant tank, mounted on backpack; birdlime launchers in hands; flare launchers in hands * Fixed armaments: 2-barrel 55mm vulcan phalanx anti-missile gun system, mounted in head; * Optional hand armaments: AE/ZIM.C-BAZ-531 clay bazooka, clip-fed, 7 rounds; beam rifle, powered by rechargeable energy cap" :titles "RMS-099, Gundam Gamma" :speed "1.37g" :classification "Lt. Spacecraft" :mass "32.2tons" :height "18.7m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "2.2MW Beam Pistol" (unititem :name "2.2MW Beam Pistol" :number "2") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) "Super Gundam" (unit :name "Super Gundam" :image "Gundam/SuperGundam.png" :summary "Combined Mobile Suit" :titles "FXA-05D+RX-178" :classification "Med. Spacecraft" :mass "72.9tons" :height "18.5m") :Argama (unit :name "Argama" :image "Gundam/Argama.png" :classification "Hvy. Spacecraft") "Garuda Class Transport" (unit :name "Garuda Class Transport" :image "Gundam/Garuda_Audhumla.png" :summary "Propulsion system: jet engine x 10 Armament: laser gun x 10 Mobile suits: 20 Ships of the line: Garuda, Audhumla, Sudori, Melord Mechanical designer: Kazumi Fujita" :titles "Audhumla, Garuda, Melord, Sudori" :classification "Med. Aircraft" :mass "9800tons" :length "317m" :width "524m"))) "Gundam Titans" (section :name "Gundam Titans" :unitmap (unitmap :Asshimar (unit :name "Asshimar" :image "Gundam/Asshimar.png" :summary "* Variable Mobile Suit" :titles "NRX-044" :classification "Lt. Spacecraft" :mass "41.1tons" :height "19.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Baund-Doc (unit :name "Baund-Doc" :image "Gundam/BaundDoc.png" :summary "* Variable Mobile Suit" :titles "NRX-055" :classification "Lt. Spacecraft" :mass "82.7tons" :height "27.3m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Byalant (unit :name "Byalant" :image "Gundam/Byalant.png" :summary "* Variable Mobile Suit" :titles "PMX-000" :classification "Lt. Spacecraft" :mass "34.2tons" :height "18.6m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gabthley (unit :name "Gabthley" :image "Gundam/Gabthley.png" :summary "* Variable Mobile Suit" :titles "RX-110" :classification "Lt. Spacecraft" :mass "32.6tons" :height "18.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Gaplant (unit :name "Gaplant" :image "Gundam/Gaplant.png" :summary "* Variable Mobile Suit" :titles "ORX-005" :classification "Lt. Spacecraft" :mass "50.7tons" :height "19.8m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) "GM II" (unit :name "GM II" :image "Gundam/GMII.png" :summary "Fixed armaments: beam saber, power rating unknown Optional fixed armaments: shield, mounted on either forearm" :titles "RMS-179, RGM-79R" :speed "1.06g" :classification "Lt. Spacecraft" :mass "40.5tons" :height "18.1m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "3" :unititemmap (unititemmap "1.9MW Beam Rifle" (unititem :name "1.9MW Beam Rifle") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx2" :number "2"))))) :Hambrabi (unit :name "Hambrabi" :image "Gundam/Hambrabi.png" :summary "* Variable Mobile Suit" :titles "RX-139" :classification "Lt. Spacecraft" :mass "34.6tons" :height "19.9m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Hizack (unit :name "Hizack" :image "Gundam/Hizack.png" :titles "RMS-106" :classification "Lt. Spacecraft" :mass "38.7tons" :height "18m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Marasai (unit :name "Marasai" :image "Gundam/Marasai.png" :titles "RMS-108" :classification "Lt. Spacecraft" :mass "33.1tons" :height "17.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Messala (unit :name "Messala" :image "Gundam/Messala.png" :summary "* Variable Mobile Suit" :titles "PMX-000" :classification "Lt. Spacecraft" :mass "37.3tons" :height "23m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Psycho-Gundam (unit :name "Psycho-Gundam" :image "Gundam/PsychoGundam.png" :summary "* Variable Mobile Suit" :titles "MRX-009" :classification "Med. Spacecraft" :mass "214.1tons" :height "40m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) "Psycho-Gundam MK-II" (unit :name "Psycho-Gundam MK-II" :image "Gundam/PsychoGundamMkII.png" :summary "* Variable Mobile Suit Performance: maximum thruster acceleration: 0.86 G (mobile suit mode), 1.99 G (mobile fortress mode) Equipment and design features: sensors, range 16230 meters; psycho control chair in cockpit; detachable head, can be operated without main body Fixed armaments: 20 x mega beam gun, power rated at 6.3 MW each, 3 mounted in each shoulder, 4 mounted in each leg, 2 mounted in each hip armor, 1 mounted in each front waist armor; 3 x mega scattering beam gun, power rated at 10.7 MW each, mounted in torso; 2 x wire-guided psycommu beam sword, power rated at 1.7 MW each, mounted in forearms; 10 x beam gun, emitter barrels mounted as fingers in hands; 2-barrel mega beam gun, mounted in head Remote weapons: reflector bits, deflects and redirects beam weapons fire, stored in backpack Though armed with the same 3-barreled scattering mega particle gun in its chest and beam gun fingers, the Psyco Gundam Mark II also mounted 20 smaller beam guns all over its body, giving it firepower capable of attacking targets in all directions. Its forearms also mounted large-bladed beam swords, and could be detached and directed at targets via a cable connection and through the control of the Psyco Gundam Mark II's psycommu system, giving the unit an all-range attack capability quite similar to that of the Principality of Zeon's MSN-02 Zeong. The Psyco Gundam Mark II also carried a set of 'reflector bits,' which were unarmed but used to redirect its own beam weapons fire to targets that are out-of-sight, or to deflect incoming enemy beam weapons fire." :titles "MRX-010" :classification "Med. Spacecraft" :mass "187.8tons" :height "40m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Energy" (unitability :name "Hardened vs. Energy"))))) :Qubeley (unit :name "Qubeley" :image "Gundam/Qubeley.png" :summary "Fixed armaments: 2 x beam launcher/beam saber, mounted in forearms in beam launcher mode, hand-carried in beam saber mode" :titles "AMX-004" :speed "1.08g" :classification "Lt. Spacecraft" :mass "35.2tons" :height "18.4m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "1.3MW Funnel" (unititem :name "1.3MW Funnel" :number "10"))))) :The-O (unit :name "The-O" :image "Gundam/TheO.png" :summary "4 x sub-arm, mounted inside front skirt armor" :titles "PMX-003" :speed "1.57g" :classification "Lt. Spacecraft" :mass "57.3tons" :height "24.8m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "2.6MW Beam Rifle" (unititem :name "2.6MW Beam Rifle"))))) :Saberfish (unit :name "Saberfish" :image "Gundam/Saberfish.png" :summary "High Altitude Fighter" :classification "Lt. Aircraft") :Gwazine (unit :name "Gwazine" :image "Gundam/Gwazine.png") :Jupitris (unit :name "Jupitris" :image "Gundam/Jupitris.png") :Salamis (unit :name "Salamis" :image "Gundam/Salamis.png"))) "Federation (New)" (section :name "Federation (New)" :unitmap (unitmap "Nu Gundam" (unit :name "Nu Gundam" :image "Gundam/NuGundam.png" :titles "RX-93" :classification "Lt. Spacecraft" :mass "27.9tons" :height "22m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))) :Re-GZ (unit :name "Re-GZ" :image "Gundam/ReGZ.png" :summary "* Variable Mobile Suit" :titles "RGZ-91" :classification "Lt. Spacecraft" :mass "24.7tons" :height "20.5m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))))) "Neo Zion" (section :name "Neo Zion" :unitmap (unitmap :Alpha-Azieru (unit :name "Alpha-Azieru" :image "Gundam/AlphaAzieru.png" :summary "Speed: 8.29 G * 2 x external propellant tank, ejectable, mounted on main body Fixed armaments: 2 x wire-guided psycommu mega arm, each mounts 5 x beam gun, fire-linked, power rated at 12.6 MW each" :titles "NZ-333" :classification "Med. Spacecraft" :mass "267.4tons" :height "58.4m" :length "108m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "6" :unititemmap (unititemmap "19.5 MW Mega Particle Gun" (unititem :name "19.5 MW Mega Particle Gun" :facing "Turret") "2.2MW Funnel" (unititem :name "2.2MW Funnel" :number "9") "60mm Vulcan Cannon" (unititem :name "60mm Vulcan Cannon" :facing "Turretx4" :number "4"))))) :Sazabi (unit :name "Sazabi" :image "Gundam/NuGundam.png" :titles "MSN-04" :classification "Lt. Spacecraft" :mass "30.5tons" :height "25m" :unitskillmap (unitskillmap :Armor (unitskill :name "Armor" :unitabilitymap (unitabilitymap "Hardened vs. Projectiles" (unitability :name "Hardened vs. Projectiles"))))))))))
nx/tactics/books/high_technology / chapter_terminator
Description:
Function Name:
  • chapter_terminator
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_terminator : base/chapter (chapter :name "Terminator" :sectionmap (sectionmap "Terminator Units" (section :name "Terminator Units" :unitmap (unitmap "Terminator T-800" (unit :name "Terminator T-800" :image "Terminator/T800.png" :mass "200kg" :unitskillmap (unitskillmap :Strength (unitskill :name "Strength"))) "Terminator T-1000" (unit :name "Terminator T-1000" :image "Terminator/T1000.png" :unitskillmap (unitskillmap :Flexible (unitskill :name "Flexible"))) "Terminator T-X" (unit :name "Terminator T-X" :image "Terminator/TX.png" :summary "* The T-X is designed to not only terminate humans but rogue Terminators reprogrammed by the Resistance. It is a composite of the T-800 and T-1000, a solid endoskeleton covered with polymimetic liquid metal alloy, allowing it to take the shape of any humanoid it touches. The T-X endoskeleton contains many powerful weapons making it considerably more deadly than previous versions." :mass "150kg" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry"))) "Terminator Hunter Killer" (unit :name "Terminator Hunter Killer" :image "Terminator/HunterKiller.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery"))) "Terminator Tank" (unit :name "Terminator Tank" :image "Terminator/HKTank.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery"))))))))
nx/tactics/books/horror
Description:
Package Name:
  • nx/tactics/books/horror
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_horror_overview, chapter_call_of_cthulhu, chapter_kingdom_of_the_gods, chapter_night_of_the_living_dead, chapter_serial_killers, chapter_deadly_beasts
Source Code:
  • (package nx/tactics/books/horror :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Horror" :image "Cthulhu.jpg" :chaptermap (base/chaptermap "Horror Overview" (chapter_horror_overview) "Call of Cthulhu" (chapter_call_of_cthulhu) "Kingdom of the Gods" (chapter_kingdom_of_the_gods) "Night of the Living Dead" (chapter_night_of_the_living_dead) "Serial Killers" (chapter_serial_killers) "Deadly Beasts" (chapter_deadly_beasts) ))) (func chapter_horror_overview : base/chapter (chapter :name "Horror Overview" :sectionmap (sectionmap "Why Tactics: Horror?" (section :name "Why Tactics: Horror?")))) (func chapter_call_of_cthulhu : base/chapter (chapter :name "Call of Cthulhu" :reference "* Premise that common human laws and interests and emotions have no validity or significance in the vast cosmos-at-large... To achieve the essence of real externality, whether of space or time or dimension, one must forget that such things as organic life, good and evil, love and hate, and all such local attributes of a negligible and temporary race called mankind, have any existence at all." :summary "* Most of the intelligent Mythos creatures are masters of [Necromancy] and have long ago reanimated their physical bodies into part physical/part spiritual forms that humans would call [Undead]. * Like [Undead], they exist partially in the [Spirit Realm], are immune to most hostile environments, and appear blurry in photograph and other recordings. * If their body is destroyed, their Spirit leaves the body and enters the [Spirit Realm] fully. Their bodies age will rapidly catch up to it usually causing it to deteriorate rapidly. Normally their spirit never returns to the physical world, but if they are powerful enough, they may find their way back through the Veil and even death may not stop them from returning." :sectionmap (sectionmap "Mythos Places" (section :name "Mythos Places" :locationmap (locationmap :Carcosa (location :name "Carcosa" :reference "* ... my eyes became riveted to the open page, and with a cry of terror or perhaps it was of joy so poinant that I suffered in every nerve... I read it and re-read it and wept and laughed and trembled with a horror which at times assails me yet. This the thing that troubles me, for I cannot forget Carcosa. Where black stars hang in the heavens. Where the shadows of men's thoughts lengthen in the afternoon. ... I pray God will curse the writer as the writer has cursed he has cursed the world with this beautiful stupendous creation. Terrible in its simplicity, irresistible in its truth, a world which now trembles before the King in Yellow. - Robert W. Chambers, The Repairer of Reputations" :titles "Lost Carcosa") :R'yleh (location :name "R'yleh" :image "Cthulhu/Ryleh.jpg" :reference "That is not dead which can eternal lie, And with strange aeons even death may die.") :Yaddith (location :name "Yaddith") :Yuggoth (location :name "Yuggoth")) :sectionmap (sectionmap :Dreamlands (section :name "Dreamlands" :reference "* Dream Quest of Unknown Kadath * But some of us awake in the night with strange phantasms of enchanted hills and gardens, of fountains that sing in the sun, of golden cliffs overhanging murmuring seas, of plains that stretch down to sleeping cities of bronze and stone, and of shadowy companies of heroes that ride caparisoned white horses along the edges of thick forests; and then we know that we have looked back through the ivory gates into that world of wonder which was ours before we were wise and unhappy. - Celephais" :summary "* The Dreamlands is a vast [Dreamworld] that is a favorite of many Earth dreamers. Experienced dreamers are among the most powerful inhabitants of the Dreamlands and some become permanent residents after their physical deaths. * To reach the Dreamlands, a sleeper must find an unusual stairway in a conventional dream and walk down the Seventy Steps of Light Slumber to face the judgment of powerful gatekeepers named Nasht and Kaman-Tha. If judged worthy (that is, able to survive the dangers of the Dreamlands), the dreamer is allowed to descend the Seven Hundred Steps of Deeper Slumber and emerges in the Enchanted Wood. * When entering the Dreamlands this way, the person leaves his or her physical body safely in the waking world. If the dreamer is killed during his or her travels, the person's corporeal body will suffer only a shock. Sometimes, however, this can be fatal - dream death of this kind makes return to the Dreamlands impossible. Waking up causes a person's dream self to disappear; thus the individual may have difficulty recalling anything learned or experienced while asleep (similar to conventional dreaming). A dreamer who dies in the real world while his dream self is still alive may have the option of retiring to the Dreamlands for the remainder of his dream self's 'life.' * The Dreamlands can be entered in other ways, including physically. This usually requires passing through very dangerous areas of both the waking world and the Dreamlands. Consequently, real death becomes a risk. However, the visitor does receive the prolonged lifespan of a native of the Dreamlands, so the traveler's time there is no longer limited to the duration of a night's sleep on earth. * Time flows at a different rate in the Dreamlands - each hour on earth represents a week or more there. Consequently, a traveler can spend months in the Dreamlands during a single night's sleep on earth. Fortunately for dreamers, inhabitants of the Dreamlands are either long-lived or immortal, provided they avoid injury or disease. * Despite its accelerated time, the Dreamlands rarely experiences change. Its geography, politics, and population remain fairly static. Dreamers, however, can exert great change over the topography, such as by creating entire cities with accompanying populations. Geography * The West is the most well-known region of the Dreamlands and is probably the most inhabited as well. It is where dreamers emerge from the Steps of Deeper Slumber. The port of Dylath-Leen, the largest city of the Dreamlands, lies on its coast. The town of Ulthar, where no man may kill a cat, is also located here. Other important cities are Hlanith (a coastal jungle city) and Ilarnek (a desert trade capital). The land of Mnar and the ruins of Sarnath are found at the southern border. The Enchanted Wood of the zoogs is also found here. It joins the South. * The South is the southern coastal region of the continent shared by the West along with the islands of the Southern Sea, including the isle of Oriab, the largest. The South's land-locked regions and its coastal areas are known as the Fantastic Realms, because they contain nightmarish and sometimes incomprehensible zones. Otherwise, the islands of the Southern Sea are fairly normal. * The East is a continent that is largely uninhabited, except for Ooth-Nargai. The city of Celephais the capital of Ooth-Nargai and was created from whole cloth by its monarch King Kuranes, the greatest of all recorded dreamers. Beyond Ooth-Nargai are The Forbidden Lands, dangerous realms into which travel is interdicted. * The North is a cold, mountainous continent notorious for its Plateau of [Leng], a violent region shared by man-eating spiders and satyr-like beings known as the &quot;Men of Leng&quot;. The North also has a number of friendlier places, such as the city of Inganok, famous for its onyx quarries. The deepest reaches of the North are said to hold Unknown [[Kadath]], the home of the Great Ones. * The Underworld is a subterranean region that runs beneath the whole of the Dreamlands. Its principle inhabitants are ghouls, who can physically enter the waking world through crypts. The Underworld is also home to the gugs, monstrous giants banished from the surface for untold blasphemies. The Underworld's deepest realm is the Vale of Pnath, a dangerous lightless chasm inhabited by enormous unseen beasts called bholes. Bholes are likely the ancestors of the Dholes of Yaddith. * The Moon has a parallel in the Dreamlands and is inhabited by the dreaded moon-beasts, amorphous frog-like creatures allied with Nyarlathotep. Interestingly, it is possible for a ship to sail off the edge of the Dreamlands and travel through space to the moon. * Kadath - Kadath or Unknown Kadath is the dwelling place of the Great Ones. It is a gigantic castle found atop an immense cosmic mountain in the Cold Waste. Kadath is the place where the dreamlands gods dwell, but it is inaccessible to mortals because the gods do not want to be bothered." :locationmap (locationmap "City of the Gugs" (location :name "City of the Gugs" :summary "* The City of the Gugs is a colossal, horrifying cityscape of soaring, cyclopean towers. It is the dwelling place of the gugs, banished to the underworld by a covenant of the gods. Its most prominent landmark is the Tower of Koth, which contains a legendary stairway that leads to the surface. * Close by the city is the cemetery of the gugs, its graves marked by huge stone monoliths. Ghouls often dine here; a deceased gug feeds them for almost a year.") "Crag of the Ghouls" (location :name "Crag of the Ghouls" :summary "* The Crag of the Ghouls is a rugged cliff in the Peaks of Thok from which the ghouls of deeper dreamland pitch the leftover bones of their sepulchral feasts. Uncounted miles below the crag is the bone-filled [Vale of Pnath].") "Great Abyss" (location :name "Great Abyss" :summary "* The Great Abyss is a realm that lies below the ruins of Sarkomand and is possibly a massive cavern that joins with all parts of the underworld. It connects with the upper Dreamlands by a stairway in Sarkomand. * The Abyss is ruled by the god Nodens, who is served by the night-gaunts. Nodens' influence seems very languid in the underworld and does not appear to extend much beyond the Abyss itself; except perhaps to Ngranek on the isle of Oriab, whose upper slopes are guarded by his night-gaunts.") "Jungle of Kled" (location :name "Jungle of Kled" :summary "* Several abandoned ivory palaces are laid within Kled. * The perfumed Jungle of Kled can be reached by traveling North from the Enchanted Wood to Thran. At Thran a elephant caravan can be taken over land or a river boat can be taken to Hlanith where passage on a ship can be found to Kled.") "Library at Ultar" (location :name "Library at Ultar" :summary "* Library at Ultar - The Library is a great circular stone building. It is enchanted and appears at different places in Ultar at different times, and it is impossible to find by accident. * Architecture - There is a central 200 foot dome filled with tables and chairs. The walls are covered with paintings and hallways radiate from the main chamber. The room is lit by sunlight pouring through wide windows overhead. This sunlight never changes despite weather or time of day. * Hallways - The radiating spokes of hallways are lined with bookshelves and go a long distance into darkness. Halls connecting the spokes appear every 100 feet. The books are divided by subject but are then only organized by age with newer books closer to the center. A light source is needed if one travels down the corridors. After several hundred yards the parchment scrolls and conventional books give way to carved wooden, stone, clay, or metal plaques. Beyond these even more bizarre methods of information storing appear, formed from crystals, ghosts enslaved to repeat specific lore, huge bottles of sinister looking liquid that must be drank to obtain the knowledge, and so forth. The languages used become more alien, and dreamers may encounter Serpent People or Elder Things in the very distant past. * Librarian - In the center of the dome can be found the desk of the librarian, Tukor. Tukor is a normal man from Ultar and can find most of the recent books from memory. * Paintings - The paintings in the room have a variety of subject matter. Some are famous characters. Others are bizarre - panoramas of endless cemeteries, twisted trees hung with countless skulls, dinosaurs stalking ruined cities. One is a portrait of a scientist or physician in the grisly act of dissecting himself with a scalpel and examining his organs under magnification. The entire scene is splashed with blood, and below the painting is a metal bucket collecting the occasional drops of blood that fall from the painting.") "Peaks of Thok" (location :name "Peaks of Thok" :summary "* The Peaks of Thok (or Throk) is a frightening range of towering granite mountains in the underworld.") "Stony Desert" (location :name "Stony Desert" :summary "* The desert is a bleak and barren waste, dull gray in color, and lit by a glaring sun. Huge slabs of shattered stone lie everywhere. No sign of life is visible. * The Stony Desert lies north-west of Ultar. At the south end of the desert rises the mountain of the gods, Mt. Hatheg-Kla.") :Hatheg-Kla (location :name "Hatheg-Kla" :summary "* Approach - Hatheg-Kla lies in the [Stony Desert] which is covered with broken slabs of stone. As one approaches the mountain, smoe of the slabs are still turned upright in the ground and bear traces of ancient carvings. Soon it becomes obvious that they are travelling in a titanic graveyard. * Description - This mountain rises like a rock statue in a silent temple. Mists always surround the peak, for mists are the memories of the gods, and the gods lived Hatheg-Kla when they dwelt upon it in the old days. Often the gods of earth visit in their ships of cloud. * Climbing - The climb up the mountain is made perilous by chasms, cliffs, and falling stones. By night it is cold and snowy. Higher up the air grows thin, though the mists grow thicker. * On the North-West side of Hatheg Kla, a cave can be seen 2000 feet up. Two colossal statues flank the cave, and 1000 feet below the cave can be seen a large dead tree with large birds flying about. The branchs are hung with many white globes. On closer examination, the birds are Byahkee and the globes are human skulls.") :Ultar (location :name "Ultar" :summary "* Ulthar - Ulthar is a pleasant city, well-known to dreamers for its ban on harming cats and the enormous number of cats that make Ulthar their home.") "Vale of Pnath" (location :name "Vale of Pnath" :summary "* The vale of Pnath (or Pnoth) is a vast pit in the underworld. It is flanked by the Peaks of Thok and is mostly lightless. The vale is filled with a mountain-sized heap of bones and is the spot into which all the ghouls of the waking world cast the refuse of their feastings. Enormous worm-like dholes burrow through the vale. Night-gaunts often carry helpless victims to the vale, where they are left to die.") "Vaults of Zin" (location :name "Vaults of Zin" :summary "* The Vaults of Zin is a huge cavern in the underworld. It lies near the cemetery of the gugs and opens onto a large cave that is the mouth of vaults of Zin, and the vindictive ghasts are always on watch there for those denizens of the upper abyss'. The ghasts who dwell in the Vaults of Zin prey on ghouls and gugs, and sometimes even one another. * It is possible that a well in the monastery of the High Priest Not to Be Described in the Plateau of Leng connects with the Vaults of Zin."))))) "Mythos Items" (section :name "Mythos Items" :itemmap (itemmap "Book of Eibon" (item :name "Book of Eibon" :image "Cthulhu/CthaatAquadingen.jpg" :summary "* The Book of Eibon is a work of the legendary magician Eibon of Mhu-Thulan. The book was produced after Eibon's disapearance by his former aprentice Cryon of Varaad. * Contents - The book deals with magic he practised, records of the area and historical acounts of other mages. It also contains records of the habits of Great Old Ones such as Abhoth, Atlach-Nacha, Rlim Shaikorth and Tsathoggua (the later being a deity whom Eibon was particularly favored by). There is a limited amount of information on the Drowners; Bugg-Shash and Yibb-Tsll. * Spells - The Book of Eibon also contains a huge number of spells. Among them are the procedures required to create a spatial gateway, numerous prayers to Tsathoggua, an incantation used to call one of the former's children to you, how to make protective symbol effective against the servants of Nyarlathotep, a simple spell to raise a small curtain of mist and a potent curse to cripple a foe. It is said that the early edition contained a formula capable of calling a Dhole to Earth and controlling it. * Hyperborean Version - The original version was made by Cryon of Varaad who complied his master's notes, journals and records into one volume. It was orignaly written on a form of vellum in the Hyperborean language of Tsath-Yo. * Atlantean Version - Later in prehistory stone Tablets containing the Hyperborean text of the Book of Eibon were found by the Atlanteans. They were eventualy translated from there original Tsath-Yo into Atlantean Senzar by the High Priest Klarkash-Ton. * Kishitic Version - The Kishites made a translation in there langauge from the Atlanteans relics they unearthed. Information about this version of the book is sketchy at best. * Egyptian Version - Some copies of the Kisihtic edition where preserved on papyri and translated by the latter Egyptians into hieroglyphs. Tablets and tomb paintings containing these hieroglyphs may still exisit. * Libor Ivonis - In aproximately 900 AD a Latin translation known as the Libor Ivonis was made by the monk Caius Phillippus Faber. It was finally printed during 1622 in Roman. This translation is over five hundred pages long. * Libre d'Ivon - In 1240 Gaspard du Nord of Aivonge translated his former teacher's copy of the Libor Ivonis into French. * Book of Eibon - This english translation was made by an unknown author sometime between the fifthteenth and sixteenth centuries." :titles "Liber Ivonis, Livre d'Eibon" :classification "Book") "Celaeno Fragments" (item :name "Celaeno Fragments" :image "Cthulhu/CelaenoFragments.jpg" :summary "225 million years ago, the stone tablets that become the Celaeno Fragments are scribed around the middle Triassic (presumably by Serpent People). One set of the tablets is eventually taken to the Great Library of Celaeno, on the fourth planet around the star Celaeno." :classification "Book") "Cthaat Aquadingen" (item :name "Cthaat Aquadingen" :image "Cthulhu/CthaatAquadingen.jpg" :summary "* The Cthäat Aquadingen, possibly meaning Things of the Water, this text, by an unknown author, deals with Cthulhu and other sea-horrors, such as Inpesca. It also contains many so-called Sathlattae, rituals and spells related to Ubbo-Sathla. It is first mentioned as appearing in northern Germany around 400 AD. A Latin version was apparently written between the 11th and 12th century, as was an English translation that appeared sometime in the 14th century. * The version found in the [Library at Ultar] is bound in soft, human skin, still pliable, and always moist from perspiration welling from its pores. Simply handling the book is creepy." :classification "Book") "Cultes De Goules" (item :name "Cultes De Goules" :summary "* Cultes des Goules is a book of black magic written by Francois-Honore Balfour (Comte d'Erlette) in 1702. It was published in France and later denounced by the church. Only a handful of copies are in existence. One of the known copies was kept for 91 years in an arcane library of the Church of Starry Wisdom in Providence, Rhode Island. After Robert Blake’s mysterious death in 1935, Doctor Dexter removed the grimoire and added it to his library." :classification "Book") "De Vermis Misteriis" (item :name "De Vermis Misteriis" :image "Cthulhu/DeVermisMisteriis.jpg" :summary "* De Vermis Mysteriis is the work of one Ludvig Prinn; a Flemish alchemist and supposed sorcerer. Prinn had spent a great deal of time traveling in the east and claimed to have obtained a great age through the use of his sorcery. Eventualy Prinn was captured by the Inquisition and sentanced to death. While awaiting execution in his cell he wrote the volume he called De Vermiss Mysteriis. How Prinn managed to have the blasphemous manuscript smuggled past his captors is unknown. * Contents - The De Vermis Mysteriis is slightly over 700 pages long. It deals with subjects such as Irim City of the Pillars, The Priesthood of Nephren Ka and the avatars of Nyarlathotep worshipped in the east. * Spells - Part of the last chapter deals with a bizarre time drug that alters one's perception of time. It also contains instructions for creating the Pnakotic Pentangle. Another of the later chapters entitiled the Saracenic Rituals, focuses on the summoning and controlling other worldly beings. Other supposed spells include a ritual for summoning a child of Shub-Niggurath, a formula for calling up the spirit from the remains of its corpse, and instructions on how to craft a certain symbol Prinn claims to be a powerful aid in banishing entities." :titles "The Mysteries of the Worm" :classification "Book") "Elder Sign" (item :name "Elder Sign" :image "Cthulhu/ElderSign.jpg" :reference "H.P. Lovecraft (who had created the Elder Sign without ever describing what it looked like) had drawn a picture of the Elder Sign in a letter. This branch-like image is considered by many to be the true Elder Sign.") "Mi-Go Armor" (item :name "Mi-Go Armor" :image "Cthulhu/MigoArmor.jpg" :classification "Med. Armor") "Mi-Go Brain Bottle" (item :name "Mi-Go Brain Bottle" :image "Cthulhu/BrainCase.jpg") :Necronomicon (item :name "Necronomicon" :image "Cthulhu/Necronomicon.jpg" :reference "* They walk unseen and foul in lonely places where the Words have been spoken... They bend the forest and crush the city, yet may not forest or city behold the hand that smites... Great Cthulhu is Their cousin, yet can he spy Them only dimly. Iä! Shub-Niggurath! As a foulness shall ye know Them. Their hand is at your throats, yet ye see Them not; and Their habitation is even one with your guarded threshold... After summer is winter, after winter summer. They wait patient and potent, for here shall They reign again." :classification "Book") "Pnakotic Manuscripts" (item :name "Pnakotic Manuscripts" :image "Cthulhu/PnakoticManuscripts.jpg" :classification "Book") "R'lyeh Text" (item :name "R'lyeh Text" :image "Cthulhu/RlyehText.jpg" :classification "Book") "True Magick" (item :name "True Magick" :image "Cthulhu/TrueMagick.jpg" :classification "Book"))) "Mythos Independent Races" (section :name "Mythos Independent Races" :unitmap (unitmap "Colour Out of Space" (unit :name "Colour Out of Space" :image "Cthulhu/ColourOutOfSpace.png" :reference "In terms of matter I suppose the thing Ammi described would be called a gas, but this gas obeyed the laws that are not of our cosmos ... This was no breath from the skies whose motions and dimensions our astronomers measure or deem too vast to measure. It was just a colour out of space - a frightful messenger from unformed realms of infinity beyond all Nature as we know it. - The Colour Out of Space") :Cthonian (unit :name "Cthonian" :image "Cthulhu/Cthonian.png") "Elder Thing" (unit :name "Elder Thing" :image "Cthulhu/ElderThing.png" :reference "* The toughness of the things was almost incredible. Even the terrific pressure of the deepest sea bottoms appeared powerless to harm them. Very few seemed to die at all except for violence, and their burial places were very limited. - At the Mountains of Madness" :summary "* Their metabolism is based on carbon dioxide instead of oxygen; their blood is dark green in color. The nervous system of the Elder Things is quite complex, with five-lobed brains and many ganglial centers. The prismatic cilia on top of the creatures' head suggest that they have senses other than sight, smell, touch, hearing, and taste. Elder Things reproduce through spores. They can derive nourishment from inorganic substances, but prefer to feed on organic life.") "Flying Polyp" (unit :name "Flying Polyp" :summary "* The flying polyps came to Earth from space as conquerors about 750 million years ago. They built basalt cities with high windowless towers. When they attempted to colonize the oceans, the polyps were driven back by the Elder Things. Thereafter, they restricted their habitats to the surface world. * Their senses did not include sight, but what senses they had could penetrate all material obstructions. They were only partially matter, but still solid enough to affect and be stopped by normal materials; this additionally gave them resistance, if not outright invulnerability, to normal means of damage, though they could be destroyed by certain forms of electrical energy. Their minds were so strange that the Great Race of Yith could not perform psychic transfers with them. * They are able to levitate and fly despite lacking any visible means of doing so, and leave telltale massive footprints when on the ground. Their amorphous bodies can turn invisible at will, though this ability appears somewhat negated by whistling noises associated with them in general. In battle, their ability to control and direct powerful winds is put to use as a weapon. * When the Great Race of Yith came to Earth, they warred with the polyps and soon drove them underground with their advanced technology. The Great Race then sealed the entryways to the polyps' subterranean abode with trapdoors, which afterwards were diligently guarded. The polyps' cities were left abandoned, perhaps as a reminder of the horrors that dwelt below. * Eventually, the polyps rose up and almost exterminated the Great Race, afterwards returning to their subterranean haunts. Having no conception of light, the polyps seem content to remain there, annihilating the few intruders that chance upon them. The entrances to their dwellings are mostly deep within ancient ruins where there are great wells sealed over with stone.") "Great Race of Yith" (unit :name "Great Race of Yith" :image "Cthulhu/GreatRaceOfYith.png") "Hound of Tindalos" (unit :name "Hound of Tindalos" :image "Cthulhu/HoundOfTindalos.png" :reference "* All the evil in the universe was concentrated in their lean, hungry bodies. Or had they bodies? I saw them only for a moment, I cannot be certain. - Frank Belknap Long, The Hounds of Tindalos" :summary "* The Hounds of Tindalos dwell in the distant past of the earth, when normal life had not yet advanced past one-celled animals. They are said to inhabit the angles of time, while other beings descend from curves. The Hounds are thought to be immortal and are believed to lust after something in humankind and other normal life, and will follow victims through time and space to get it. * Their appearance is unknown because no characters who meet them survive long enough to give a description. It is said that they have long, hollow tongues or proboscis to drain victims' body-fluids, and that they excrete a strange blue pus or ichor. * Though the Hounds are sometimes pictured as canine, it is not likely that they appear as such. Their name refers more to the creatures' habits than their appearance. * Because of their relationship with the angles of time, they can materialize through any corner if it is fairly sharp—120 degress or less. When a Hound is about to appear, it materializes first as smoke pouring from the corner, and finally the head emerges followed by the body. It is said that once a human becomes known to one of these creatures, a Hound of Tindalos will pursue the victim through anything to reach its quarry. A person risks attracting their attention by travelling through time.") "Hunting Horror" (unit :name "Hunting Horror" :image "Cthulhu/HuntingHorror.png") :Mi-Go (unit :name "Mi-Go" :image "Cthulhu/MiGo.png" :reference "* Fact: Migoi or Mi-go (pronounced mey-goo) is a Tibetan name for the Yeti and translates as 'wild man'." :summary "* Mi-go are an alien race of fungus-like creatures, approximately man-sized, pinkish in color, with crustaceous bodies bearing vast pairs of membranous wings and several sets of articulate limbs. The Mi-Go have a sort of convoluted ellipsoid where its head should be, covered with a multitude of very short antennae. * They have a colony on Pluto (i.e. Yuggoth) and have mining colonies in high mountains looking for rare minerals. * The Mi-go are not wholly native to our phyical universe. Thus, they cannot eat food from Earth, and photographs of them are blurry and indistinct. They can also fly unassisted through interstellar space at fantastic speeds. They dissolve shortly after death. * They seem to be highly focused on their scientific pursuits and are most often encountered in search of obscure minerals in remote locations. Trespassers are usually eliminated, though they have been known to have human agents work on their behalf. * Mi-go have access to a number of advanced weapons. The mist projector releases a cloud of frigid gas. They have an organic 'armor' that humans can use, but it is extremely sticky and will damage the user each time it is removed. The armor will also weaken each day unless immersed in the proper nutrient bath. * The Mi-Go are advanced in the sphere of surgery. With surgical alterations the Mi-Go are able to speak human languages, though their voice is buzzy and irritating. They can also surgically move the brain of other species into metal cylinders for transportation to other worlds through space." :titles "Fungi from Yuggoth") :Shoggoth (unit :name "Shoggoth" :image "Cthulhu/Shoggoth.png" :reference "This was the dream in which I saw a shoggoth for the first time, and the sight set me awake in a frenzy of screaming. - The Shadow Over Innsmouth"))) "Mythos Servitor Races" (section :name "Mythos Servitor Races" :unitmap (unitmap "Dark Young of Shub-Niggurath" (unit :name "Dark Young of Shub-Niggurath" :image "Cthulhu/DarkYoung.png" :reference "Something black in the road, something that wasn't a tree. Something big and black and ropy, just squatting there, waiting, with ropy arms squirming and reaching ... It came crawling up the hillside ... and it was the black thing of my dreams ... that black, ropy, slime jelly tree-thing out of the woods. It crawled up and it flowed up on its hoofs and mouths and snaky arms.") :Nightgaunt (unit :name "Nightgaunt" :image "Cthulhu/Nightgaunt.png" :reference "Shocking and uncouth black beings with smooth, oily, whale-like surfaces, unpleasant horns that curved inward toward each other, bat-wings whose beating made no sound, ugly prehensile paws, and barbed tails that lashed needlessly and disquietingly. And worst of all, they never spoke or laughed, and never smiled because they had no faces at all to smile with, but only a suggestive blankness where a face ought to be. All they ever did was clutch and fly and tickle; that was the way of night-gaunts. - The Dream-Quest of Unknown Kadath") "Seed of Azathoth" (unit :name "Seed of Azathoth" :summary "* While the [Spawn of Azathoth] are the size of dwarf stars, the seeds of Azathoth are the size of small comets. They are periodically cast off from Spawns during major upheavals or impacts with other bodies. The Seeds do not direct themselves through space, but if one impacts a planetary body, it slowly burns its way to the core where it grows over millenia. Eventually, it matures to a full [Spawn of Azathoth] and shatters what remains of the planet into rubble.") "Spawn of Azathoth" (unit :name "Spawn of Azathoth" :summary "* The massive Outer God Azathoth mindlessly casts off small parts of itself, the Spawn of Azathoth. Though small compared to Azathoth, these bodies are the size of small, brown dwarf stars. From Azathoth, they hurtle through time and space forever. Sometimes they pass near ordinary stellar systems and wreak havoc, colliding with worlds or suns, causing gravitational catastrophes, or raining its seeds ([Seed of Azathoth]) upon them." :titles "Nemesis") "Spawn of Cthulhu" (unit :name "Spawn of Cthulhu" :image "Cthulhu/SpawnOfCthulhu.png"))) "Elder Gods" (section :name "Elder Gods" :unitmap (unitmap :Nodens (unit :name "Nodens" :image "Cthulhu/Nodens.png") :Yibb-Tstll (unit :name "Yibb-Tstll" :image "Cthulhu/Yibb-Tstll.jpg" :summary "* Yibb-Tsttl is an obscure entity said to lie at the center of time and space and is able to see all things in the universe at any time making it so wise that only the omnipotent Yog-Sothoth can surpass it in wisdom. * Appearance - Often envisioned as an immobile dark mass of tentacles with a deformed head, detatched eyes and large bat wings under which countless Nightgaunts suckle from innumerable breasts (heavily implying this monstrosity is either female or more likely a hermaphrodite). The mere sight of this creature can drive humans insane and even thinking too hard on the monstrous being is said to attract its malevolent intent. * The Black - Yibb-Tstll's blood is alien and can be utilised as a weapon known as 'The Black', which takes the form of black snowflakes that stick to a victim and smothers them. The Black is a separate entity that is called upon by sorcerors more that Yibb-Tstll itself. * Reversal - The touch of Yibb-Tstll causes the hideous reversal. Typically this change with kill the living or drive the sane mad, but like its name implies, it can also do the opposite." :titles "The Patient One"))) "Great Old Ones" (section :name "Great Old Ones" :reference "Behind the Veil what gulfs of Time and Space? What blinking mowing Shapes to blast the sight? I shrink before a vague colossal Face...Born in the mad immensities of Night. - Robert E. Howard, An Open Window" :unitmap (unitmap :Cthulhu (unit :name "Cthulhu" :image "Cthulhu/Cthulhu.png" :reference "Cthulhu is eponymous with the mythos. If you know nothing else of Lovecraft's body of works, you at least know the visage of this subterranean horror. Which is interesting, because he's relatively tame compared to the Outer Gods. Although he may be worshipped like a god by many, he isn't one. Not really. ... One might call him a priest. ... Since the dawn of man, these beings have been guiding the species through dreams and through psychic manipulation. Someday, when mankind has abandoned its morals and descended into madness, They will wake Cthulhu from his slumber, and he will raise the Old Ones from death and all the world will flame with a holocaust of ecstacy and freedom. ... Cthulhu is not oblivious or indifferent to mankind. He isn't even malevolent. He is Lovecraft's simple promise of evanescence. Nothing belongs to man. Not this world, not the home they've built on it, not even the human mind. It is the ultimate destiny of this species to unravel into primal chaos, as all Things must. To the sounds of their laughter and exultant shouts, all man has ever built will one day fade away. - Tale Foundry") :Dagon (unit :name "Dagon" :image "Cthulhu/Dagon.png" :reference "* I cannot think of the deep sea without shuddering at the nameless things that may at this very moment be crawling and floundering on its slimy bed, worshipping their ancient stone idols and carving their own detestable likenesses on submarine obelisks of water-soaked granite. I dream of a day when they may rise above the billows to drag down in their reeking talons the remnants of puny, war-exhausted mankind—of a day when the land shall sink, and the dark ocean floor shall ascend amidst universal pandemonium. - Dagon") "Hastur the Unspeakable" (unit :name "Hastur the Unspeakable" :image "Cthulhu/Hastur.png" :titles "The King in Yellow") "Ithaqua the Windwalker" (unit :name "Ithaqua the Windwalker" :image "Cthulhu/Ithaqua.png"))) "Outer Gods" (section :name "Outer Gods" :unitmap (unitmap :Azathoth (unit :name "Azathoth" :image "Cthulhu/Azathoth.png" :reference "This is about at close as Lovecraft's mythos ever come to establishing a creator deity. It was Azathoth who birthed the Darkness and the Nameless mists from which nearly all the other gods and deities sprang. It was he who created the universe and he who will one day be its destruction. ... know that Azathoth is neither malevolent nor benevolent - that he is entropy incarnate; a mindless, indiffernt force of pure chaos. The Blind, Idiot God. There is nothing to be gained from calling on him and literally everything to lose. ... He is the epitome of cosmic horror in the mythos, embodying the cold, indifference of the cosmos and the sheer insignificance of intelligent life. - Tale Foundry" :summary "* At the center of the universe, deep within a self-created abyss past time and space, dwells the blind idiot god Azathoth. Possessing True Immortality, Azathoth cannot be destroyed. The concept of death only exists within his dreams. Long ago, all was Azathoth. His dreams are all of existence and we are in his dreams. The mad piping attempts to keep Azathoth slumbering for when he wakes, all things will end and all will become Azathoth again. * Azathoth is perhaps the most powerful being in fiction." :titles "Daemon Sultan, The Blind, Idiot God") :Nyarlathotep (unit :name "Nyarlathotep" :image "Cthulhu/Nyarlathotep.png" :reference "Nyarlathotep is nothing like the other Outer Gods. He travels by his own laws, into and out of the known cosmos, acting as a messenger to and from the Outer Gods. His strange personality, or perhaps the simple fact that he has a personality, baffles them. ... To lesser intelligences, he's a trickster, malevolent and cruel, bequeathing gifts of wisdom and power to those who seek it, and whom he knows cannot handle it. Where Nyarlathotep goes, madness follows. He is the Crawling Chaos, and as the only direct offspring of Azathoth, he revels in it. To Lovecraft, Nyarlathotep must have been a perfect manisfestation of his racism and xenophobia. He is not only the outside seeping in, but a malevolent, undetectable outside seeping in. - Tale Foundry" :summary "* Like the other Outer Gods, Nyarlathotep is a primal being of unimaginable power. Unlike the others, however, his power is knowledge and Nyarlathotep may be a creature entirely of the mind. Though he typically appears as a man, he has innumerable other forms and may be able to appear in any form he wishes. He seens to specifically target and toy with humanity by offering dangerous knowledge and observing the results. This is probably an overly simplistic view of his actions. Like the other Outer Gods, he is too grand a figure to care about humanity. More likely, he acts like Yog-Sothoth and simply appears as an avatar and provides Knowledge to those who seek him without regard to what we do with it. In this way, Nyarlathotep is like Prometheus providing fire to humanity. It is possible that Nyarlathotep is constantly offering knowledge, but we are generally unable to recognize it. Perhaps Nyarlathotep is the Muse behind all discoveries." :titles "The Crawling Chaos") :Shub-Niggurath (unit :name "Shub-Niggurath" :image "Cthulhu/ShubNiggurath.png" :reference "Imagine a roiling, miasmic mass of twisting tendrils and drooling mouths, so tenuous in composition that its limbs vanish as quickly as they materialize, its very form dividing constantly into a surplus of smaller abominations that are either reabsorbed into its great form, or that escape to some hideous life elsewhere. Not the spitting image of a fertility goddess but this is as close as the mythos gets. Shub-Niggurath may well be the most widely revered amoung the outer gods, infuence reaching not only to the Greeks, Cretans, Egyptions, and some druids, but to races so far-flung across the cosmos as the Mi-go of Yuggoth, and the Dhole and Nug-Soth of Yaddith. ... Usually the creation of new life, especially intelligent life, is held as a sacred act. Many humans derive joy and self-import from the notion that their kind was toild over by some kind of divine intelligence. Shub-Niggurath with her blind, indifferent, prolific procreation, undermines this idea. ... Shub-Niggurath was Lovecraft's affirmation that life itself is nothing extrodinary. - Tale Foundry" :titles "The Black Goat of the Woods with a Thousand Young") :Yog-Sothoth (unit :name "Yog-Sothoth" :image "Cthulhu/YogSothoth.png" :reference "Locked away at the border of reality, there exists an intelligence. Rather, the intelligence. All of it. Yog-Sothoth holds the knowledge of all that is, all that was, and all that will be. ... For this reason, he is one of the most heavily worshipped entities among the Outer Gods. His name is frequently invoked during the rituals and incantations of those seeking hidden knowledge. And often, he answers. Sadly for the ones who call on him, the knowledge he grants almost always leads to madness and self-destruction. Not because Yog-Sothoth is evil or malevolent. He doesn't force anyone to turn the key or step through the gate. ... He is both the danger of knowledge and the inability of man to handle it. His role in the mythos mirrors Lovecraft's own self-taught obsession with the sciences as well as his acedemic failings. - Tale Foundry" :titles "Beyond-One, The Key and the Gate, The Vortex"))) "Mythos Scenarios" (section :name "Mythos Scenarios" :sectionmap (sectionmap "Seeds of Azathoth" (section :name "Seeds of Azathoth" :summary "* Nemesis - Since 1984, a theory attempts to explain the mass extinctions that occur every 27 million years. The theory submits that a brown dwarf star orbits our sun at 95,000 AUs and every 27 million years it approaches close enough to rain comets throughout the solar system causing climate change, mass-extinctions, and similar catastrophes. * Seeds of Azathoth - Nemesis is, in reality, a Spawn of Azathoth that has clung to orbit around the Sun. Occasionally, pieces of Nemesis break free, falling into the solar system: the Seeds of Azathoth. Seeds that strike the Sun are destroyed, but if a seed strikes a planet, it can melt into the planet's core where it grows immensely, eventually forming a new Spawn which emerges from the broken planet like a snake from an egg. Our system's original fifth world was so parasitized. Its remnants compose the asteroid belt. * For millenia, human and other astronomers have seen in comets, 'hairy stars', approaching disaster and ill-fortune. In ancient texts, comets have been blamed for the revolt of the Shoggoths against the Elder Things, the doom of the dinosaurs, the fall of the empire of the Serpent People, the destruction of Hyperborea, the sinking of Atlantis, and even the two ages of chaos that struck early Egypt. * The most recent effect of Nemesis took place in central Siberia, June 30, 1908, when a tremendous explosion rocked the area for hundreds of miles. There was a pillar of fire and shock waves powerful enough to knock down horses 400 miles away." :sectionmap (sectionmap "The Case of Phillip Baxter" (section :name "The Case of Phillip Baxter" :scenariomap (scenariomap "Figure in the Night" (scenario :name "Figure in the Night" :summary "* An investigator wakes suddenly in the night to see the room bathed in pale green light and a strange musky smell. A vague, ghostly figure gestures toward the investigator. Suddenly, a portion of its head disappears as if bitten off. The spectre stumbles and thrashes around the room as more of the head is eaten until it is completely headless. The figure goes rigid and fades away leaving the room in darkness. * After contemplation, the figure is recognized as Professor Phillip Baxter a former teacher of the investigator. * Contacting Phillip's home gets the distraught housekeeper, Angela Vincenzo. She informs them that Phillip passed away yesterday of a sudden illness. She invites them to the funeral the next morning. * A successful Occult roll indicates that an apparition usually appears at the moment of death instead of a day later.") "Funeral of Phillip Baxter" (scenario :name "Funeral of Phillip Baxter" :summary "The services are in the rain and attended by: * Julian Baxter, the priest, in a wheelchair. * Matthew, the priest's personal attendant, who is a large, silent man. * Emmott Baxter, elder son of the deceased. * Dr. Douglas Walters, the family physician. * Silas Patterson, anthropologist and member of the Tuesday Night Academy. * Judge Braddock, executor of the estate. * Angela, the housekeeper. * Alvin Beswick, undertaker and hearse driver.") "Legacy of Phillip Baxter" (scenario :name "Legacy of Phillip Baxter" :summary "* Angela receives the property * Half of his cash goes to the Tuesday Night Academy * The remaining half goes to his three children Emmott, Colin, and Cynthia. Cynthia's portion to be donated to the Catholic Widow's Relief Fund as she requested. * At this, Emmott accuses Silas Patterson and his Tuesday Night Academy of wasting all his father's money in life and now in death. * Finally, a packet of papers is given to the investigators according to the will. This packet contains Phillip's dream journal and an short note about why he thought the investigators might be interested.") "Dream Journal of Phillip Baxter" (scenario :name "Dream Journal of Phillip Baxter" :summary "* The enclosed note describes that his dreams had become more vivid and recurring recently and that he felt that he needed to write them down and give them to someone who might find the account scientifically interesting. * He had traveled to Ultar and visited the library there. In the library, he found the book, the [Cthaat Aquadingen] which gave important insight into his current research. As Phillip left the library, he saw an evil-looking dwarf that he had seen in a carnival he passed on the way into the city. The dwarf was discretely following him. Phillip managed to shake him before he woke up. * Anyone experienced in the Dreamlands will recognize the entrance to the Dreamlands and Ultar.") "Home of Phillip Baxter" (scenario :name "Home of Phillip Baxter" :summary "* Angela Vincenzo, the former housekeeper is now the only resident in the roomy three bedroom home. * The study contains various paperwork including: ** A letter from Phillip's daughter Cynthia describing that her supposed kidnapping by natives was not as serious as he was led to believe and that she is perfectly fine. She has sent a box of coconuts as a present. ** Notes on the Tuesday Night Academy's purchase of a large telescope and their search for a 'Dark Star' called Nemesis. ** An anthropology book authored by Silas Patterson with marked section describing southeast Indian tribes displaying remnants of ritual cannibalism. Most are symbolic acts upon the death of a family member or friend, but on occasion the ritual is actually performed using a monkey or ape substitued for a human. Of particular interest is a brain eating custom where the brain is exposed and eaten directly from the skull while still warm. An elderly native said that he had seen apes killing smaller monkeys and eating their brains in similar manner. ** A diary including comments about: *** His brother Julian sudden sickness and retirement after returning from the Andaman Islands. *** Julian's subsequent suicide attempt *** Cynthia's trip to the Andaman Islands and subsequent abduction by savages. *** Her later release *** Arguments with his sons over favoritism *** His recent series of nightmares *** His therapy with Julian over his nightmares and the drug Julian prepared to help him sleep. *** The ultra-realistic new dreams after the drug put him into an especially deep sleep. *** Julian's refusal to provide more of the drug. *** Phillip's break-in of Julian's house and the successful theft of the drug. * The basement contains an unopened crate of coconuts with a small hole chewed through the side. * The attic contains a formerly extinct prehistoric spider that was in the crate of coconuts. It had bitten Phillip in his sleep and put him into a deep coma that was mistaken for death. The spider venom causes unconsciousness in 10 minutes, but the victim will revive on its own within two days."))) "Search for the Seed" (section :name "Search for the Seed" :scenariomap (scenariomap "The Garrison Observatory" (scenario :name "The Garrison Observatory" :summary "* The Tuesday Night Academy has spent a large sum of money to erect an observatory in Garrison Montana. They experiment with prisms to try to detect the dark star that their research claims has had a sweeping effect on history. * The Observatory is deep in the woods and is only accessible on horseback.") "The Defenders of the Seed" (scenario :name "The Defenders of the Seed" :summary "* The Seed - A Seed of Azathoth has been hurtling through space for centuries and has finally been drawn to Earth. As it approached, the special prisms in the telescope attracted it like sunlight off a mirror. The Seed swept across the sky and crashed in the woods. Its strange green fire trail attracted the attention of many including those at the observatory and a group of local hunters. * Sasquatch - When the hunters found and examined the asteroid, they were exposed to the horrific radiations of the Seed. Those that survived, regressed to a primitive state. They are terrified by the Seed, but are compulsively drawn to it. They have buried the Seed in an alcove of the cave in which they live. The Seed is slowly killing them, and as they die, they dissolve into a primordial soup before actually dying. * Sylvian Englund - Sylvia is a pleasant woman in her late sixties who lives off the land in the woods since the death of her husband. She has recently discovered the regressed hunters and believes that they are Sasquatch. She has been feeding them and has gained their trust. She enjoys her discovery and does not want outsiders to ruin her friendship with the sasquatch.") "The Race for the Seed" (scenario :name "The Race for the Seed" :summary "* Fungi From Yuggoth - A team of four Mi-go have observed the Seed's landing from their underground outpost on the Moon. Their goal is to retrieve the Seed to use as an magical energy source. Interesting humans captured along the way are to be de-brained and the brains carried back in cylinders for questioning later. * They each carry a machine that looks like a silver whorl. It fires a beam of deadly radiance that eats blackening holes in whatever it touches. Any damage prevented by armor is instead applied against the armor itself. The weapons have 37 charges and may not be recharged. The weapons have no range limitations and are excellent sniper weapons. * Their first target is the firetower where they slay Ranger Marshall and use the tower as a base of operations. * The next day they spray a nervous tissue solvent in the direct vicinity of the firetower to prevent intrusions. The spray forms a low fog that short circuits animal nervous systems driving them mad. A Grizzley Bear and Jules, Sylvia Englund's dog, are the first victims of the gas. Both roam the countryside acting randomly. * Later the same day, the Fungi search the observatory, leaving many tell-tale signs. * The next day, they capture Sylvia Englund near her ranch. They de-brain her and hide the body in the house. * Toward the end of the day, they move on the Seed. They make quick work of the hunters defending it. They carefully put the seed in a shielded container and fly it to the firetower. They gather their belongings, including the Seed and any captured brains, drop a bomb on the firetower to destroy any evidence, and fly back to the Moon."))) "Death in St. Augustine" (section :name "Death in St. Augustine" :scenariomap (scenariomap "Investigating Colin Baxter" (scenario :name "Investigating Colin Baxter" :summary "* Colin Baxter, Phillip's youngest child, is due a healthy piece of Phillip's estate, but he must be located first. His last known location was St. Augstine, Florida. Judge Braddock is concerned with the series of bizarre occurences and hires the investigators to track Colin down and check on his safety. * St. Augustine is a city in northeast Florida and the oldest continuously occupied European-established settlement in the continental United States. * Colin is indeed still here, but he has fallen on hard times and turned to alcohol. He can be found in a local speakeasy hidden behind a grocery store. * Harry Spitz - The grocery store/speakeasy is owned by Harry Spitz who runs the bar. He pays protection money to the police and is in no danger of police action. * Billy Wolff - Billy is a close friend of Colin's and will steadfastly defend his buddy in all circumstances, especially when drinking. * Esmerelda - Esmerelda is a Cuban born, hot-headed friend of Colin's. She is an illegal immigrant and will not reveal her last name under any circumstances to, somehow, protect her family.") "Colin's Treasure" (scenario :name "Colin's Treasure" :summary "* Colin has a history of get rich quick schemes and his current one is to find a fortune in sunken treasure. Unfortunately, his business partner ran away taking their remaining cash and Colin's girlfriend with him. Since then, Colin has been drinking his troubles away. * The inheritance money helps, but Colin is still short $2,000. He will offer the characters 50% of the profits if they chip in the money. * He believes that the wreck of the treasure galleon, La Rosaria can be found off Bimini. He claims to have an accurate map to the location. His map is hand copied from an original kept in the library of the 200 year old Spanish church. * Father Garcia - At the church they meet Father Garcia who is a friend of Esmerelda. Father Garcia is friendly but guarded. With the help of Esmerelda he admits that he fears that someone is watching him. He also admits to seeing figures moving in the dark on the church grounds, though he feels he must be imagining things. After gaining his trust, Father Garcia shares the church library. Though Colin's research is shoddy, futher research supports his findings that the map is an authentic map of the location of the La Rosaria.") "Colin's Wreck" (scenario :name "Colin's Wreck" :summary "* The Palencia - Colin invites the party aboard the old steamer he has bought and retrofitted for large scale salvage. The crew is mostly Cubans and blacks. As they depart, someone spots a reflection from the coast. Using binoculars, they see someone observing them back with binoculars before the person ducks away. * The Voyage - The map shows a location off Bimini, 300 miles south of St. Augustine. The voyage takes less than 24 hours on calm seas. * Diving - The diving pumps have enough pressure for no more than 2 divers at once. Wolff operates the pumps. Colin would prefer to dive with a partner and asks for volunteers. The divers reach the bottom in 2 minutes and tug twice on the line to indicate they are at bottom. The water is particularly clear and well illuminated by sunlight. Only 20 minutes later they spot the wreck and tug twice again. The divers return to the surface and describe that the wreck is in only 50 feet of water but is stuck on a reef hanging over a sharp drop off on one side. * Coral Outcropping - A protruding coral outcropping has pierced the hold of the hull. Anyone exploring this area will be the victim of a single sudden attack by the [Moray Eel] that makes its home here. The attack is not life threatening, but if the person bleeds the divers will have to return to the surface for fear of attracting sharks. * The Drop Off - Anyone foolish enough to explore the deck near the drop off, suddenly causes a section of the hull to break off and fall into the drop off. The falling diver can attempt to jump free, failing that he can scramble to grab the coral reef as he falls, otherwise he slowly falls 30 feet before the coral cuts his air hose and he drowns. The boat pulls him up, but it will be too late to save him unless he is extremely accomplished at holding his breath. * Captain's Cabin - Colin is most interested in the Captain's cabin where he finds a heavy lock box which needs to be winched to the surface. In it there can be found 22 forty pound silver bars worth $10000 total and a strange, large necklace. The necklace is carved with strange figures of animalistic humans celebrating a great comet with a tail that goes on forever. After a few days investigation, it is clear that the wreck does not contain the riches that Colin hoped for. Colin will be left deeply in debt. However, any characters who invested will double their investment.") "Colin's Ruins" (scenario :name "Colin's Ruins" :summary "* The Ruins - Colin desperately hopes that the treasure fell from the wreck before it landed at the bottom and begins retracing the ship's path. About a 300 yards away, he discovers what probably sank the La Rosaia: a sunken ruin whose stone ceiling lies just below the water line. No treasure is found, but Colin is desperate to find anything of value, so he moves to explore the Ruins. * Temple - The ruin is a stone temple in a bowl shaped depression with curved steps going down 20 feet before entering an archway. The temple itself is only 30 feet across and has many crabs and octopi. The walls are covered by mosaic tile that depicts people suffering during multiple terrible disasters. Above each disaster are tiles depicting an orb with a shining light nearby. * The Pit - In the center of the temple is a dark pit of indeterminate depth. Before the pit is a metal orb on a stone slab. The orb has a metal rod projecting from one side at the end of which is a shiny topaz. The rod can orbit the orb and telescope in or out, but its current position is very close to the orb. A mechanism inside the orb operates the rod and is apparently still active. The pit reaches about 100 feet before a rock cave-in blocks the way. Within the pit is a single, strange dolphin. * The Dolphin - If multiple lights are shined down the pit, a motionless dolphin can be seen. Suddenly, the normally peaceful dolphin swims up and attempts to ram people with incredible force. It will continue attacking unless the invaders leave or it is killed.") "Death of the Father" (scenario :name "Death of the Father" :summary "* Homecoming - As the Palencia arrives at port, police can be seen on the docks. When the Palencia docks, officers rush on board and arrest Colin and Wolff for the murder of Father Garcia. * Murder - Father Garcia was murdered the same day that Colin and the investigators went to the library. Witnesses say that Colin and Wolff returned drunk later that night and ransacked the library. That morning the priest was found in the church with his skull crushed. The reality is that the ghoul cult has been robbing graves for years. Father Garcia has been noticing activity in the night and has been hiding in the church at night to try to catch someone in the act. Unfortunately, he found the graverobbers and confronted them. They immediately killed him and called the Detective to cover up the murder. What the killers did not realize was that Esmerelda was coming home from the speakeasy when she heard a commotion from the church. She rushed over and observed the killers discussing what to do with the Father's body. * Detective Morris Packard - The detective is the head of the police force while the chief is on extended medical leave. He is also a member of a secret death cult that worships ghouls. His cult was graverobbing for their riturals when the Father caught them and he was dispensed with. Colin's drinking made him a convenient scapegoat, so the Detective is constructing circumstantial evidence to arrest Colin. Later he will arrange for Colin to hang himself in jail. If the investigators get too close to the cult, he will arrange an ambush to eliminate them. * Esmerelda - Esmerelda is conspicuously missing. After witnessing the murder scene, she packed her things and fled to her parents house in Clearwater. She fears for her safety and doesn't want to get involved, but when she iscovers that Colin has been frames, she writes a letter with what she saw to the investigators and Colin. * Crime Scene - Trampled in the dirt can be found a pin from the local alligator farm that was dropped in the scuffle. * St. Augustine Library - The local library carries copies of newspapers. Several stories can be found in the Jacksonville Sentinel that may be relevant. Older material is harder to discover. ** 1571 - A yellowed document in Spanish written by Father Rolando Tortulla of Toledo Spain. The document reports to the King, the state of the French heretics held prisoner in vaults below the monastery. They are wild and degenerate and are guilty of cannibalism. They will be held until they die. ** 1641 - A yellowed document in Spanish describes the construction of the Castillo de San Marcos that incorporates the catacombs of the old monastery. A violent french prisoner was transferred to a new cell. ** 1662 - A yellowed document in Spanish describes the horrid state of the French prisoner. His toes are missing and he limps around his cell scratching on the walls saying only gibberish. He will be held until he perishes. ** 1682 - A yellowed document in Spanish describes the escape of the french prisoner. Stones were removed from the wall of the cell and the prisoner fled into a tiny tunnel behind the wall. After a brief attempt to locate him, the tunnel was filled, sealing the fate of the horrible prisoner. Drawings were scratched into the ceiling showing comets and fire raining from the sky. ** 1792 - A religious paphlet describes an ancient evil unloosed by Satan. They are inhuman but walk among us like men. Many officials of the city, both past and present, belong to this secret, godless faith. ** February 1890 - A freshly buried body was stolen from a cemetary south of St. Augustine. No suspects were found. ** May 1927 - Grisly Find at Alligator Farm. Eli Simpson, an employee of the farm, saw a shoe in the large crocodile pool which turned out to also contain a severed human foot. No identification was found, and police theorize that a vagrant snuck onto the farm and fell into the pool. No charges were filed. ** October 1920 - A recently buried body of an indigent was stolen from the old St. Augustine church graveyard. No motive or suspects were found. * St. Augustine Herald - The local paper is a weekly that promotes local businesses and tourist trade. The editor/owner is Fred Boswell who bought the paper 3 years ago. Strangely, the original owners destroyed all their files before they left. * Jacksonville Sentinel - Sold next to the Herald is a real paper published in Jacksonville, a 2 hour drive up the coast.") "Korsky's Alligator Farm" (scenario :name "Korsky's Alligator Farm" :summary "* Eli Simpson - Eli found the severed foot and was subsequently fired by Maynard Korsky for alerting the police before discussing it with him first. It was not the only time he found strange meat in the pens, but it was the only thing he could clearly identify. * Maynard Korsky, Dell Korsky, and Kenny Durham run the farm. They use the gators to destroy the leftovers of the cult, but do not do any other cult business at the farm. * The Farm - If the investigators investigate the farm during the day, the Korskys and Kenny Durham are no help and the cult is alerted to their investigation. If they investigate at night, the farm is not guarded, but the gators have destroyed any evidence that might have been found.") "Castillo de San Marcos" (scenario :name "Castillo de San Marcos" :summary "* A monumental castle started in 1638 and took over a century to complete. The upper levels are open to the public, but the lower levels are considered hazardous and are sealed off with packlocked plywood doors. It is easy enough to pry the plywood loose but not without leaving evidence of tampering. The cells of the degenerate prisoners are easy to locate. The walls and ceiling are covered with scratchings of spiders and comets and skulls. In the final cell, a stone can be removed revealing a low tunnel sloping downard. Crawling on hands and knees for fifty yards reveals a hallway from the original Franciscan monastery that predated the fort. The hall leads to a small room with two chairs and black robes hanging from pegs. The room is the same as the one depicted in the films from Thornton's Camera Shop.") "Thornton Camera Store" (scenario :name "Thornton Camera Store" :summary "* The camera store has a view of the castle. William Thornton works here all day selling cameras, lens, and film. There is also a darkroom where he develops photos. * If the investigators break in they can find some smuggled Cuban ponography and three recent silent films in a locked box. * The Films - Each film is roughly the same depicting a dead body in a chair in a small stone room surrounded by hooded figures. A veiled female figure limps over and begins a ritual. The body seems to gain some semblence of life and then the figures leap upon the body and begin eating it at which point the film ends. * If confronted with the films, Thornton claims he received them by accident along with the Cuban films and that they are obviously some kind of homemade hoax.") "Thornton House" (scenario :name "Thornton House" :summary "* Mother Thornton - Mother Thornton is the matriarch of the death cult and has nearly completely transformed into a ghoul. She never goes out in public and wears a veiled hat even in private. * William will normally be at home after 5pm. During the day, the front door is not locked. If Mother Thornton hears intruders, she will stay in her room pretending to be sleeping in a chair. If she is exposed, she throws off the veil and tries to escape the house. She will leap out the second story window lope down the street scattering the citizenry. Any disturbance here will have the police arrive in five minutes where they will arrest anyone in the Thornton home for the murder of Mother Thornton. Even if she is killed the story will be that they killed a deformed and crippled old woman. * Gray Binding - Among her possessions is a book that teaches the Gray Binding spell that animates a corpse into a mindless zombie.") "St. Augustine Ambush" (scenario :name "St. Augustine Ambush" :summary "* The Note - If the investigators are discovered, Detective Packard will arrange a deadly ambush for them. He will kidnap Eli Simpson, Esmerelda, or anyone else who they think can lure the investigators. The victim leaves a note to the investigators that they have new information and to meet at the church graveyard and night. * The Churchyard - The gator farm truck is hidden to the north of the church, and the Maynards and Packard wait in ambush with pistols and blackjacks behind tombstones. At the center of the graveyard, the contact sits on a tombstone under the moonlight. Unfortunately, the victim is already dead and is merely propped up. The ambushers try to take the investigators alive, but will open fire if they have no other choice. * The Ritual - If the investigators are captured, they are taken to the ritual chamber where one of them is eaten alive while the others watch. Before the grisley feast is complete, a number of ghouls come down the tunnel and tear the cultists apart. The ghouls drag away the dead and ignore the living investigators.") "Exposing the Cult" (scenario :name "Exposing the Cult" :summary "* Exposing the Cult - Since Detective Packard is a cultist, any involvement with local police will get the investigators in trouble. If they can bring hard evidence to the Florida State Police, who will move in and clean up the mess, though they will cover up the messier parts to maintain their vital tourist trade."))) "Investigating the Andamans" (section :name "Investigating the Andamans" :scenariomap (scenariomap "Trip to the Adamans" (scenario :name "Trip to the Adamans" :summary "* The Andaman Islands are a narrow chain of islands 590 miles southeast of India. * Weather - The temperature is mild and ranges from 64F to 92F. Except for October and March, the islands are hit by daily monsoons. * Wildlife - There are no large predatory animals, just all manner of bats, rats, spiders, turtles, wild pigs, and native cats. * Population - The natives are primitive Negritoes, belived to have lived here since the Pleistocene era. Uniquely among modern man, they have no knowledge of fire building and must continually keep a fire burning. They are divided into 12 tribes with different dialects of the same language. They have a long reputation as viscious killers and cannibals. For centuries, shipwrecked sailors had been systematically slain (but not eaten). Over time, the islands have become safe to outsiders except in remote areas. * Port Blair - The British established a penal colony on the islands where convicts are forced to live and work. The colonly is a primitive jungle colony with a dock, general store, a wireless, and faily complete medical facilities. Port Blair is also the only deep water anchorage on the islands, so all ships must dock here. * Major Ashley Nichols - Major Nichols is the commissioner of the Andamans. He oversees the trade of exotic lumber, coffee, cocoa, tea, and coconuts. He also commands a small battalion of Indian solders. Nichols is happy to meet civilized westerners and will places his services and those of the British Government at their disposal. * Arrival - The Andamans are 10,000 miles from America. If the investigators use Colin's ship, the trip takes 3-4 weeks. If they book other passage, they will have to travel to Calcutta first. * Office Records - Major Nichols has nothing to hide and allows full access to the office records where a report of Cynthia Baxter's abduction can be found. In the narrative, it is found that although the abductors initially tried to take her by force, that after a short conversatiion, she agreed to go with them and was returned safely the next day. Major Nichols has only met Cynthia twice, since she rarely comes to Port Blair.") "Trek across the Adamans" (scenario :name "Trek across the Adamans" :summary "* Guides - If they request, Major Nichols will provide two Indian guides to lead them to Cynthia's clinic 45 miles away. However, he does warn that the two are criminals, working off their crimes. Worse, there are 2 escaped criminals known to be in the area. They are desperate killers and could be extremely dangerous. * Sikander - A Hindu in his mid-thirties with a wife and three children on the island. He stole a horse and has served eight years so far but is mostly trustworthy. He will, however, steal a weapon for protecting his family if he gets the chance. If successful, he will hide the weapon in the jungle for future retrieval. * Mahbub - A Moslem from Delhi who has served twenty years so far for murder. He speaks little English and is neither garrulous nor energetic. * The Jungle - The trip to Cynthia's clinic starts on timber roads, then footpaths, but before the first day is over they are struggling through thick growths and shallow swamps with no path. The trip takes three days or more, and the guides prove able servants, doing all the work of setting up camp, building a fire, and preparing meals. * The Villiage - A loud buzzing noise emanates from a clearing ahead with a tiny, abandoned villiage. The buzzing comes from a tree with a crude platform 25 feet up. Atop the platform is a rotted human form covered in a mass of undulating insects that are devouring it. Although the Andamanese normally bury their dead, if a particularly revered chief dies, he is bundled in a tree and the clan abandons their villiage for three months in reverence. If the body is disturbed, the Jarawan hunters will track the intruders and attempt to kill them for their blasphemy. * The Mission - Cynthia has a small wooden building that serves as her clinic surrounded by the huts of 20 Andamanese. Nearly a mile from the beach can be seen a 6 mile island covered with dense jungle. If local tribesman believe the island is evil, and only Cynthia has returned alive from it. The inhabitants of the island rarely leave, and when they do it is only to kidnap and kill. * Cynthia Baxter - Cynthia is a large woman, big-boned and slightly overweight. She is very near-sighted, and her voice is high pitched and squeaky. Cynthia will act hospitable to strangers, but she is highly suspiscious of those who would appear at this critical moment in her life. She lost her mother at 8 year old. She nearly died from a spider bite and 12 and began thinking of becoming a catholic nun. Instead, with the encouragement of Uncle Julian, she studied medicine in college. Julian helped her get through medical school, and she is deeply grateful to him. To impress Julian, she became a medical missionary and travelled to the Adamans in 1913. In 1918, she was kidnapped by the Tcho-Tchos from the small island across the strait. The Tcho-Tcho priest saw the mark of the spider on her, and trained her in the nature of Atlach-Nacha, their horrible spider god. Cynthia never had a strong personality and was easily brainwashed and converted to the terrible worship. The priest has convinced her that she has a special detiny (which is horribly true), and now only Julian might be able to turn her from her path. * Cynthia's Journal - In her hut is a journal that describes her facination with the teachings of the Tcho-Tcho priest and her belief that a new sun shall appear in the sky. The journal describes the arrival of Silas Patterson and his interest in the Tcho-Tcho rituals. She also writes of her mixed feeling about sending the 'present' to her father, but the priest insists that he cannot be allowed to interfere.") "Tcho Tcho Island" (scenario :name "Tcho Tcho Island" :summary "* Kidnapping - The arrival of strangers, convinces the priest that the moment has come. He sends men in the night to meet with Cynthia, and she eagarly goes with them. The local Adamanese raise an alarm and many flickering torch lights can be seen from the island. * Tcho Tcho Tribesman - The Tcho Tcho are more asian in appearance than the average Adaman. They are all violent fanatics and will hunt down and capture anyone who invades their island. There are 10 males, 6 females, and 3 children on the island. * Tcho Tcho Priest - The Tcho Tcho priest leads his tribe. He is a long time explorer in the Dreamlands and there he has the form of a twisted dwarf (reflecting his personality). In combat, the priest stands back and casts spells (Dread Curse of Azathoth and Withered Limb) while his comrades fight and die. * Fossil Quarry - An exposed rock in the jungle is covered with fossils of prehistoric arthopods including millipedes, scorpions, and spiders. This rock is the source of the spider from the Baxter home, brought to life by the Child of Atlach-Nacha spell cast by the Tcho Tcho priest. A single enormous spider six-feet across can be found here, and the priest will animate this spider if he gets the chance. Note: Any damaged fossil cannot be reanimated. * Obelisk - In a clearing near the villiage rises a black stone, twenty foot monolith. Though weathered by time, precise geometric designs are clearly visible. These designs are are disturbing to the eye and create a sense of vertigo. Out of the corner of one's eye, they seem to swirl and pulse. If one listens to the stone an almost impercetible rhythmic throbbing can be heard. Crude stones are set up around the obelisk covered in primitive drawings of spiders chasing and consuming tiny humans as shooting stars fall from the heavens. * Metamorphosis - On the night Cynthia is 'kidnapped', she goes directly to the Obelisk. There the tribesmen have gathered to begin the ceremony. Near the Obelisk are bound the 2 escaped killers that Major Nichols warned of as well as any other captured males. Cynthia stands before the altar, removes her clothes and sways to the Tcho Tcho songs. Eventually, she stops, bends over, and the skin along her back splits wide open, revealing a shiny black surface that pulses horribly. As the wrinkling empty skin of Cynthia Baxter is pushed forward, multple legs spill out from the discarded molt, waving feebly, as the huge spider-thing pushes clear. The priest dones Cynthia's discarded skin and wears it like a coat. * The Wedding Feast - Cynthia's new form is not hard enough to move freely until dawn. In the meantime, she is ceremonially wedded to the male sacrifices before she drags herself to each one and begins eating the flesh from the victims head. She finally sucks the brains out through the eyesockets. Each feast takes 20 minutes, and after each is consumed, the still animate corpses with exposed skulls are freed and shamble mindlessly off into the forest. The Onge people sense the threat of the Tcho Tcho and attack the Tcho Tcho. The Tcho Tcho defend Cynthia and the priest as they escape. The Onge will not pursue the Tcho Tcho into jungle at night. Instead the free any remaining prisoners and wait for light. The priest makes his way to the prehistoric rock and casts Child of Atlach-Nacha to animate the giant spider there. * Daughter of Atlach-Nacha - At dawn, Cynthia is fully formed and begins a 3 hour trek across the island to the Caverns of Atlach-Nacha. She is accompanied by hordes of spiders that crawl around and over her. Any who follow will constantly be treading on spiders and have spiders dropping upon them from the trees. Their bites are painful but are not dangerous. * Caverns of Atlach-Nacha - Cynthia travels to a 20 foot cave opening where her father dwells. If she is pursued, she will wait in ambush for her pursuers. If the investigators are foolish enough to continue searching, they will travel through twisting caverns deeper and deeper for over an hour before the cave opens into a vast chasm nearly filled with thick, ropy webs. Continued activity attracts [Atlach-Nacha] himself who resembles a hideous, black, hairy spider with a strange, remotely human-like face with little red, hair-rimmed eyes."))) "Ulthar and Beyond" (section :name "Ulthar and Beyond" :scenariomap (scenariomap "Exploring Ultar" (scenario :name "Exploring Ultar" :summary "* Phillip Baxter's dream journal leads the investigators to start exploring [Ulthar] in the Dreamlands. * Phillip's Dreamform - At some point someone will notice that Phillip Baxter is watching them from a distance. If anyone approaches, his head disappears in a cloud of mist and then he vanishes. * Procession of Burgomaster Kranon - Trumpets announce a parade throught the streets for Burgomaster Kranon. The Burgomaster is immediately recognizable as Matthew, Julian Baxter's ward. In the Dreamlands, his emotional and mental handicaps don't exist. If the investigators can get an audience, Krannon can be convinced to help them, both here and in the real world. * Cthaat Aquadingen - At the [Library at Ultar], the investigators can search for the [Cthaat Aquadingen]. The book is bound in soft, human skin, still pliable, and always moist from perspiration welling from its pores. Simply handling the book is creepy. Within the book can be found a quote: The stars fall, the beast bred of stone rampages, and a time of great change comes. Deep within perfumed Kled, where life turns to death, the Watcher in the Glade knows the time and place of the coming. Chinese notes are written in the margin of the page. If they are translated, they comment that the Pnankotic Manuscripts mentions the Watcher in the Glade. * Pnakotic Manuscripts - If read, the manuscripts describe that the Watcher in the Glade is the Great Old One Yibb-Tstil. Priests of Yibb-Tstil meet at the great pool in front of the ivory palace. Priests then grovel on hands and knees before Yibb-Tstil and must not look upon him. priests of * Carnival - While leaving Ultar, the dreamers chance upon a carnival tent. A barker announces that they have the only captive Colossal purple spider from the distant north. Admission is a dime or anything of value. The interior of the tent is larger than the outside would suggest, and in a barred cage at the back of the tent is a purple spider the size of a car hovering over the dessicated body of a sheep. If anyone tries to talk to the spider, it speaks in a thin, dry voice. It is, however, not helpful and eventually hisses. The barker comes running in and ushers them out. If they want to speak more, the barker says: 'It is not up to me you see'. The spider then says: 'After all, I am the master here.' If the barker is questioned about the dwarf who works here, he tells them the dwarf quit some time ago and headed to Kled.") "Journey to Kled" (scenario :name "Journey to Kled" :summary "* The perfumed Jungle of Kled can be reached by traveling North from the Enchanted Wood to Thran. At Thran a elephant caravan can be taken over land or a river boat can be taken to Hlanith where passage on a ship can be found to Kled. * Numerous ivory palaces dot the jungles. If the dreamers ask about the great pool mentioned in the Pnakotic Manuscripts, the guides recognize it as the Palace of the Sacred Fount. * Palace of the Sacred Fount - The palaces is one of the less feared locations, though it is still avoided. As with other ivory palaces in Kled, the palace is somehow physically in perfect condition though the rooms are empty and the floors are thick with dirt and leaves. The smell in the area is a unique musky odor that immediately reminds the dreamers of the smell during the dream of the death of Phillip Baxter. The front hallway is an atrium where rain water falls to collect in a rectangular pool. At the far end of the pool stands a huge jade statue of an evil-looking hyena. The statue leers with gaping jaws over the pool. The apparently bottomless pool is dark and filthly from rotting leaves, a peculiar oily film covers its surface. Despite its appearance the pool is not dangerous. * Phillip's Ghost - A distant cackling sound can be heard. Following the sound, the dreamers find a stairway going down many flights with torchlight below. At the bottom of the stairs, the dreamers find a torchlit hallway with a cell at the end. Within a cackling dwarf uses a human femur to visciously beat a glowing, partially headless, staggering figure. The dwarf is hunched and misshapen and has a terrible, inhuman face. Its lips are drawn into a snarl over three-inch fangs. Its eyes are glowing red pits. The figure is the dreamform of Phillip Baxter. If he is rescued, his headless form is mindless and helpless. The dwarf with not help under any circumstances. * Path to Yib-Tstll - Behind the Palace the jungle becomes stunted and twisted, tree trunks are bent at odd angles, and a general sense of disease pervades the growth. Futher on, alien foliage begins to appear including quivering fungi and twisting weird ferns. Further still, a great stone arch can be seen surrounded by dead trees. Through the arch can be seen another alien jungle evidently on a far-off world. The arch is clearly a permanent gate, and plants and insects can be seen crossing both ways as if the arch were simple stone. * World of Yib-Tstll - Beyond the arch, the sky is dark green and starless. Swollen insects swoop ominously from deadly-looking blooms. Flying horrors with veinous wings fly high above. Not far away, a vast, black clearing is visible. * The Clearing - The clearing is roughly a mile across. The black surface is composed of fine flakes like snow, but it is warm to the touch. If the dreamers heed the Pnakotic Manuscripts, they should crawl on hands and knees across the black clearing facing the ground to avoid actually seeing Yibb-Tstll. As the dreamers near the center, Yib-Tstll rises suddenly from the black clearing. Dreamers may attempt to avert their gaze or suffer the madness induced by his presence. * [Yibb-Tstll] - The massive being speaks telepathically with a booming alien voice. Each dreamer must make a [Spirit] test or Yibb-Tstll will ignore that person completely. If the test is completely failed, Yibb-Tstll will touch the person and impart its feared reversal. Yibb-Tstll is suprisingly helpful and will answer questions about the Cthulhu Mythos and things of cosmic import including Nemesis, but he will only give a single answer on a subject and will not clarify himself. * Reversals - Any dreamer who suffers a reversal will instantly be driven insane or his human form or dream form will be permanently killed. If an insane dreamer is brought to him, Yibb-Tstll will fully restore his sanity. If the dwarf is present, Yibb-Tstll will reverse him, and his dream form will change into the Tcho-Tcho priest while his real form will become the dwarf. If the headless form and the ghoul's page are brought before him, he touches them both and Phillip Baxter's dream fomr is restored, but back in the real world, Silas Patterson has become a mad imitation of Phillip Baxter. * Web of Eibon - Yibb-Tstll instructed Eibon in his construction of the Web of Eibon spell with which he planned to freeze time around Nemesis (and Earth) to prevent Earth's destruction. Yibb-Tstll knows his efforts will fail in the end, but it provided the instructions anyway.") "The Quest of Ghouls" (scenario :name "The Quest of Ghouls" :summary "* Ghoul Dream - After the events at St. Augustine and the Dreamlands, one night the investigators find themselves having hazy dreams of the graveyard at St. Augustine. Suddenly, the dream sharpens and 3 figures start crawling from an open grave: ghouls like the ones that may have been seen at St. Augustine. The ghouls stinking breath reeks of death and decay. The ghouls do not appear to be hostile, instead they start urging the investigators to come with them to see the wise man and there is little time left before dawn. A terrific stench issues from the open grave. Below rotten bits of wood and fabric lie on the grave floor and a narrow, twisting tunnel leads into darkness. The ghouls gibber that they must hurry and start climbing down the hole. If the dreamers don't follow the tunnel begins to slowly close. If the dreamers still do not follow, they awake normally, but the opportunity to learn more has been lost. If they do follow, the tunnel collapses behind them and they will have to follow the ghouls forward. * Grath the Leader - Young and handsome by ghoul standards, Grath leads the group and most often speaks with the dreamers. He had a riding zebra, but the group got hungry and ate most of it. * Mairpl the Big - Mairpl is much larger than the others, speaks little, and wields a club in battle. * Ug the Hungry - The worst and most degenerate of them, Ug speak no human language and spends most of his time on four legs. He avoids the humans, but can often be seen staring and drooling over them. He possess no threat, but he likes to fantasize. * The Page - At the end of the tunnel waits the Page. The Page is wrapped in a dirty brown cloak with his face hidden. His body is bent forward and staggers under the weight of an enormous tombstone chained to his back. The ghouls order the Page around and play viscious practical jokes on him. Below the hood can be found Sila Patterson's face, though it shows no recognition. Upon the tombstone is written 'Phillip A. Baxter 1865-1925.' The Page is, of course, the dream form of Silas Patterson, suffering from the guilt of the death of his friend. * The Quest - The ghoul gang seeks to rescue a female ghoul Horella who has disappeared. The ghouls are fairly melodramatic about how beautiful she is and how they must rescue her from whatever peril she is in. To find Horella, they seek the insight of the wise Man of the Mountain. This man supposedly is very wise and will answer any questions. * Social Ettiquette - After a few hours of travel, the ghouls stop for nourishment. They squat down and rummage through their stained sacks. They produce vaguely familiar cuts of raw meat with tinges of green along with sour wine. The source of the meat is all too obvious. The ghouls like their food well-aged and, out of respect, offer their guests the oldest pieces. The bags also contain the remains of Grath's zebra which the ghouls are more than happy to hand over, leaving the tastier pieces for themselves.") "Journey to the Stony Desert" (scenario :name "Journey to the Stony Desert" :summary "* The Underworld - The ghoul tunnel leads to the Underworld. Once in the Underworld, the tunnel leads upward for 3 days through the center of a huge mountain. Many ohter tunnels branch off, but the ghouls seem to know their way. Drinking water oozes down the rock wall. Bloated fungi, pale, foot-long crickets, and eyeless carnivorous rats server as food. Most of the trip is in complete darkness. Occasionally, luminescent fungi provide a tiny amount of light. The tunnels connect the Vaults of Zin where dangerous ghasts, serpent folk, or worse may be encountered. Eventually, the group exits the Underworld at the border of the [Stony Desert]. * [Stony Desert] - Grath says the journey eastward across the desert will only take a few days. They seek the sacred mountain [Mt. Hatheg-Kla] where a holy man can tell them where fair Horella can be found. * Walker of the Stony Desert - A few days journey into the desert, the dreamers see, off in the distance, a man leading a horse. They will meet in about an hour. As they draw near, it is clear that the man is enormous, towering over the horse. He is 8 feet tall, 400 lbs, and dressed all in black. His horse seems old and tired and lags behind being pulled by a rope. The horse is an elderly nag with cataract films covering both eyes. The ghouls are terrified of the man and will not approach. He does not stop walking unless he is attacked. This being is the dream-form of Eibon. the Hyperborean wizard who, like the spell he cast to capture Eibon is bound to travel back and forth across the Stony Desert. A legend says that one day he shall find a way out of the desert. On that day, the horse shall be healthy and the man shall then ride the horse. Where he goes then, he does not know for the horse shall be the master. He freely discusses his trip across the desert, Mythos knowledge, Nemesis, and his spell the Web of Eibon that Yibb-Tstl taught him. He now knows that stagnation is worse than destruction by Nemesis. If asked about Nemesis, he produces a large, shining jewel from the air and offers it to the dreamers. He says simply that all brave souls will know what to do when the time comes. Any attempt to attack Eibon results in him disappearing and reappearing far in the distance continuing his endless travels.") "The Man on the Mountain" (scenario :name "The Man on the Mountain" :summary "* [Hatheg-Kla] - A day or two after meeting the Walker, the slabs become more numerous. As they approach Mt. Hatheg-Kla, smoe of the slabs are still turned upright in the ground and bear traces of ancient carvings. Soon it becomes obvious that they are travelling in a titanic graveyard. * Climbing Hatheg-Kla - Mairpl assures them that this is the only way to see the holy man and ask where Horella is being kept. The other ghouls will wait here while Mairpl and any brave dreamers attempt the climb. The way up seems somewhat trecherous and will require a [Climb] roll to succeed. If that roll fails, a second [Climb] roll must be made to catch yourself before you fall to your doom. Unfortunately, Mairpl fails both rolls and falls far below splattering on the rocks and potentially injuring those below. After a short period of remorse, Grath and Ug gather some of the larger pieces and add them to their provision bags. * The Man on the Mountain - Near the skull tree, an old, bearded man in a yellow robe sits on a heap of corpses plundered from the cemetary below. He deftly uses a silver hatchet to cut pieces of the corpses and flings the dripping gobbets above his head as the circling Byakhees swoop down to catch them from the air. As the dreamers approach, the Byakhee scream and chatter, but the man pays them no mind. If hailed, he smiles warmly, and if asked questions he will honestly answer based on his vast knowledge of the Dreamlands and the Mythos. Knowledge comes at a price, so before he answers each question, he hurls his hatchet at the questioner which instantly slices off an appendage, starting with a hand. The Byakhee swoop down and eat the tidbit. The wound does not bleed and only hurts for a moment. The damage is permanent in the Dreamlands, but each time a dreamer returns to the Dreamlands one wound is healed. If asked, he tells that Horella is at the castle of Bombel, the giant, in the hills to the east of the [Stony Desert]. Anyone foolish enough to attach the man, is attacked by the Byakhee, rended to pieces, and eaten. * Cave of the Child God - Behind the tree, the shear face of Hatheg-Kla rises another 1000 feet before the cave entrance. A flight of steps, each one foot wide, criss-crosses back and forth up the slope. Anyone nearing the opening hears a deep sobbing and suckling sound as if from some enormous infant. The cave itself is completely black and no light will penetrate it. If anyone enters, a few seconds later, horrifying screams of agony echo from the cave accompanied by sucking, popping sounds and a soft, cooing voice. The screams continue for almost a minute before they are choked off by a gurgling, bubbling sound and a huge spray of blood that shoots from the cave. The character's dream-self is dead, and his waking self has been driven mad by the horrific dreamform of Nemesis.") "Castle of Bombel" (scenario :name "Castle of Bombel" :summary "* To the Castle - The Man on the Mountain has directed the dreamers toward a castle to the east of the [Stony Desert]. The trip takes a few days through the desert and another day throught wooded hills. * The Castle - The rude, three-story castle is in a clearing. It has a single window at the top and a door at the bottom. * Bombel - Near the castle, sitting on a boulder is a huge [Gug]. At the first sign of intruders, it rushes to the attack. * Horella - Shortly after Bombel starts fighting, a foul-looking, scaly ghoul appears in the window. This is Horella, and she immediately begins hurling vile insults and rocks at the Gug. The ghouls are cheered on by her presence, but if someone listens they realize that she is exhorting Bombel to kill the intruders. Dreamers may also notice previous bruises on Bombel's head. If Bombel falls, Horella turns her insults and rocks at her would-be rescuers. Any remaining ghouls grab a chain from their bags, say 'To the rescue', capture Horella, and drag her bumping down the stairs. The ghouls bid farewell and will offer the page as a reward for the dreamers help."))) "Nemesis: Spawn of Azathoth" (section :name "Nemesis: Spawn of Azathoth" :scenariomap (scenariomap "Trip to Darjeeling" (scenario :name "Trip to Darjeeling" :summary "* Francis Wilson - Francis is one of the Tuesday Night Academy. He was at Phillip's funeral and he has been in Russia researching the Tunguska Blast and its possible relationship to Nemesis. He has made some discoveries and sends a telegram to Judge Braddock who forwards it along. The message says to leave immediately for Darjeeling, India and to meet Colonel Hugh Huntley of the British Foreign Office. * Darjeeling - * Colonel Hugh Huntley - Francis has arranged with the British Foreign Office to allow the investigators to travel to Lhasa, Tibet to aid him in his research. Colonel Huntley provides them with papers and can help arrange transport to the British Legation in Lhasa where Francis Wilson is staying. * Road to Lhasa - The 400 mile journey to Lhasa can only be taken on foot or via horse-drawn caravan. The route is heavily trafficked by pilgrims, traders, smugglers, and spies. The journey takes weeks and is alternately terrifying, boring, facinating, cold, and misery-making. * Lhasa - Lhasa is a sprawling squat city with no building taller than 2 stories except for the Potala, the home of the Dalai Lama. The Potala is a bulky, stone structure that is imposing but unattractive. * The British Legation - The Legation is on the outskirts of Lhasa. Here Francis Wilson has residence. He seems thinner and more stressed than at the funeral. He has been researching the Tunguska Blast and mad Rasputin's apparent presence at the blast. After piecing together his research, he illegally entered the Soviet Union and stole parts of Rasputin's journal. He then fled to Tibet through Mongolia. He has been translating sections since then. He claims that Rasputin met someone called Eibon in his dreams, and that this Eibon told him of his own death. Eibon also warned him of a dark star that would fall from the sky. This Eibon gave him a stone that he used to destoy the star. He further foretells another dark star that would fall long after Rasputin's death in Tibet. Francis guesses that the location may be near an abandoned temple roughly 300 miles north of Lhasa. He has found a guide Lha-bzang who studied in the temple as a child. * Lha-bzang - Francis plans to travel there soon with a native Tibetan, Lha-bzang. Lha-bzang is a domden, a Tibetan mortician. A skilled Anthropologist may recall that Tibetan funeral rites involve the corpse being hacked to bits by the axe-wielding domden and then fed to ravens or vultures. Lha-bzang's dream form is the holy man on the mountain. Lha-bzang is going on the journey to expand his spiritual understanding. Unfortunately, he has also been paid off by a Soviet spy. If questioned about the temple, he says he was sold as a slave as a child but he fled the temple when he realized that their teachings were not Buddhist. * Ivan Dorkyev - A Soviet spy who has been tracking Francis down since Francis stole Rasputin's journal in Leningrad. He is over 6 feet tall and is dressed in the tattered robes of a yak-herder. Beneath, he carries two pistols, a knife, and a bandolier of ammo. He hides at his camp in the mountains near the ruins waiting for Lha-bzang to bring Francis. * Trip to the Ruins - Lha-bzang leads the expedition 300 miles through a tangle of steep mountain passes, brackish lakes, and arid valleys. On the way, they encounter kay-herders, small mountain monasteries, and moutain farms. About 2 weeks in to the trip, while camped, a minor earth tremor shakes everyone awake. A week laker, they arrive at the Nenmka temple, sitting on the slope of a mountain. * The Temple - The temple is now just a windswept ruin. A Mythos knowledge test reveals that the fallen columns have inscriptions used to invoke Hastur. The Soviet spy has watched the investigators approach and waits in hiding nearby. Lha-bzang finds a section of flooring with symbols on a tile. Here he will perform a ceremony to discover more about Nemesis. * The Ceremony - Lha-bzang sits and lights a clay pipe containing a tarball of hashish. He passes the pipe around and then begins a droning wail. After 30 minutes, he retrieves a knife and a freshly severed human hand from his bag. He cuts his own palm, smears blood on the hand, and binds the cut. He then passes the knife to each person to do the same. If any will not, he gestures for them to leave the prayer circle. After another 5 minutes, the hand twitches and then turns toward Lha-bzang. He asks where can they find the Seed of Nemesis. The hand then crawls to a symbols on the ground indicating 'not far' and 'north-east'. Additional questions may be asked but each question causes the questioner to receive a minor Sanity Wound. Answers are always very short, and the hand only knows local events. The Soviet spy waits nearby but has accepted Lha-bzang's demand to allow the ceremony to complete before acting. * Confrontation - Just as the ceremony is concluded, Ivan steps into the room brandishing his pistols and warning everyone to stay where they are. He is deadly serious and will gun down anyone who makes sudden movements. Ivan plans to take Francis back to the Soviet Union to stand trial for the many laws he has broken and suspiscion of being a spy. He has no knowledge of Nemesis and has nothing but contempt for the superstitious, religious ritual. If given the chance, he will tie up the investigators and then take Francis and Lha-bzang (his ally) in the morning. * The Fallen Seed - In the early morning, everything changes. Along with the bright sun, a halo forms in the sky, though this halo does not surround anything visible, yet. Dorkyev is thunder-struck; he and Francis exchange words in Russian. Ever the pragmatist, Dorkyev frees everyone and begins a descent toward the valley under the halo. Within the valley, the halo light is flat and oily, and its color melts through shades of yellow and green as though through a prism. Lha-bzang vomits and flees. Suddenly, all present feel their hair stand on end as the halo darkens and takes on a dull gun-metal hue. The slight wind disappears and everything is silent. Then, high above a sizzling sound grows in intensity. Suddenly a hideous scream is heard followed by a thunderous blast that knocks everyone off their feet. Everyone suffer partial hearing loss and if a check versus [Body] is completely failed, the loss is permanent. A blinding light rips through the sky and crashes to Earth over the valley ridge that Lha-bzang crossed. A massive explosion rocks the ground and a curtain of flame passes overhead. If not for the ridge, everyone would have been incinerated along with Lha-bzang. * Crater - Peeking over the ridge, a 20 foot crater can be seen with a sickly, green light emanating from it. Wilson frantically says that Eibon's symbol must be placed on the Seed or it will destroy the Earth. Those who have witnessed the Seed in Montana know that any who approach the Seed will die: quickly or slowly. If no one volunteers and no one has a plan, Dorkyev swears, snears of their cowardice, and takes the jewel to the crater. Alas, just as he climbs the crater and is exposed to the light, he screams and immediately melts into a puddle before everyone's horrified sight. Worse, he drops the jewel into the crater. If someone uses a mirror, they can see the jewel near the Seed which is slowly melting the rock around it with its terrible power. Wilson adamantly refuses to go (and will melt if pushed), so someone will have to sacrifice themself or watch the Seed sink into the ground and doom the world. * Eye to Azathoh - The doomed person must resist the corrupting rays, retrieve the jewel, and then touch it to the Seed. Nothing happens for a few moments, then the Seed suddenly shimmers and disappers with a sharp pop. The Seed is gone but a black, marble tunnel lies in its place. The jewel lies on the ground before the tunnel. Hyperborean symbols line the tunnel. This is Eibon's work. When the jewel crosses the threshold, it suddenly reverts to the heavy glowing stone from the Dreamlands. There is a steady breeze down the tunnel and a light can be seen ahead. After 100 meters, a room 250 meter, circular opens up. The room is the exact same shape as the jewel. The breeze has become a howling gale ending in a 5 meter gateway in the center of the other end of the room. The gateway in the center of the oval room gives the impression of an eye looking out into space. * Gateway - The gateway can be reached by a ramp that slopes upward 50 meters. Stars can clearly be seen through the opening, and it is clear that the gate leads directly into outer space. Anyone who has been exposed to the Seed radiance, has an intense desire to go through the gate and join Nemesis. Anyone approaching the gate will need ropes or climbing skill to cling to the reliefs on the floor or be sucked into oblivion. Also, the jewel gains weight as it approaches the gate, as if it is resisting, eventually becoming over 100lbs. If someone can get close or has binoculars, that person will see that the area of space beyond the portal is filled with criss-crossing black lines forming a faint web. Someone may recognize the black substance and The Black associated with Yibb-Tsll. This is Eibon's Web taught to him by Yibb-Tsll. Within the web, an observers intuitively senses that time is slowing to a crawl. Further, the web is creeping through the portal into our world. This is how mad Eibon hoped to save mankind, by freezing us forever in time, so Nemesis can never destroy us. * The End - If the jewel is brought near the gate, in addition to its increased weight, the Black lines start to reach toward the jewel. Simply hurling the jewel through the portal will gather all the webs onto the jewel which breaks the spell of Eibon. If anyone returns to the Stony Desert, they will no longer find Eibon there. The world will no longer be trapped forever in frozen time, but Nemesis will still return some day to end the world, but it will not be today.")))) :unitmap (unitmap "Julian Baxter" (unit :name "Julian Baxter" :summary "* Julian Baxter is a priest and brother of Phillip Baxter. He is confined to a wheelchair and is heavily dependent on his son Matthew. Before becoming a priest, Julian was educated as a psychotherapist. He has traveled the world on missions, but since becoming crippled he has returned to his home town. * Julian has a copy of the Book of Eibon in his library. It has a section where Eibon fortells the end of mankind with the coming of Nemesis. Eibon was obcessed with preventing man's destruction and spent the rest of his life developing a ritual call the Web of Fate that would supposedly save mankind when the time was right. Eibon claims that as Nemesis approaches, the Web of Fate will draw together seemingly unrelated events, defeat Nemesis, and create an eternal golden age for mankind. The reading clearly shows Eibon's progressive descent into madness.") "Matthew Baxter" (unit :name "Matthew Baxter" :summary "* Matthew is the adopted, grown son of Julian Baxter. He is strong, but he is also mute and aeuteistic. This combination makes him appear simple, but he is actually quite competent. He is an avid dreamer where there is no trace of his aeutism. In dreams he is a city council member in Ultar. He can be a strong ally, but he must be approached in the Dreamlands, as it is impossible to gain his friendship in the real world.") "Silas Patterson" (unit :name "Silas Patterson" :summary "* Silas is a friend of both Phillip and Julian Baxter, a past professor at Brown University, a former antrhopologist, and a member of the Tuesday Night Academy. He is quite fit considering his age. * Silas met Julian Baxter in the Congo in 1904 and became friends. In 1919, he met Cynthia Baxter, Julian's niece in the Andaman Islands. In 1920, he came to Providence where he met Phillip and joined the Tuesday Night Academy. Phillip soon after helped him get a teaching position at Brown. * Silas practices a form of cannibalism he learned in New Guinea at the instruction of a degenerate Tcho-Tcho priest. The ceremony involves eating the brains of a recently slain primate to gain extended life. This habit made him lose his job at Brown when it was discovered that he was stealing monkey corpse from the lab. He has since made an arrangement with a local undertaker with low moral character, Alvin Beswick. Silas told Beswick that he was performing brain research, but Beswick is just concerned with the money. Beswick allows him access to closed coffin corpses for a price. He was given access to Phillip's corpse and noticed the small bite marks on the scalp. While devouring the brain, Phillip suddenly lurched back to consciousness and thrased wilding before dying. Silas was terrified and is wracked with guilt over his friend's death. He is maintaining his sanity through denial, and if he is forced to confront what he has done, he will retreat inward and become catatonic and need to be institutionalized. * Silas is friendly, but he not only knows his role in Phillip's death but is reasonably sure that Cynthia was involved. He is planning to return to the Andaman Islands to investigate Cynthia's activities and also because it is getting hard to hide his youth in Providence. * In Sila's desk can be found notes for his next book, about cannibalism. The notes indicate that Silas is unbalanaced. In his files can be found the lease to a farmhouse. * Investigating the farmhouse, leads to the table where Phillip met his end. No attempt has been mde to cover up the crime.")))))))) (func chapter_kingdom_of_the_gods : base/chapter (chapter :name "Kingdom of the Gods" :sectionmap (sectionmap "Kingdom Undead" (section :name "Kingdom Undead" :itemmap (itemmap "Resurrection Herb" (item :name "Resurrection Herb" :summary "* This rare herb is believed to return the dead to life. Actually, it is the tiny worm eggs that grow on the plant that infect the host and turn them into a zombie. * Infection - The worms can infect a living host if worms, their eggs, or infected flesh are eaten (even cooking is not a guarantee of safety) or the worms transfer via an ghoul bite. A recently deceased host may also be infected if the eggs are injected directly into the brain. * Transformation - Once infected the worms rapidly multiply by division and move through the body. Once fully infected, the worms act as replacement nervous system, stimulating the cells and retarding cell death. The worms stimulate the primitive sections of the brain to cause it to seek more hosts for the worms. The When they first activate the body, its movements are jerky and extreme, but the body quickly adapts and becomes quite agile over time. * Pack - The worms are a colony creature and are aware of nearby worms in infected creatures. They, therefore, do not attack other infecteds and tend to collect together in groups. * Intelligence Level - Though they are savagely murderous and largely fearless, they do retain an animalistic survival instinct and take shelter and avoid fire and heat which would kill their worms.")) :unitmap (unitmap "Kingdom Ghoul" (unit :name "Kingdom Ghoul" :summary "* Strengths: ** Agility and endurance: In some scenes, they were able to bring down a full-size horse and nearly match the speed of one for short, sustained periods of time. ** Short incubation period: It takes about 15 seconds to 1 minute for a victim to turn into an undead zombie. Making them effectively at multiplying and overwhelming urban centres. However, this can vary. One main character was able to resist the infection for over 2 minutes. ** Durability: It has been observed that even if their internal organs are exposed or took a direct stab from a sword to their chest, this doesn't kill them. ** Heightened sense of smell: A fresh drop of blood from an uninfected human can attract other infected bodies many meters away. * Weakness: ** Decapitation: They're capable of taking damage that would be fatal to most men. It was found that decapitation or destruction of the head is the most effective in killing them. ** Aversion to water bodies: It has been observed they will generally avoid travelling on water bodies. They have no ability to swim, and when they are pushed into deeper waters, they will immediately sink to the bottom. ** Heat: They have been observed to immediately seek shelter when the day begins to break in order to escape the heat of direct sunlight. As a result, during spring or summer, they are only active during the day and hibernate at night. ** Fire: Fire can be used to keep infected at bay. ** Reduced vision: The milky eyes limits their vision to basic movements, so they rely on smell and hearing to hunt. ** Blood: Blood can be used to distract or bait the zombies to behave in certain ways. Although dangerous, using fresh blood on rooftops is shown to be an effective means to lure zombies if needed.")))))) (func chapter_night_of_the_living_dead : base/chapter (chapter :name "Night of the Living Dead")) (func chapter_serial_killers : base/chapter (chapter :name "Serial Killers" :sectionmap (sectionmap :Freaks (section :name "Freaks" :unitmap (unitmap "Backwoods Crazies" (unit :name "Backwoods Crazies" :reference "* Deliverance, Hills Have Eyes, Texas Chainsaw Massacre"))) "Unstoppable Killer" (section :name "Unstoppable Killer" :reference "* Friday the 13th, Nightmare on Elm Street")))) (func chapter_deadly_beasts : base/chapter (chapter :name "Deadly Beasts" :reference "* Jaws, Phase IV, Them"))
nx/tactics/books/horror / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Horror" :image "Cthulhu.jpg" :chaptermap (base/chaptermap "Horror Overview" (chapter_horror_overview) "Call of Cthulhu" (chapter_call_of_cthulhu) "Kingdom of the Gods" (chapter_kingdom_of_the_gods) "Night of the Living Dead" (chapter_night_of_the_living_dead) "Serial Killers" (chapter_serial_killers) "Deadly Beasts" (chapter_deadly_beasts) )))
nx/tactics/books/horror / chapter_horror_overview
Description:
Function Name:
  • chapter_horror_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_horror_overview : base/chapter (chapter :name "Horror Overview" :sectionmap (sectionmap "Why Tactics: Horror?" (section :name "Why Tactics: Horror?"))))
nx/tactics/books/horror / chapter_call_of_cthulhu
Description:
Function Name:
  • chapter_call_of_cthulhu
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_call_of_cthulhu : base/chapter (chapter :name "Call of Cthulhu" :reference "* Premise that common human laws and interests and emotions have no validity or significance in the vast cosmos-at-large... To achieve the essence of real externality, whether of space or time or dimension, one must forget that such things as organic life, good and evil, love and hate, and all such local attributes of a negligible and temporary race called mankind, have any existence at all." :summary "* Most of the intelligent Mythos creatures are masters of [Necromancy] and have long ago reanimated their physical bodies into part physical/part spiritual forms that humans would call [Undead]. * Like [Undead], they exist partially in the [Spirit Realm], are immune to most hostile environments, and appear blurry in photograph and other recordings. * If their body is destroyed, their Spirit leaves the body and enters the [Spirit Realm] fully. Their bodies age will rapidly catch up to it usually causing it to deteriorate rapidly. Normally their spirit never returns to the physical world, but if they are powerful enough, they may find their way back through the Veil and even death may not stop them from returning." :sectionmap (sectionmap "Mythos Places" (section :name "Mythos Places" :locationmap (locationmap :Carcosa (location :name "Carcosa" :reference "* ... my eyes became riveted to the open page, and with a cry of terror or perhaps it was of joy so poinant that I suffered in every nerve... I read it and re-read it and wept and laughed and trembled with a horror which at times assails me yet. This the thing that troubles me, for I cannot forget Carcosa. Where black stars hang in the heavens. Where the shadows of men's thoughts lengthen in the afternoon. ... I pray God will curse the writer as the writer has cursed he has cursed the world with this beautiful stupendous creation. Terrible in its simplicity, irresistible in its truth, a world which now trembles before the King in Yellow. - Robert W. Chambers, The Repairer of Reputations" :titles "Lost Carcosa") :R'yleh (location :name "R'yleh" :image "Cthulhu/Ryleh.jpg" :reference "That is not dead which can eternal lie, And with strange aeons even death may die.") :Yaddith (location :name "Yaddith") :Yuggoth (location :name "Yuggoth")) :sectionmap (sectionmap :Dreamlands (section :name "Dreamlands" :reference "* Dream Quest of Unknown Kadath * But some of us awake in the night with strange phantasms of enchanted hills and gardens, of fountains that sing in the sun, of golden cliffs overhanging murmuring seas, of plains that stretch down to sleeping cities of bronze and stone, and of shadowy companies of heroes that ride caparisoned white horses along the edges of thick forests; and then we know that we have looked back through the ivory gates into that world of wonder which was ours before we were wise and unhappy. - Celephais" :summary "* The Dreamlands is a vast [Dreamworld] that is a favorite of many Earth dreamers. Experienced dreamers are among the most powerful inhabitants of the Dreamlands and some become permanent residents after their physical deaths. * To reach the Dreamlands, a sleeper must find an unusual stairway in a conventional dream and walk down the Seventy Steps of Light Slumber to face the judgment of powerful gatekeepers named Nasht and Kaman-Tha. If judged worthy (that is, able to survive the dangers of the Dreamlands), the dreamer is allowed to descend the Seven Hundred Steps of Deeper Slumber and emerges in the Enchanted Wood. * When entering the Dreamlands this way, the person leaves his or her physical body safely in the waking world. If the dreamer is killed during his or her travels, the person's corporeal body will suffer only a shock. Sometimes, however, this can be fatal - dream death of this kind makes return to the Dreamlands impossible. Waking up causes a person's dream self to disappear; thus the individual may have difficulty recalling anything learned or experienced while asleep (similar to conventional dreaming). A dreamer who dies in the real world while his dream self is still alive may have the option of retiring to the Dreamlands for the remainder of his dream self's 'life.' * The Dreamlands can be entered in other ways, including physically. This usually requires passing through very dangerous areas of both the waking world and the Dreamlands. Consequently, real death becomes a risk. However, the visitor does receive the prolonged lifespan of a native of the Dreamlands, so the traveler's time there is no longer limited to the duration of a night's sleep on earth. * Time flows at a different rate in the Dreamlands - each hour on earth represents a week or more there. Consequently, a traveler can spend months in the Dreamlands during a single night's sleep on earth. Fortunately for dreamers, inhabitants of the Dreamlands are either long-lived or immortal, provided they avoid injury or disease. * Despite its accelerated time, the Dreamlands rarely experiences change. Its geography, politics, and population remain fairly static. Dreamers, however, can exert great change over the topography, such as by creating entire cities with accompanying populations. Geography * The West is the most well-known region of the Dreamlands and is probably the most inhabited as well. It is where dreamers emerge from the Steps of Deeper Slumber. The port of Dylath-Leen, the largest city of the Dreamlands, lies on its coast. The town of Ulthar, where no man may kill a cat, is also located here. Other important cities are Hlanith (a coastal jungle city) and Ilarnek (a desert trade capital). The land of Mnar and the ruins of Sarnath are found at the southern border. The Enchanted Wood of the zoogs is also found here. It joins the South. * The South is the southern coastal region of the continent shared by the West along with the islands of the Southern Sea, including the isle of Oriab, the largest. The South's land-locked regions and its coastal areas are known as the Fantastic Realms, because they contain nightmarish and sometimes incomprehensible zones. Otherwise, the islands of the Southern Sea are fairly normal. * The East is a continent that is largely uninhabited, except for Ooth-Nargai. The city of Celephais the capital of Ooth-Nargai and was created from whole cloth by its monarch King Kuranes, the greatest of all recorded dreamers. Beyond Ooth-Nargai are The Forbidden Lands, dangerous realms into which travel is interdicted. * The North is a cold, mountainous continent notorious for its Plateau of [Leng], a violent region shared by man-eating spiders and satyr-like beings known as the &quot;Men of Leng&quot;. The North also has a number of friendlier places, such as the city of Inganok, famous for its onyx quarries. The deepest reaches of the North are said to hold Unknown [[Kadath]], the home of the Great Ones. * The Underworld is a subterranean region that runs beneath the whole of the Dreamlands. Its principle inhabitants are ghouls, who can physically enter the waking world through crypts. The Underworld is also home to the gugs, monstrous giants banished from the surface for untold blasphemies. The Underworld's deepest realm is the Vale of Pnath, a dangerous lightless chasm inhabited by enormous unseen beasts called bholes. Bholes are likely the ancestors of the Dholes of Yaddith. * The Moon has a parallel in the Dreamlands and is inhabited by the dreaded moon-beasts, amorphous frog-like creatures allied with Nyarlathotep. Interestingly, it is possible for a ship to sail off the edge of the Dreamlands and travel through space to the moon. * Kadath - Kadath or Unknown Kadath is the dwelling place of the Great Ones. It is a gigantic castle found atop an immense cosmic mountain in the Cold Waste. Kadath is the place where the dreamlands gods dwell, but it is inaccessible to mortals because the gods do not want to be bothered." :locationmap (locationmap "City of the Gugs" (location :name "City of the Gugs" :summary "* The City of the Gugs is a colossal, horrifying cityscape of soaring, cyclopean towers. It is the dwelling place of the gugs, banished to the underworld by a covenant of the gods. Its most prominent landmark is the Tower of Koth, which contains a legendary stairway that leads to the surface. * Close by the city is the cemetery of the gugs, its graves marked by huge stone monoliths. Ghouls often dine here; a deceased gug feeds them for almost a year.") "Crag of the Ghouls" (location :name "Crag of the Ghouls" :summary "* The Crag of the Ghouls is a rugged cliff in the Peaks of Thok from which the ghouls of deeper dreamland pitch the leftover bones of their sepulchral feasts. Uncounted miles below the crag is the bone-filled [Vale of Pnath].") "Great Abyss" (location :name "Great Abyss" :summary "* The Great Abyss is a realm that lies below the ruins of Sarkomand and is possibly a massive cavern that joins with all parts of the underworld. It connects with the upper Dreamlands by a stairway in Sarkomand. * The Abyss is ruled by the god Nodens, who is served by the night-gaunts. Nodens' influence seems very languid in the underworld and does not appear to extend much beyond the Abyss itself; except perhaps to Ngranek on the isle of Oriab, whose upper slopes are guarded by his night-gaunts.") "Jungle of Kled" (location :name "Jungle of Kled" :summary "* Several abandoned ivory palaces are laid within Kled. * The perfumed Jungle of Kled can be reached by traveling North from the Enchanted Wood to Thran. At Thran a elephant caravan can be taken over land or a river boat can be taken to Hlanith where passage on a ship can be found to Kled.") "Library at Ultar" (location :name "Library at Ultar" :summary "* Library at Ultar - The Library is a great circular stone building. It is enchanted and appears at different places in Ultar at different times, and it is impossible to find by accident. * Architecture - There is a central 200 foot dome filled with tables and chairs. The walls are covered with paintings and hallways radiate from the main chamber. The room is lit by sunlight pouring through wide windows overhead. This sunlight never changes despite weather or time of day. * Hallways - The radiating spokes of hallways are lined with bookshelves and go a long distance into darkness. Halls connecting the spokes appear every 100 feet. The books are divided by subject but are then only organized by age with newer books closer to the center. A light source is needed if one travels down the corridors. After several hundred yards the parchment scrolls and conventional books give way to carved wooden, stone, clay, or metal plaques. Beyond these even more bizarre methods of information storing appear, formed from crystals, ghosts enslaved to repeat specific lore, huge bottles of sinister looking liquid that must be drank to obtain the knowledge, and so forth. The languages used become more alien, and dreamers may encounter Serpent People or Elder Things in the very distant past. * Librarian - In the center of the dome can be found the desk of the librarian, Tukor. Tukor is a normal man from Ultar and can find most of the recent books from memory. * Paintings - The paintings in the room have a variety of subject matter. Some are famous characters. Others are bizarre - panoramas of endless cemeteries, twisted trees hung with countless skulls, dinosaurs stalking ruined cities. One is a portrait of a scientist or physician in the grisly act of dissecting himself with a scalpel and examining his organs under magnification. The entire scene is splashed with blood, and below the painting is a metal bucket collecting the occasional drops of blood that fall from the painting.") "Peaks of Thok" (location :name "Peaks of Thok" :summary "* The Peaks of Thok (or Throk) is a frightening range of towering granite mountains in the underworld.") "Stony Desert" (location :name "Stony Desert" :summary "* The desert is a bleak and barren waste, dull gray in color, and lit by a glaring sun. Huge slabs of shattered stone lie everywhere. No sign of life is visible. * The Stony Desert lies north-west of Ultar. At the south end of the desert rises the mountain of the gods, Mt. Hatheg-Kla.") :Hatheg-Kla (location :name "Hatheg-Kla" :summary "* Approach - Hatheg-Kla lies in the [Stony Desert] which is covered with broken slabs of stone. As one approaches the mountain, smoe of the slabs are still turned upright in the ground and bear traces of ancient carvings. Soon it becomes obvious that they are travelling in a titanic graveyard. * Description - This mountain rises like a rock statue in a silent temple. Mists always surround the peak, for mists are the memories of the gods, and the gods lived Hatheg-Kla when they dwelt upon it in the old days. Often the gods of earth visit in their ships of cloud. * Climbing - The climb up the mountain is made perilous by chasms, cliffs, and falling stones. By night it is cold and snowy. Higher up the air grows thin, though the mists grow thicker. * On the North-West side of Hatheg Kla, a cave can be seen 2000 feet up. Two colossal statues flank the cave, and 1000 feet below the cave can be seen a large dead tree with large birds flying about. The branchs are hung with many white globes. On closer examination, the birds are Byahkee and the globes are human skulls.") :Ultar (location :name "Ultar" :summary "* Ulthar - Ulthar is a pleasant city, well-known to dreamers for its ban on harming cats and the enormous number of cats that make Ulthar their home.") "Vale of Pnath" (location :name "Vale of Pnath" :summary "* The vale of Pnath (or Pnoth) is a vast pit in the underworld. It is flanked by the Peaks of Thok and is mostly lightless. The vale is filled with a mountain-sized heap of bones and is the spot into which all the ghouls of the waking world cast the refuse of their feastings. Enormous worm-like dholes burrow through the vale. Night-gaunts often carry helpless victims to the vale, where they are left to die.") "Vaults of Zin" (location :name "Vaults of Zin" :summary "* The Vaults of Zin is a huge cavern in the underworld. It lies near the cemetery of the gugs and opens onto a large cave that is the mouth of vaults of Zin, and the vindictive ghasts are always on watch there for those denizens of the upper abyss'. The ghasts who dwell in the Vaults of Zin prey on ghouls and gugs, and sometimes even one another. * It is possible that a well in the monastery of the High Priest Not to Be Described in the Plateau of Leng connects with the Vaults of Zin."))))) "Mythos Items" (section :name "Mythos Items" :itemmap (itemmap "Book of Eibon" (item :name "Book of Eibon" :image "Cthulhu/CthaatAquadingen.jpg" :summary "* The Book of Eibon is a work of the legendary magician Eibon of Mhu-Thulan. The book was produced after Eibon's disapearance by his former aprentice Cryon of Varaad. * Contents - The book deals with magic he practised, records of the area and historical acounts of other mages. It also contains records of the habits of Great Old Ones such as Abhoth, Atlach-Nacha, Rlim Shaikorth and Tsathoggua (the later being a deity whom Eibon was particularly favored by). There is a limited amount of information on the Drowners; Bugg-Shash and Yibb-Tsll. * Spells - The Book of Eibon also contains a huge number of spells. Among them are the procedures required to create a spatial gateway, numerous prayers to Tsathoggua, an incantation used to call one of the former's children to you, how to make protective symbol effective against the servants of Nyarlathotep, a simple spell to raise a small curtain of mist and a potent curse to cripple a foe. It is said that the early edition contained a formula capable of calling a Dhole to Earth and controlling it. * Hyperborean Version - The original version was made by Cryon of Varaad who complied his master's notes, journals and records into one volume. It was orignaly written on a form of vellum in the Hyperborean language of Tsath-Yo. * Atlantean Version - Later in prehistory stone Tablets containing the Hyperborean text of the Book of Eibon were found by the Atlanteans. They were eventualy translated from there original Tsath-Yo into Atlantean Senzar by the High Priest Klarkash-Ton. * Kishitic Version - The Kishites made a translation in there langauge from the Atlanteans relics they unearthed. Information about this version of the book is sketchy at best. * Egyptian Version - Some copies of the Kisihtic edition where preserved on papyri and translated by the latter Egyptians into hieroglyphs. Tablets and tomb paintings containing these hieroglyphs may still exisit. * Libor Ivonis - In aproximately 900 AD a Latin translation known as the Libor Ivonis was made by the monk Caius Phillippus Faber. It was finally printed during 1622 in Roman. This translation is over five hundred pages long. * Libre d'Ivon - In 1240 Gaspard du Nord of Aivonge translated his former teacher's copy of the Libor Ivonis into French. * Book of Eibon - This english translation was made by an unknown author sometime between the fifthteenth and sixteenth centuries." :titles "Liber Ivonis, Livre d'Eibon" :classification "Book") "Celaeno Fragments" (item :name "Celaeno Fragments" :image "Cthulhu/CelaenoFragments.jpg" :summary "225 million years ago, the stone tablets that become the Celaeno Fragments are scribed around the middle Triassic (presumably by Serpent People). One set of the tablets is eventually taken to the Great Library of Celaeno, on the fourth planet around the star Celaeno." :classification "Book") "Cthaat Aquadingen" (item :name "Cthaat Aquadingen" :image "Cthulhu/CthaatAquadingen.jpg" :summary "* The Cthäat Aquadingen, possibly meaning Things of the Water, this text, by an unknown author, deals with Cthulhu and other sea-horrors, such as Inpesca. It also contains many so-called Sathlattae, rituals and spells related to Ubbo-Sathla. It is first mentioned as appearing in northern Germany around 400 AD. A Latin version was apparently written between the 11th and 12th century, as was an English translation that appeared sometime in the 14th century. * The version found in the [Library at Ultar] is bound in soft, human skin, still pliable, and always moist from perspiration welling from its pores. Simply handling the book is creepy." :classification "Book") "Cultes De Goules" (item :name "Cultes De Goules" :summary "* Cultes des Goules is a book of black magic written by Francois-Honore Balfour (Comte d'Erlette) in 1702. It was published in France and later denounced by the church. Only a handful of copies are in existence. One of the known copies was kept for 91 years in an arcane library of the Church of Starry Wisdom in Providence, Rhode Island. After Robert Blake’s mysterious death in 1935, Doctor Dexter removed the grimoire and added it to his library." :classification "Book") "De Vermis Misteriis" (item :name "De Vermis Misteriis" :image "Cthulhu/DeVermisMisteriis.jpg" :summary "* De Vermis Mysteriis is the work of one Ludvig Prinn; a Flemish alchemist and supposed sorcerer. Prinn had spent a great deal of time traveling in the east and claimed to have obtained a great age through the use of his sorcery. Eventualy Prinn was captured by the Inquisition and sentanced to death. While awaiting execution in his cell he wrote the volume he called De Vermiss Mysteriis. How Prinn managed to have the blasphemous manuscript smuggled past his captors is unknown. * Contents - The De Vermis Mysteriis is slightly over 700 pages long. It deals with subjects such as Irim City of the Pillars, The Priesthood of Nephren Ka and the avatars of Nyarlathotep worshipped in the east. * Spells - Part of the last chapter deals with a bizarre time drug that alters one's perception of time. It also contains instructions for creating the Pnakotic Pentangle. Another of the later chapters entitiled the Saracenic Rituals, focuses on the summoning and controlling other worldly beings. Other supposed spells include a ritual for summoning a child of Shub-Niggurath, a formula for calling up the spirit from the remains of its corpse, and instructions on how to craft a certain symbol Prinn claims to be a powerful aid in banishing entities." :titles "The Mysteries of the Worm" :classification "Book") "Elder Sign" (item :name "Elder Sign" :image "Cthulhu/ElderSign.jpg" :reference "H.P. Lovecraft (who had created the Elder Sign without ever describing what it looked like) had drawn a picture of the Elder Sign in a letter. This branch-like image is considered by many to be the true Elder Sign.") "Mi-Go Armor" (item :name "Mi-Go Armor" :image "Cthulhu/MigoArmor.jpg" :classification "Med. Armor") "Mi-Go Brain Bottle" (item :name "Mi-Go Brain Bottle" :image "Cthulhu/BrainCase.jpg") :Necronomicon (item :name "Necronomicon" :image "Cthulhu/Necronomicon.jpg" :reference "* They walk unseen and foul in lonely places where the Words have been spoken... They bend the forest and crush the city, yet may not forest or city behold the hand that smites... Great Cthulhu is Their cousin, yet can he spy Them only dimly. Iä! Shub-Niggurath! As a foulness shall ye know Them. Their hand is at your throats, yet ye see Them not; and Their habitation is even one with your guarded threshold... After summer is winter, after winter summer. They wait patient and potent, for here shall They reign again." :classification "Book") "Pnakotic Manuscripts" (item :name "Pnakotic Manuscripts" :image "Cthulhu/PnakoticManuscripts.jpg" :classification "Book") "R'lyeh Text" (item :name "R'lyeh Text" :image "Cthulhu/RlyehText.jpg" :classification "Book") "True Magick" (item :name "True Magick" :image "Cthulhu/TrueMagick.jpg" :classification "Book"))) "Mythos Independent Races" (section :name "Mythos Independent Races" :unitmap (unitmap "Colour Out of Space" (unit :name "Colour Out of Space" :image "Cthulhu/ColourOutOfSpace.png" :reference "In terms of matter I suppose the thing Ammi described would be called a gas, but this gas obeyed the laws that are not of our cosmos ... This was no breath from the skies whose motions and dimensions our astronomers measure or deem too vast to measure. It was just a colour out of space - a frightful messenger from unformed realms of infinity beyond all Nature as we know it. - The Colour Out of Space") :Cthonian (unit :name "Cthonian" :image "Cthulhu/Cthonian.png") "Elder Thing" (unit :name "Elder Thing" :image "Cthulhu/ElderThing.png" :reference "* The toughness of the things was almost incredible. Even the terrific pressure of the deepest sea bottoms appeared powerless to harm them. Very few seemed to die at all except for violence, and their burial places were very limited. - At the Mountains of Madness" :summary "* Their metabolism is based on carbon dioxide instead of oxygen; their blood is dark green in color. The nervous system of the Elder Things is quite complex, with five-lobed brains and many ganglial centers. The prismatic cilia on top of the creatures' head suggest that they have senses other than sight, smell, touch, hearing, and taste. Elder Things reproduce through spores. They can derive nourishment from inorganic substances, but prefer to feed on organic life.") "Flying Polyp" (unit :name "Flying Polyp" :summary "* The flying polyps came to Earth from space as conquerors about 750 million years ago. They built basalt cities with high windowless towers. When they attempted to colonize the oceans, the polyps were driven back by the Elder Things. Thereafter, they restricted their habitats to the surface world. * Their senses did not include sight, but what senses they had could penetrate all material obstructions. They were only partially matter, but still solid enough to affect and be stopped by normal materials; this additionally gave them resistance, if not outright invulnerability, to normal means of damage, though they could be destroyed by certain forms of electrical energy. Their minds were so strange that the Great Race of Yith could not perform psychic transfers with them. * They are able to levitate and fly despite lacking any visible means of doing so, and leave telltale massive footprints when on the ground. Their amorphous bodies can turn invisible at will, though this ability appears somewhat negated by whistling noises associated with them in general. In battle, their ability to control and direct powerful winds is put to use as a weapon. * When the Great Race of Yith came to Earth, they warred with the polyps and soon drove them underground with their advanced technology. The Great Race then sealed the entryways to the polyps' subterranean abode with trapdoors, which afterwards were diligently guarded. The polyps' cities were left abandoned, perhaps as a reminder of the horrors that dwelt below. * Eventually, the polyps rose up and almost exterminated the Great Race, afterwards returning to their subterranean haunts. Having no conception of light, the polyps seem content to remain there, annihilating the few intruders that chance upon them. The entrances to their dwellings are mostly deep within ancient ruins where there are great wells sealed over with stone.") "Great Race of Yith" (unit :name "Great Race of Yith" :image "Cthulhu/GreatRaceOfYith.png") "Hound of Tindalos" (unit :name "Hound of Tindalos" :image "Cthulhu/HoundOfTindalos.png" :reference "* All the evil in the universe was concentrated in their lean, hungry bodies. Or had they bodies? I saw them only for a moment, I cannot be certain. - Frank Belknap Long, The Hounds of Tindalos" :summary "* The Hounds of Tindalos dwell in the distant past of the earth, when normal life had not yet advanced past one-celled animals. They are said to inhabit the angles of time, while other beings descend from curves. The Hounds are thought to be immortal and are believed to lust after something in humankind and other normal life, and will follow victims through time and space to get it. * Their appearance is unknown because no characters who meet them survive long enough to give a description. It is said that they have long, hollow tongues or proboscis to drain victims' body-fluids, and that they excrete a strange blue pus or ichor. * Though the Hounds are sometimes pictured as canine, it is not likely that they appear as such. Their name refers more to the creatures' habits than their appearance. * Because of their relationship with the angles of time, they can materialize through any corner if it is fairly sharp—120 degress or less. When a Hound is about to appear, it materializes first as smoke pouring from the corner, and finally the head emerges followed by the body. It is said that once a human becomes known to one of these creatures, a Hound of Tindalos will pursue the victim through anything to reach its quarry. A person risks attracting their attention by travelling through time.") "Hunting Horror" (unit :name "Hunting Horror" :image "Cthulhu/HuntingHorror.png") :Mi-Go (unit :name "Mi-Go" :image "Cthulhu/MiGo.png" :reference "* Fact: Migoi or Mi-go (pronounced mey-goo) is a Tibetan name for the Yeti and translates as 'wild man'." :summary "* Mi-go are an alien race of fungus-like creatures, approximately man-sized, pinkish in color, with crustaceous bodies bearing vast pairs of membranous wings and several sets of articulate limbs. The Mi-Go have a sort of convoluted ellipsoid where its head should be, covered with a multitude of very short antennae. * They have a colony on Pluto (i.e. Yuggoth) and have mining colonies in high mountains looking for rare minerals. * The Mi-go are not wholly native to our phyical universe. Thus, they cannot eat food from Earth, and photographs of them are blurry and indistinct. They can also fly unassisted through interstellar space at fantastic speeds. They dissolve shortly after death. * They seem to be highly focused on their scientific pursuits and are most often encountered in search of obscure minerals in remote locations. Trespassers are usually eliminated, though they have been known to have human agents work on their behalf. * Mi-go have access to a number of advanced weapons. The mist projector releases a cloud of frigid gas. They have an organic 'armor' that humans can use, but it is extremely sticky and will damage the user each time it is removed. The armor will also weaken each day unless immersed in the proper nutrient bath. * The Mi-Go are advanced in the sphere of surgery. With surgical alterations the Mi-Go are able to speak human languages, though their voice is buzzy and irritating. They can also surgically move the brain of other species into metal cylinders for transportation to other worlds through space." :titles "Fungi from Yuggoth") :Shoggoth (unit :name "Shoggoth" :image "Cthulhu/Shoggoth.png" :reference "This was the dream in which I saw a shoggoth for the first time, and the sight set me awake in a frenzy of screaming. - The Shadow Over Innsmouth"))) "Mythos Servitor Races" (section :name "Mythos Servitor Races" :unitmap (unitmap "Dark Young of Shub-Niggurath" (unit :name "Dark Young of Shub-Niggurath" :image "Cthulhu/DarkYoung.png" :reference "Something black in the road, something that wasn't a tree. Something big and black and ropy, just squatting there, waiting, with ropy arms squirming and reaching ... It came crawling up the hillside ... and it was the black thing of my dreams ... that black, ropy, slime jelly tree-thing out of the woods. It crawled up and it flowed up on its hoofs and mouths and snaky arms.") :Nightgaunt (unit :name "Nightgaunt" :image "Cthulhu/Nightgaunt.png" :reference "Shocking and uncouth black beings with smooth, oily, whale-like surfaces, unpleasant horns that curved inward toward each other, bat-wings whose beating made no sound, ugly prehensile paws, and barbed tails that lashed needlessly and disquietingly. And worst of all, they never spoke or laughed, and never smiled because they had no faces at all to smile with, but only a suggestive blankness where a face ought to be. All they ever did was clutch and fly and tickle; that was the way of night-gaunts. - The Dream-Quest of Unknown Kadath") "Seed of Azathoth" (unit :name "Seed of Azathoth" :summary "* While the [Spawn of Azathoth] are the size of dwarf stars, the seeds of Azathoth are the size of small comets. They are periodically cast off from Spawns during major upheavals or impacts with other bodies. The Seeds do not direct themselves through space, but if one impacts a planetary body, it slowly burns its way to the core where it grows over millenia. Eventually, it matures to a full [Spawn of Azathoth] and shatters what remains of the planet into rubble.") "Spawn of Azathoth" (unit :name "Spawn of Azathoth" :summary "* The massive Outer God Azathoth mindlessly casts off small parts of itself, the Spawn of Azathoth. Though small compared to Azathoth, these bodies are the size of small, brown dwarf stars. From Azathoth, they hurtle through time and space forever. Sometimes they pass near ordinary stellar systems and wreak havoc, colliding with worlds or suns, causing gravitational catastrophes, or raining its seeds ([Seed of Azathoth]) upon them." :titles "Nemesis") "Spawn of Cthulhu" (unit :name "Spawn of Cthulhu" :image "Cthulhu/SpawnOfCthulhu.png"))) "Elder Gods" (section :name "Elder Gods" :unitmap (unitmap :Nodens (unit :name "Nodens" :image "Cthulhu/Nodens.png") :Yibb-Tstll (unit :name "Yibb-Tstll" :image "Cthulhu/Yibb-Tstll.jpg" :summary "* Yibb-Tsttl is an obscure entity said to lie at the center of time and space and is able to see all things in the universe at any time making it so wise that only the omnipotent Yog-Sothoth can surpass it in wisdom. * Appearance - Often envisioned as an immobile dark mass of tentacles with a deformed head, detatched eyes and large bat wings under which countless Nightgaunts suckle from innumerable breasts (heavily implying this monstrosity is either female or more likely a hermaphrodite). The mere sight of this creature can drive humans insane and even thinking too hard on the monstrous being is said to attract its malevolent intent. * The Black - Yibb-Tstll's blood is alien and can be utilised as a weapon known as 'The Black', which takes the form of black snowflakes that stick to a victim and smothers them. The Black is a separate entity that is called upon by sorcerors more that Yibb-Tstll itself. * Reversal - The touch of Yibb-Tstll causes the hideous reversal. Typically this change with kill the living or drive the sane mad, but like its name implies, it can also do the opposite." :titles "The Patient One"))) "Great Old Ones" (section :name "Great Old Ones" :reference "Behind the Veil what gulfs of Time and Space? What blinking mowing Shapes to blast the sight? I shrink before a vague colossal Face...Born in the mad immensities of Night. - Robert E. Howard, An Open Window" :unitmap (unitmap :Cthulhu (unit :name "Cthulhu" :image "Cthulhu/Cthulhu.png" :reference "Cthulhu is eponymous with the mythos. If you know nothing else of Lovecraft's body of works, you at least know the visage of this subterranean horror. Which is interesting, because he's relatively tame compared to the Outer Gods. Although he may be worshipped like a god by many, he isn't one. Not really. ... One might call him a priest. ... Since the dawn of man, these beings have been guiding the species through dreams and through psychic manipulation. Someday, when mankind has abandoned its morals and descended into madness, They will wake Cthulhu from his slumber, and he will raise the Old Ones from death and all the world will flame with a holocaust of ecstacy and freedom. ... Cthulhu is not oblivious or indifferent to mankind. He isn't even malevolent. He is Lovecraft's simple promise of evanescence. Nothing belongs to man. Not this world, not the home they've built on it, not even the human mind. It is the ultimate destiny of this species to unravel into primal chaos, as all Things must. To the sounds of their laughter and exultant shouts, all man has ever built will one day fade away. - Tale Foundry") :Dagon (unit :name "Dagon" :image "Cthulhu/Dagon.png" :reference "* I cannot think of the deep sea without shuddering at the nameless things that may at this very moment be crawling and floundering on its slimy bed, worshipping their ancient stone idols and carving their own detestable likenesses on submarine obelisks of water-soaked granite. I dream of a day when they may rise above the billows to drag down in their reeking talons the remnants of puny, war-exhausted mankind—of a day when the land shall sink, and the dark ocean floor shall ascend amidst universal pandemonium. - Dagon") "Hastur the Unspeakable" (unit :name "Hastur the Unspeakable" :image "Cthulhu/Hastur.png" :titles "The King in Yellow") "Ithaqua the Windwalker" (unit :name "Ithaqua the Windwalker" :image "Cthulhu/Ithaqua.png"))) "Outer Gods" (section :name "Outer Gods" :unitmap (unitmap :Azathoth (unit :name "Azathoth" :image "Cthulhu/Azathoth.png" :reference "This is about at close as Lovecraft's mythos ever come to establishing a creator deity. It was Azathoth who birthed the Darkness and the Nameless mists from which nearly all the other gods and deities sprang. It was he who created the universe and he who will one day be its destruction. ... know that Azathoth is neither malevolent nor benevolent - that he is entropy incarnate; a mindless, indiffernt force of pure chaos. The Blind, Idiot God. There is nothing to be gained from calling on him and literally everything to lose. ... He is the epitome of cosmic horror in the mythos, embodying the cold, indifference of the cosmos and the sheer insignificance of intelligent life. - Tale Foundry" :summary "* At the center of the universe, deep within a self-created abyss past time and space, dwells the blind idiot god Azathoth. Possessing True Immortality, Azathoth cannot be destroyed. The concept of death only exists within his dreams. Long ago, all was Azathoth. His dreams are all of existence and we are in his dreams. The mad piping attempts to keep Azathoth slumbering for when he wakes, all things will end and all will become Azathoth again. * Azathoth is perhaps the most powerful being in fiction." :titles "Daemon Sultan, The Blind, Idiot God") :Nyarlathotep (unit :name "Nyarlathotep" :image "Cthulhu/Nyarlathotep.png" :reference "Nyarlathotep is nothing like the other Outer Gods. He travels by his own laws, into and out of the known cosmos, acting as a messenger to and from the Outer Gods. His strange personality, or perhaps the simple fact that he has a personality, baffles them. ... To lesser intelligences, he's a trickster, malevolent and cruel, bequeathing gifts of wisdom and power to those who seek it, and whom he knows cannot handle it. Where Nyarlathotep goes, madness follows. He is the Crawling Chaos, and as the only direct offspring of Azathoth, he revels in it. To Lovecraft, Nyarlathotep must have been a perfect manisfestation of his racism and xenophobia. He is not only the outside seeping in, but a malevolent, undetectable outside seeping in. - Tale Foundry" :summary "* Like the other Outer Gods, Nyarlathotep is a primal being of unimaginable power. Unlike the others, however, his power is knowledge and Nyarlathotep may be a creature entirely of the mind. Though he typically appears as a man, he has innumerable other forms and may be able to appear in any form he wishes. He seens to specifically target and toy with humanity by offering dangerous knowledge and observing the results. This is probably an overly simplistic view of his actions. Like the other Outer Gods, he is too grand a figure to care about humanity. More likely, he acts like Yog-Sothoth and simply appears as an avatar and provides Knowledge to those who seek him without regard to what we do with it. In this way, Nyarlathotep is like Prometheus providing fire to humanity. It is possible that Nyarlathotep is constantly offering knowledge, but we are generally unable to recognize it. Perhaps Nyarlathotep is the Muse behind all discoveries." :titles "The Crawling Chaos") :Shub-Niggurath (unit :name "Shub-Niggurath" :image "Cthulhu/ShubNiggurath.png" :reference "Imagine a roiling, miasmic mass of twisting tendrils and drooling mouths, so tenuous in composition that its limbs vanish as quickly as they materialize, its very form dividing constantly into a surplus of smaller abominations that are either reabsorbed into its great form, or that escape to some hideous life elsewhere. Not the spitting image of a fertility goddess but this is as close as the mythos gets. Shub-Niggurath may well be the most widely revered amoung the outer gods, infuence reaching not only to the Greeks, Cretans, Egyptions, and some druids, but to races so far-flung across the cosmos as the Mi-go of Yuggoth, and the Dhole and Nug-Soth of Yaddith. ... Usually the creation of new life, especially intelligent life, is held as a sacred act. Many humans derive joy and self-import from the notion that their kind was toild over by some kind of divine intelligence. Shub-Niggurath with her blind, indifferent, prolific procreation, undermines this idea. ... Shub-Niggurath was Lovecraft's affirmation that life itself is nothing extrodinary. - Tale Foundry" :titles "The Black Goat of the Woods with a Thousand Young") :Yog-Sothoth (unit :name "Yog-Sothoth" :image "Cthulhu/YogSothoth.png" :reference "Locked away at the border of reality, there exists an intelligence. Rather, the intelligence. All of it. Yog-Sothoth holds the knowledge of all that is, all that was, and all that will be. ... For this reason, he is one of the most heavily worshipped entities among the Outer Gods. His name is frequently invoked during the rituals and incantations of those seeking hidden knowledge. And often, he answers. Sadly for the ones who call on him, the knowledge he grants almost always leads to madness and self-destruction. Not because Yog-Sothoth is evil or malevolent. He doesn't force anyone to turn the key or step through the gate. ... He is both the danger of knowledge and the inability of man to handle it. His role in the mythos mirrors Lovecraft's own self-taught obsession with the sciences as well as his acedemic failings. - Tale Foundry" :titles "Beyond-One, The Key and the Gate, The Vortex"))) "Mythos Scenarios" (section :name "Mythos Scenarios" :sectionmap (sectionmap "Seeds of Azathoth" (section :name "Seeds of Azathoth" :summary "* Nemesis - Since 1984, a theory attempts to explain the mass extinctions that occur every 27 million years. The theory submits that a brown dwarf star orbits our sun at 95,000 AUs and every 27 million years it approaches close enough to rain comets throughout the solar system causing climate change, mass-extinctions, and similar catastrophes. * Seeds of Azathoth - Nemesis is, in reality, a Spawn of Azathoth that has clung to orbit around the Sun. Occasionally, pieces of Nemesis break free, falling into the solar system: the Seeds of Azathoth. Seeds that strike the Sun are destroyed, but if a seed strikes a planet, it can melt into the planet's core where it grows immensely, eventually forming a new Spawn which emerges from the broken planet like a snake from an egg. Our system's original fifth world was so parasitized. Its remnants compose the asteroid belt. * For millenia, human and other astronomers have seen in comets, 'hairy stars', approaching disaster and ill-fortune. In ancient texts, comets have been blamed for the revolt of the Shoggoths against the Elder Things, the doom of the dinosaurs, the fall of the empire of the Serpent People, the destruction of Hyperborea, the sinking of Atlantis, and even the two ages of chaos that struck early Egypt. * The most recent effect of Nemesis took place in central Siberia, June 30, 1908, when a tremendous explosion rocked the area for hundreds of miles. There was a pillar of fire and shock waves powerful enough to knock down horses 400 miles away." :sectionmap (sectionmap "The Case of Phillip Baxter" (section :name "The Case of Phillip Baxter" :scenariomap (scenariomap "Figure in the Night" (scenario :name "Figure in the Night" :summary "* An investigator wakes suddenly in the night to see the room bathed in pale green light and a strange musky smell. A vague, ghostly figure gestures toward the investigator. Suddenly, a portion of its head disappears as if bitten off. The spectre stumbles and thrashes around the room as more of the head is eaten until it is completely headless. The figure goes rigid and fades away leaving the room in darkness. * After contemplation, the figure is recognized as Professor Phillip Baxter a former teacher of the investigator. * Contacting Phillip's home gets the distraught housekeeper, Angela Vincenzo. She informs them that Phillip passed away yesterday of a sudden illness. She invites them to the funeral the next morning. * A successful Occult roll indicates that an apparition usually appears at the moment of death instead of a day later.") "Funeral of Phillip Baxter" (scenario :name "Funeral of Phillip Baxter" :summary "The services are in the rain and attended by: * Julian Baxter, the priest, in a wheelchair. * Matthew, the priest's personal attendant, who is a large, silent man. * Emmott Baxter, elder son of the deceased. * Dr. Douglas Walters, the family physician. * Silas Patterson, anthropologist and member of the Tuesday Night Academy. * Judge Braddock, executor of the estate. * Angela, the housekeeper. * Alvin Beswick, undertaker and hearse driver.") "Legacy of Phillip Baxter" (scenario :name "Legacy of Phillip Baxter" :summary "* Angela receives the property * Half of his cash goes to the Tuesday Night Academy * The remaining half goes to his three children Emmott, Colin, and Cynthia. Cynthia's portion to be donated to the Catholic Widow's Relief Fund as she requested. * At this, Emmott accuses Silas Patterson and his Tuesday Night Academy of wasting all his father's money in life and now in death. * Finally, a packet of papers is given to the investigators according to the will. This packet contains Phillip's dream journal and an short note about why he thought the investigators might be interested.") "Dream Journal of Phillip Baxter" (scenario :name "Dream Journal of Phillip Baxter" :summary "* The enclosed note describes that his dreams had become more vivid and recurring recently and that he felt that he needed to write them down and give them to someone who might find the account scientifically interesting. * He had traveled to Ultar and visited the library there. In the library, he found the book, the [Cthaat Aquadingen] which gave important insight into his current research. As Phillip left the library, he saw an evil-looking dwarf that he had seen in a carnival he passed on the way into the city. The dwarf was discretely following him. Phillip managed to shake him before he woke up. * Anyone experienced in the Dreamlands will recognize the entrance to the Dreamlands and Ultar.") "Home of Phillip Baxter" (scenario :name "Home of Phillip Baxter" :summary "* Angela Vincenzo, the former housekeeper is now the only resident in the roomy three bedroom home. * The study contains various paperwork including: ** A letter from Phillip's daughter Cynthia describing that her supposed kidnapping by natives was not as serious as he was led to believe and that she is perfectly fine. She has sent a box of coconuts as a present. ** Notes on the Tuesday Night Academy's purchase of a large telescope and their search for a 'Dark Star' called Nemesis. ** An anthropology book authored by Silas Patterson with marked section describing southeast Indian tribes displaying remnants of ritual cannibalism. Most are symbolic acts upon the death of a family member or friend, but on occasion the ritual is actually performed using a monkey or ape substitued for a human. Of particular interest is a brain eating custom where the brain is exposed and eaten directly from the skull while still warm. An elderly native said that he had seen apes killing smaller monkeys and eating their brains in similar manner. ** A diary including comments about: *** His brother Julian sudden sickness and retirement after returning from the Andaman Islands. *** Julian's subsequent suicide attempt *** Cynthia's trip to the Andaman Islands and subsequent abduction by savages. *** Her later release *** Arguments with his sons over favoritism *** His recent series of nightmares *** His therapy with Julian over his nightmares and the drug Julian prepared to help him sleep. *** The ultra-realistic new dreams after the drug put him into an especially deep sleep. *** Julian's refusal to provide more of the drug. *** Phillip's break-in of Julian's house and the successful theft of the drug. * The basement contains an unopened crate of coconuts with a small hole chewed through the side. * The attic contains a formerly extinct prehistoric spider that was in the crate of coconuts. It had bitten Phillip in his sleep and put him into a deep coma that was mistaken for death. The spider venom causes unconsciousness in 10 minutes, but the victim will revive on its own within two days."))) "Search for the Seed" (section :name "Search for the Seed" :scenariomap (scenariomap "The Garrison Observatory" (scenario :name "The Garrison Observatory" :summary "* The Tuesday Night Academy has spent a large sum of money to erect an observatory in Garrison Montana. They experiment with prisms to try to detect the dark star that their research claims has had a sweeping effect on history. * The Observatory is deep in the woods and is only accessible on horseback.") "The Defenders of the Seed" (scenario :name "The Defenders of the Seed" :summary "* The Seed - A Seed of Azathoth has been hurtling through space for centuries and has finally been drawn to Earth. As it approached, the special prisms in the telescope attracted it like sunlight off a mirror. The Seed swept across the sky and crashed in the woods. Its strange green fire trail attracted the attention of many including those at the observatory and a group of local hunters. * Sasquatch - When the hunters found and examined the asteroid, they were exposed to the horrific radiations of the Seed. Those that survived, regressed to a primitive state. They are terrified by the Seed, but are compulsively drawn to it. They have buried the Seed in an alcove of the cave in which they live. The Seed is slowly killing them, and as they die, they dissolve into a primordial soup before actually dying. * Sylvian Englund - Sylvia is a pleasant woman in her late sixties who lives off the land in the woods since the death of her husband. She has recently discovered the regressed hunters and believes that they are Sasquatch. She has been feeding them and has gained their trust. She enjoys her discovery and does not want outsiders to ruin her friendship with the sasquatch.") "The Race for the Seed" (scenario :name "The Race for the Seed" :summary "* Fungi From Yuggoth - A team of four Mi-go have observed the Seed's landing from their underground outpost on the Moon. Their goal is to retrieve the Seed to use as an magical energy source. Interesting humans captured along the way are to be de-brained and the brains carried back in cylinders for questioning later. * They each carry a machine that looks like a silver whorl. It fires a beam of deadly radiance that eats blackening holes in whatever it touches. Any damage prevented by armor is instead applied against the armor itself. The weapons have 37 charges and may not be recharged. The weapons have no range limitations and are excellent sniper weapons. * Their first target is the firetower where they slay Ranger Marshall and use the tower as a base of operations. * The next day they spray a nervous tissue solvent in the direct vicinity of the firetower to prevent intrusions. The spray forms a low fog that short circuits animal nervous systems driving them mad. A Grizzley Bear and Jules, Sylvia Englund's dog, are the first victims of the gas. Both roam the countryside acting randomly. * Later the same day, the Fungi search the observatory, leaving many tell-tale signs. * The next day, they capture Sylvia Englund near her ranch. They de-brain her and hide the body in the house. * Toward the end of the day, they move on the Seed. They make quick work of the hunters defending it. They carefully put the seed in a shielded container and fly it to the firetower. They gather their belongings, including the Seed and any captured brains, drop a bomb on the firetower to destroy any evidence, and fly back to the Moon."))) "Death in St. Augustine" (section :name "Death in St. Augustine" :scenariomap (scenariomap "Investigating Colin Baxter" (scenario :name "Investigating Colin Baxter" :summary "* Colin Baxter, Phillip's youngest child, is due a healthy piece of Phillip's estate, but he must be located first. His last known location was St. Augstine, Florida. Judge Braddock is concerned with the series of bizarre occurences and hires the investigators to track Colin down and check on his safety. * St. Augustine is a city in northeast Florida and the oldest continuously occupied European-established settlement in the continental United States. * Colin is indeed still here, but he has fallen on hard times and turned to alcohol. He can be found in a local speakeasy hidden behind a grocery store. * Harry Spitz - The grocery store/speakeasy is owned by Harry Spitz who runs the bar. He pays protection money to the police and is in no danger of police action. * Billy Wolff - Billy is a close friend of Colin's and will steadfastly defend his buddy in all circumstances, especially when drinking. * Esmerelda - Esmerelda is a Cuban born, hot-headed friend of Colin's. She is an illegal immigrant and will not reveal her last name under any circumstances to, somehow, protect her family.") "Colin's Treasure" (scenario :name "Colin's Treasure" :summary "* Colin has a history of get rich quick schemes and his current one is to find a fortune in sunken treasure. Unfortunately, his business partner ran away taking their remaining cash and Colin's girlfriend with him. Since then, Colin has been drinking his troubles away. * The inheritance money helps, but Colin is still short $2,000. He will offer the characters 50% of the profits if they chip in the money. * He believes that the wreck of the treasure galleon, La Rosaria can be found off Bimini. He claims to have an accurate map to the location. His map is hand copied from an original kept in the library of the 200 year old Spanish church. * Father Garcia - At the church they meet Father Garcia who is a friend of Esmerelda. Father Garcia is friendly but guarded. With the help of Esmerelda he admits that he fears that someone is watching him. He also admits to seeing figures moving in the dark on the church grounds, though he feels he must be imagining things. After gaining his trust, Father Garcia shares the church library. Though Colin's research is shoddy, futher research supports his findings that the map is an authentic map of the location of the La Rosaria.") "Colin's Wreck" (scenario :name "Colin's Wreck" :summary "* The Palencia - Colin invites the party aboard the old steamer he has bought and retrofitted for large scale salvage. The crew is mostly Cubans and blacks. As they depart, someone spots a reflection from the coast. Using binoculars, they see someone observing them back with binoculars before the person ducks away. * The Voyage - The map shows a location off Bimini, 300 miles south of St. Augustine. The voyage takes less than 24 hours on calm seas. * Diving - The diving pumps have enough pressure for no more than 2 divers at once. Wolff operates the pumps. Colin would prefer to dive with a partner and asks for volunteers. The divers reach the bottom in 2 minutes and tug twice on the line to indicate they are at bottom. The water is particularly clear and well illuminated by sunlight. Only 20 minutes later they spot the wreck and tug twice again. The divers return to the surface and describe that the wreck is in only 50 feet of water but is stuck on a reef hanging over a sharp drop off on one side. * Coral Outcropping - A protruding coral outcropping has pierced the hold of the hull. Anyone exploring this area will be the victim of a single sudden attack by the [Moray Eel] that makes its home here. The attack is not life threatening, but if the person bleeds the divers will have to return to the surface for fear of attracting sharks. * The Drop Off - Anyone foolish enough to explore the deck near the drop off, suddenly causes a section of the hull to break off and fall into the drop off. The falling diver can attempt to jump free, failing that he can scramble to grab the coral reef as he falls, otherwise he slowly falls 30 feet before the coral cuts his air hose and he drowns. The boat pulls him up, but it will be too late to save him unless he is extremely accomplished at holding his breath. * Captain's Cabin - Colin is most interested in the Captain's cabin where he finds a heavy lock box which needs to be winched to the surface. In it there can be found 22 forty pound silver bars worth $10000 total and a strange, large necklace. The necklace is carved with strange figures of animalistic humans celebrating a great comet with a tail that goes on forever. After a few days investigation, it is clear that the wreck does not contain the riches that Colin hoped for. Colin will be left deeply in debt. However, any characters who invested will double their investment.") "Colin's Ruins" (scenario :name "Colin's Ruins" :summary "* The Ruins - Colin desperately hopes that the treasure fell from the wreck before it landed at the bottom and begins retracing the ship's path. About a 300 yards away, he discovers what probably sank the La Rosaia: a sunken ruin whose stone ceiling lies just below the water line. No treasure is found, but Colin is desperate to find anything of value, so he moves to explore the Ruins. * Temple - The ruin is a stone temple in a bowl shaped depression with curved steps going down 20 feet before entering an archway. The temple itself is only 30 feet across and has many crabs and octopi. The walls are covered by mosaic tile that depicts people suffering during multiple terrible disasters. Above each disaster are tiles depicting an orb with a shining light nearby. * The Pit - In the center of the temple is a dark pit of indeterminate depth. Before the pit is a metal orb on a stone slab. The orb has a metal rod projecting from one side at the end of which is a shiny topaz. The rod can orbit the orb and telescope in or out, but its current position is very close to the orb. A mechanism inside the orb operates the rod and is apparently still active. The pit reaches about 100 feet before a rock cave-in blocks the way. Within the pit is a single, strange dolphin. * The Dolphin - If multiple lights are shined down the pit, a motionless dolphin can be seen. Suddenly, the normally peaceful dolphin swims up and attempts to ram people with incredible force. It will continue attacking unless the invaders leave or it is killed.") "Death of the Father" (scenario :name "Death of the Father" :summary "* Homecoming - As the Palencia arrives at port, police can be seen on the docks. When the Palencia docks, officers rush on board and arrest Colin and Wolff for the murder of Father Garcia. * Murder - Father Garcia was murdered the same day that Colin and the investigators went to the library. Witnesses say that Colin and Wolff returned drunk later that night and ransacked the library. That morning the priest was found in the church with his skull crushed. The reality is that the ghoul cult has been robbing graves for years. Father Garcia has been noticing activity in the night and has been hiding in the church at night to try to catch someone in the act. Unfortunately, he found the graverobbers and confronted them. They immediately killed him and called the Detective to cover up the murder. What the killers did not realize was that Esmerelda was coming home from the speakeasy when she heard a commotion from the church. She rushed over and observed the killers discussing what to do with the Father's body. * Detective Morris Packard - The detective is the head of the police force while the chief is on extended medical leave. He is also a member of a secret death cult that worships ghouls. His cult was graverobbing for their riturals when the Father caught them and he was dispensed with. Colin's drinking made him a convenient scapegoat, so the Detective is constructing circumstantial evidence to arrest Colin. Later he will arrange for Colin to hang himself in jail. If the investigators get too close to the cult, he will arrange an ambush to eliminate them. * Esmerelda - Esmerelda is conspicuously missing. After witnessing the murder scene, she packed her things and fled to her parents house in Clearwater. She fears for her safety and doesn't want to get involved, but when she iscovers that Colin has been frames, she writes a letter with what she saw to the investigators and Colin. * Crime Scene - Trampled in the dirt can be found a pin from the local alligator farm that was dropped in the scuffle. * St. Augustine Library - The local library carries copies of newspapers. Several stories can be found in the Jacksonville Sentinel that may be relevant. Older material is harder to discover. ** 1571 - A yellowed document in Spanish written by Father Rolando Tortulla of Toledo Spain. The document reports to the King, the state of the French heretics held prisoner in vaults below the monastery. They are wild and degenerate and are guilty of cannibalism. They will be held until they die. ** 1641 - A yellowed document in Spanish describes the construction of the Castillo de San Marcos that incorporates the catacombs of the old monastery. A violent french prisoner was transferred to a new cell. ** 1662 - A yellowed document in Spanish describes the horrid state of the French prisoner. His toes are missing and he limps around his cell scratching on the walls saying only gibberish. He will be held until he perishes. ** 1682 - A yellowed document in Spanish describes the escape of the french prisoner. Stones were removed from the wall of the cell and the prisoner fled into a tiny tunnel behind the wall. After a brief attempt to locate him, the tunnel was filled, sealing the fate of the horrible prisoner. Drawings were scratched into the ceiling showing comets and fire raining from the sky. ** 1792 - A religious paphlet describes an ancient evil unloosed by Satan. They are inhuman but walk among us like men. Many officials of the city, both past and present, belong to this secret, godless faith. ** February 1890 - A freshly buried body was stolen from a cemetary south of St. Augustine. No suspects were found. ** May 1927 - Grisly Find at Alligator Farm. Eli Simpson, an employee of the farm, saw a shoe in the large crocodile pool which turned out to also contain a severed human foot. No identification was found, and police theorize that a vagrant snuck onto the farm and fell into the pool. No charges were filed. ** October 1920 - A recently buried body of an indigent was stolen from the old St. Augustine church graveyard. No motive or suspects were found. * St. Augustine Herald - The local paper is a weekly that promotes local businesses and tourist trade. The editor/owner is Fred Boswell who bought the paper 3 years ago. Strangely, the original owners destroyed all their files before they left. * Jacksonville Sentinel - Sold next to the Herald is a real paper published in Jacksonville, a 2 hour drive up the coast.") "Korsky's Alligator Farm" (scenario :name "Korsky's Alligator Farm" :summary "* Eli Simpson - Eli found the severed foot and was subsequently fired by Maynard Korsky for alerting the police before discussing it with him first. It was not the only time he found strange meat in the pens, but it was the only thing he could clearly identify. * Maynard Korsky, Dell Korsky, and Kenny Durham run the farm. They use the gators to destroy the leftovers of the cult, but do not do any other cult business at the farm. * The Farm - If the investigators investigate the farm during the day, the Korskys and Kenny Durham are no help and the cult is alerted to their investigation. If they investigate at night, the farm is not guarded, but the gators have destroyed any evidence that might have been found.") "Castillo de San Marcos" (scenario :name "Castillo de San Marcos" :summary "* A monumental castle started in 1638 and took over a century to complete. The upper levels are open to the public, but the lower levels are considered hazardous and are sealed off with packlocked plywood doors. It is easy enough to pry the plywood loose but not without leaving evidence of tampering. The cells of the degenerate prisoners are easy to locate. The walls and ceiling are covered with scratchings of spiders and comets and skulls. In the final cell, a stone can be removed revealing a low tunnel sloping downard. Crawling on hands and knees for fifty yards reveals a hallway from the original Franciscan monastery that predated the fort. The hall leads to a small room with two chairs and black robes hanging from pegs. The room is the same as the one depicted in the films from Thornton's Camera Shop.") "Thornton Camera Store" (scenario :name "Thornton Camera Store" :summary "* The camera store has a view of the castle. William Thornton works here all day selling cameras, lens, and film. There is also a darkroom where he develops photos. * If the investigators break in they can find some smuggled Cuban ponography and three recent silent films in a locked box. * The Films - Each film is roughly the same depicting a dead body in a chair in a small stone room surrounded by hooded figures. A veiled female figure limps over and begins a ritual. The body seems to gain some semblence of life and then the figures leap upon the body and begin eating it at which point the film ends. * If confronted with the films, Thornton claims he received them by accident along with the Cuban films and that they are obviously some kind of homemade hoax.") "Thornton House" (scenario :name "Thornton House" :summary "* Mother Thornton - Mother Thornton is the matriarch of the death cult and has nearly completely transformed into a ghoul. She never goes out in public and wears a veiled hat even in private. * William will normally be at home after 5pm. During the day, the front door is not locked. If Mother Thornton hears intruders, she will stay in her room pretending to be sleeping in a chair. If she is exposed, she throws off the veil and tries to escape the house. She will leap out the second story window lope down the street scattering the citizenry. Any disturbance here will have the police arrive in five minutes where they will arrest anyone in the Thornton home for the murder of Mother Thornton. Even if she is killed the story will be that they killed a deformed and crippled old woman. * Gray Binding - Among her possessions is a book that teaches the Gray Binding spell that animates a corpse into a mindless zombie.") "St. Augustine Ambush" (scenario :name "St. Augustine Ambush" :summary "* The Note - If the investigators are discovered, Detective Packard will arrange a deadly ambush for them. He will kidnap Eli Simpson, Esmerelda, or anyone else who they think can lure the investigators. The victim leaves a note to the investigators that they have new information and to meet at the church graveyard and night. * The Churchyard - The gator farm truck is hidden to the north of the church, and the Maynards and Packard wait in ambush with pistols and blackjacks behind tombstones. At the center of the graveyard, the contact sits on a tombstone under the moonlight. Unfortunately, the victim is already dead and is merely propped up. The ambushers try to take the investigators alive, but will open fire if they have no other choice. * The Ritual - If the investigators are captured, they are taken to the ritual chamber where one of them is eaten alive while the others watch. Before the grisley feast is complete, a number of ghouls come down the tunnel and tear the cultists apart. The ghouls drag away the dead and ignore the living investigators.") "Exposing the Cult" (scenario :name "Exposing the Cult" :summary "* Exposing the Cult - Since Detective Packard is a cultist, any involvement with local police will get the investigators in trouble. If they can bring hard evidence to the Florida State Police, who will move in and clean up the mess, though they will cover up the messier parts to maintain their vital tourist trade."))) "Investigating the Andamans" (section :name "Investigating the Andamans" :scenariomap (scenariomap "Trip to the Adamans" (scenario :name "Trip to the Adamans" :summary "* The Andaman Islands are a narrow chain of islands 590 miles southeast of India. * Weather - The temperature is mild and ranges from 64F to 92F. Except for October and March, the islands are hit by daily monsoons. * Wildlife - There are no large predatory animals, just all manner of bats, rats, spiders, turtles, wild pigs, and native cats. * Population - The natives are primitive Negritoes, belived to have lived here since the Pleistocene era. Uniquely among modern man, they have no knowledge of fire building and must continually keep a fire burning. They are divided into 12 tribes with different dialects of the same language. They have a long reputation as viscious killers and cannibals. For centuries, shipwrecked sailors had been systematically slain (but not eaten). Over time, the islands have become safe to outsiders except in remote areas. * Port Blair - The British established a penal colony on the islands where convicts are forced to live and work. The colonly is a primitive jungle colony with a dock, general store, a wireless, and faily complete medical facilities. Port Blair is also the only deep water anchorage on the islands, so all ships must dock here. * Major Ashley Nichols - Major Nichols is the commissioner of the Andamans. He oversees the trade of exotic lumber, coffee, cocoa, tea, and coconuts. He also commands a small battalion of Indian solders. Nichols is happy to meet civilized westerners and will places his services and those of the British Government at their disposal. * Arrival - The Andamans are 10,000 miles from America. If the investigators use Colin's ship, the trip takes 3-4 weeks. If they book other passage, they will have to travel to Calcutta first. * Office Records - Major Nichols has nothing to hide and allows full access to the office records where a report of Cynthia Baxter's abduction can be found. In the narrative, it is found that although the abductors initially tried to take her by force, that after a short conversatiion, she agreed to go with them and was returned safely the next day. Major Nichols has only met Cynthia twice, since she rarely comes to Port Blair.") "Trek across the Adamans" (scenario :name "Trek across the Adamans" :summary "* Guides - If they request, Major Nichols will provide two Indian guides to lead them to Cynthia's clinic 45 miles away. However, he does warn that the two are criminals, working off their crimes. Worse, there are 2 escaped criminals known to be in the area. They are desperate killers and could be extremely dangerous. * Sikander - A Hindu in his mid-thirties with a wife and three children on the island. He stole a horse and has served eight years so far but is mostly trustworthy. He will, however, steal a weapon for protecting his family if he gets the chance. If successful, he will hide the weapon in the jungle for future retrieval. * Mahbub - A Moslem from Delhi who has served twenty years so far for murder. He speaks little English and is neither garrulous nor energetic. * The Jungle - The trip to Cynthia's clinic starts on timber roads, then footpaths, but before the first day is over they are struggling through thick growths and shallow swamps with no path. The trip takes three days or more, and the guides prove able servants, doing all the work of setting up camp, building a fire, and preparing meals. * The Villiage - A loud buzzing noise emanates from a clearing ahead with a tiny, abandoned villiage. The buzzing comes from a tree with a crude platform 25 feet up. Atop the platform is a rotted human form covered in a mass of undulating insects that are devouring it. Although the Andamanese normally bury their dead, if a particularly revered chief dies, he is bundled in a tree and the clan abandons their villiage for three months in reverence. If the body is disturbed, the Jarawan hunters will track the intruders and attempt to kill them for their blasphemy. * The Mission - Cynthia has a small wooden building that serves as her clinic surrounded by the huts of 20 Andamanese. Nearly a mile from the beach can be seen a 6 mile island covered with dense jungle. If local tribesman believe the island is evil, and only Cynthia has returned alive from it. The inhabitants of the island rarely leave, and when they do it is only to kidnap and kill. * Cynthia Baxter - Cynthia is a large woman, big-boned and slightly overweight. She is very near-sighted, and her voice is high pitched and squeaky. Cynthia will act hospitable to strangers, but she is highly suspiscious of those who would appear at this critical moment in her life. She lost her mother at 8 year old. She nearly died from a spider bite and 12 and began thinking of becoming a catholic nun. Instead, with the encouragement of Uncle Julian, she studied medicine in college. Julian helped her get through medical school, and she is deeply grateful to him. To impress Julian, she became a medical missionary and travelled to the Adamans in 1913. In 1918, she was kidnapped by the Tcho-Tchos from the small island across the strait. The Tcho-Tcho priest saw the mark of the spider on her, and trained her in the nature of Atlach-Nacha, their horrible spider god. Cynthia never had a strong personality and was easily brainwashed and converted to the terrible worship. The priest has convinced her that she has a special detiny (which is horribly true), and now only Julian might be able to turn her from her path. * Cynthia's Journal - In her hut is a journal that describes her facination with the teachings of the Tcho-Tcho priest and her belief that a new sun shall appear in the sky. The journal describes the arrival of Silas Patterson and his interest in the Tcho-Tcho rituals. She also writes of her mixed feeling about sending the 'present' to her father, but the priest insists that he cannot be allowed to interfere.") "Tcho Tcho Island" (scenario :name "Tcho Tcho Island" :summary "* Kidnapping - The arrival of strangers, convinces the priest that the moment has come. He sends men in the night to meet with Cynthia, and she eagarly goes with them. The local Adamanese raise an alarm and many flickering torch lights can be seen from the island. * Tcho Tcho Tribesman - The Tcho Tcho are more asian in appearance than the average Adaman. They are all violent fanatics and will hunt down and capture anyone who invades their island. There are 10 males, 6 females, and 3 children on the island. * Tcho Tcho Priest - The Tcho Tcho priest leads his tribe. He is a long time explorer in the Dreamlands and there he has the form of a twisted dwarf (reflecting his personality). In combat, the priest stands back and casts spells (Dread Curse of Azathoth and Withered Limb) while his comrades fight and die. * Fossil Quarry - An exposed rock in the jungle is covered with fossils of prehistoric arthopods including millipedes, scorpions, and spiders. This rock is the source of the spider from the Baxter home, brought to life by the Child of Atlach-Nacha spell cast by the Tcho Tcho priest. A single enormous spider six-feet across can be found here, and the priest will animate this spider if he gets the chance. Note: Any damaged fossil cannot be reanimated. * Obelisk - In a clearing near the villiage rises a black stone, twenty foot monolith. Though weathered by time, precise geometric designs are clearly visible. These designs are are disturbing to the eye and create a sense of vertigo. Out of the corner of one's eye, they seem to swirl and pulse. If one listens to the stone an almost impercetible rhythmic throbbing can be heard. Crude stones are set up around the obelisk covered in primitive drawings of spiders chasing and consuming tiny humans as shooting stars fall from the heavens. * Metamorphosis - On the night Cynthia is 'kidnapped', she goes directly to the Obelisk. There the tribesmen have gathered to begin the ceremony. Near the Obelisk are bound the 2 escaped killers that Major Nichols warned of as well as any other captured males. Cynthia stands before the altar, removes her clothes and sways to the Tcho Tcho songs. Eventually, she stops, bends over, and the skin along her back splits wide open, revealing a shiny black surface that pulses horribly. As the wrinkling empty skin of Cynthia Baxter is pushed forward, multple legs spill out from the discarded molt, waving feebly, as the huge spider-thing pushes clear. The priest dones Cynthia's discarded skin and wears it like a coat. * The Wedding Feast - Cynthia's new form is not hard enough to move freely until dawn. In the meantime, she is ceremonially wedded to the male sacrifices before she drags herself to each one and begins eating the flesh from the victims head. She finally sucks the brains out through the eyesockets. Each feast takes 20 minutes, and after each is consumed, the still animate corpses with exposed skulls are freed and shamble mindlessly off into the forest. The Onge people sense the threat of the Tcho Tcho and attack the Tcho Tcho. The Tcho Tcho defend Cynthia and the priest as they escape. The Onge will not pursue the Tcho Tcho into jungle at night. Instead the free any remaining prisoners and wait for light. The priest makes his way to the prehistoric rock and casts Child of Atlach-Nacha to animate the giant spider there. * Daughter of Atlach-Nacha - At dawn, Cynthia is fully formed and begins a 3 hour trek across the island to the Caverns of Atlach-Nacha. She is accompanied by hordes of spiders that crawl around and over her. Any who follow will constantly be treading on spiders and have spiders dropping upon them from the trees. Their bites are painful but are not dangerous. * Caverns of Atlach-Nacha - Cynthia travels to a 20 foot cave opening where her father dwells. If she is pursued, she will wait in ambush for her pursuers. If the investigators are foolish enough to continue searching, they will travel through twisting caverns deeper and deeper for over an hour before the cave opens into a vast chasm nearly filled with thick, ropy webs. Continued activity attracts [Atlach-Nacha] himself who resembles a hideous, black, hairy spider with a strange, remotely human-like face with little red, hair-rimmed eyes."))) "Ulthar and Beyond" (section :name "Ulthar and Beyond" :scenariomap (scenariomap "Exploring Ultar" (scenario :name "Exploring Ultar" :summary "* Phillip Baxter's dream journal leads the investigators to start exploring [Ulthar] in the Dreamlands. * Phillip's Dreamform - At some point someone will notice that Phillip Baxter is watching them from a distance. If anyone approaches, his head disappears in a cloud of mist and then he vanishes. * Procession of Burgomaster Kranon - Trumpets announce a parade throught the streets for Burgomaster Kranon. The Burgomaster is immediately recognizable as Matthew, Julian Baxter's ward. In the Dreamlands, his emotional and mental handicaps don't exist. If the investigators can get an audience, Krannon can be convinced to help them, both here and in the real world. * Cthaat Aquadingen - At the [Library at Ultar], the investigators can search for the [Cthaat Aquadingen]. The book is bound in soft, human skin, still pliable, and always moist from perspiration welling from its pores. Simply handling the book is creepy. Within the book can be found a quote: The stars fall, the beast bred of stone rampages, and a time of great change comes. Deep within perfumed Kled, where life turns to death, the Watcher in the Glade knows the time and place of the coming. Chinese notes are written in the margin of the page. If they are translated, they comment that the Pnankotic Manuscripts mentions the Watcher in the Glade. * Pnakotic Manuscripts - If read, the manuscripts describe that the Watcher in the Glade is the Great Old One Yibb-Tstil. Priests of Yibb-Tstil meet at the great pool in front of the ivory palace. Priests then grovel on hands and knees before Yibb-Tstil and must not look upon him. priests of * Carnival - While leaving Ultar, the dreamers chance upon a carnival tent. A barker announces that they have the only captive Colossal purple spider from the distant north. Admission is a dime or anything of value. The interior of the tent is larger than the outside would suggest, and in a barred cage at the back of the tent is a purple spider the size of a car hovering over the dessicated body of a sheep. If anyone tries to talk to the spider, it speaks in a thin, dry voice. It is, however, not helpful and eventually hisses. The barker comes running in and ushers them out. If they want to speak more, the barker says: 'It is not up to me you see'. The spider then says: 'After all, I am the master here.' If the barker is questioned about the dwarf who works here, he tells them the dwarf quit some time ago and headed to Kled.") "Journey to Kled" (scenario :name "Journey to Kled" :summary "* The perfumed Jungle of Kled can be reached by traveling North from the Enchanted Wood to Thran. At Thran a elephant caravan can be taken over land or a river boat can be taken to Hlanith where passage on a ship can be found to Kled. * Numerous ivory palaces dot the jungles. If the dreamers ask about the great pool mentioned in the Pnakotic Manuscripts, the guides recognize it as the Palace of the Sacred Fount. * Palace of the Sacred Fount - The palaces is one of the less feared locations, though it is still avoided. As with other ivory palaces in Kled, the palace is somehow physically in perfect condition though the rooms are empty and the floors are thick with dirt and leaves. The smell in the area is a unique musky odor that immediately reminds the dreamers of the smell during the dream of the death of Phillip Baxter. The front hallway is an atrium where rain water falls to collect in a rectangular pool. At the far end of the pool stands a huge jade statue of an evil-looking hyena. The statue leers with gaping jaws over the pool. The apparently bottomless pool is dark and filthly from rotting leaves, a peculiar oily film covers its surface. Despite its appearance the pool is not dangerous. * Phillip's Ghost - A distant cackling sound can be heard. Following the sound, the dreamers find a stairway going down many flights with torchlight below. At the bottom of the stairs, the dreamers find a torchlit hallway with a cell at the end. Within a cackling dwarf uses a human femur to visciously beat a glowing, partially headless, staggering figure. The dwarf is hunched and misshapen and has a terrible, inhuman face. Its lips are drawn into a snarl over three-inch fangs. Its eyes are glowing red pits. The figure is the dreamform of Phillip Baxter. If he is rescued, his headless form is mindless and helpless. The dwarf with not help under any circumstances. * Path to Yib-Tstll - Behind the Palace the jungle becomes stunted and twisted, tree trunks are bent at odd angles, and a general sense of disease pervades the growth. Futher on, alien foliage begins to appear including quivering fungi and twisting weird ferns. Further still, a great stone arch can be seen surrounded by dead trees. Through the arch can be seen another alien jungle evidently on a far-off world. The arch is clearly a permanent gate, and plants and insects can be seen crossing both ways as if the arch were simple stone. * World of Yib-Tstll - Beyond the arch, the sky is dark green and starless. Swollen insects swoop ominously from deadly-looking blooms. Flying horrors with veinous wings fly high above. Not far away, a vast, black clearing is visible. * The Clearing - The clearing is roughly a mile across. The black surface is composed of fine flakes like snow, but it is warm to the touch. If the dreamers heed the Pnakotic Manuscripts, they should crawl on hands and knees across the black clearing facing the ground to avoid actually seeing Yibb-Tstll. As the dreamers near the center, Yib-Tstll rises suddenly from the black clearing. Dreamers may attempt to avert their gaze or suffer the madness induced by his presence. * [Yibb-Tstll] - The massive being speaks telepathically with a booming alien voice. Each dreamer must make a [Spirit] test or Yibb-Tstll will ignore that person completely. If the test is completely failed, Yibb-Tstll will touch the person and impart its feared reversal. Yibb-Tstll is suprisingly helpful and will answer questions about the Cthulhu Mythos and things of cosmic import including Nemesis, but he will only give a single answer on a subject and will not clarify himself. * Reversals - Any dreamer who suffers a reversal will instantly be driven insane or his human form or dream form will be permanently killed. If an insane dreamer is brought to him, Yibb-Tstll will fully restore his sanity. If the dwarf is present, Yibb-Tstll will reverse him, and his dream form will change into the Tcho-Tcho priest while his real form will become the dwarf. If the headless form and the ghoul's page are brought before him, he touches them both and Phillip Baxter's dream fomr is restored, but back in the real world, Silas Patterson has become a mad imitation of Phillip Baxter. * Web of Eibon - Yibb-Tstll instructed Eibon in his construction of the Web of Eibon spell with which he planned to freeze time around Nemesis (and Earth) to prevent Earth's destruction. Yibb-Tstll knows his efforts will fail in the end, but it provided the instructions anyway.") "The Quest of Ghouls" (scenario :name "The Quest of Ghouls" :summary "* Ghoul Dream - After the events at St. Augustine and the Dreamlands, one night the investigators find themselves having hazy dreams of the graveyard at St. Augustine. Suddenly, the dream sharpens and 3 figures start crawling from an open grave: ghouls like the ones that may have been seen at St. Augustine. The ghouls stinking breath reeks of death and decay. The ghouls do not appear to be hostile, instead they start urging the investigators to come with them to see the wise man and there is little time left before dawn. A terrific stench issues from the open grave. Below rotten bits of wood and fabric lie on the grave floor and a narrow, twisting tunnel leads into darkness. The ghouls gibber that they must hurry and start climbing down the hole. If the dreamers don't follow the tunnel begins to slowly close. If the dreamers still do not follow, they awake normally, but the opportunity to learn more has been lost. If they do follow, the tunnel collapses behind them and they will have to follow the ghouls forward. * Grath the Leader - Young and handsome by ghoul standards, Grath leads the group and most often speaks with the dreamers. He had a riding zebra, but the group got hungry and ate most of it. * Mairpl the Big - Mairpl is much larger than the others, speaks little, and wields a club in battle. * Ug the Hungry - The worst and most degenerate of them, Ug speak no human language and spends most of his time on four legs. He avoids the humans, but can often be seen staring and drooling over them. He possess no threat, but he likes to fantasize. * The Page - At the end of the tunnel waits the Page. The Page is wrapped in a dirty brown cloak with his face hidden. His body is bent forward and staggers under the weight of an enormous tombstone chained to his back. The ghouls order the Page around and play viscious practical jokes on him. Below the hood can be found Sila Patterson's face, though it shows no recognition. Upon the tombstone is written 'Phillip A. Baxter 1865-1925.' The Page is, of course, the dream form of Silas Patterson, suffering from the guilt of the death of his friend. * The Quest - The ghoul gang seeks to rescue a female ghoul Horella who has disappeared. The ghouls are fairly melodramatic about how beautiful she is and how they must rescue her from whatever peril she is in. To find Horella, they seek the insight of the wise Man of the Mountain. This man supposedly is very wise and will answer any questions. * Social Ettiquette - After a few hours of travel, the ghouls stop for nourishment. They squat down and rummage through their stained sacks. They produce vaguely familiar cuts of raw meat with tinges of green along with sour wine. The source of the meat is all too obvious. The ghouls like their food well-aged and, out of respect, offer their guests the oldest pieces. The bags also contain the remains of Grath's zebra which the ghouls are more than happy to hand over, leaving the tastier pieces for themselves.") "Journey to the Stony Desert" (scenario :name "Journey to the Stony Desert" :summary "* The Underworld - The ghoul tunnel leads to the Underworld. Once in the Underworld, the tunnel leads upward for 3 days through the center of a huge mountain. Many ohter tunnels branch off, but the ghouls seem to know their way. Drinking water oozes down the rock wall. Bloated fungi, pale, foot-long crickets, and eyeless carnivorous rats server as food. Most of the trip is in complete darkness. Occasionally, luminescent fungi provide a tiny amount of light. The tunnels connect the Vaults of Zin where dangerous ghasts, serpent folk, or worse may be encountered. Eventually, the group exits the Underworld at the border of the [Stony Desert]. * [Stony Desert] - Grath says the journey eastward across the desert will only take a few days. They seek the sacred mountain [Mt. Hatheg-Kla] where a holy man can tell them where fair Horella can be found. * Walker of the Stony Desert - A few days journey into the desert, the dreamers see, off in the distance, a man leading a horse. They will meet in about an hour. As they draw near, it is clear that the man is enormous, towering over the horse. He is 8 feet tall, 400 lbs, and dressed all in black. His horse seems old and tired and lags behind being pulled by a rope. The horse is an elderly nag with cataract films covering both eyes. The ghouls are terrified of the man and will not approach. He does not stop walking unless he is attacked. This being is the dream-form of Eibon. the Hyperborean wizard who, like the spell he cast to capture Eibon is bound to travel back and forth across the Stony Desert. A legend says that one day he shall find a way out of the desert. On that day, the horse shall be healthy and the man shall then ride the horse. Where he goes then, he does not know for the horse shall be the master. He freely discusses his trip across the desert, Mythos knowledge, Nemesis, and his spell the Web of Eibon that Yibb-Tstl taught him. He now knows that stagnation is worse than destruction by Nemesis. If asked about Nemesis, he produces a large, shining jewel from the air and offers it to the dreamers. He says simply that all brave souls will know what to do when the time comes. Any attempt to attack Eibon results in him disappearing and reappearing far in the distance continuing his endless travels.") "The Man on the Mountain" (scenario :name "The Man on the Mountain" :summary "* [Hatheg-Kla] - A day or two after meeting the Walker, the slabs become more numerous. As they approach Mt. Hatheg-Kla, smoe of the slabs are still turned upright in the ground and bear traces of ancient carvings. Soon it becomes obvious that they are travelling in a titanic graveyard. * Climbing Hatheg-Kla - Mairpl assures them that this is the only way to see the holy man and ask where Horella is being kept. The other ghouls will wait here while Mairpl and any brave dreamers attempt the climb. The way up seems somewhat trecherous and will require a [Climb] roll to succeed. If that roll fails, a second [Climb] roll must be made to catch yourself before you fall to your doom. Unfortunately, Mairpl fails both rolls and falls far below splattering on the rocks and potentially injuring those below. After a short period of remorse, Grath and Ug gather some of the larger pieces and add them to their provision bags. * The Man on the Mountain - Near the skull tree, an old, bearded man in a yellow robe sits on a heap of corpses plundered from the cemetary below. He deftly uses a silver hatchet to cut pieces of the corpses and flings the dripping gobbets above his head as the circling Byakhees swoop down to catch them from the air. As the dreamers approach, the Byakhee scream and chatter, but the man pays them no mind. If hailed, he smiles warmly, and if asked questions he will honestly answer based on his vast knowledge of the Dreamlands and the Mythos. Knowledge comes at a price, so before he answers each question, he hurls his hatchet at the questioner which instantly slices off an appendage, starting with a hand. The Byakhee swoop down and eat the tidbit. The wound does not bleed and only hurts for a moment. The damage is permanent in the Dreamlands, but each time a dreamer returns to the Dreamlands one wound is healed. If asked, he tells that Horella is at the castle of Bombel, the giant, in the hills to the east of the [Stony Desert]. Anyone foolish enough to attach the man, is attacked by the Byakhee, rended to pieces, and eaten. * Cave of the Child God - Behind the tree, the shear face of Hatheg-Kla rises another 1000 feet before the cave entrance. A flight of steps, each one foot wide, criss-crosses back and forth up the slope. Anyone nearing the opening hears a deep sobbing and suckling sound as if from some enormous infant. The cave itself is completely black and no light will penetrate it. If anyone enters, a few seconds later, horrifying screams of agony echo from the cave accompanied by sucking, popping sounds and a soft, cooing voice. The screams continue for almost a minute before they are choked off by a gurgling, bubbling sound and a huge spray of blood that shoots from the cave. The character's dream-self is dead, and his waking self has been driven mad by the horrific dreamform of Nemesis.") "Castle of Bombel" (scenario :name "Castle of Bombel" :summary "* To the Castle - The Man on the Mountain has directed the dreamers toward a castle to the east of the [Stony Desert]. The trip takes a few days through the desert and another day throught wooded hills. * The Castle - The rude, three-story castle is in a clearing. It has a single window at the top and a door at the bottom. * Bombel - Near the castle, sitting on a boulder is a huge [Gug]. At the first sign of intruders, it rushes to the attack. * Horella - Shortly after Bombel starts fighting, a foul-looking, scaly ghoul appears in the window. This is Horella, and she immediately begins hurling vile insults and rocks at the Gug. The ghouls are cheered on by her presence, but if someone listens they realize that she is exhorting Bombel to kill the intruders. Dreamers may also notice previous bruises on Bombel's head. If Bombel falls, Horella turns her insults and rocks at her would-be rescuers. Any remaining ghouls grab a chain from their bags, say 'To the rescue', capture Horella, and drag her bumping down the stairs. The ghouls bid farewell and will offer the page as a reward for the dreamers help."))) "Nemesis: Spawn of Azathoth" (section :name "Nemesis: Spawn of Azathoth" :scenariomap (scenariomap "Trip to Darjeeling" (scenario :name "Trip to Darjeeling" :summary "* Francis Wilson - Francis is one of the Tuesday Night Academy. He was at Phillip's funeral and he has been in Russia researching the Tunguska Blast and its possible relationship to Nemesis. He has made some discoveries and sends a telegram to Judge Braddock who forwards it along. The message says to leave immediately for Darjeeling, India and to meet Colonel Hugh Huntley of the British Foreign Office. * Darjeeling - * Colonel Hugh Huntley - Francis has arranged with the British Foreign Office to allow the investigators to travel to Lhasa, Tibet to aid him in his research. Colonel Huntley provides them with papers and can help arrange transport to the British Legation in Lhasa where Francis Wilson is staying. * Road to Lhasa - The 400 mile journey to Lhasa can only be taken on foot or via horse-drawn caravan. The route is heavily trafficked by pilgrims, traders, smugglers, and spies. The journey takes weeks and is alternately terrifying, boring, facinating, cold, and misery-making. * Lhasa - Lhasa is a sprawling squat city with no building taller than 2 stories except for the Potala, the home of the Dalai Lama. The Potala is a bulky, stone structure that is imposing but unattractive. * The British Legation - The Legation is on the outskirts of Lhasa. Here Francis Wilson has residence. He seems thinner and more stressed than at the funeral. He has been researching the Tunguska Blast and mad Rasputin's apparent presence at the blast. After piecing together his research, he illegally entered the Soviet Union and stole parts of Rasputin's journal. He then fled to Tibet through Mongolia. He has been translating sections since then. He claims that Rasputin met someone called Eibon in his dreams, and that this Eibon told him of his own death. Eibon also warned him of a dark star that would fall from the sky. This Eibon gave him a stone that he used to destoy the star. He further foretells another dark star that would fall long after Rasputin's death in Tibet. Francis guesses that the location may be near an abandoned temple roughly 300 miles north of Lhasa. He has found a guide Lha-bzang who studied in the temple as a child. * Lha-bzang - Francis plans to travel there soon with a native Tibetan, Lha-bzang. Lha-bzang is a domden, a Tibetan mortician. A skilled Anthropologist may recall that Tibetan funeral rites involve the corpse being hacked to bits by the axe-wielding domden and then fed to ravens or vultures. Lha-bzang's dream form is the holy man on the mountain. Lha-bzang is going on the journey to expand his spiritual understanding. Unfortunately, he has also been paid off by a Soviet spy. If questioned about the temple, he says he was sold as a slave as a child but he fled the temple when he realized that their teachings were not Buddhist. * Ivan Dorkyev - A Soviet spy who has been tracking Francis down since Francis stole Rasputin's journal in Leningrad. He is over 6 feet tall and is dressed in the tattered robes of a yak-herder. Beneath, he carries two pistols, a knife, and a bandolier of ammo. He hides at his camp in the mountains near the ruins waiting for Lha-bzang to bring Francis. * Trip to the Ruins - Lha-bzang leads the expedition 300 miles through a tangle of steep mountain passes, brackish lakes, and arid valleys. On the way, they encounter kay-herders, small mountain monasteries, and moutain farms. About 2 weeks in to the trip, while camped, a minor earth tremor shakes everyone awake. A week laker, they arrive at the Nenmka temple, sitting on the slope of a mountain. * The Temple - The temple is now just a windswept ruin. A Mythos knowledge test reveals that the fallen columns have inscriptions used to invoke Hastur. The Soviet spy has watched the investigators approach and waits in hiding nearby. Lha-bzang finds a section of flooring with symbols on a tile. Here he will perform a ceremony to discover more about Nemesis. * The Ceremony - Lha-bzang sits and lights a clay pipe containing a tarball of hashish. He passes the pipe around and then begins a droning wail. After 30 minutes, he retrieves a knife and a freshly severed human hand from his bag. He cuts his own palm, smears blood on the hand, and binds the cut. He then passes the knife to each person to do the same. If any will not, he gestures for them to leave the prayer circle. After another 5 minutes, the hand twitches and then turns toward Lha-bzang. He asks where can they find the Seed of Nemesis. The hand then crawls to a symbols on the ground indicating 'not far' and 'north-east'. Additional questions may be asked but each question causes the questioner to receive a minor Sanity Wound. Answers are always very short, and the hand only knows local events. The Soviet spy waits nearby but has accepted Lha-bzang's demand to allow the ceremony to complete before acting. * Confrontation - Just as the ceremony is concluded, Ivan steps into the room brandishing his pistols and warning everyone to stay where they are. He is deadly serious and will gun down anyone who makes sudden movements. Ivan plans to take Francis back to the Soviet Union to stand trial for the many laws he has broken and suspiscion of being a spy. He has no knowledge of Nemesis and has nothing but contempt for the superstitious, religious ritual. If given the chance, he will tie up the investigators and then take Francis and Lha-bzang (his ally) in the morning. * The Fallen Seed - In the early morning, everything changes. Along with the bright sun, a halo forms in the sky, though this halo does not surround anything visible, yet. Dorkyev is thunder-struck; he and Francis exchange words in Russian. Ever the pragmatist, Dorkyev frees everyone and begins a descent toward the valley under the halo. Within the valley, the halo light is flat and oily, and its color melts through shades of yellow and green as though through a prism. Lha-bzang vomits and flees. Suddenly, all present feel their hair stand on end as the halo darkens and takes on a dull gun-metal hue. The slight wind disappears and everything is silent. Then, high above a sizzling sound grows in intensity. Suddenly a hideous scream is heard followed by a thunderous blast that knocks everyone off their feet. Everyone suffer partial hearing loss and if a check versus [Body] is completely failed, the loss is permanent. A blinding light rips through the sky and crashes to Earth over the valley ridge that Lha-bzang crossed. A massive explosion rocks the ground and a curtain of flame passes overhead. If not for the ridge, everyone would have been incinerated along with Lha-bzang. * Crater - Peeking over the ridge, a 20 foot crater can be seen with a sickly, green light emanating from it. Wilson frantically says that Eibon's symbol must be placed on the Seed or it will destroy the Earth. Those who have witnessed the Seed in Montana know that any who approach the Seed will die: quickly or slowly. If no one volunteers and no one has a plan, Dorkyev swears, snears of their cowardice, and takes the jewel to the crater. Alas, just as he climbs the crater and is exposed to the light, he screams and immediately melts into a puddle before everyone's horrified sight. Worse, he drops the jewel into the crater. If someone uses a mirror, they can see the jewel near the Seed which is slowly melting the rock around it with its terrible power. Wilson adamantly refuses to go (and will melt if pushed), so someone will have to sacrifice themself or watch the Seed sink into the ground and doom the world. * Eye to Azathoh - The doomed person must resist the corrupting rays, retrieve the jewel, and then touch it to the Seed. Nothing happens for a few moments, then the Seed suddenly shimmers and disappers with a sharp pop. The Seed is gone but a black, marble tunnel lies in its place. The jewel lies on the ground before the tunnel. Hyperborean symbols line the tunnel. This is Eibon's work. When the jewel crosses the threshold, it suddenly reverts to the heavy glowing stone from the Dreamlands. There is a steady breeze down the tunnel and a light can be seen ahead. After 100 meters, a room 250 meter, circular opens up. The room is the exact same shape as the jewel. The breeze has become a howling gale ending in a 5 meter gateway in the center of the other end of the room. The gateway in the center of the oval room gives the impression of an eye looking out into space. * Gateway - The gateway can be reached by a ramp that slopes upward 50 meters. Stars can clearly be seen through the opening, and it is clear that the gate leads directly into outer space. Anyone who has been exposed to the Seed radiance, has an intense desire to go through the gate and join Nemesis. Anyone approaching the gate will need ropes or climbing skill to cling to the reliefs on the floor or be sucked into oblivion. Also, the jewel gains weight as it approaches the gate, as if it is resisting, eventually becoming over 100lbs. If someone can get close or has binoculars, that person will see that the area of space beyond the portal is filled with criss-crossing black lines forming a faint web. Someone may recognize the black substance and The Black associated with Yibb-Tsll. This is Eibon's Web taught to him by Yibb-Tsll. Within the web, an observers intuitively senses that time is slowing to a crawl. Further, the web is creeping through the portal into our world. This is how mad Eibon hoped to save mankind, by freezing us forever in time, so Nemesis can never destroy us. * The End - If the jewel is brought near the gate, in addition to its increased weight, the Black lines start to reach toward the jewel. Simply hurling the jewel through the portal will gather all the webs onto the jewel which breaks the spell of Eibon. If anyone returns to the Stony Desert, they will no longer find Eibon there. The world will no longer be trapped forever in frozen time, but Nemesis will still return some day to end the world, but it will not be today.")))) :unitmap (unitmap "Julian Baxter" (unit :name "Julian Baxter" :summary "* Julian Baxter is a priest and brother of Phillip Baxter. He is confined to a wheelchair and is heavily dependent on his son Matthew. Before becoming a priest, Julian was educated as a psychotherapist. He has traveled the world on missions, but since becoming crippled he has returned to his home town. * Julian has a copy of the Book of Eibon in his library. It has a section where Eibon fortells the end of mankind with the coming of Nemesis. Eibon was obcessed with preventing man's destruction and spent the rest of his life developing a ritual call the Web of Fate that would supposedly save mankind when the time was right. Eibon claims that as Nemesis approaches, the Web of Fate will draw together seemingly unrelated events, defeat Nemesis, and create an eternal golden age for mankind. The reading clearly shows Eibon's progressive descent into madness.") "Matthew Baxter" (unit :name "Matthew Baxter" :summary "* Matthew is the adopted, grown son of Julian Baxter. He is strong, but he is also mute and aeuteistic. This combination makes him appear simple, but he is actually quite competent. He is an avid dreamer where there is no trace of his aeutism. In dreams he is a city council member in Ultar. He can be a strong ally, but he must be approached in the Dreamlands, as it is impossible to gain his friendship in the real world.") "Silas Patterson" (unit :name "Silas Patterson" :summary "* Silas is a friend of both Phillip and Julian Baxter, a past professor at Brown University, a former antrhopologist, and a member of the Tuesday Night Academy. He is quite fit considering his age. * Silas met Julian Baxter in the Congo in 1904 and became friends. In 1919, he met Cynthia Baxter, Julian's niece in the Andaman Islands. In 1920, he came to Providence where he met Phillip and joined the Tuesday Night Academy. Phillip soon after helped him get a teaching position at Brown. * Silas practices a form of cannibalism he learned in New Guinea at the instruction of a degenerate Tcho-Tcho priest. The ceremony involves eating the brains of a recently slain primate to gain extended life. This habit made him lose his job at Brown when it was discovered that he was stealing monkey corpse from the lab. He has since made an arrangement with a local undertaker with low moral character, Alvin Beswick. Silas told Beswick that he was performing brain research, but Beswick is just concerned with the money. Beswick allows him access to closed coffin corpses for a price. He was given access to Phillip's corpse and noticed the small bite marks on the scalp. While devouring the brain, Phillip suddenly lurched back to consciousness and thrased wilding before dying. Silas was terrified and is wracked with guilt over his friend's death. He is maintaining his sanity through denial, and if he is forced to confront what he has done, he will retreat inward and become catatonic and need to be institutionalized. * Silas is friendly, but he not only knows his role in Phillip's death but is reasonably sure that Cynthia was involved. He is planning to return to the Andaman Islands to investigate Cynthia's activities and also because it is getting hard to hide his youth in Providence. * In Sila's desk can be found notes for his next book, about cannibalism. The notes indicate that Silas is unbalanaced. In his files can be found the lease to a farmhouse. * Investigating the farmhouse, leads to the table where Phillip met his end. No attempt has been mde to cover up the crime."))))))))
nx/tactics/books/horror / chapter_kingdom_of_the_gods
Description:
Function Name:
  • chapter_kingdom_of_the_gods
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_kingdom_of_the_gods : base/chapter (chapter :name "Kingdom of the Gods" :sectionmap (sectionmap "Kingdom Undead" (section :name "Kingdom Undead" :itemmap (itemmap "Resurrection Herb" (item :name "Resurrection Herb" :summary "* This rare herb is believed to return the dead to life. Actually, it is the tiny worm eggs that grow on the plant that infect the host and turn them into a zombie. * Infection - The worms can infect a living host if worms, their eggs, or infected flesh are eaten (even cooking is not a guarantee of safety) or the worms transfer via an ghoul bite. A recently deceased host may also be infected if the eggs are injected directly into the brain. * Transformation - Once infected the worms rapidly multiply by division and move through the body. Once fully infected, the worms act as replacement nervous system, stimulating the cells and retarding cell death. The worms stimulate the primitive sections of the brain to cause it to seek more hosts for the worms. The When they first activate the body, its movements are jerky and extreme, but the body quickly adapts and becomes quite agile over time. * Pack - The worms are a colony creature and are aware of nearby worms in infected creatures. They, therefore, do not attack other infecteds and tend to collect together in groups. * Intelligence Level - Though they are savagely murderous and largely fearless, they do retain an animalistic survival instinct and take shelter and avoid fire and heat which would kill their worms.")) :unitmap (unitmap "Kingdom Ghoul" (unit :name "Kingdom Ghoul" :summary "* Strengths: ** Agility and endurance: In some scenes, they were able to bring down a full-size horse and nearly match the speed of one for short, sustained periods of time. ** Short incubation period: It takes about 15 seconds to 1 minute for a victim to turn into an undead zombie. Making them effectively at multiplying and overwhelming urban centres. However, this can vary. One main character was able to resist the infection for over 2 minutes. ** Durability: It has been observed that even if their internal organs are exposed or took a direct stab from a sword to their chest, this doesn't kill them. ** Heightened sense of smell: A fresh drop of blood from an uninfected human can attract other infected bodies many meters away. * Weakness: ** Decapitation: They're capable of taking damage that would be fatal to most men. It was found that decapitation or destruction of the head is the most effective in killing them. ** Aversion to water bodies: It has been observed they will generally avoid travelling on water bodies. They have no ability to swim, and when they are pushed into deeper waters, they will immediately sink to the bottom. ** Heat: They have been observed to immediately seek shelter when the day begins to break in order to escape the heat of direct sunlight. As a result, during spring or summer, they are only active during the day and hibernate at night. ** Fire: Fire can be used to keep infected at bay. ** Reduced vision: The milky eyes limits their vision to basic movements, so they rely on smell and hearing to hunt. ** Blood: Blood can be used to distract or bait the zombies to behave in certain ways. Although dangerous, using fresh blood on rooftops is shown to be an effective means to lure zombies if needed."))))))
nx/tactics/books/horror / chapter_night_of_the_living_dead
Description:
Function Name:
  • chapter_night_of_the_living_dead
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_night_of_the_living_dead : base/chapter (chapter :name "Night of the Living Dead"))
nx/tactics/books/horror / chapter_serial_killers
Description:
Function Name:
  • chapter_serial_killers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_serial_killers : base/chapter (chapter :name "Serial Killers" :sectionmap (sectionmap :Freaks (section :name "Freaks" :unitmap (unitmap "Backwoods Crazies" (unit :name "Backwoods Crazies" :reference "* Deliverance, Hills Have Eyes, Texas Chainsaw Massacre"))) "Unstoppable Killer" (section :name "Unstoppable Killer" :reference "* Friday the 13th, Nightmare on Elm Street"))))
nx/tactics/books/horror / chapter_deadly_beasts
Description:
Function Name:
  • chapter_deadly_beasts
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_deadly_beasts : base/chapter (chapter :name "Deadly Beasts" :reference "* Jaws, Phase IV, Them"))
nx/tactics/books/land_sea_and_air
Description:
Package Name:
  • nx/tactics/books/land_sea_and_air
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_land_sea_and_air_overview, chapter_land_sea_and_air_unit_types, chapter_land_sea_and_air_rules, chapter_land_sea_and_air_terrain, chapter_maps
Source Code:
  • (package nx/tactics/books/land_sea_and_air :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Land, Sea and Air" :image "LandSeaAndAir.jpg" :chaptermap (base/chaptermap "Land, Sea and Air Overview" (chapter_land_sea_and_air_overview) "Land Sea and Air Unit Types" (chapter_land_sea_and_air_unit_types) "Land Sea and Air Rules" (chapter_land_sea_and_air_rules) "Land, Sea and Air Terrain" (chapter_land_sea_and_air_terrain) "Maps" (chapter_maps) ))) (func chapter_land_sea_and_air_overview : base/chapter (chapter :name "Land, Sea and Air Overview" :sectionmap (sectionmap "Why Tactics:Land, Sea and Air?" (section :name "Why Tactics:Land, Sea and Air?")))) (func chapter_land_sea_and_air_unit_types : base/chapter (chapter :name "Land Sea and Air Unit Types" :sectionmap (sectionmap "Land Units" (section :name "Land Units" :summary "* [Land Map] * [Standard Scale] Hierarchy * Fireteam - 4-5 infantry led by a Lance Corporal or Sergeant * Squad - 2+ Fireteams (8-16) led by a Corporal or Staff Sergeant * Platoon - 2+ Squads (25-60) led by a Warrant Officer or Lieutenant * Company - 2-8 Platoons (70-250) led by a Major * Battalion - 2-6 Companies (300-1000) led by a Lieutenant Colonel * Regiment - 2+ Battalions (2000-3000) led by a Colonel * Brigade - 2+ Regiments (3000-5000) led by a Brigadier * Division - 2-4 Brigades (10,000-20,000) led by a Major General * Corps - 2+ Divisions (30,000-50,000) led by a Lieutenant General * Army - 2+ Corps (50,000-60,000) led by a General * Army Group - 2+ Armies (100,000+) led by a General or a Field Marshal * Theater / Front - 10+ Army Groups (1,000,000+) led by a General or Field Marshal" :sectionmap (sectionmap "Modern Land Vehicles" (section :name "Modern Land Vehicles" :unitmap (unitmap :Motorcycle (unit :name "Motorcycle"))))) "Naval Vessels" (section :name "Naval Vessels" :summary "200% Load, 75% Speed, -1 Handling" :sectionmap (sectionmap "Archaic Naval Vessels" (section :name "Archaic Naval Vessels" :summary "* [Ocean Map] * [Standard Scale] Hierarchy * Flotilla - A small number of non-capital vessels, usually of the same or similar types led by a Flotilla Admiral or a Commodore. * Squadron - A small number of vessels including capital ships led by a Rear Admiral or a Commodore. * Task Group - 2 Squadrons led by a Rear Admiral * Task Force / Battlefleet - 2 Task Groups led by a Vice Admiral * Fleet - 2 Task Forces led by an Admiral * Navy / Admiralty - 2 Fleets led by a Fleet Admiral" :rulemap (rulemap :Broadside (rule :name "Broadside" :image "Rules/Images/Broadside.png" :summary "* Archaic ships mount large guns on each side of the ship and must turn sideways to attack targets. All attacks from such guns may only fire directly at 90 degrees from the front of the ship.")) :unitmap (unitmap :Canoe (unit :name "Canoe" :summary "* Mini, Stripped, Unpowered") :Catamaran (unit :name "Catamaran") "Deep Sea Explorer Submarine" (unit :name "Deep Sea Explorer Submarine") :Dinghy (unit :name "Dinghy") "Fishing Boat" (unit :name "Fishing Boat" :summary "* Medium, Stripped, Sail") :Frigate (unit :name "Frigate") :Galley (unit :name "Galley") :Galleon (unit :name "Galleon") :Kayak (unit :name "Kayak" :summary "* Mini, Sport, Stripped, Unpowered") "Merchant Ship" (unit :name "Merchant Ship") :Minisub (unit :name "Minisub") :Outrigger (unit :name "Outrigger") :Rowboat (unit :name "Rowboat" :summary "* Light, Stripped, Unpowered") "War Barge" (unit :name "War Barge"))) "Modern Civilian Vessels" (section :name "Modern Civilian Vessels" :unitmap (unitmap "Cruise Liner" (unit :name "Cruise Liner") "Hydrofoil Passenger Ship" (unit :name "Hydrofoil Passenger Ship") "Jet Ski" (unit :name "Jet Ski" :summary "* Light, Sport") :Runabout (unit :name "Runabout") :Sunfish (unit :name "Sunfish" :summary "* Light, Sport, Stripped") :Surfboard (unit :name "Surfboard" :summary "* Personal, Sport, Stripped, Unpowered") "Tanker Ship" (unit :name "Tanker Ship") "Tramp Steamer" (unit :name "Tramp Steamer") "Transport Ship" (unit :name "Transport Ship") "Super Tanker" (unit :name "Super Tanker") "Swamp Buggy" (unit :name "Swamp Buggy") "Windsurf Board" (unit :name "Windsurf Board" :summary "* Personal, Sport, Stripped, Sail") :Yacht (unit :name "Yacht"))) "Modern Military Vessels" (section :name "Modern Military Vessels" :unitmap (unitmap "Aircraft Carrier" (unit :name "Aircraft Carrier") "Battleship Class" (unit :name "Battleship Class") :Cruiser (unit :name "Cruiser") :Destroyer (unit :name "Destroyer") :Dreadnought (unit :name "Dreadnought") :Gunboat (unit :name "Gunboat") "Hunter Killer Submarine" (unit :name "Hunter Killer Submarine") "Nuclear Submarine" (unit :name "Nuclear Submarine") "Torpedo Boat" (unit :name "Torpedo Boat"))))) :Aircraft (section :name "Aircraft" :summary "Hierarchy * Flight - 4-6 Aircraft led by a Captain or Flight Lieutenant * Squadron - 3-4 Flights (7-16 Aircraft) led by a Lieutenant Colonel or a Squadron Leader * Wing - 3-4 Squadrons (17-48 Aircraft) led by a Wing Commander * Air Wing - 2+ Wings (48-100 Aircraft) led by a Brigadier or a a Air Commodore" :rulemap (rulemap "Stall Speed" (rule :name "Stall Speed")) :sectionmap (sectionmap "Unmanned Aerial Vehicles (UAV)" (section :name "Unmanned Aerial Vehicles (UAV)") "Personal Aircraft" (section :name "Personal Aircraft" :unitmap (unitmap :Parachute (unit :name "Parachute") :Hanglider (unit :name "Hanglider") "Jet Pack" (unit :name "Jet Pack") :Sailplane (unit :name "Sailplane" :titles "Civilian Glider") :Ultralight (unit :name "Ultralight"))) :Helicopters (section :name "Helicopters" :unitmap (unitmap :Gyroplane (unit :name "Gyroplane") "Mini Copter" (unit :name "Mini Copter") "Civilian Helicopter" (unit :name "Civilian Helicopter") "Attack Helicopter" (unit :name "Attack Helicopter") "Cargo Copter" (unit :name "Cargo Copter"))) "Prop Planes" (section :name "Prop Planes" :unitmap (unitmap :Bi-Plane (unit :name "Bi-Plane") "Cargo Transport, Prop" (unit :name "Cargo Transport, Prop") "Fighter, Prop" (unit :name "Fighter, Prop") "Flying Fortress" (unit :name "Flying Fortress") :Osprey (unit :name "Osprey") "Piper Cub" (unit :name "Piper Cub") "Turbojet Plane" (unit :name "Turbojet Plane"))) "Jet Planes" (section :name "Jet Planes" :unitmap (unitmap "Private Jet" (unit :name "Private Jet") "Commercial Airliner" (unit :name "Commercial Airliner") "Cargo Transport, Jet" (unit :name "Cargo Transport, Jet") :Harrier (unit :name "Harrier") "Interceptor, Jet" (unit :name "Interceptor, Jet") "Tank Buster" (unit :name "Tank Buster") :Bomber (unit :name "Bomber") "Strategic Bomber" (unit :name "Strategic Bomber"))))) "Strategic Movement" (section :name "Strategic Movement")))) (func chapter_land_sea_and_air_rules : base/chapter (chapter :name "Land Sea and Air Rules" :sectionmap (sectionmap "Large Unit Rules" (section :name "Large Unit Rules" :rulemap (rulemap "Large Units" (rule :name "Large Units" :summary "* [Action]: Vehicles with multiple crew members that take up more than 1 space, may take 1 Action per space. It must, however, perform all Actions at the same time before further Movement.") "Huge Units" (rule :name "Huge Units"))) "Land Sea and Air Movement" (section :name "Land Sea and Air Movement" :rulemap (rulemap :Acceleration (rule :name "Acceleration") "Movement - Large Unit" (rule :name "Movement - Large Unit" :image "Rules/Images/MoveLarge.png") "Movement - Huge Unit" (rule :name "Movement - Huge Unit" :image "Rules/Images/MoveHuge.png") :Collisions (rule :name "Collisions" :reference "Ramming Speed! - D-Day, Animal House") "Movement Range" (rule :name "Movement Range") "Turn Radius" (rule :name "Turn Radius" :summary "* Normally a unit can turn whenever it wants, but a unit moving at high speed or a unit that is not particularly agile will only be able to turn after moving a certain number of spaces. The number of spaces a unit must move to turn is the turn radius."))) "Vehicle Construction" (section :name "Vehicle Construction" :rulemap (rulemap "Choose Vehicle Type" (rule :name "Choose Vehicle Type" :summary "* Cycle * Car * Truck * Bus/RV * Helicopter * Airplane * Boat * Submarine Trailers !Abilities 50% Cost, 200% Load, -1 Handling !Units * Sidecar - Mini * Light Trailer * Medium Trailer * Heavy Trailer * Semi Trailer Cycles !Bicycles * Tricycle * 3 Speed Bicycle * 10 Speed Bicycle * Racing Bicycle ** Weight: 40lb. Top Speed: 40mph. Cargo 1cf. Max load 30lb. Cost $400. * Rikshaw Cycle !Motorcycles * Mini Cycle * Scooter * Sport Cycle * Racing Cycle * Cruising Cycle * Chopper ** RWD, driver and passenger. Top Speed 150. 50 mpg. Cargo 1 cf. Max load 50 lb. Cost: $5,000. Weight: 300 lb. !Trikes !Options * Sidecar * Trailer * Saddlebags Cycles - Body 25% Weight, 25% Cost, 25% Load * Dirt Bike - Personal Body * Sport Cycle - Light Body, Sport * ATC - Medium Fiberglass Body * ATV - Heavy Fiberglass Body * Road Hog - Heavy Body Cars * Midget Racer - Personal, Stripped * Formula One - Mini, Sport, Stripped * Subcompact - Mini * Cooper - Mini, Sport * Compact - Light * Dune Buggy - Light, Offroad, Stripped * Trike - Light, Fiberglass * Sportscar - Light, Sport * Mid-Sized - Medium * Light SUV - Medium * Station Wagon - Extended * Luxury - Extened, Luxury * Limosine - Heavy, Luxury * Police Cruiser ** Very similar to a four-door mid-sized passenger sedan. Always RWD, with maybe 250 hp, driver, gunner, three prisoners (passengers). SR 4.75, TS 155, AC 9 (max 20), 19 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $35,000, 3600 lb. Each police cruiser will have at least one shotgun. * Cars ** Subcompact Car *** FWD, two-door or four-door. Two to five passengers. Top Speed 100mph. 30mpg. Cargo 15 cf /225 lbs. $15,000, 2350 lb. ** Compact Car *** FWD with around 130 hp, two- or fourdoor. Four to five passengers. SR 5.25, TS 120, AC 6 (max 10), 27 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $20,000, 2800 lb. ** Mid Sized Car *** FWD or RWD, with around 180 hp, two- or four-door with four to five passengers. SR 5.5, TS 130, AC 6 (max 11), 22 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $26,000, 3300 lb. ** Station Wagon ** Luxury Car ** Mini Van") "Choose Frame" (rule :name "Choose Frame" :summary "* [Personal Frame] - Passengers can only be carried as cargo. * [Mini Frame] * [Light Frame] * [Medium Frame] * [Extended Frame] * [Heavy Frame] * [Extra Heavy Frame] * [Super Heavy Frame] * [Sport] * [Racing] * [Utility] * [Luxury] * [Heavy Duty] !Modifiers * Standard - the default for all cars is the standard body style. Up to 40% of their internal space may be devoted to weapons. * Stripped - 75% Weight, 75% Cost, No Armor. All exrtas like lights and air bags are removed. * Utility - 75% Cost, -1 Handling * Sport - 150% Cost, 120% Top Speed, +1 Handling, 75% Load * Racing - 300% Cost, 150% Top Speed, +2 Handling, 50% Load * Luxury - 150% Cost, +1 Handling ** Power everything, ABS, High quality Air bags, etc. * Heavy Duty - 150% Cost, 150% Load * Offroad - 150% Cost, -1 Terrain Penalty * Cheap car body - made from rough steel with crude weld points but is cheaper than the standard body. For every cf. of space a cheap car body costs $10, weighs 6 lb, yet has a maximum load of 28 lb. A car body made with cheap materials adds .25 to SR (see below). * Standard car body - consists of a basic unit-body construction of galvanized steel and steel alloys. For every cf. of space a standard car body costs $15, weighs 6 lb and has a maximum load of 29 lb. * Expensive car body - is an advanced design using high-tech alloys and reinforced plastics. For every cf. of space an expensive car body costs $25, weighs 6 lb, and has a maximum load of 30 lb. A car body made with cheap materials subtracts .25 from SR (see below). * Extra light (XLT) construction - adds 100% to the current body cost but reducing body weight by 25%. Cars with XLT bodies take 50% more damage in a collision. * Low Profile - cars that are low profile have been flattened so that their width and length are somewhat greater in proportion to their height. Many sports cars and limousines may be considered low profile. This makes them harder to hit and they handle better because of a lower center of gravity, but because they have less surface area they cannot mount as many weapons. -1 to hit, -0.5 SR. Only 25% of internal space may be used for weapons. * Very Low Profile - cars that are very low profile have been flattened so that their width and length are much greater in proportion to their height. Many exotic sports cars like the Lamborgini are very low profile. This is simply an extreme version of low profile. -2 to hit, -1 SR. Only 10% of internal space may be used for weapons. * High Profile - cars that are high profile are tall in proportion to their width and length. Many sport-utility vehicles and all vans may be considered high profile. +1 to hit, + .5 SR. Up to 75% of their internal space may be devoted to weapons. Space taken up by ammunition does not count against the amount of space a vehicle may use for weapons, only the weapons themselves counts against this. * Sport Model - Compacts or Mid-Sized only. The car is a &quot;sports&quot; car with only room for two, a driver and a single passenger. +30mph adds aerodynamic streamlining. A Sport body costs 100% more, subtracts .25 from SR, weighs 5% lighter, and adds 10% to final top speed and mileage. * The Utility option has one purpose: cheaper is better. Utility bodies are 30% cheaper, add .25 to SR, and subtract 15% from their final top speed and mileage. * The Sport Utility option adds aerodynamic streamlining to a heavier, cheaper frame. A Sport Utility body costs 60% more, adds 10% to final top speed and mileage, but adds .25 to SR.") "Choose Mass" (rule :name "Choose Mass") "Choose Engine(s)" (rule :name "Choose Engine(s)" :summary "** [[Unpowered]] ** [[Wood Burning Engine]] ** [[Coal Fired Engine]] - 35% Efficiency, 30 MJ/kg ** [[Battery Powered]] - 85% Efficiency ** [[Gasoline Engine]] - 20% Efficiency, 45.8 MJ/kg, .41 kW/kg Power / Weight ** [[Diesel Engine]] - 25% Efficiency, 45.3 MJ/kg (denser than Gasoline with 15% more energy by volume), .41 kW/kg Power / Weight (Turbocharged V8 Diesel) ** [[Natural Gas Engine]] ** [[Hydrogen Fuel Cell]] ** [[Jet Engine]] - 43.7 MJ/kg ** [[Rocket Engine]] - 70% Efficiency, 164 kW/kg Power / Weight (Space Shuttle) ** [[Nuclear Plant]] ** [[Fusion Plant]] * Cheap - $8, 5 lb, 0.2 cf. * Normal - $20, 4 lb, 0.18 cf. * High Output (HO) - $35, 3 lb, 0.15 cf. * Super High Output (SHO) - $50, 2.5 lb, 0.13 cf. * Exotic (EX) - $75, 2 lb, 0.11 cf. An engine has 1 hit per 2 full cubic feet. The smallest possible engine is 25 hp. A car may mount more than one engine, but may only use one at a time. * Turbocharger - This device uses the engine's exhaust stream to drive an air compressor which increases the engine's power output. It is not possible to fit a Supercharger and a Turbocharger into the same vehicle. +20mph, minor option.costs 50% of the original engine cost, weight is 10% of the original engine weight. A Turbocharger adds 30% to hp. No more than four turbochargers may be added to an engine. * Supercharger - A supercharger uses a belt and pulley mechanism linked to an engine's crankshaft to force extra air and fuel into the engine's combustion chambers, greatly increasing engine power. It is not possible to fit a Supercharger and a Turbocharger into the same vehicle. +20mph top speed +10 Acc. Costs 100% of the original engine cost, weight is 15% of the original engine weight. Adds 65% to total hp and one hit to the engine. May be combined with turbochargers, but if even one turbocharger is added the Supercharger only adds 40% to total hp. * Nitrous oxide may be purchased for $500, 15 lb. When fired (like a weapon), this system injects Nitrous Oxide gas into the combustion chamber. This gives a brief but enormous boost to speed. For a single turn per use, the vehicle's acceleration is increased by 30. This acceleration can be used to boost a vehicle's speed to over its normal Top Speed, but on the following turn it must reduce speed down to the Top Speed. 3-shot +30mph acceleration, minor option, destroyable More than one may be mounted but the effects of using two or more are not cumulative. * Computerised Engine Management - An electronic system which constantly monitors and tunes the engine as it is running, in order to maximise performance. +10 Acceleration, minor option, destroyable. * Engine Rebuild - Also known as &quot;blueprinting&quot;. The engine has been taken apart and re-assembled to within the most exacting tolerances, and certain production items replaced with high performance alternatives. +20mph top speed, minor option. * Fuel Injection - An advanced system which replaces the carburettor, giving a significant boost to performance. It is not possible to fit a Fuel Injection system and a Multicarb into the same vehicle. +20mph top speed +10mph Acc 2 minor options. * Multicarb - A multi-barrelled carburettor designed to give superior performance over the standard single barrelled carb. It is not possible to fit a Multicarb and a Fuel Injection system into the same vehicle. +20mph, minor option.") "Choose Travel Modes" (rule :name "Choose Travel Modes" :summary "** Land *** Wheeled *** Tracked *** Walker ** Marine *** Sail *** Prop *** Catamaran *** Hydrofoil *** Airboat - Steering is by rudders. No brakes or reverse. *** Hovercraft *** Submarine ** Ice *** Ice Sailboat *** Aerosan - Ice Airsled ** Air *** Propeller *** Jet *** Helicopter *** Rocket ** Space *** Rocket *** Magnetic Ion *** Hyperdrive *** Space Fold * Aquatic * Submersible * Glider * Propeller * Jet * Suborbital * Orbital * ExtraOrbital * Interplanetary - Can endure the rigors of interplanetary space for months if necessary. Completely self contained and recycling environment and food supply. * Interstellar - Can endure the rigors of interstellar space for years if necessary. Completely self contained and recycling environment and food supply. All cars have four wheels. Each wheel has (body space/20) hits, rounded down. Wheels may be reinforced to take more damage than they would normally be able to. This costs 35% of body cost and doubles the number of hits for each wheel. Wheels may be made fire-proof (FP) for an extra 10% of body cost. * High Preformance Tires - cost 40% of body cost, and subtract .25 from SR. Racing tires cost 100% of body cost, and subtract .5 from SR. * Racing Slicks - Racing style tires, with no noticeable tread pattern. Great for improving traction in dry conditions on the racetrack, lousy if it's wet, on a real road or off-road. +2HCon &quot;clean&quot; dry asphalt, -1HC on typical roads, -2HC off-road or on wet asphalt. * Spare tires count against the car's max weight and space. Each spare tire costs 20% of body cost, weights 5% of body weight, and takes up 1% of body space. A spare may be mounted on any side externally. This option costs an additional $100, but takes up no internal space. All external spares take damage BEFORE the armor they are mounted on, however if they take more than 3 hits of damage in a single round they fall off, effectively removed from game play. Spare tires may not have wheel guards. !Drivetrain * Rear wheel drive (RWD) is the standard drivetrain that comes with a vehicle design. * Front wheel drive (FWD) is a drivetrain option that reduces final body cost and weight by 15%. FWD adds .25 to SR. * All wheel drive (AWD) is a drivetrain option that increases final body cost by 100% and weight by 10%. +2HC on ice, oil, wet roads or offroad.") "Choose Maneuverability" (rule :name "Choose Maneuverability" :summary "* Human Interface - Physical skills in a vehicle are generally limited by how closely the vehicle matches the human body unless a particular piece of hardware is installed to enable the specific skill. ** Land *** Aerodynamics *** Suspension *** Terrain Modifications *** Traction ** Air *** VTOL *** Jumpjets *** Booster Rockets ** Space *** Verniers !Suspension * Sporty - For 50% of the final body cost a vehicle's suspension may be upgraded to Sporty. These better arms and shocks decrease SR by .25. * Sport - For 100% of the final body cost a vehicle's suspension may be upgraded to Sport. These superior coils, struts, and frame stiffening decrease SR by .5. * Racing - For 175% of the body cost the suspension may be upgraded to Racing, with complete body stiffening, automatic camber adjustment, and computer controlled shocks. Racing suspension decreases SR by one. * Off Road Suspension - Heavy duty suspension with a higher than usual ground clearance. Allows vehicle to pass Rough Terrain without penalty and to pass through Punishing Terrain. * Computer Assisted Suspension - An electronic system which monitors and adjusts the suspension in order to give a smoother, more stable ride. +1 HC minor option, destroyable.") "Choose Fuel and Range" (rule :name "Choose Fuel and Range" :summary "** External Fuel Tanks ** Propellant / Reaction Mass (spacecraft) * Gas Tank - $10 per gallon, weighs 7 lb (full) per gallon. Gas costs $2 a gallon. If a car runs out of gasoline (or a car's gasoline tank or engine is destroyed) the car may not accelerate and automatically decelerates by 5 mph per second. * Armored Gas Tank - $15 per gallon, weighs 12 lb (full) per gallon. * Self-sealing Gas Tank - $20 per gallon, weighs 10 lb (full) per gallon. Self-sealing gasoline tanks cannot explode when hit, but can explode when the vehicle is on fire. * Self-sealing Armored Gas Tank - $40 per gallon, weighs 15 lb (full) per gallon. Self-sealing armored gasoline tanks cannot explode.") "Choose Mission Specific" (rule :name "Choose Mission Specific" :summary "** Cargo Bay ** Decoys ** ECM/EW ** Hanger Bay ** Passenger Space - Passenger space is relative to the number of passengers, the operating range, and the relative luxury of the craft. ** Sensors ** Stealth ** Cloak !Cargo Cargo space is (usually) your leftover space: space not taken up by people, guns, or equipment. * Hidden Cargo Space - Up to half the cargo space in the vehicle is in hidden compartments. Handy in the event of &quot;Imperial Entanglements&quot;. Minor option, destroyable * Flatbed - Cargo space designated as a &quot;flatbed&quot; is exposed to the open air, but can carry twice the normal load. * Another vehicle may be put into cargo space, if the vehicle's Maximum Cargo Load is great enough. Any car placed in cargo of another car exits via the standard cargo access (usually the back), and suffers a Turn III in doing so.") "Choose Armor" (rule :name "Choose Armor" :summary "** Command Armor ** Radiation Shielding !Armor * Armor is applied to the six sides: Front, Left, Right, Back, Top, and Under. Armor for vehicles is spaced in layers of sheets 1/4&quot;-1&quot; apart and consists of a standard ablative carbon-reinforced plastic. This material is light and very strong, and can be shaped into any form, however it's ablative attribute has it's limitations. * Normal armor costs cubic feet divided by 10 and weighs (cubic feet divided by 30) + 5 per point. * Sloped (SLO) armor angles the plates under the skin of most of the vehicle, making it more efficient. Sloped armor costs cubic feet divided by 8 and weighs (cubic feet divided by 38) + 5 per point. * Chambered armor (CA) consists of tactically placed spacing between layers of high-quality sloped armor. This design costs cubic feet divided by 5 and weighs (cubic feet divided by 46) + 5 per point. * Options: Fireproof armor (FP) - Costs twice as much as regular armor but prevents the car from catching on fire, unless the armor becomes breached. * Laser Reflective (LR) Armor - Costs 3 times as much as normal armor but cuts all damage from lasers in half (unless the side hit is breached). * The combination of LR and FP armor (LRFP) costs 5 times as much as regular.") "Choose Weapons" (rule :name "Choose Weapons" :summary "!Aimed Weapons All aimed weapons come standard with a heavy transversal mounting, and an autoloader, allowing a high-degree arc of fire and an uninterrupted ammunition supply. This in turn makes them very versatile and powerful yet much bigger and heavier than normal. Aimed weapons can be mounted on the front, back, right, or left side of the car. Armed weapons may also be mounted in a turret on the top of the body. * Arcs of fire ** Hand Weapons *** The driver of a vehicle may fire directly ahead, or up to 90 degrees to the drivers side. *** The front passenger of a vehicle may fire in a 180 degree arc from directly ahead to directly behind. *** Rear passengers of a vehicle may fire directly behind, or up to 90 degrees to the side that they are on. *** Passengers standing up in a sunroof may fire in a 360 degree arc around the vehicle. *** Occupants in a convertible may fire in a 360 degree arc, except for the driver who is limited to the 180 degree forward arc. ** Mounted Weapons *** Door mounts fire into a 90 degree arc measured from the adjacent side or rear square. *** Pintle mounts fire into a 180 degree arc, either forward or rear. *** Fixed mount - directly ahead, and 1 square (50mm) either side of directly ahead (in effect a 3 square (150mm) wide fire corridor) *** 180 Turrets are must be specified as either Forward or Rear facing *** 360 degree mounts can fire in any direction. * Machine Guns The machine gun has been the mainstay of every army since the dawn of the 20th century. Light and cheap yet with a high rate of fire, they are very effective in high speed combat. The Gatlingstyle machine guns are a more recent design, and can devastate an opponent in seconds. ** Option: Super High Density (SHD) ammo - Cost x 10, +25% weight, +1/die damage. ** Machine Gun .223 (MG22) - To hit 11, 1d-4 damage, 1 hit. Cost $1200, weight 40 lb, 5 cf. Ammo costs $100, 80 lb, and has 100 seconds of ammo per cf. ** Machine Gun .30 (MG30) - To hit 11, 1d-2 damage, 2 hits. Cost $1950, weight 70 lb, 9 cf. Ammo costs $200, 50 lb, and has 50 seconds of ammo per cf. ** Machine Gun .50 (MG50) - To hit 11, 1d+2 damage, 4 hits. Cost $4200, weight 200 lb, 14 cf. Ammo costs $500, 50 lb, and has 20 seconds of ammo per cf. ** Chain Gun .50 (CG5) - To hit 12, 2d+1 damage, 4 hits. Cost $6000, weight 210 lb, 22 cf. Ammo costs $500, 50 lb, and has 12 seconds of ammo per cf. ** Automatic Shotgun ** 20 mm Autocannon (AC) - To hit 12, 5d+1 damage, 6 hits. Cost $28900, weight 850 lb, 60 cf. Ammo costs $250, 20 lb, and has 2 seconds of ammo per cf. Burst effect. * Cannons ** Option: Armor Piercing (AP) ammo - Cost x 3, +15% weight, +4/die damage. ** 20 mm Anti-Tank Gun (ATG) - To hit 11, 2d+4 damage, 4 hits. Cost $5500, weight 460 lb, 38 cf. Ammo costs $250, 20 lb, and has 10 shots per cf. Burst effect. ** 35 mm Cannon (C35) - To hit 11, 4d+10 damage, 7 hits. Cost $15600, weight 700 lb, 56 cf. Ammo costs $400, 20 lb, and has 6 shots per cf. Burst effect. ** 60 mm Cannon (C60) - To hit 11, 7d+15 damage, 7 hits. Cost $31100, weight 1320 lb, 75 cf. Ammo costs $750, 20 lb, and has 4 shots per cf. Burst effect. * Laser Weapons - Heavy and expensive yet extremely accurate and powerful, lasers offer a decisive advantage to their wielder. This advantage is balanced by the expensive laser-reflective armor available. ** Option: Infrared Modulation - Laser cost x 1.5, same weight, no penalty for firing through smoke. ** Light Laser (LL) - To hit 14, 1d-3 damage, 2 hits. Cost $5000, weight 125 lb, 10 cf. Has 30 shots from a rechargeable battery. ** Laser (L) - To hit 14, 2d-1 damage, 2 hits. Cost $10000, weight 350 lb, 25 cf. Has 30 shots from a rechargeable battery. ** Heavy Laser (HL) - To hit 14, 4d-1 damage, 3 hits. Cost $22000, weight 675 lb, 40 cf. Has 30 shots from a rechargeable battery. * Flame-Throwers - Used as anti-tank weapons and bunker busters for decades, these fire breathers are more efficient and longer range than their predecessors. ** Light Flame-Thrower (LFT) - To hit 13, 1d-1 damage, 2 hits. Cost $2500, weight 85 lb, 10 cf. Ammo costs $30, 40 lb, and has 4 seconds of ammo per cf. Limited to a 40 yard range. ** Flame-Thrower (FT) - To hit 13, 2d damage, 3 hits. Cost $4000, weight 150 lb, 20 cf. Ammo costs $30, 40 lb, and has 2 seconds of ammo per cf. Limited to a 60 yard range. ** Heavy Flame-Thrower (HFT) - To hit 13, 3d damage, 4 hits. Cost $7000, weight 300 lb, 35 cf. Ammo costs $30, 40 lb, and has one second of ammo per cf. Limited to a 80 yard range. * Grenade Launchers An automatic version of the popular infantry weapon. The gunner has the choice of attacking the target side of a vehicle or of attacking the top of the target at an additional -1 to hit. Used in this manner, the grenade launcher (other than the mortar, see below) is the only weapon that may fire OVER another car or obstacle, with no line-ofsight. ** Options: Incendiary - Cost $650 per cf of ammo. ** 40 mm Grenade Launcher (GL) - To hit 10, 2d damage, 3 hits. Cost $2850, weight 275 lb, 20 cf. Ammo costs $500, 45 lb, and has 30 shots of ammo per cf. Maximum range 100 yards. Burst effect. * Mortars - An infantry mainstay, somewhat inaccurate but extremely effective. Because of the general attempt of the gunner to place a mortar near the target, the gunner has the choice of attacking the target side of a vehicle or of attacking the top of the target at an additional -4 to hit. Similar to the 22 grenade launcher, the mortar may fire OVER another car or obstacle, with no line-of-sight. ** Options: White Phosphorus (WP) - Cost x2. ** 80mm Mortar - To hit 9, 6d damage, 4 hits. Cost $6500, weight 750 lb, 40 cf. Ammo costs $750, 50 lb, and has 12 shots of ammo per cf. Maximum range 300 yards. Burst effect. * Rockets - Powerful and cheap, rockets are some of the most effective weapons in the game. They also are rather inaccurate. After the first one, each additional rocket of the same size mounted on the same side takes up only 50% of its space and weighs 75% its weight. Rockets have a range of about 1000 yards. All rockets are burst effect weapons. ** Options: Pop-Up (PUR) - Minus 2 damage. Cost +70%. When a PUR hits the target car, the top side receives the damage. ** White Phosphorus (WP) - Cost +20%, -1 damage. ** Optical Target Recognition System (OTRS) - Cost +400%, -2 damage. To hit 9 within 100 yards, but locks on at 100 yards and has a to hit of 16 from there out, with no modifiers for range. ** 45 mm Rocket (R45) - To hit 9, 2d damage, 1 hit. Cost $470, weight 80 lb, 8 cf. Only 1 shot. ** 60 mm Rocket (R60) - To hit 9, 4d damage, 1 hit. Cost $950, weight 160 lb, 12 cf. Only 1 shot. ** 89 mm Rocket (R89) - To hit 9, 6d damage, 1 hit. Cost $2150, weight 240 lb, 16 cf. Only 1 shot. ** 120 mm Rocket (R120) - To hit 9, 8d damage, 1 hit. Cost $4500, weight 320 lb, 20 cf. Only 1 shot. ** Rocket Pod !Dropped Weapons Dropped weapons can only be mounted on the back or sides of a car. A dropped weapon mounted on the side of a car is to the left or right. Any number of dropped weapons may overlap, however, mines mixed with ACFO automatically go off (dealing mine damage to the firing car), but regular oil that comes into contact with ACFO does NOT ignite. * Mine Dropper (MD) - 2 hits, $1000, 50 lb, 15 cf. When a vehicle goes within the range of a mine (a 2 yard radius), each wheel takes 1d damage and the underbody takes 2d+6 damage. Each mine is $100, 20 lb, and .5 cf. Burst effect. ** Option: Claymore Mine (CM)- Costs $200 per cf., however when a claymore is dropped the direction of the blast must be specified. Claymores may be set to attack the bottom, left, right, front, or back of a vehicle. When a vehicle goes within range of a claymore the side specified takes 3d+2 damage. * Oil Jet (OJ) - 3 hits, $300, 20 lb, 5 cf. Causes a 5 yard-radius oil slick to fill the road when fired. Driving over oil is a Turn III. Ammo costs $30, 40 lb, and has 5 shots per cf. ** Option: Air-Contact Flaming Oil (ACFO) - Costs $1000 per cf, same as regular oil, but for every second a car is on the flaming slick it must roll as per a flame weapon on each tire and the underbody. ACFO burns out in 20 seconds. * Paint Sprayer (PS) - 2 hits, $500, 75 lb, 10 cf. Causes a 5 yard-radius paint cloud when fired. Ammo costs $100, 30 lb, and has 8 shots per cf. Paint dissipates in 3 seconds. Normal smoke penalty to 23 shoot through and if a car touches it treat that car as if it was night for the rest of the game. If already at night double the nighttime penalty. * Smokescreen (SS) - 4 hits, $400, 60 lb, 10 cf. Causes a 5 yard-radius smoke cloud when fired. Ammo costs $50, 20 lb, and has 9 shots per cf. Smoke dissipates in 10 seconds, whether or not a car drives close to it. * Spike Dropper (SD) - 3 hits, $750, 100 lb, 5 cf. Drops a 2 yard-radius cluster of spiked caltrops when fired. When a car goes over a cluster of these spikes, each wheel takes 1d-3 damage. Ammo costs $100, 20 lb, and has 10 seconds of ammo per cf.") "Choose Extra Equipment" (rule :name "Choose Extra Equipment" :summary "Listed here are several options that may be built into a Q-car design. More may be added to this list by the players if they wish, however all players present must agree on the addition. * Airfoils - Airdam in the front and/or a Spoiler in the back. +Handling Synergy. Destroyable. Costs 20% of final body cost and weighs 3% of final body weight each. * Active Suspension - $4000, 100 lb. A sophisticated electronic system controls the suspension to subtract .25 from the SR of a car. * Antilock Brakes - $1000, 10 lb. An advanced engineering system which prevents wheels from locking up when braking suddenly. +10 Dec, destroyable. * Brake Chute - A parachute mounted at the rear of the vehicle, designed to give rapid emergency deceleration. The vehicle must be travelling at least 60mph for the chute to deploy properly. 1-shot 60mph deceleration, minor option, destroyable. * Collision Spikes - $200, 30 lb. These nasty buggers pop out in the event of a collision with any object over 50 lb. One each may be mounted on the front, back, left or right sides. +Damage in a collision. * Convertible Top - Costs 50% of final body cost, weights 5% of final body weight, takes up 5% of internal space. When the convertible top is retracted, treat the top of the car as unarmored. May be made to resemble fabric. Cars with a convertible top may not mount a turret. * Electronic Traction Control - $1000, 10 lb, 1 cf. A small chip that keeps the tires from spinning, reducing the problems of extreme acceleration and helping with cornering. Subtracts .25 from SR. * Fake Weapon - $200, 25 lb, 1 cf. Scary when it pops out to shoot, but doesn't do anything else. May be of any type. * Fire Extinguisher - $450, 150 lb, 5 cf. Puts out a car fire on a roll of 1-6 on one die. May only be discharged four times before needing reloading. * Lights and Sirens - Police lights, sirens and a handy little searchlight. Minor option, destroyable. * Link - $100. Links two weapons together, so that they are aimed and fired together. Roll separate to-hit and damage rolls for each weapon. The weapons may not fire individually; all of them must fire until the link is removed between fights. * Overdrive - An extra-tall gear that adds 15% to a vehicle's final top speed when activated, however when activated, acceleration is halved. Costs 50% of final body cost. * Ramplate - This can take the form of spikes, blades or a reinforced plate. Costs 200% of final body cost, weighs 2 lb for every cf of body size. May only be mounted on the front. +Damage in a collision involving the front of a car and -Damage taken. * Roll Cage - A tubular steel framework designed to enclose the vehicle's passenger compartment and maintain its shape. While it's designed primarily to protect occupants in the event of the car rolling onto its roof, it also offers significant protection against side impacts. Halves damage caused by side impacts, minor option. * Search Light * Stripped - Excess weight has been removed from the vehicle in order to improve performance. The vehicle is still street legal, though just barely. +10mph top speed +10 Acc. * Stripped to the Bones - Everything, absolutely everything not involved in making the car go forward very fast has been removed or lightened, to the point where the vehicle is no longer street legal (lacking things like headlights, indicators etc). +20mph top speed +20 Acc. * Sun Roof - Allows one occupant to stand and fire hand weapons from the sun roof in a 360 degree arc. Firer doing so counts as &quot;exposed&quot; for the purposes of incoming fire. May not be fitted to Bikes. * Targeting Computer - $2000, 10 lb, 1 cf. Gives a particular crew member +1 to hit with any of the car's weapons. Limit one per crew member. An Artificial Intelligence (AI) targeting computer may be bought for $10,000, 50 lb, and 3 cf. This gives one crew member +2 to hit. * Turret - A turret is the only way to give a weapon a 360 degree arc of fire. ** Luggage turrets resemble a car-top carrier or suitcases strapped to the roof of a car. ** Hidden turrets retract completely within the car when they are not needed. A car may only mount one turret, and it can only be as big as the car's maximum weapon space. A turret is protected by the car's top armor. Turrets are built just like car bodies. For every cf of internal space a Luggage turret has, it takes up .2 cf, costs $50, and weighs 3 lb. For every cf of internal space a Hidden turret has, it takes up 1.2 cf, costs $100, and weighs 4 lb. For a weapon to be considered &quot;mounted&quot; in a turret, the entire weapon must fit into the turret's space. Ammunition does not have to be mounted in a turret with the weapon. * Wheel Guards - For each wheel protected wheel guards cost $7.5 and weigh 2.5 lb per point of armor. To protect it's left and right front wheels with 10 points of armor, a car would pay $150 and use 50 lb. The wheel guards must match the car's armor; if the car's armor is CA, FP or LR, then all wheel guards must be CA, FP or LR. The maximum points of armor per guard is equal to cf/10. Protects only from aimed shots, and only on a 1-7 on one die. Resemble solid wheel covers. * Wheelie Bar - Costs 10% of final body cost, weighs 5% of body weight, and takes up 2 cf of space. Adds 5 mph to maximum design acceleration. !Motorcycles * A cheap bike body is made from rough steel with crude weld points but is cheaper than the standard body. For every cf. of space a cheap bike body costs $10, weighs 4 lb yet has a maximum load of 28 lb. * A standard bike body consists of a basic unit-body construction of galvanized steel and steel alloys For every cf. of space a standard bike body costs $15, weighs 4 lb and has a maximum load of 29 lb. * An expensive bike body is an advanced design using high-tech alloys and reinforced fiberglass. For every cf. of space an expensive bike body costs $25, weighs 4 lb, and has a maximum load of 30 lb. * Sport option may be used, as can XLT option. Drivers and passengers only take up 6 cf, 175 lb. and 4 cf, 150 lb. respectively (no gunners allowed). Engines are smaller, lighter, and easier to build. For bikes the smallest possible engine is 10 hp (minimum of one hit). Cheap - $8, 3 lb, 0.14 cf. Normal - $20, 2.4 lb, 0.12 cf. High Output (HO) - $32, 1.8 lb, 0.10 cf. Super High Output (SHO) - $44, 1.4 lb, 0.08 cf. Exotic (EX) - $60, 1 lb, 0.06 cf. Motorcycles only have two wheels with (bike cf / 10) hits each, and may not have spares. Weapons may only be mounted on the front or back. No turrets or convertible tops are allowed, but all other accessories may be mounted, including wheel and suspension upgrades. Basic SR for bikes is 5, and all bikes have RWD. Bikes only have three armor facings: front, back, and under. The other sides are considered unarmored. Anytime a bike takes damage from the back, a roll of 1 or 2 on one die means the damage bypasses the rear armor. A bike adds +1 to all it's Table Two rolls (see below). Motorcycles are -3 to target. Passengers may fire a hand weapon in any direction. ** Cowling - A large aerodynamic cowling at the front. This both increases the bike's top speed, and offers protection to the rider from shots to the front. +10mph top speed, rider counts as Partially Exposed to shots from the front, minor option, destroyable.") "Finishing the Design" (rule :name "Finishing the Design" :summary "Here is where the final calculations are made concerning a vehicles performance and statistics. A vehicle's Design Top Speed is found by using the formula: Design Top Speed = ((engine hp x 3150) / car weight) + 30. The Fury has a design top speed of ((260 x 3150) / 4342) + 30 = 218.62 mph. Now don't get too excited, we are not done yet. Every car has an Acceleration (AC). The designer trades speed for acceleration by modifying the vehicle's transmission and engine layout before construction. A vehicle's Maximum Design Acceleration is calculated by using the following formula: Maximum Design Acceleration = 30 - (3 x SR) Be sure to round Maximum Design Acceleration down before recording it. The maximum design acceleration of the Fury is 30 - (3 x 3.75) = 18.75 or 18 mph/s. Again, don't get too excited. We want the car to be quick, but we don't want to lose too much of that top speed. So we decide to make the acceleration 7 mph/s. This may only give a real world 0-60 of 8.57 seconds, but in the game it gives a quarter mile time of under 16 seconds at 112 mph, which is not bad. No vehicle may have an AC of more than the maximum. Determine what the new vehicle's AC will be. The AC you choose will determine the final top speed (TS). A vehicle's TS may be determined by the following formula: Final Top Speed = Design Top Speed x (1 - ((AC x 5) / 100)) Once we have decided on an acceleration of 7, we can determine the final top speed. (7 x 5) = 35, divided by 100 = 0.35. (1 - 0.35) = 0.65... 218.62 x 0.65 = 142 mph. Plus 10% for a sport body puts that up to 156 mph. Not bad at all. Once the final TS is calculated, add the percentages for accessories and body style, if so equipped. Mileage at 65 mph (or top speed, if lower) is in miles per gallon and is equal to: Mileage = (9000 / (hp + (weight / 20)))")))))) (func chapter_land_sea_and_air_terrain : base/chapter (chapter :name "Land, Sea and Air Terrain" :sectionmap (sectionmap "Terrain, Buildings" (section :name "Terrain, Buildings" :terrainmap (terrainmap "Air Field" (terrain :name "Air Field" :summary "* May [Deploy] Aircraft * Repairs Aircraft * Required to extend Aircraft Range") :Barracks (terrain :name "Barracks" :summary "* May [Deploy] Soldiers") :Bunker (terrain :name "Bunker" :summary "* A small stone or concrete building. * Gains [Armor] of stone/concrete except at [Point Blank Range]. +1 [Defense]") :Dock (terrain :name "Dock" :summary "* Required to extend Naval Supply Lines") "Field Headquarters" (terrain :name "Field Headquarters") "Field Hospital" (terrain :name "Field Hospital" :summary "* May [Deploy] Infantry with [Medicine] Skill * Heals Soldiers") "Fuel Depot" (terrain :name "Fuel Depot" :summary "* Required to extend Vehicle Supply Lines") "Motor Pool" (terrain :name "Motor Pool" :summary "* May [Deploy] land Vehicles * Repairs land Vehicles") :Passageway (terrain :name "Passageway" :titles "Corridor") :Room (terrain :name "Room") :Shipyard (terrain :name "Shipyard" :summary "* May [Deploy] Ships * Repairs Ships") "Supply Depot" (terrain :name "Supply Depot" :summary "* Required to extend Soldier Supply Lines"))) "Terrain, Natural" (section :name "Terrain, Natural" :terrainmap (terrainmap "Broken Ground" (terrain :name "Broken Ground") :Burning (terrain :name "Burning") :Cave (terrain :name "Cave" :titles "Cavern") :Desert (terrain :name "Desert" :summary "* +2 [Terrain Penalty] * +1 [Fatigue]/Turn * +1 [Thirst]/Hour * [Heat Wave] * [Mirage]") :Ice (terrain :name "Ice") :Jungle (terrain :name "Jungle" :summary "* Flora - Native peoples are well versed in finding food from their jungle environment but for the inexperienced there are many poisonous or harmful plants. Vines and creepers should never be grasped and pulled by the naked hand as many have sharp thorns, or can spilt into extremely sharp fibres, which can cause deep lacerations. Bamboo can split to form sharp stakes when mature and any minor cut can be very serious due to the high risk of infection. Many people will have seen the classic film or TV scene where the hero cuts a vine and then drinks from it, despite this being common scene it is not a good source of drinking water, if such water is red, yellow or milky in colour it is not safe to drink. Large sections of bamboo can also contain safe drinking water, to test for it tap the section of stem with blade or hard object and listen for a change in tone or sloshing sound, such water is safe to drink. On the other hand many jungle plants are very well adapted to such a damp environment and finding suitable leaves to make a waterproof shelter is often an easy task. Many plant saps contain irritants or toxins, which can be absorbed through the skin, so skin contact with plant sap should be avoided. Fungus is a major source of infections as in the high humidity the human body can become the perfect growing environment for a variety of unpleasant fungal parasites. Care to keep the feet dry using the correct powder is very important if at all possible as fungal foot infections in the jungle can quickly slow a person and turn a healthy one into a casualty. * Fauna - Jungles team with life but the greatest threat comes not from large animals but from invertebrates and smaller poisonous reptiles. Large predators such as Jaguar, Anaconda, and crocodiles will rarely attack adult humans. Much more dangerous are the vast array of stinging and biting insects which can cause sickness or be carriers for disease such as malaria and yellow fever. If scratched mosquito bites can quickly become infected in such conditions draining morale and strength. Scorpions, poisonous spiders and even poisonous frogs inhabit some jungles so checking your foot ware for visitors before putting your feet into them in the morning is vital. In some areas soldier ants can be a problems so sleeping should be done in hammocks above the ground, this also offers some protection against snakes and other nocturnal visitors. Larger predators and scavengers can be attracted by waste food and bodily waste so camp hygiene is important. If your party is strong and well armed certain large jungle animals can provide large amounts of fresh meat but such creatures are not easy to hunt and kill, wild boar and pigs are powerful animals. Most snakes are edible, an Anaconda can feed a small village but the capture and killing of one is not an easy task. Due to the variety of parasites and climate conditions the consumption of animals that you may find already dead is to be strongly avoided. * Environmental Hazards - Jungles are extremely hot and humid places and such conditions can place an enormous strain on the body. Despite the humidity dehydration can be a real problem and although water can be plentiful, clean water may not be. The jungle has a reputation for quickly destroying the fitness levels of the inexperienced, through dehydration, malnutrition, disease and fatigue. River crossings can be extremely hazardous and the simple precaution of wearing a condom (for the male members of the party) can prevent some very nasty parasites entering the body. Psychologically the jungles constant wall of green and low light levels beneath the canopy can seriously affect motivation and the sounds of the nocturnal animals can also be disturbing for those unused to them. All this said many native peoples around the world have learned to adapt and even thrive in such conditions.") :Lava (terrain :name "Lava") "Open Water" (terrain :name "Open Water") :Plains (terrain :name "Plains") :Quicksand (terrain :name "Quicksand") :Sand (terrain :name "Sand") :Scrubland (terrain :name "Scrubland") :Steppeland (terrain :name "Steppeland") :Snow (terrain :name "Snow") :Swamp (terrain :name "Swamp" :summary "* Bog Fen Murk") :Whitewater (terrain :name "Whitewater")))))) (func chapter_maps : base/chapter (chapter :name "Maps" :sectionmap (sectionmap :Maps (section :name "Maps" :rulemap (rulemap "Air Map" (rule :name "Air Map") "Ocean Map" (rule :name "Ocean Map") "Swamp Map" (rule :name "Swamp Map") "Underwater Map" (rule :name "Underwater Map"))) :Terrain (section :name "Terrain" :rulemap (rulemap :Cave (rule :name "Cave" :summary "[Hazard]: Cave in.") :Jungle (rule :name "Jungle" :summary "[Hazard]: Difficulty starts at 2 for a sparse, mostly safe jungle.") :Snow (rule :name "Snow" :summary "[Hazard]: Avalanche."))))))
nx/tactics/books/land_sea_and_air / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Land, Sea and Air" :image "LandSeaAndAir.jpg" :chaptermap (base/chaptermap "Land, Sea and Air Overview" (chapter_land_sea_and_air_overview) "Land Sea and Air Unit Types" (chapter_land_sea_and_air_unit_types) "Land Sea and Air Rules" (chapter_land_sea_and_air_rules) "Land, Sea and Air Terrain" (chapter_land_sea_and_air_terrain) "Maps" (chapter_maps) )))
nx/tactics/books/land_sea_and_air / chapter_land_sea_and_air_overview
Description:
Function Name:
  • chapter_land_sea_and_air_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_land_sea_and_air_overview : base/chapter (chapter :name "Land, Sea and Air Overview" :sectionmap (sectionmap "Why Tactics:Land, Sea and Air?" (section :name "Why Tactics:Land, Sea and Air?"))))
nx/tactics/books/land_sea_and_air / chapter_land_sea_and_air_unit_types
Description:
Function Name:
  • chapter_land_sea_and_air_unit_types
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_land_sea_and_air_unit_types : base/chapter (chapter :name "Land Sea and Air Unit Types" :sectionmap (sectionmap "Land Units" (section :name "Land Units" :summary "* [Land Map] * [Standard Scale] Hierarchy * Fireteam - 4-5 infantry led by a Lance Corporal or Sergeant * Squad - 2+ Fireteams (8-16) led by a Corporal or Staff Sergeant * Platoon - 2+ Squads (25-60) led by a Warrant Officer or Lieutenant * Company - 2-8 Platoons (70-250) led by a Major * Battalion - 2-6 Companies (300-1000) led by a Lieutenant Colonel * Regiment - 2+ Battalions (2000-3000) led by a Colonel * Brigade - 2+ Regiments (3000-5000) led by a Brigadier * Division - 2-4 Brigades (10,000-20,000) led by a Major General * Corps - 2+ Divisions (30,000-50,000) led by a Lieutenant General * Army - 2+ Corps (50,000-60,000) led by a General * Army Group - 2+ Armies (100,000+) led by a General or a Field Marshal * Theater / Front - 10+ Army Groups (1,000,000+) led by a General or Field Marshal" :sectionmap (sectionmap "Modern Land Vehicles" (section :name "Modern Land Vehicles" :unitmap (unitmap :Motorcycle (unit :name "Motorcycle"))))) "Naval Vessels" (section :name "Naval Vessels" :summary "200% Load, 75% Speed, -1 Handling" :sectionmap (sectionmap "Archaic Naval Vessels" (section :name "Archaic Naval Vessels" :summary "* [Ocean Map] * [Standard Scale] Hierarchy * Flotilla - A small number of non-capital vessels, usually of the same or similar types led by a Flotilla Admiral or a Commodore. * Squadron - A small number of vessels including capital ships led by a Rear Admiral or a Commodore. * Task Group - 2 Squadrons led by a Rear Admiral * Task Force / Battlefleet - 2 Task Groups led by a Vice Admiral * Fleet - 2 Task Forces led by an Admiral * Navy / Admiralty - 2 Fleets led by a Fleet Admiral" :rulemap (rulemap :Broadside (rule :name "Broadside" :image "Rules/Images/Broadside.png" :summary "* Archaic ships mount large guns on each side of the ship and must turn sideways to attack targets. All attacks from such guns may only fire directly at 90 degrees from the front of the ship.")) :unitmap (unitmap :Canoe (unit :name "Canoe" :summary "* Mini, Stripped, Unpowered") :Catamaran (unit :name "Catamaran") "Deep Sea Explorer Submarine" (unit :name "Deep Sea Explorer Submarine") :Dinghy (unit :name "Dinghy") "Fishing Boat" (unit :name "Fishing Boat" :summary "* Medium, Stripped, Sail") :Frigate (unit :name "Frigate") :Galley (unit :name "Galley") :Galleon (unit :name "Galleon") :Kayak (unit :name "Kayak" :summary "* Mini, Sport, Stripped, Unpowered") "Merchant Ship" (unit :name "Merchant Ship") :Minisub (unit :name "Minisub") :Outrigger (unit :name "Outrigger") :Rowboat (unit :name "Rowboat" :summary "* Light, Stripped, Unpowered") "War Barge" (unit :name "War Barge"))) "Modern Civilian Vessels" (section :name "Modern Civilian Vessels" :unitmap (unitmap "Cruise Liner" (unit :name "Cruise Liner") "Hydrofoil Passenger Ship" (unit :name "Hydrofoil Passenger Ship") "Jet Ski" (unit :name "Jet Ski" :summary "* Light, Sport") :Runabout (unit :name "Runabout") :Sunfish (unit :name "Sunfish" :summary "* Light, Sport, Stripped") :Surfboard (unit :name "Surfboard" :summary "* Personal, Sport, Stripped, Unpowered") "Tanker Ship" (unit :name "Tanker Ship") "Tramp Steamer" (unit :name "Tramp Steamer") "Transport Ship" (unit :name "Transport Ship") "Super Tanker" (unit :name "Super Tanker") "Swamp Buggy" (unit :name "Swamp Buggy") "Windsurf Board" (unit :name "Windsurf Board" :summary "* Personal, Sport, Stripped, Sail") :Yacht (unit :name "Yacht"))) "Modern Military Vessels" (section :name "Modern Military Vessels" :unitmap (unitmap "Aircraft Carrier" (unit :name "Aircraft Carrier") "Battleship Class" (unit :name "Battleship Class") :Cruiser (unit :name "Cruiser") :Destroyer (unit :name "Destroyer") :Dreadnought (unit :name "Dreadnought") :Gunboat (unit :name "Gunboat") "Hunter Killer Submarine" (unit :name "Hunter Killer Submarine") "Nuclear Submarine" (unit :name "Nuclear Submarine") "Torpedo Boat" (unit :name "Torpedo Boat"))))) :Aircraft (section :name "Aircraft" :summary "Hierarchy * Flight - 4-6 Aircraft led by a Captain or Flight Lieutenant * Squadron - 3-4 Flights (7-16 Aircraft) led by a Lieutenant Colonel or a Squadron Leader * Wing - 3-4 Squadrons (17-48 Aircraft) led by a Wing Commander * Air Wing - 2+ Wings (48-100 Aircraft) led by a Brigadier or a a Air Commodore" :rulemap (rulemap "Stall Speed" (rule :name "Stall Speed")) :sectionmap (sectionmap "Unmanned Aerial Vehicles (UAV)" (section :name "Unmanned Aerial Vehicles (UAV)") "Personal Aircraft" (section :name "Personal Aircraft" :unitmap (unitmap :Parachute (unit :name "Parachute") :Hanglider (unit :name "Hanglider") "Jet Pack" (unit :name "Jet Pack") :Sailplane (unit :name "Sailplane" :titles "Civilian Glider") :Ultralight (unit :name "Ultralight"))) :Helicopters (section :name "Helicopters" :unitmap (unitmap :Gyroplane (unit :name "Gyroplane") "Mini Copter" (unit :name "Mini Copter") "Civilian Helicopter" (unit :name "Civilian Helicopter") "Attack Helicopter" (unit :name "Attack Helicopter") "Cargo Copter" (unit :name "Cargo Copter"))) "Prop Planes" (section :name "Prop Planes" :unitmap (unitmap :Bi-Plane (unit :name "Bi-Plane") "Cargo Transport, Prop" (unit :name "Cargo Transport, Prop") "Fighter, Prop" (unit :name "Fighter, Prop") "Flying Fortress" (unit :name "Flying Fortress") :Osprey (unit :name "Osprey") "Piper Cub" (unit :name "Piper Cub") "Turbojet Plane" (unit :name "Turbojet Plane"))) "Jet Planes" (section :name "Jet Planes" :unitmap (unitmap "Private Jet" (unit :name "Private Jet") "Commercial Airliner" (unit :name "Commercial Airliner") "Cargo Transport, Jet" (unit :name "Cargo Transport, Jet") :Harrier (unit :name "Harrier") "Interceptor, Jet" (unit :name "Interceptor, Jet") "Tank Buster" (unit :name "Tank Buster") :Bomber (unit :name "Bomber") "Strategic Bomber" (unit :name "Strategic Bomber"))))) "Strategic Movement" (section :name "Strategic Movement"))))
nx/tactics/books/land_sea_and_air / chapter_land_sea_and_air_rules
Description:
Function Name:
  • chapter_land_sea_and_air_rules
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_land_sea_and_air_rules : base/chapter (chapter :name "Land Sea and Air Rules" :sectionmap (sectionmap "Large Unit Rules" (section :name "Large Unit Rules" :rulemap (rulemap "Large Units" (rule :name "Large Units" :summary "* [Action]: Vehicles with multiple crew members that take up more than 1 space, may take 1 Action per space. It must, however, perform all Actions at the same time before further Movement.") "Huge Units" (rule :name "Huge Units"))) "Land Sea and Air Movement" (section :name "Land Sea and Air Movement" :rulemap (rulemap :Acceleration (rule :name "Acceleration") "Movement - Large Unit" (rule :name "Movement - Large Unit" :image "Rules/Images/MoveLarge.png") "Movement - Huge Unit" (rule :name "Movement - Huge Unit" :image "Rules/Images/MoveHuge.png") :Collisions (rule :name "Collisions" :reference "Ramming Speed! - D-Day, Animal House") "Movement Range" (rule :name "Movement Range") "Turn Radius" (rule :name "Turn Radius" :summary "* Normally a unit can turn whenever it wants, but a unit moving at high speed or a unit that is not particularly agile will only be able to turn after moving a certain number of spaces. The number of spaces a unit must move to turn is the turn radius."))) "Vehicle Construction" (section :name "Vehicle Construction" :rulemap (rulemap "Choose Vehicle Type" (rule :name "Choose Vehicle Type" :summary "* Cycle * Car * Truck * Bus/RV * Helicopter * Airplane * Boat * Submarine Trailers !Abilities 50% Cost, 200% Load, -1 Handling !Units * Sidecar - Mini * Light Trailer * Medium Trailer * Heavy Trailer * Semi Trailer Cycles !Bicycles * Tricycle * 3 Speed Bicycle * 10 Speed Bicycle * Racing Bicycle ** Weight: 40lb. Top Speed: 40mph. Cargo 1cf. Max load 30lb. Cost $400. * Rikshaw Cycle !Motorcycles * Mini Cycle * Scooter * Sport Cycle * Racing Cycle * Cruising Cycle * Chopper ** RWD, driver and passenger. Top Speed 150. 50 mpg. Cargo 1 cf. Max load 50 lb. Cost: $5,000. Weight: 300 lb. !Trikes !Options * Sidecar * Trailer * Saddlebags Cycles - Body 25% Weight, 25% Cost, 25% Load * Dirt Bike - Personal Body * Sport Cycle - Light Body, Sport * ATC - Medium Fiberglass Body * ATV - Heavy Fiberglass Body * Road Hog - Heavy Body Cars * Midget Racer - Personal, Stripped * Formula One - Mini, Sport, Stripped * Subcompact - Mini * Cooper - Mini, Sport * Compact - Light * Dune Buggy - Light, Offroad, Stripped * Trike - Light, Fiberglass * Sportscar - Light, Sport * Mid-Sized - Medium * Light SUV - Medium * Station Wagon - Extended * Luxury - Extened, Luxury * Limosine - Heavy, Luxury * Police Cruiser ** Very similar to a four-door mid-sized passenger sedan. Always RWD, with maybe 250 hp, driver, gunner, three prisoners (passengers). SR 4.75, TS 155, AC 9 (max 20), 19 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $35,000, 3600 lb. Each police cruiser will have at least one shotgun. * Cars ** Subcompact Car *** FWD, two-door or four-door. Two to five passengers. Top Speed 100mph. 30mpg. Cargo 15 cf /225 lbs. $15,000, 2350 lb. ** Compact Car *** FWD with around 130 hp, two- or fourdoor. Four to five passengers. SR 5.25, TS 120, AC 6 (max 10), 27 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $20,000, 2800 lb. ** Mid Sized Car *** FWD or RWD, with around 180 hp, two- or four-door with four to five passengers. SR 5.5, TS 130, AC 6 (max 11), 22 mpg@65. No Armor. Cargo 20 cf. Max load 300 lb. $26,000, 3300 lb. ** Station Wagon ** Luxury Car ** Mini Van") "Choose Frame" (rule :name "Choose Frame" :summary "* [Personal Frame] - Passengers can only be carried as cargo. * [Mini Frame] * [Light Frame] * [Medium Frame] * [Extended Frame] * [Heavy Frame] * [Extra Heavy Frame] * [Super Heavy Frame] * [Sport] * [Racing] * [Utility] * [Luxury] * [Heavy Duty] !Modifiers * Standard - the default for all cars is the standard body style. Up to 40% of their internal space may be devoted to weapons. * Stripped - 75% Weight, 75% Cost, No Armor. All exrtas like lights and air bags are removed. * Utility - 75% Cost, -1 Handling * Sport - 150% Cost, 120% Top Speed, +1 Handling, 75% Load * Racing - 300% Cost, 150% Top Speed, +2 Handling, 50% Load * Luxury - 150% Cost, +1 Handling ** Power everything, ABS, High quality Air bags, etc. * Heavy Duty - 150% Cost, 150% Load * Offroad - 150% Cost, -1 Terrain Penalty * Cheap car body - made from rough steel with crude weld points but is cheaper than the standard body. For every cf. of space a cheap car body costs $10, weighs 6 lb, yet has a maximum load of 28 lb. A car body made with cheap materials adds .25 to SR (see below). * Standard car body - consists of a basic unit-body construction of galvanized steel and steel alloys. For every cf. of space a standard car body costs $15, weighs 6 lb and has a maximum load of 29 lb. * Expensive car body - is an advanced design using high-tech alloys and reinforced plastics. For every cf. of space an expensive car body costs $25, weighs 6 lb, and has a maximum load of 30 lb. A car body made with cheap materials subtracts .25 from SR (see below). * Extra light (XLT) construction - adds 100% to the current body cost but reducing body weight by 25%. Cars with XLT bodies take 50% more damage in a collision. * Low Profile - cars that are low profile have been flattened so that their width and length are somewhat greater in proportion to their height. Many sports cars and limousines may be considered low profile. This makes them harder to hit and they handle better because of a lower center of gravity, but because they have less surface area they cannot mount as many weapons. -1 to hit, -0.5 SR. Only 25% of internal space may be used for weapons. * Very Low Profile - cars that are very low profile have been flattened so that their width and length are much greater in proportion to their height. Many exotic sports cars like the Lamborgini are very low profile. This is simply an extreme version of low profile. -2 to hit, -1 SR. Only 10% of internal space may be used for weapons. * High Profile - cars that are high profile are tall in proportion to their width and length. Many sport-utility vehicles and all vans may be considered high profile. +1 to hit, + .5 SR. Up to 75% of their internal space may be devoted to weapons. Space taken up by ammunition does not count against the amount of space a vehicle may use for weapons, only the weapons themselves counts against this. * Sport Model - Compacts or Mid-Sized only. The car is a &quot;sports&quot; car with only room for two, a driver and a single passenger. +30mph adds aerodynamic streamlining. A Sport body costs 100% more, subtracts .25 from SR, weighs 5% lighter, and adds 10% to final top speed and mileage. * The Utility option has one purpose: cheaper is better. Utility bodies are 30% cheaper, add .25 to SR, and subtract 15% from their final top speed and mileage. * The Sport Utility option adds aerodynamic streamlining to a heavier, cheaper frame. A Sport Utility body costs 60% more, adds 10% to final top speed and mileage, but adds .25 to SR.") "Choose Mass" (rule :name "Choose Mass") "Choose Engine(s)" (rule :name "Choose Engine(s)" :summary "** [[Unpowered]] ** [[Wood Burning Engine]] ** [[Coal Fired Engine]] - 35% Efficiency, 30 MJ/kg ** [[Battery Powered]] - 85% Efficiency ** [[Gasoline Engine]] - 20% Efficiency, 45.8 MJ/kg, .41 kW/kg Power / Weight ** [[Diesel Engine]] - 25% Efficiency, 45.3 MJ/kg (denser than Gasoline with 15% more energy by volume), .41 kW/kg Power / Weight (Turbocharged V8 Diesel) ** [[Natural Gas Engine]] ** [[Hydrogen Fuel Cell]] ** [[Jet Engine]] - 43.7 MJ/kg ** [[Rocket Engine]] - 70% Efficiency, 164 kW/kg Power / Weight (Space Shuttle) ** [[Nuclear Plant]] ** [[Fusion Plant]] * Cheap - $8, 5 lb, 0.2 cf. * Normal - $20, 4 lb, 0.18 cf. * High Output (HO) - $35, 3 lb, 0.15 cf. * Super High Output (SHO) - $50, 2.5 lb, 0.13 cf. * Exotic (EX) - $75, 2 lb, 0.11 cf. An engine has 1 hit per 2 full cubic feet. The smallest possible engine is 25 hp. A car may mount more than one engine, but may only use one at a time. * Turbocharger - This device uses the engine's exhaust stream to drive an air compressor which increases the engine's power output. It is not possible to fit a Supercharger and a Turbocharger into the same vehicle. +20mph, minor option.costs 50% of the original engine cost, weight is 10% of the original engine weight. A Turbocharger adds 30% to hp. No more than four turbochargers may be added to an engine. * Supercharger - A supercharger uses a belt and pulley mechanism linked to an engine's crankshaft to force extra air and fuel into the engine's combustion chambers, greatly increasing engine power. It is not possible to fit a Supercharger and a Turbocharger into the same vehicle. +20mph top speed +10 Acc. Costs 100% of the original engine cost, weight is 15% of the original engine weight. Adds 65% to total hp and one hit to the engine. May be combined with turbochargers, but if even one turbocharger is added the Supercharger only adds 40% to total hp. * Nitrous oxide may be purchased for $500, 15 lb. When fired (like a weapon), this system injects Nitrous Oxide gas into the combustion chamber. This gives a brief but enormous boost to speed. For a single turn per use, the vehicle's acceleration is increased by 30. This acceleration can be used to boost a vehicle's speed to over its normal Top Speed, but on the following turn it must reduce speed down to the Top Speed. 3-shot +30mph acceleration, minor option, destroyable More than one may be mounted but the effects of using two or more are not cumulative. * Computerised Engine Management - An electronic system which constantly monitors and tunes the engine as it is running, in order to maximise performance. +10 Acceleration, minor option, destroyable. * Engine Rebuild - Also known as &quot;blueprinting&quot;. The engine has been taken apart and re-assembled to within the most exacting tolerances, and certain production items replaced with high performance alternatives. +20mph top speed, minor option. * Fuel Injection - An advanced system which replaces the carburettor, giving a significant boost to performance. It is not possible to fit a Fuel Injection system and a Multicarb into the same vehicle. +20mph top speed +10mph Acc 2 minor options. * Multicarb - A multi-barrelled carburettor designed to give superior performance over the standard single barrelled carb. It is not possible to fit a Multicarb and a Fuel Injection system into the same vehicle. +20mph, minor option.") "Choose Travel Modes" (rule :name "Choose Travel Modes" :summary "** Land *** Wheeled *** Tracked *** Walker ** Marine *** Sail *** Prop *** Catamaran *** Hydrofoil *** Airboat - Steering is by rudders. No brakes or reverse. *** Hovercraft *** Submarine ** Ice *** Ice Sailboat *** Aerosan - Ice Airsled ** Air *** Propeller *** Jet *** Helicopter *** Rocket ** Space *** Rocket *** Magnetic Ion *** Hyperdrive *** Space Fold * Aquatic * Submersible * Glider * Propeller * Jet * Suborbital * Orbital * ExtraOrbital * Interplanetary - Can endure the rigors of interplanetary space for months if necessary. Completely self contained and recycling environment and food supply. * Interstellar - Can endure the rigors of interstellar space for years if necessary. Completely self contained and recycling environment and food supply. All cars have four wheels. Each wheel has (body space/20) hits, rounded down. Wheels may be reinforced to take more damage than they would normally be able to. This costs 35% of body cost and doubles the number of hits for each wheel. Wheels may be made fire-proof (FP) for an extra 10% of body cost. * High Preformance Tires - cost 40% of body cost, and subtract .25 from SR. Racing tires cost 100% of body cost, and subtract .5 from SR. * Racing Slicks - Racing style tires, with no noticeable tread pattern. Great for improving traction in dry conditions on the racetrack, lousy if it's wet, on a real road or off-road. +2HCon &quot;clean&quot; dry asphalt, -1HC on typical roads, -2HC off-road or on wet asphalt. * Spare tires count against the car's max weight and space. Each spare tire costs 20% of body cost, weights 5% of body weight, and takes up 1% of body space. A spare may be mounted on any side externally. This option costs an additional $100, but takes up no internal space. All external spares take damage BEFORE the armor they are mounted on, however if they take more than 3 hits of damage in a single round they fall off, effectively removed from game play. Spare tires may not have wheel guards. !Drivetrain * Rear wheel drive (RWD) is the standard drivetrain that comes with a vehicle design. * Front wheel drive (FWD) is a drivetrain option that reduces final body cost and weight by 15%. FWD adds .25 to SR. * All wheel drive (AWD) is a drivetrain option that increases final body cost by 100% and weight by 10%. +2HC on ice, oil, wet roads or offroad.") "Choose Maneuverability" (rule :name "Choose Maneuverability" :summary "* Human Interface - Physical skills in a vehicle are generally limited by how closely the vehicle matches the human body unless a particular piece of hardware is installed to enable the specific skill. ** Land *** Aerodynamics *** Suspension *** Terrain Modifications *** Traction ** Air *** VTOL *** Jumpjets *** Booster Rockets ** Space *** Verniers !Suspension * Sporty - For 50% of the final body cost a vehicle's suspension may be upgraded to Sporty. These better arms and shocks decrease SR by .25. * Sport - For 100% of the final body cost a vehicle's suspension may be upgraded to Sport. These superior coils, struts, and frame stiffening decrease SR by .5. * Racing - For 175% of the body cost the suspension may be upgraded to Racing, with complete body stiffening, automatic camber adjustment, and computer controlled shocks. Racing suspension decreases SR by one. * Off Road Suspension - Heavy duty suspension with a higher than usual ground clearance. Allows vehicle to pass Rough Terrain without penalty and to pass through Punishing Terrain. * Computer Assisted Suspension - An electronic system which monitors and adjusts the suspension in order to give a smoother, more stable ride. +1 HC minor option, destroyable.") "Choose Fuel and Range" (rule :name "Choose Fuel and Range" :summary "** External Fuel Tanks ** Propellant / Reaction Mass (spacecraft) * Gas Tank - $10 per gallon, weighs 7 lb (full) per gallon. Gas costs $2 a gallon. If a car runs out of gasoline (or a car's gasoline tank or engine is destroyed) the car may not accelerate and automatically decelerates by 5 mph per second. * Armored Gas Tank - $15 per gallon, weighs 12 lb (full) per gallon. * Self-sealing Gas Tank - $20 per gallon, weighs 10 lb (full) per gallon. Self-sealing gasoline tanks cannot explode when hit, but can explode when the vehicle is on fire. * Self-sealing Armored Gas Tank - $40 per gallon, weighs 15 lb (full) per gallon. Self-sealing armored gasoline tanks cannot explode.") "Choose Mission Specific" (rule :name "Choose Mission Specific" :summary "** Cargo Bay ** Decoys ** ECM/EW ** Hanger Bay ** Passenger Space - Passenger space is relative to the number of passengers, the operating range, and the relative luxury of the craft. ** Sensors ** Stealth ** Cloak !Cargo Cargo space is (usually) your leftover space: space not taken up by people, guns, or equipment. * Hidden Cargo Space - Up to half the cargo space in the vehicle is in hidden compartments. Handy in the event of &quot;Imperial Entanglements&quot;. Minor option, destroyable * Flatbed - Cargo space designated as a &quot;flatbed&quot; is exposed to the open air, but can carry twice the normal load. * Another vehicle may be put into cargo space, if the vehicle's Maximum Cargo Load is great enough. Any car placed in cargo of another car exits via the standard cargo access (usually the back), and suffers a Turn III in doing so.") "Choose Armor" (rule :name "Choose Armor" :summary "** Command Armor ** Radiation Shielding !Armor * Armor is applied to the six sides: Front, Left, Right, Back, Top, and Under. Armor for vehicles is spaced in layers of sheets 1/4&quot;-1&quot; apart and consists of a standard ablative carbon-reinforced plastic. This material is light and very strong, and can be shaped into any form, however it's ablative attribute has it's limitations. * Normal armor costs cubic feet divided by 10 and weighs (cubic feet divided by 30) + 5 per point. * Sloped (SLO) armor angles the plates under the skin of most of the vehicle, making it more efficient. Sloped armor costs cubic feet divided by 8 and weighs (cubic feet divided by 38) + 5 per point. * Chambered armor (CA) consists of tactically placed spacing between layers of high-quality sloped armor. This design costs cubic feet divided by 5 and weighs (cubic feet divided by 46) + 5 per point. * Options: Fireproof armor (FP) - Costs twice as much as regular armor but prevents the car from catching on fire, unless the armor becomes breached. * Laser Reflective (LR) Armor - Costs 3 times as much as normal armor but cuts all damage from lasers in half (unless the side hit is breached). * The combination of LR and FP armor (LRFP) costs 5 times as much as regular.") "Choose Weapons" (rule :name "Choose Weapons" :summary "!Aimed Weapons All aimed weapons come standard with a heavy transversal mounting, and an autoloader, allowing a high-degree arc of fire and an uninterrupted ammunition supply. This in turn makes them very versatile and powerful yet much bigger and heavier than normal. Aimed weapons can be mounted on the front, back, right, or left side of the car. Armed weapons may also be mounted in a turret on the top of the body. * Arcs of fire ** Hand Weapons *** The driver of a vehicle may fire directly ahead, or up to 90 degrees to the drivers side. *** The front passenger of a vehicle may fire in a 180 degree arc from directly ahead to directly behind. *** Rear passengers of a vehicle may fire directly behind, or up to 90 degrees to the side that they are on. *** Passengers standing up in a sunroof may fire in a 360 degree arc around the vehicle. *** Occupants in a convertible may fire in a 360 degree arc, except for the driver who is limited to the 180 degree forward arc. ** Mounted Weapons *** Door mounts fire into a 90 degree arc measured from the adjacent side or rear square. *** Pintle mounts fire into a 180 degree arc, either forward or rear. *** Fixed mount - directly ahead, and 1 square (50mm) either side of directly ahead (in effect a 3 square (150mm) wide fire corridor) *** 180 Turrets are must be specified as either Forward or Rear facing *** 360 degree mounts can fire in any direction. * Machine Guns The machine gun has been the mainstay of every army since the dawn of the 20th century. Light and cheap yet with a high rate of fire, they are very effective in high speed combat. The Gatlingstyle machine guns are a more recent design, and can devastate an opponent in seconds. ** Option: Super High Density (SHD) ammo - Cost x 10, +25% weight, +1/die damage. ** Machine Gun .223 (MG22) - To hit 11, 1d-4 damage, 1 hit. Cost $1200, weight 40 lb, 5 cf. Ammo costs $100, 80 lb, and has 100 seconds of ammo per cf. ** Machine Gun .30 (MG30) - To hit 11, 1d-2 damage, 2 hits. Cost $1950, weight 70 lb, 9 cf. Ammo costs $200, 50 lb, and has 50 seconds of ammo per cf. ** Machine Gun .50 (MG50) - To hit 11, 1d+2 damage, 4 hits. Cost $4200, weight 200 lb, 14 cf. Ammo costs $500, 50 lb, and has 20 seconds of ammo per cf. ** Chain Gun .50 (CG5) - To hit 12, 2d+1 damage, 4 hits. Cost $6000, weight 210 lb, 22 cf. Ammo costs $500, 50 lb, and has 12 seconds of ammo per cf. ** Automatic Shotgun ** 20 mm Autocannon (AC) - To hit 12, 5d+1 damage, 6 hits. Cost $28900, weight 850 lb, 60 cf. Ammo costs $250, 20 lb, and has 2 seconds of ammo per cf. Burst effect. * Cannons ** Option: Armor Piercing (AP) ammo - Cost x 3, +15% weight, +4/die damage. ** 20 mm Anti-Tank Gun (ATG) - To hit 11, 2d+4 damage, 4 hits. Cost $5500, weight 460 lb, 38 cf. Ammo costs $250, 20 lb, and has 10 shots per cf. Burst effect. ** 35 mm Cannon (C35) - To hit 11, 4d+10 damage, 7 hits. Cost $15600, weight 700 lb, 56 cf. Ammo costs $400, 20 lb, and has 6 shots per cf. Burst effect. ** 60 mm Cannon (C60) - To hit 11, 7d+15 damage, 7 hits. Cost $31100, weight 1320 lb, 75 cf. Ammo costs $750, 20 lb, and has 4 shots per cf. Burst effect. * Laser Weapons - Heavy and expensive yet extremely accurate and powerful, lasers offer a decisive advantage to their wielder. This advantage is balanced by the expensive laser-reflective armor available. ** Option: Infrared Modulation - Laser cost x 1.5, same weight, no penalty for firing through smoke. ** Light Laser (LL) - To hit 14, 1d-3 damage, 2 hits. Cost $5000, weight 125 lb, 10 cf. Has 30 shots from a rechargeable battery. ** Laser (L) - To hit 14, 2d-1 damage, 2 hits. Cost $10000, weight 350 lb, 25 cf. Has 30 shots from a rechargeable battery. ** Heavy Laser (HL) - To hit 14, 4d-1 damage, 3 hits. Cost $22000, weight 675 lb, 40 cf. Has 30 shots from a rechargeable battery. * Flame-Throwers - Used as anti-tank weapons and bunker busters for decades, these fire breathers are more efficient and longer range than their predecessors. ** Light Flame-Thrower (LFT) - To hit 13, 1d-1 damage, 2 hits. Cost $2500, weight 85 lb, 10 cf. Ammo costs $30, 40 lb, and has 4 seconds of ammo per cf. Limited to a 40 yard range. ** Flame-Thrower (FT) - To hit 13, 2d damage, 3 hits. Cost $4000, weight 150 lb, 20 cf. Ammo costs $30, 40 lb, and has 2 seconds of ammo per cf. Limited to a 60 yard range. ** Heavy Flame-Thrower (HFT) - To hit 13, 3d damage, 4 hits. Cost $7000, weight 300 lb, 35 cf. Ammo costs $30, 40 lb, and has one second of ammo per cf. Limited to a 80 yard range. * Grenade Launchers An automatic version of the popular infantry weapon. The gunner has the choice of attacking the target side of a vehicle or of attacking the top of the target at an additional -1 to hit. Used in this manner, the grenade launcher (other than the mortar, see below) is the only weapon that may fire OVER another car or obstacle, with no line-ofsight. ** Options: Incendiary - Cost $650 per cf of ammo. ** 40 mm Grenade Launcher (GL) - To hit 10, 2d damage, 3 hits. Cost $2850, weight 275 lb, 20 cf. Ammo costs $500, 45 lb, and has 30 shots of ammo per cf. Maximum range 100 yards. Burst effect. * Mortars - An infantry mainstay, somewhat inaccurate but extremely effective. Because of the general attempt of the gunner to place a mortar near the target, the gunner has the choice of attacking the target side of a vehicle or of attacking the top of the target at an additional -4 to hit. Similar to the 22 grenade launcher, the mortar may fire OVER another car or obstacle, with no line-of-sight. ** Options: White Phosphorus (WP) - Cost x2. ** 80mm Mortar - To hit 9, 6d damage, 4 hits. Cost $6500, weight 750 lb, 40 cf. Ammo costs $750, 50 lb, and has 12 shots of ammo per cf. Maximum range 300 yards. Burst effect. * Rockets - Powerful and cheap, rockets are some of the most effective weapons in the game. They also are rather inaccurate. After the first one, each additional rocket of the same size mounted on the same side takes up only 50% of its space and weighs 75% its weight. Rockets have a range of about 1000 yards. All rockets are burst effect weapons. ** Options: Pop-Up (PUR) - Minus 2 damage. Cost +70%. When a PUR hits the target car, the top side receives the damage. ** White Phosphorus (WP) - Cost +20%, -1 damage. ** Optical Target Recognition System (OTRS) - Cost +400%, -2 damage. To hit 9 within 100 yards, but locks on at 100 yards and has a to hit of 16 from there out, with no modifiers for range. ** 45 mm Rocket (R45) - To hit 9, 2d damage, 1 hit. Cost $470, weight 80 lb, 8 cf. Only 1 shot. ** 60 mm Rocket (R60) - To hit 9, 4d damage, 1 hit. Cost $950, weight 160 lb, 12 cf. Only 1 shot. ** 89 mm Rocket (R89) - To hit 9, 6d damage, 1 hit. Cost $2150, weight 240 lb, 16 cf. Only 1 shot. ** 120 mm Rocket (R120) - To hit 9, 8d damage, 1 hit. Cost $4500, weight 320 lb, 20 cf. Only 1 shot. ** Rocket Pod !Dropped Weapons Dropped weapons can only be mounted on the back or sides of a car. A dropped weapon mounted on the side of a car is to the left or right. Any number of dropped weapons may overlap, however, mines mixed with ACFO automatically go off (dealing mine damage to the firing car), but regular oil that comes into contact with ACFO does NOT ignite. * Mine Dropper (MD) - 2 hits, $1000, 50 lb, 15 cf. When a vehicle goes within the range of a mine (a 2 yard radius), each wheel takes 1d damage and the underbody takes 2d+6 damage. Each mine is $100, 20 lb, and .5 cf. Burst effect. ** Option: Claymore Mine (CM)- Costs $200 per cf., however when a claymore is dropped the direction of the blast must be specified. Claymores may be set to attack the bottom, left, right, front, or back of a vehicle. When a vehicle goes within range of a claymore the side specified takes 3d+2 damage. * Oil Jet (OJ) - 3 hits, $300, 20 lb, 5 cf. Causes a 5 yard-radius oil slick to fill the road when fired. Driving over oil is a Turn III. Ammo costs $30, 40 lb, and has 5 shots per cf. ** Option: Air-Contact Flaming Oil (ACFO) - Costs $1000 per cf, same as regular oil, but for every second a car is on the flaming slick it must roll as per a flame weapon on each tire and the underbody. ACFO burns out in 20 seconds. * Paint Sprayer (PS) - 2 hits, $500, 75 lb, 10 cf. Causes a 5 yard-radius paint cloud when fired. Ammo costs $100, 30 lb, and has 8 shots per cf. Paint dissipates in 3 seconds. Normal smoke penalty to 23 shoot through and if a car touches it treat that car as if it was night for the rest of the game. If already at night double the nighttime penalty. * Smokescreen (SS) - 4 hits, $400, 60 lb, 10 cf. Causes a 5 yard-radius smoke cloud when fired. Ammo costs $50, 20 lb, and has 9 shots per cf. Smoke dissipates in 10 seconds, whether or not a car drives close to it. * Spike Dropper (SD) - 3 hits, $750, 100 lb, 5 cf. Drops a 2 yard-radius cluster of spiked caltrops when fired. When a car goes over a cluster of these spikes, each wheel takes 1d-3 damage. Ammo costs $100, 20 lb, and has 10 seconds of ammo per cf.") "Choose Extra Equipment" (rule :name "Choose Extra Equipment" :summary "Listed here are several options that may be built into a Q-car design. More may be added to this list by the players if they wish, however all players present must agree on the addition. * Airfoils - Airdam in the front and/or a Spoiler in the back. +Handling Synergy. Destroyable. Costs 20% of final body cost and weighs 3% of final body weight each. * Active Suspension - $4000, 100 lb. A sophisticated electronic system controls the suspension to subtract .25 from the SR of a car. * Antilock Brakes - $1000, 10 lb. An advanced engineering system which prevents wheels from locking up when braking suddenly. +10 Dec, destroyable. * Brake Chute - A parachute mounted at the rear of the vehicle, designed to give rapid emergency deceleration. The vehicle must be travelling at least 60mph for the chute to deploy properly. 1-shot 60mph deceleration, minor option, destroyable. * Collision Spikes - $200, 30 lb. These nasty buggers pop out in the event of a collision with any object over 50 lb. One each may be mounted on the front, back, left or right sides. +Damage in a collision. * Convertible Top - Costs 50% of final body cost, weights 5% of final body weight, takes up 5% of internal space. When the convertible top is retracted, treat the top of the car as unarmored. May be made to resemble fabric. Cars with a convertible top may not mount a turret. * Electronic Traction Control - $1000, 10 lb, 1 cf. A small chip that keeps the tires from spinning, reducing the problems of extreme acceleration and helping with cornering. Subtracts .25 from SR. * Fake Weapon - $200, 25 lb, 1 cf. Scary when it pops out to shoot, but doesn't do anything else. May be of any type. * Fire Extinguisher - $450, 150 lb, 5 cf. Puts out a car fire on a roll of 1-6 on one die. May only be discharged four times before needing reloading. * Lights and Sirens - Police lights, sirens and a handy little searchlight. Minor option, destroyable. * Link - $100. Links two weapons together, so that they are aimed and fired together. Roll separate to-hit and damage rolls for each weapon. The weapons may not fire individually; all of them must fire until the link is removed between fights. * Overdrive - An extra-tall gear that adds 15% to a vehicle's final top speed when activated, however when activated, acceleration is halved. Costs 50% of final body cost. * Ramplate - This can take the form of spikes, blades or a reinforced plate. Costs 200% of final body cost, weighs 2 lb for every cf of body size. May only be mounted on the front. +Damage in a collision involving the front of a car and -Damage taken. * Roll Cage - A tubular steel framework designed to enclose the vehicle's passenger compartment and maintain its shape. While it's designed primarily to protect occupants in the event of the car rolling onto its roof, it also offers significant protection against side impacts. Halves damage caused by side impacts, minor option. * Search Light * Stripped - Excess weight has been removed from the vehicle in order to improve performance. The vehicle is still street legal, though just barely. +10mph top speed +10 Acc. * Stripped to the Bones - Everything, absolutely everything not involved in making the car go forward very fast has been removed or lightened, to the point where the vehicle is no longer street legal (lacking things like headlights, indicators etc). +20mph top speed +20 Acc. * Sun Roof - Allows one occupant to stand and fire hand weapons from the sun roof in a 360 degree arc. Firer doing so counts as &quot;exposed&quot; for the purposes of incoming fire. May not be fitted to Bikes. * Targeting Computer - $2000, 10 lb, 1 cf. Gives a particular crew member +1 to hit with any of the car's weapons. Limit one per crew member. An Artificial Intelligence (AI) targeting computer may be bought for $10,000, 50 lb, and 3 cf. This gives one crew member +2 to hit. * Turret - A turret is the only way to give a weapon a 360 degree arc of fire. ** Luggage turrets resemble a car-top carrier or suitcases strapped to the roof of a car. ** Hidden turrets retract completely within the car when they are not needed. A car may only mount one turret, and it can only be as big as the car's maximum weapon space. A turret is protected by the car's top armor. Turrets are built just like car bodies. For every cf of internal space a Luggage turret has, it takes up .2 cf, costs $50, and weighs 3 lb. For every cf of internal space a Hidden turret has, it takes up 1.2 cf, costs $100, and weighs 4 lb. For a weapon to be considered &quot;mounted&quot; in a turret, the entire weapon must fit into the turret's space. Ammunition does not have to be mounted in a turret with the weapon. * Wheel Guards - For each wheel protected wheel guards cost $7.5 and weigh 2.5 lb per point of armor. To protect it's left and right front wheels with 10 points of armor, a car would pay $150 and use 50 lb. The wheel guards must match the car's armor; if the car's armor is CA, FP or LR, then all wheel guards must be CA, FP or LR. The maximum points of armor per guard is equal to cf/10. Protects only from aimed shots, and only on a 1-7 on one die. Resemble solid wheel covers. * Wheelie Bar - Costs 10% of final body cost, weighs 5% of body weight, and takes up 2 cf of space. Adds 5 mph to maximum design acceleration. !Motorcycles * A cheap bike body is made from rough steel with crude weld points but is cheaper than the standard body. For every cf. of space a cheap bike body costs $10, weighs 4 lb yet has a maximum load of 28 lb. * A standard bike body consists of a basic unit-body construction of galvanized steel and steel alloys For every cf. of space a standard bike body costs $15, weighs 4 lb and has a maximum load of 29 lb. * An expensive bike body is an advanced design using high-tech alloys and reinforced fiberglass. For every cf. of space an expensive bike body costs $25, weighs 4 lb, and has a maximum load of 30 lb. * Sport option may be used, as can XLT option. Drivers and passengers only take up 6 cf, 175 lb. and 4 cf, 150 lb. respectively (no gunners allowed). Engines are smaller, lighter, and easier to build. For bikes the smallest possible engine is 10 hp (minimum of one hit). Cheap - $8, 3 lb, 0.14 cf. Normal - $20, 2.4 lb, 0.12 cf. High Output (HO) - $32, 1.8 lb, 0.10 cf. Super High Output (SHO) - $44, 1.4 lb, 0.08 cf. Exotic (EX) - $60, 1 lb, 0.06 cf. Motorcycles only have two wheels with (bike cf / 10) hits each, and may not have spares. Weapons may only be mounted on the front or back. No turrets or convertible tops are allowed, but all other accessories may be mounted, including wheel and suspension upgrades. Basic SR for bikes is 5, and all bikes have RWD. Bikes only have three armor facings: front, back, and under. The other sides are considered unarmored. Anytime a bike takes damage from the back, a roll of 1 or 2 on one die means the damage bypasses the rear armor. A bike adds +1 to all it's Table Two rolls (see below). Motorcycles are -3 to target. Passengers may fire a hand weapon in any direction. ** Cowling - A large aerodynamic cowling at the front. This both increases the bike's top speed, and offers protection to the rider from shots to the front. +10mph top speed, rider counts as Partially Exposed to shots from the front, minor option, destroyable.") "Finishing the Design" (rule :name "Finishing the Design" :summary "Here is where the final calculations are made concerning a vehicles performance and statistics. A vehicle's Design Top Speed is found by using the formula: Design Top Speed = ((engine hp x 3150) / car weight) + 30. The Fury has a design top speed of ((260 x 3150) / 4342) + 30 = 218.62 mph. Now don't get too excited, we are not done yet. Every car has an Acceleration (AC). The designer trades speed for acceleration by modifying the vehicle's transmission and engine layout before construction. A vehicle's Maximum Design Acceleration is calculated by using the following formula: Maximum Design Acceleration = 30 - (3 x SR) Be sure to round Maximum Design Acceleration down before recording it. The maximum design acceleration of the Fury is 30 - (3 x 3.75) = 18.75 or 18 mph/s. Again, don't get too excited. We want the car to be quick, but we don't want to lose too much of that top speed. So we decide to make the acceleration 7 mph/s. This may only give a real world 0-60 of 8.57 seconds, but in the game it gives a quarter mile time of under 16 seconds at 112 mph, which is not bad. No vehicle may have an AC of more than the maximum. Determine what the new vehicle's AC will be. The AC you choose will determine the final top speed (TS). A vehicle's TS may be determined by the following formula: Final Top Speed = Design Top Speed x (1 - ((AC x 5) / 100)) Once we have decided on an acceleration of 7, we can determine the final top speed. (7 x 5) = 35, divided by 100 = 0.35. (1 - 0.35) = 0.65... 218.62 x 0.65 = 142 mph. Plus 10% for a sport body puts that up to 156 mph. Not bad at all. Once the final TS is calculated, add the percentages for accessories and body style, if so equipped. Mileage at 65 mph (or top speed, if lower) is in miles per gallon and is equal to: Mileage = (9000 / (hp + (weight / 20)))"))))))
nx/tactics/books/land_sea_and_air / chapter_land_sea_and_air_terrain
Description:
Function Name:
  • chapter_land_sea_and_air_terrain
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_land_sea_and_air_terrain : base/chapter (chapter :name "Land, Sea and Air Terrain" :sectionmap (sectionmap "Terrain, Buildings" (section :name "Terrain, Buildings" :terrainmap (terrainmap "Air Field" (terrain :name "Air Field" :summary "* May [Deploy] Aircraft * Repairs Aircraft * Required to extend Aircraft Range") :Barracks (terrain :name "Barracks" :summary "* May [Deploy] Soldiers") :Bunker (terrain :name "Bunker" :summary "* A small stone or concrete building. * Gains [Armor] of stone/concrete except at [Point Blank Range]. +1 [Defense]") :Dock (terrain :name "Dock" :summary "* Required to extend Naval Supply Lines") "Field Headquarters" (terrain :name "Field Headquarters") "Field Hospital" (terrain :name "Field Hospital" :summary "* May [Deploy] Infantry with [Medicine] Skill * Heals Soldiers") "Fuel Depot" (terrain :name "Fuel Depot" :summary "* Required to extend Vehicle Supply Lines") "Motor Pool" (terrain :name "Motor Pool" :summary "* May [Deploy] land Vehicles * Repairs land Vehicles") :Passageway (terrain :name "Passageway" :titles "Corridor") :Room (terrain :name "Room") :Shipyard (terrain :name "Shipyard" :summary "* May [Deploy] Ships * Repairs Ships") "Supply Depot" (terrain :name "Supply Depot" :summary "* Required to extend Soldier Supply Lines"))) "Terrain, Natural" (section :name "Terrain, Natural" :terrainmap (terrainmap "Broken Ground" (terrain :name "Broken Ground") :Burning (terrain :name "Burning") :Cave (terrain :name "Cave" :titles "Cavern") :Desert (terrain :name "Desert" :summary "* +2 [Terrain Penalty] * +1 [Fatigue]/Turn * +1 [Thirst]/Hour * [Heat Wave] * [Mirage]") :Ice (terrain :name "Ice") :Jungle (terrain :name "Jungle" :summary "* Flora - Native peoples are well versed in finding food from their jungle environment but for the inexperienced there are many poisonous or harmful plants. Vines and creepers should never be grasped and pulled by the naked hand as many have sharp thorns, or can spilt into extremely sharp fibres, which can cause deep lacerations. Bamboo can split to form sharp stakes when mature and any minor cut can be very serious due to the high risk of infection. Many people will have seen the classic film or TV scene where the hero cuts a vine and then drinks from it, despite this being common scene it is not a good source of drinking water, if such water is red, yellow or milky in colour it is not safe to drink. Large sections of bamboo can also contain safe drinking water, to test for it tap the section of stem with blade or hard object and listen for a change in tone or sloshing sound, such water is safe to drink. On the other hand many jungle plants are very well adapted to such a damp environment and finding suitable leaves to make a waterproof shelter is often an easy task. Many plant saps contain irritants or toxins, which can be absorbed through the skin, so skin contact with plant sap should be avoided. Fungus is a major source of infections as in the high humidity the human body can become the perfect growing environment for a variety of unpleasant fungal parasites. Care to keep the feet dry using the correct powder is very important if at all possible as fungal foot infections in the jungle can quickly slow a person and turn a healthy one into a casualty. * Fauna - Jungles team with life but the greatest threat comes not from large animals but from invertebrates and smaller poisonous reptiles. Large predators such as Jaguar, Anaconda, and crocodiles will rarely attack adult humans. Much more dangerous are the vast array of stinging and biting insects which can cause sickness or be carriers for disease such as malaria and yellow fever. If scratched mosquito bites can quickly become infected in such conditions draining morale and strength. Scorpions, poisonous spiders and even poisonous frogs inhabit some jungles so checking your foot ware for visitors before putting your feet into them in the morning is vital. In some areas soldier ants can be a problems so sleeping should be done in hammocks above the ground, this also offers some protection against snakes and other nocturnal visitors. Larger predators and scavengers can be attracted by waste food and bodily waste so camp hygiene is important. If your party is strong and well armed certain large jungle animals can provide large amounts of fresh meat but such creatures are not easy to hunt and kill, wild boar and pigs are powerful animals. Most snakes are edible, an Anaconda can feed a small village but the capture and killing of one is not an easy task. Due to the variety of parasites and climate conditions the consumption of animals that you may find already dead is to be strongly avoided. * Environmental Hazards - Jungles are extremely hot and humid places and such conditions can place an enormous strain on the body. Despite the humidity dehydration can be a real problem and although water can be plentiful, clean water may not be. The jungle has a reputation for quickly destroying the fitness levels of the inexperienced, through dehydration, malnutrition, disease and fatigue. River crossings can be extremely hazardous and the simple precaution of wearing a condom (for the male members of the party) can prevent some very nasty parasites entering the body. Psychologically the jungles constant wall of green and low light levels beneath the canopy can seriously affect motivation and the sounds of the nocturnal animals can also be disturbing for those unused to them. All this said many native peoples around the world have learned to adapt and even thrive in such conditions.") :Lava (terrain :name "Lava") "Open Water" (terrain :name "Open Water") :Plains (terrain :name "Plains") :Quicksand (terrain :name "Quicksand") :Sand (terrain :name "Sand") :Scrubland (terrain :name "Scrubland") :Steppeland (terrain :name "Steppeland") :Snow (terrain :name "Snow") :Swamp (terrain :name "Swamp" :summary "* Bog Fen Murk") :Whitewater (terrain :name "Whitewater"))))))
nx/tactics/books/land_sea_and_air / chapter_maps
Description:
Function Name:
  • chapter_maps
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_maps : base/chapter (chapter :name "Maps" :sectionmap (sectionmap :Maps (section :name "Maps" :rulemap (rulemap "Air Map" (rule :name "Air Map") "Ocean Map" (rule :name "Ocean Map") "Swamp Map" (rule :name "Swamp Map") "Underwater Map" (rule :name "Underwater Map"))) :Terrain (section :name "Terrain" :rulemap (rulemap :Cave (rule :name "Cave" :summary "[Hazard]: Cave in.") :Jungle (rule :name "Jungle" :summary "[Hazard]: Difficulty starts at 2 for a sparse, mostly safe jungle.") :Snow (rule :name "Snow" :summary "[Hazard]: Avalanche."))))))
nx/tactics/books/magic
Description:
Package Name:
  • nx/tactics/books/magic
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_magic_overview, chapter_magical_skills, chapter_magic_items
Source Code:
  • (package nx/tactics/books/magic :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Magic" :image "Magick.jpg" :chaptermap (base/chaptermap "Magic Overview" (chapter_magic_overview) "Magical Skills" (chapter_magical_skills) "Magic Items" (chapter_magic_items) ))) (func chapter_magic_overview : base/chapter (chapter :name "Magic Overview" :summary "* The Art Classifications * Abjuration - Protective Magic. They create barriers, negate abilities, harm trespassers, or banish those who do not belong. It includes Barriers and Wards.")) (func chapter_magical_skills : base/chapter (chapter :name "Magical Skills" :sectionmap (sectionmap "Magic Items" (section :name "Magic Items" :summary "* Magic Weapons ignore armor equal to their + value. * Magic Armor ignores damage equal to their + value.") "Arcane Magic" (section :name "Arcane Magic" :reference "* Magic/Magick is not capable of producing 'miracles' or violating the physical laws of the universe (e.g., it cannot cause a solar eclipse), although it is theoretically possible to cause in any object any change of which that object is capable by nature - Aleister Crowley * Every intentional (Willed) act is a Magical act. - Aleister Crowley * Magick is the Science of understanding oneself and one's conditions. It is the Art of applying that understanding in action. - Aleister Crowley" :summary "* Those who pursue the arcane arts believe that by aligning their own minds to the patterns of reality, they may turn those patterns to their own ends. * Many believe that one must Awaken before being able to wield Magic. * Arcanists focus on the will of the individual to bend the world to their desires. This individual supremicist viewpoint is typically reflected in their egos as well." :titles "Arcanist" :powermap (powermap :Alchemy (power :name "Alchemy" :summary "* Alchemy is the art of creating acids, dusts, philter, and potions. * Benefits: Alchemical substances may be prepared ahead of time, used by others, and sold for profit. Their signature talent is the creation of the Philosopher's Stone that transmutes lead into gold. Because their talents benefit others, Alchemists are in high demand. * Penalties: Alchemical substances MUST be prepared ahead of time and require exotic ingredients. Their preparation normally requires the use of a laboratory and special equipment (See Equipment / Alchemical Devices)." :titles "Alchemist, Apothecary, Brewer, Chemist, Concocter, Drug Merchant, Libationist, Potioner, Snake Oil Salesman, Witcher" :abilitymap (abilitymap "Animate Colossus" (ability :name "Animate Colossus") "Animate Homunculus" (ability :name "Animate Homunculus") "Animate Statue" (ability :name "Animate Statue" :reference "* Terra Cotta Warriors * Kali - The Golden Voyage of Sinbad") "Ashes to Ashes" (ability :name "Ashes to Ashes" :summary "* Force a substance to age as if hundreds of years had passed. Stone wears to powder, wood turns to ashes, metal corrodes, colors fade.") "Exract Rare Earths" (ability :name "Exract Rare Earths" :summary "* Rare Earths are the most important of all alchemical ingredients because they are the catalysts that unleash the innate powers of other ingredients. * To those without Alchemical skill, they are indistinguishable from normal soil or sand. An Alchemist, however, may tell the difference and may extract [Hits] drams of Rare Earths from any soil in an hour.") "Forge Orichalcum" (ability :name "Forge Orichalcum" :summary "* See Equipment / Metals / Orichalcum") "Forge Rebis" (ability :name "Forge Rebis" :summary "* The Rebis (from the Latin res bina, meaning dual or double matter) is the end product of the alchemical magnum opus or great work. * After one has gone through the stages of putrefaction and purification, separating opposing qualities, those qualities are united once more in what is sometimes described as the divine hermaphrodite, a reconciliation of spirit and matter, a being of both male and female qualities as indicated by the male and female head within a single body. The sun and moon correspond to the male and female halves, just as the Red King and White Queen are similarly associated.") :Imbue (ability :name "Imbue") "Magnum Opus" (ability :name "Magnum Opus" :summary "* The process of working with the prima materia to create the philosopher's stone. It has been used to describe personal and spiritual transmutation. * Prima Materia - The ubiquitous starting material required for the magnum opus. It is the primitive formless base of all matter similar to chaos, the quintessence or aether. * Process philosophy - An approach to philosophy that identifies processes, changes, or shifting relationships as the only true elements of the ordinary, everyday real world. It treats other real elements (examples: enduring physical objects, thoughts) as abstractions from, or dependents on, processes. * Stages of the Magnum Opus ** Nigredo - The blackening or melanosis means putrefaction or decomposition. After gathering the Prima Materia, the material and the Alchemist must undergo putrefactio. The material is processed until it turns completely black. This is by far the longest and most difficult stage. It is often known as the 'dark night of the soul.' We are being asked to let go of all within us and outside of us that is not in full alignment with the truth of who we are. This is a truth as it exists on a soul level, far beyond the ego and its limited ideas or illusions about who we 'should' be. It is made far more difficult by the resistance and defenses we put up against it. Many of us will resist for years, remaining unwilling to accept that our lives, as we know them, are over. Few of us are quick to grasp the fact that there is new life waiting for us if we would only let go of the limited vision of existence we usually try so desperately to cling to. It is only when we become willing to surrender that the alchemical process truly begins. Only when we are willing to die do we have the chance to one day be reborn. ** Albedo - The whitening or leucosis is the perfect purification. The material is further processed removing all blackness until only pure white remains. Then it is said that life has conquered death, that the king has been revived. When one has purified his awareness of Self, during meditation, by eliminating thoughts, or otherwise, then at a certain point, light appears. The light that appears is also metaphoric for an absolute clear, pure awareness of Self. In that state one is in a very fixed position, that is, very stable, very much in the here and now, in total clarity of Self. In Whiteness, the material has attained a degree of Fixedness that fire cannot destroy. ** Rubedo - The reddening, purpling, or iosis. When the White stone or the White Elixir has been made, it needs to purified further, sublimated, until the material becomes totally Fixed and is completely stable. Then we have the Red Sulfur, the red stone, the Red Elixir, the Stone of the Wise. When the divine light has emerged during meditation, one needs to make it last. this demands a continued effort of holding one's attention to this pure awareness, not only for the length of the meditation session, but also during every day life. At a certain point the pure awareness of one's divine self will be permanent." :titles "The Great Work") "Prepare Alchemical Substance" (ability :name "Prepare Alchemical Substance" :summary "* Each substance requires a separate ability to be taken. * See Equipment / Alchemical Substances") "Prepare Medicine" (ability :name "Prepare Medicine" :summary "* Each medicine requires a separate ability to be taken. * See Equipment / Medicines") "Prepare Powder" (ability :name "Prepare Powder" :summary "* Each powder requires a separate ability to be taken. * See Equipment / Powders") "Transmute State" (ability :name "Transmute State" :reference "* Supposedly, the ancient Egyptians could create ice from water by placing water out under the stars." :summary "* Force a substance to make a minor state change (e.g. Liquids become solids, soft substances turn to liquid, hard substances become soft, water evaporates, ice melts."))) :Artifice (power :name "Artifice" :summary "* Synergy with Mechanics" :titles "Artificer, Engineer, Inventor, Inventress, Machinist, Mechanic" :abilitymap (abilitymap "Construct Automaton" (ability :name "Construct Automaton" :reference "* Minaton - Sinbad and the Eye of the Tiger" :summary "* Purpose - When constructing an Automaton, it must be given one or more purposes. These are similar to skills, for example: Farming, Construction, Medicine, Melee, Ranged Combat, Strength, etc. The purpose must be trained by an expert in the field and an extended roll determines the level of the Skill. Once the level is determined, specialties and abilities may be chosen equal to the level.") "Construct Balloon" (ability :name "Construct Balloon") "Construct Device" (ability :name "Construct Device") "Construct Flying Machine" (ability :name "Construct Flying Machine") "Construct Machina" (ability :name "Construct Machina") :Firepower (ability :name "Firepower" :summary "* Temporarily increase the damage done by a mechanical weapon.") "Fulfill your Purpose" (ability :name "Fulfill your Purpose" :reference "* Bomb, this is Lt. Doolittle. You are NOT to detonate in the bomb bay. I repeat, you are NOT to detonate in the bomb bay! - Dark Star" :summary "* Machines want nothing more than to fulfill their designed purpose, so it is simple to convince them to perform this purpose, even when it is not supposed to.") "Ghost in the Shell" (ability :name "Ghost in the Shell") "Imbued Nails" (ability :name "Imbued Nails" :summary "* Empower nails to produce massive splitting damage when struck.") :Invention (ability :name "Invention") :Haywire (ability :name "Haywire") :Malfunction (ability :name "Malfunction") "Override Machine" (ability :name "Override Machine") "Speak with Machines" (ability :name "Speak with Machines"))) :Astrology (power :name "Astrology" :summary "* Astrology is the study of the [Stars] and the [Astral Realm] * Planetary days: Each day of the year is related to one of the planets, the moon and the sun. Energies differ in accordance with the position of the planets. * Lunar cycle: The cycle of the visible phase of the moon. This is a very powerful time for ritual ceremonies to be preformed." :titles "Astrologer, Astromancer, Celestial Magic, Stargazer" :abilitymap (abilitymap "Aim of Sagittarius" (ability :name "Aim of Sagittarius" :summary "* [Action]: Target gains [Synergy] for the next ranged [Attack].") "Astral Projection" (ability :name "Astral Projection" :image "Units/Magic/AstralProjection.jpg" :summary "* [Action]: Body fall unconscious with Spirit enters the [Spirit Realm]. The Spirit may travel as long as it wants, but if no one tends to the Body, it will die of dehydration in 3 days. * [Death]: At the moment of death, Spirit may permanently enter the [Spirit Realm].") "Astral Sight" (ability :name "Astral Sight") "Astral Ward" (ability :name "Astral Ward") "Balance of Libra" (ability :name "Balance of Libra" :summary "* [Action]: Place the Balance of Libra card on this unit. At any time you may discard the Balance of Libra card to cause a unit that has done damage to you to immediately suffer the same amount of damage.") "Calm of Cancer" (ability :name "Calm of Cancer" :summary "* [Action]: Targets ignore all [Mind] penalties for the duration of this ability.") "Celestial Convergence" (ability :name "Celestial Convergence") "Chariot of the Sun" (ability :name "Chariot of the Sun" :summary "* [Extended Action]: At dawn, if the sun is visible, summon a blazing chariot with horses of flame that can carry the user and up to level passengers high into the sky all day. At sunset, the chariot lands anywhere the user chooses where the sun is visible.") "Charm of Virgo" (ability :name "Charm of Virgo" :summary "* [Action]: Gain [Synergy] on unit's next communication skill. Duration 1 turn.") "Cleansing of Aquarius" (ability :name "Cleansing of Aquarius" :reference "* Aquarius is not a water sign. It's an air sign. The mix up often comes about from Aquarius' overarching symbol, the water-bearer." :summary "* [Action]: Remove X [Poison], [Disease], or [Corruption] cards from the target.") "Courage of Leo" (ability :name "Courage of Leo" :summary "* [Action]: Remove X [Retreat] tokens from all target in range.") :Daybreak (ability :name "Daybreak" :summary "* Banishes fatigue in diurnal (daytime) creatures. * Causes noturnal creatures to fall asleep.") "Déjà Vu" (ability :name "Déjà Vu" :summary "* You have seen this situation before and are not surprised by it. * [Action]: The next time you are [Suprised], ignore all penalties for [Surprise].") "Depth of Pisces" (ability :name "Depth of Pisces" :summary "* [Extended Action]: Gain [Synergy] on the next [Search], [Research], or [Investigation] [Action].") "Determination of Aries" (ability :name "Determination of Aries" :summary "* [Action]: Target ignores all movement penalties (including terrain) for the duration of this effect.") "Duality of Gemini" (ability :name "Duality of Gemini" :summary "* [Action]: Take on a different personality with different mannerisms. This can be the basis for a very convincing disguise.") :Eclipse (ability :name "Eclipse" :summary "* [Extended Action]: Predict where, when, and the intensity of the next solar or lunar eclipse. The eclipse is very impressive to others and is almost always tied to important mystical events. * Both the Solar Eclipse and Lunar Eclipse (Blood Moon) provide the following benefits or penalties: +2 [Astrology], +2 [Black Magic]. +1 [Sorcery], -1 [Thergy], -1 [Nature Magic]") "Eye of Jupiter" (ability :name "Eye of Jupiter") "Full Moon" (ability :name "Full Moon") "Hand of Fate" (ability :name "Hand of Fate") "Hide from the Stars" (ability :name "Hide from the Stars" :summary "* Protects from the divinations of others.") "Meteor Shower" (ability :name "Meteor Shower" :summary "* [Extended Action]: Call meteors" :titles "Starfall") "Moon Bridge" (ability :name "Moon Bridge" :summary "* Opens a bridge to the Ethereal version of the Moon.") "New Moon" (ability :name "New Moon") "Ring of Saturn" (ability :name "Ring of Saturn") "Secrets of Scorpio" (ability :name "Secrets of Scorpio" :summary "* [Extended Action]: Learn a secret about a subject.") "Star of Ill Omen" (ability :name "Star of Ill Omen") :Stargazing (ability :name "Stargazing") :Starsight (ability :name "Starsight" :summary "* See clearly at night while under the stars.") "Steadiness of Capricorn" (ability :name "Steadiness of Capricorn" :summary "* [Action]: Target gains [Synergy] for the next physical, non-attack [Action].") :Sunlight (ability :name "Sunlight" :summary "* [Action]: Cause a light the unit holds to become bright sunlight. The light produces warmth like a campfire and will cause damage to creatures harmed by sunlight.") "Waning Moon" (ability :name "Waning Moon") "Waxing Moon" (ability :name "Waxing Moon") "Will of Taurus" (ability :name "Will of Taurus" :summary "* [Action]: Targets ignore all attack penalties for the duration of this ability.") "Written in the Stars" (ability :name "Written in the Stars" :summary "* [Action]: Foresee a random event that will happen in [Time] level."))) :Chronomancy (power :name "Chronomancy" :abilitymap (abilitymap :Delay (ability :name "Delay") "Reverse Time" (ability :name "Reverse Time" :reference "* If I could turn back time... - Cher") "Slow Time" (ability :name "Slow Time") "Temporal Vision" (ability :name "Temporal Vision") "Tempus Fugit" (ability :name "Tempus Fugit" :summary "* Speeds time in an area" :titles "Time Flies") "Time Heals All Wounds" (ability :name "Time Heals All Wounds" :summary "* After healing the physical effects of a wound, the ability can remove the mental scars by actually removing the wounds from the past. The level of the ability determines the number of years in the past from which the wound is erased. If the entire history is erased the wound will have never occurred and no one will remember it except the caster. The person's life history is rewritten without the wound. This can result in significant changes if the wound was debilitating. The power of this ability ensures that any changes will never be worse than the current situation.") "Time Shift" (ability :name "Time Shift") "Time Stop" (ability :name "Time Stop" :titles "Time Freeze") "Wall of Time" (ability :name "Wall of Time") "Warp Time" (ability :name "Warp Time" :reference "* Let's do the Time Warp again... - The Rocky Horror Picture Show" :titles "Time Warp"))) :Conjuration (power :name "Conjuration" :summary "* Conjuration is the art of creating things directly from the imagination. Conjured items are relatively fragile and erode quickly with use, but otherwise will last indefinitely. An item is perfectly visualized and then drawn into reality from the Astral Realm. Conjuration is similar to [Illusion], but its creations are real though they are rarely permanent. * Action: Check Skill vs. the Value of the item to create. If successful, the item can be used a number of times equal to the result before disintegrating. If the user has a specialty with an item, that specialty may be applied to the check. * Benefits - Conjuration is the natural ability of the Astral Realm and Dream Realm. All abilities are +1 in these Realms. * Limitations - Creation magic is exceedingly difficult with only relatively minor creations possible. The process of Conjuration is different from natural things, so all Conjured things have some imperfection or mark that distinquishes itself from a natural thing. * Concidental - Conjuring in ways that appear like the object was already there is [Coincidental Magic]. E.g. Drawing an illusionary sword from a real scabbard." :titles "Conjurer, Creation, Creator, Manifestation" :abilitymap (abilitymap "Conjure Weapon" (ability :name "Conjure Weapon" :summary "* Conjure a weapon out of thin air. * [Limited]: By the user's skill in the weapon created."))) :Divergence (power :name "Divergence" :summary "* The opposite of Convergence, Divergence specializes on objects moving apart." :stat "Mind" :abilitymap (abilitymap "Amplify Repulsion" (ability :name "Amplify Repulsion" :summary "* Massively increase the repulsive force between two objects. This can increase magnetic repulsion and also increase the movement of two objects that have just collided to increase Knockback.") "Pressor Force" (ability :name "Pressor Force" :summary "* Apply low but steady pressure pushing an object away."))) "Paper Magic" (power :name "Paper Magic" :titles "Ofuda" :abilitymap (abilitymap "Binding Paper" (ability :name "Binding Paper") "Binding Symbol" (ability :name "Binding Symbol") "Giant Kite" (ability :name "Giant Kite") "House of Cards" (ability :name "House of Cards") "Paper Airplane" (ability :name "Paper Airplane") "Paper Crane" (ability :name "Paper Crane") "Paper Darts" (ability :name "Paper Darts") "Paper Doll" (ability :name "Paper Doll") "Paper Dragon" (ability :name "Paper Dragon") "Paper Flurry" (ability :name "Paper Flurry") "Paper Mache" (ability :name "Paper Mache") "Paper Plane" (ability :name "Paper Plane") "Paper Shuriken" (ability :name "Paper Shuriken") "Paper Snowflake" (ability :name "Paper Snowflake") "Paper Tiger" (ability :name "Paper Tiger") :Pinwheel (ability :name "Pinwheel"))) :Sorcery (power :name "Sorcery" :reference "* This is forbidden. This is a summoning. I cannot speak this!... There is no light here. You came to the darkness for knowledge... And all the knowledge you seek is here. Surrender. Speak the words. Call her home. By three thay come. By three thy way opens. By the blood of the willing. We call thee home. Hail, daughter of hatred. Hail, Lilith. - Diablo IV" :titles "Sorcerer, Sorceress, Sorceress Queen, Summoner" :abilitymap (abilitymap :Banishment (ability :name "Banishment" :summary "* [Action]: Return any [Outsider] to its original realm. This ability may only be attempted on a particular being once per month.") :Binding (ability :name "Binding" :summary "* Any subject successfully summoned is attuned to the caster and is subject to a binding. The caster may bind immediately or parley first and use the binding as a threat. * [Requires]: The caster must describe the subject's past in detail and name his/her demands. If the description is in error or the demand cannot be completed, the Binding automatically fails. * [Action]: If successful, the caster will know the subject is bound and it will perform the demand to the letter, but the subject is unwilling and will seek to defeat the caster's wishes through semantics or in passive/agressive ways.") "Binding Contract" (ability :name "Binding Contract" :summary "* Like [Binding], any subject successfully summoned is attuned to the caster and is subject to a binding. The caster may parley and use the binding to enforce an agreement. * [Requires]: The caster must name his/her demands and offer compensation to the subject. They may then negotiate for as long as desired. * [Action]: If the subject refuses to bargain, the caster may still cast or threaten a [Binding]. If the subject agrees to the bargain, the subject and the caster are automatically bound to the terms of the bargain, and both must fulfill their commitments or be immediately subject to a [Summoning] and automatically successful forced [Binding] (even if neither party has these abilities).") "Containment Jar" (ability :name "Containment Jar" :reference "* Evil Containment Wave - Dragon Ball" :summary "* A summoned being may be captured in a special container that permanently imprisons the creature. * The being in the jar can telepathically communicate with anyone touching the jar. If the jar is broken, the being is immediately freed. The being may bargain for its freedom, and if it does so, it must fulfill its bargain. * Imprisonment in a jar can be used as a threat or the caster may simply imprison the being to be used later." :titles "Soulbind") "Create Elder Sign" (ability :name "Create Elder Sign") "Daedalus Gateway" (ability :name "Daedalus Gateway" :summary "* A subtle gate that moves a person to a different Realm without them realizing. Both locations must be nearly identical.") "Dimension Door" (ability :name "Dimension Door" :summary "* Cross through a doorway or arch of some sort and appear through another similar arch some distance away.") "Dimensional Gateway" (ability :name "Dimensional Gateway" :summary "* Open a portal to another dimension.") :Gateway (ability :name "Gateway" :summary "* Open a portal to another location.") :Pentagram (ability :name "Pentagram" :summary "* A Triangle enclosed in a circle. A double triangle will form a Pentagram. * The five points represent the four elements with the spirit presiding at the top. The triangles form a doorway. * Time allowing, it is usually meticulously inscribed and used with a [Protective Circle]. * It serves to contain any being (and its minions) summoned by the caster. * It provides defense equal to the success roll versus any being (and its minions) summoned by the caster. This defense applies to ALL attempts to act across the Pentagram. If an attack exceeds the defense of the Pentagram, the defense reduces by one." :titles "Binding Circle, Devil's Door, Thaumaturgic Triangle") :Protection (ability :name "Protection" :summary "* A protective barrier inscribed on the ground to protect the caster from summoned beings (usually his own). * A typical size for a circle is nine feet in diameter, though the size can vary depending on the purpose of the circle. * Some practitioners choose to mark the physical boundary of their circle, either before or prior to the actual casting. This can be done using a cord, a chalk line, a line drawn in the soil, or small objects such as stones. * Some practitioners mark the four cardinal points with candles, either white, or of colors representative of the elements: ** North: green for the element of Earth ** East: yellow for the element of Air ** South: red for the element of Fire ** West: blue for the element of Water * Cutting a door - The barrier is fragile and sensitive to things passing through it. Leaving or passing through the circle often weakens or dispels the barrier. This is referred to as 'breaking the circle'. Practitioners should not leave the circle unless absolutely necessary. In order to leave a circle and keep it intact, a door must be cut in the energy of the circle. Using the athame, a doorway is cut in the circle, at which point anything may pass through without harming the circle. This opening must be closed afterwards by reconnecting the lines of the circle." :titles "Circle of Protection, Protective Circle") "Soul Pact" (ability :name "Soul Pact" :summary "* Death: Enter a specified Demon Realm. This ability is automatic and is not optional.") "Summon Demon" (ability :name "Summon Demon" :titles "Demonic Summoning") "Summon Devil" (ability :name "Summon Devil" :titles "Diabolic Summoning") "Summon Familiar" (ability :name "Summon Familiar" :reference "* Animal companions, such as cats, that are either trained to assist in magic, or are used as a mascot." :summary "* Summon an animal shaped familiar spirit to serve as a companion, servant, spy, etc. * The Familiar is highly intelligent and must be bargained with before it agrees to serve. * Duration: Indefinite. * The Familiar will age with its master. * The Familiar can gain abilities that its master possesses. * Three mystic cords are constructed to link the Familiar to its master. ** Golden Cord - Connects magical abilities. ** Silver Cord - Connects the minds. ** Bronze Cord - Connects the bodies. !Familiar Skills * Shapechange to Human Form * Giant Growth (Self) * Communicate with Master * Speech") "Summon Item" (ability :name "Summon Item" :summary "* A single item may be attuned to a summoning. Later that item may be summoned to the owner's hand."))) :Thaumaturgy (power :name "Thaumaturgy" :summary "* The interface between Magic and Science. Mathematics, Biology, Geology and Chemistry are studied to manifest amazing creations. * Thaumaturgy can create permanent artificial life. * Thaumaturgy favors crytals and gemstones for power supplies." :titles "The Art Mathematical, Wonder Working" :abilitymap (abilitymap "Create Homonculus" (ability :name "Create Homonculus") "Prepare Lightning in a Bottle" (ability :name "Prepare Lightning in a Bottle" :summary "* Create [Lightning in a Bottle]."))) :Wizardry (power :name "Wizardry" :summary "* Conventional Wizardry believes that everything in the universe holds massive energy potential waiting to be unleashed. * Wizardry is the study of Magic itself. As such it is a sort of meta-Magic, focused on altering magical energies." :titles "Archmagi, Magi, Wizard" :abilitymap (abilitymap "Analyze Magic" (ability :name "Analyze Magic" :summary "* Gain understanding of a magical item or effect.") :Counterspell (ability :name "Counterspell" :summary "* [Interrupt]: Roll a defense roll against a magical ability. If the defense succeeds, the ability has no effect.") :Dampen (ability :name "Dampen" :summary "* Magic can easily be reduced since magic already has a tentative hold on reality.") :Dispel (ability :name "Dispel" :summary "* Attack a placed magical ability. Each hit weakens its abilities.") :Fork (ability :name "Fork" :summary "* Duplicate an allied caster's magical ability. The other caster fully controls both abilities but may not aim both at the same target.") :Magnify (ability :name "Magnify" :summary "* Magnify draws from the potential energy in all things to increase the power in an existing force. * Note: Magic cannot be magnified. Magic only simulates reality and has no hidden reserves to tap. !Examples * An arrow can hit with devastating force. * A bird's weight can be increased so it falls. * A fire can be enhanced into an inferno while not burning fuel faster or producing additional smoke. The fuel has near infinite reserves to draw upon.") "Mana Burn" (ability :name "Mana Burn") "Mana Leak" (ability :name "Mana Leak") "Mana Shield" (ability :name "Mana Shield" :summary "* Forms an transparent crytal shell in front of the caster, but if they moves, the shield will drop. * [Defend]: Protected with level Armor from all [Physical] [Damage].") "Mirror Shield" (ability :name "Mirror Shield" :summary "* Forms an transparent crytal shell in front of the caster, but if they moves, the shield will drop. * [Defend]: If defender was targetted by an [Energy] attack lower than level, the Attacker also suffers the attack. * Wall that reflects attacks back to its source.") "Mirror Wall" (ability :name "Mirror Wall" :summary "* Wall that reflects [Energy] attacks lower than level back to their source. Any attack higher than level will destoy the Wall.") "Paradigm Shift" (ability :name "Paradigm Shift" :summary "* Change one rule of nature for a moment.") "Power Sink" (ability :name "Power Sink") "Power Surge" (ability :name "Power Surge") :Redirect (ability :name "Redirect" :summary "* [Reaction]: Redirect an Energy or Physical Ranged attack that has a single target to another target.") :Stasis (ability :name "Stasis" :summary "* Place an equal number of White Stasis Tokens on yourself and your target.") "White Noise" (ability :name "White Noise" :summary "Sounds are garbled preventing eavesdropping") "Wizard Armor" (ability :name "Wizard Armor" :summary "* Defense against Energy that creates [Feedback].") "Wizard Lock" (ability :name "Wizard Lock" :summary "* Wizard Lock alters an existing magical effect by freezing it in place. It becomes permanent until dispelled, but it no longer has an active effect. In this way a wall of fire would be a permanent wall that does not move or produce heat. This is often used to make a seal last indefinitely."))))) "Black Magic" (section :name "Black Magic" :powermap (powermap "Blood Magic" (power :name "Blood Magic" :summary "* Each use of Blood Magic requires a blood sacrifice. The user immediately suffers one [Blood Loss], or if a captured sacrifice is available, the user may instead use the blood of the sacrifice. * Blood magic is a favorite of Vampires who can recover from [Blood Loss] quickly." :titles "Blood Brother, Blood Mage, Blood Witch, Vampire" :stat "Shadow" :abilitymap (abilitymap "Blood Bath" (ability :name "Blood Bath" :summary "* Bathe in the blood of of the young and healthy. Gain [Vampiric Blood] (even if not a [Vampire]) equal to the number of victims drained up to [Blood Magic].") "Blood Bind" (ability :name "Blood Bind") "Blood Blade" (ability :name "Blood Blade" :summary "* Create a sword, knife, or axe from blood. Blood Weapons always cause [Bleeding].") "Blood Borne" (ability :name "Blood Borne" :summary "* Target: [Bleeding]. Apply [Sickness] to a [Bleeding] target.") "Blood Brother" (ability :name "Blood Brother") "Blood Feud" (ability :name "Blood Feud") "Blood Lust" (ability :name "Blood Lust" :summary "* Action: +1 [Attack] and +1 [Damage], take -1 [Body]" :titles "Blood Rage") "Blood Oath" (ability :name "Blood Oath") "Blood Spear" (ability :name "Blood Spear" :summary "* Create a spear or javelin from blood. Blood Weapons always cause [Bleeding].") "Blood Whip" (ability :name "Blood Whip" :summary "* Create a whip or rope from blood. Blood Weapons always cause [Bleeding].") "Boil Blood" (ability :name "Boil Blood" :summary "* Touch, Fire Attack, Criticals are only Damage.") "Call for Blood" (ability :name "Call for Blood") :Hecatomb (ability :name "Hecatomb" :reference "* In ancient Greece or Rome, a great public sacrifice, originally of a hundred oxen. * An extensive loss of life for some cause.") :Lifeblood (ability :name "Lifeblood" :summary "* Use Blood to heal yourself. * [Action]: Take a [Blood Loss]. Change 1 [Critical Damage] to a normal [Damage] or change 1 [Damage] to a [Blood Loss].") "Out for Blood" (ability :name "Out for Blood"))) :Chaos (power :name "Chaos" :reference "* Do what thou wilt shall be the whole of the Law. - Alesiter Crowley, Book of the Law * The Butterfly Effect - Any 'seemingly' insignificant event in the universe has the potential to trigger a chain reaction that will change the whole system. * Do I really look like a plan? ... I just...do things. The mob has plans. The cops have plans. Gordon's got plans. They're schemers, schemers trying to control their little worlds. I'm not a schemer. I try to show the schemers how pathetic their attempts to control things really are. ... I just do what I do best, I took your little plan and turned it on itself. Look at what happened to this city with a few drums of gas and a couple of bullets. ... Introduce a little anarchy. Upset the established order and everything becomes chaos. I'm an agent of chaos. - Joker, The Dark Knight" :summary "* Belief is a tool that can be applied at will rather than unconsciously. * Trying unusual, and often bizarre beliefs is in itself an experience worth having * Flexibility of belief is a form of power * Be outside of all categories - world views, theories, beliefs, opinions, habits and even personalities are tools that may be chosen arbitrarily in order to understand or manipulate the world one sees and creates around oneself. * Be tolerant - whatever one might disagree over is merely an opinion, and hence interchangeable, anyway. * Chaos magic is unique among magical traditions in that it does not attribute significance to any particular symbol or deity." :titles "Chaos Lord, Discordian, Logros Master, Lord of Chaos" :stat "Shadow" :abilitymap (abilitymap :Anarchy (ability :name "Anarchy") :Bedlam (ability :name "Bedlam") :Breakdown (ability :name "Breakdown" :summary "* Causes machinery to fail. The more complex the device the more dramatic the failure.") :Deconstruct (ability :name "Deconstruct" :reference "* People and planets and stars will become...dust...and the dust will become atoms...and the atoms will become...nothing. - Davros, Doctor Who" :summary "* Break apart an object into simpler pieces. Each successive use breaks down an object further. E.g. Wheel -> Tire -> Rubber -> Chemicals -> Atoms -> Particles") "Manipulate Luck" (ability :name "Manipulate Luck") :Pandemonium (ability :name "Pandemonium") "Sea of Chaos" (ability :name "Sea of Chaos") "Shroud of Uncertainty" (ability :name "Shroud of Uncertainty") "Tendrils of Chaos" (ability :name "Tendrils of Chaos") "Wild Ride" (ability :name "Wild Ride" :summary "* Allow the whims of fate to carry you to a destination of their choosing.") :Unravelling (ability :name "Unravelling" :summary "* Knots untie, locks unfasten, etc.") "Winds of Change" (ability :name "Winds of Change"))) :Corruption (power :name "Corruption" :reference "* How do we begin to covet? We begin by coveting what we see every day. - The Silence of the Lambs * Deadite: I'll swallow your soul! Ash: Come get some. - Ash, Army of Darkness * There is nothin' fair in this world... No... There is nothin' safe in this world... And there's nothin' sure in this world... And there's nothin' pure in this world... Look for something left in this world... Start again! - Billy Idol, White Wedding" :titles "Blight Caster, Contaminator, Corrupter, Defiler, Filth, Plague Bearer, Plague Lord, Plague Walker, Sin, Sin Lord, Scourge, Tainted" :stat "Shadow" :abilitymap (abilitymap :Balefire (ability :name "Balefire" :summary "* Balefire is a magical, corrupting fire that appears as a sickly pale, greenish flame that flows like a liquid. It burns like napalm and is not extinquished by water. Prolonged exposure produces damage like [Radiation]." :titles "Hellfire, Witchfire") :Befoul (ability :name "Befoul") :Blight (ability :name "Blight" :summary "* Damage plant life in an area.") :Contaminate (ability :name "Contaminate") :Corrosion (ability :name "Corrosion") :Corrupt (ability :name "Corrupt") :Decay (ability :name "Decay") :Defile (ability :name "Defile") :Despoil (ability :name "Despoil") :Deteriorate (ability :name "Deteriorate" :summary "* Magnify any existing negative tokens.") :Epidemic (ability :name "Epidemic" :summary "Copies all conditions from target to all targets in the area around the target.") "Eye of Corruption" (ability :name "Eye of Corruption") :Miasma (ability :name "Miasma") :Pestilence (ability :name "Pestilence") :Plague (ability :name "Plague") "Plague Carrier" (ability :name "Plague Carrier" :summary "* This ability inflicts a contagious disease on a subject while also providing some immunity to the victim. * The subject then spreads the disease to others." :titles "Plague Bearer, Typhoid Mary") "Plague Strike" (ability :name "Plague Strike" :summary "* Add [Disease] Criticals to a normal attack.") :Pollute (ability :name "Pollute" :summary "* Add Poison or Disease to any fluid or food.") :Putrefy (ability :name "Putrefy") "Putrid Explosion" (ability :name "Putrid Explosion") :Rot (ability :name "Rot") :Ruin (ability :name "Ruin" :summary "* Cause a structure to age and take structural damage." :titles "Raze") :Sicken (ability :name "Sicken") "Tainted Land" (ability :name "Tainted Land") :Wither (ability :name "Wither" :titles "Shrivelling"))) :Darkness (power :name "Darkness" :reference "* The blackness gathers about, so thick, so clinging, so penetrating, so oppressive, that all other darkness that I have ever conceived would be like bright light beside it. - Aleister Crowley, Magick Without Tears * When the shadows are devoured by even darker shadows, the curtain pulls back and reveals a world without light! - Dark Signers, Yugioh 5Ds * To go in the dark with a light is to know the light. To know the dark, go dark. Go without sight and find that the dark, too, blooms and sings, and is traveled by dark feet and dark wings. - Wendell Berry, To Know the Dark" :titles "Dark Lord, Dark Magician, Dark Master, Dread Knight, Lord of Night, Shadow Caster, Shadow Knight, Shadow Lord, Shadow Mage, Shadow Master, Shadow Rider, Shadow Walker, Shadow Warrior" :stat "Shadow" :abilitymap (abilitymap "Cast Shadows" (ability :name "Cast Shadows" :summary "* Animate shadows. Like [Illusions], they have full power but are destroyed on any hit.") "Circle of Darkness" (ability :name "Circle of Darkness") "Cloak of Shadows" (ability :name "Cloak of Shadows" :summary "* Increase Stealth" :titles "Shroud of Night") "Darkest Hour" (ability :name "Darkest Hour" :titles "Witching Hour") "Eye of Shadow" (ability :name "Eye of Shadow" :summary "* See perfectly in any form of darkness." :titles "Dark Sight, Night Vision") "Heart of Darkness" (ability :name "Heart of Darkness") :Nightfall (ability :name "Nightfall" :summary "* Gain +1 [Darkness] Skill for the first hour after the dusk.") :Oubliette (ability :name "Oubliette" :summary "* Trap a target in a prison of absolute darkness.") "Shadow Step" (ability :name "Shadow Step" :summary "* Step into a shadow and appear from a nearby shadow, though failure will leave the unit trapped in shadow.") "Shadow Strike" (ability :name "Shadow Strike" :summary "* Add [Blindness] Criticals to a normal attack.") "Tendrils of Night" (ability :name "Tendrils of Night") "Wall of Darkness" (ability :name "Wall of Darkness"))) "Demon Soul" (power :name "Demon Soul" :reference "* Claymore * Ghost Rider * Prototype" :summary "* Demon Soul is when a user has been partially or completely possessed by a demonic entity. * Demon Soul allows the user a number of physical advantages including regeneration and natural weaponry, however each use of an ability at full strength (higher than level - 2) risks increasing the Beast inside until it eventually dominates the user's Spirit." :titles "Yoma" :stat "Beast") :Fleshcraft (power :name "Fleshcraft" :summary "* This mastery of the flesh defies traditional life and death. Body parts may be removed, reattched, molded to create abominations or fiendish beauty. * Stats may be rearranged depending on the success roll. Only magical healing will repair." :titles "Flesh Molder, Sadist" :stat "Shadow" :abilitymap (abilitymap "Body Sculpting" (ability :name "Body Sculpting" :summary "* Stats may be rearranged depending on the success roll. Only magical healing will repair.") "Flesh Molding" (ability :name "Flesh Molding" :summary "* Body can be scuplted like clay. This is a very powerful but impercise ability. It can be further refined with [Body Scuplting].") :Grafting (ability :name "Grafting" :reference "Frankenstein's Monster" :summary "* Separate living organs from their host and graft them to another.") :Hybridize (ability :name "Hybridize" :summary "* Create new lifeforms by growing hybridized cells.") :Pain (ability :name "Pain" :reference "* And to think, I hesitated... - Hellraiser II * Oh, Kirsty. So eager to play, so reluctant to admit it. - Pinhead, Hellraiser II * I guess I'm always hoping that you'll end this reign. But it's my destiny to be the king of pain - The Police, King of Pain"))) :Necromancy (power :name "Necromancy" :reference "* Necromancy is the communication with the spirits of the dead sometimes via a ouija board, on which messages are spelled out and interpreted." :titles "Black Savant, Bone Caster, Grave Robber, Necromancer, Necrosavant" :stat "Shadow" :abilitymap (abilitymap "Bone Harvest" (ability :name "Bone Harvest") "Brush with Death" (ability :name "Brush with Death") "Call the Death" (ability :name "Call the Death" :reference "* Bring out your dead! - Monty Python and the Holy Grail" :summary "* Attract undead creatures to your location.") "Command the Dead" (ability :name "Command the Dead" :summary "* Compel undead creatures to serve you for the duration of the ability.") "Corpse Explosion" (ability :name "Corpse Explosion") "Dance of the Dead" (ability :name "Dance of the Dead" :summary "* Force a dead spirit to perform a task for you.") "Dead Eye" (ability :name "Dead Eye" :reference "The Sixth Sense" :summary "* The Necromancer's eyes become white with cataracts obscuring the real world while seeing through the [Shroud] into the [Underworld]. The Necromancer can see and speak with the dead in the [Shadowlands]. The dead, however, are generally not fond of being used by Necromancers.") "Dead Man Walking" (ability :name "Dead Man Walking" :summary "* The Necromancer becomes corpselike and is treated as [Undead] by other [Undead].") :Deathgrip (ability :name "Deathgrip") "Death's Door" (ability :name "Death's Door" :summary "* [Action]: Project your spirit into the [Underworld] while the body lies in a coma. * [Death]: Enter the Underworld") "Drain Life" (ability :name "Drain Life") "Draining Strike" (ability :name "Draining Strike" :summary "* While this ability is active, gain 1 Health when the user deals at least 1 [Health] damage with a [Close Combat] [Strike].") :Embalming (ability :name "Embalming" :summary "* By preparing a corpse both phyically and magically, the body can avoid most negative effects of decay. * Embalmed undead created through Reanimation can last indefinitely.") "Ghost Wind" (ability :name "Ghost Wind" :summary "* Summon terrifying spirits that cause fear in an area.") "Hand of Glory" (ability :name "Hand of Glory" :summary "* The Hand of Glory is the dried and pickled hand of a man who has been hanged, often specified as being the left (Latin: sinister) hand, or, if the man were hanged for murder, the hand that 'did the deed.' * Old European beliefs attribute great powers to a Hand of Glory combined with a candle made from fat from the corpse of the same malefactor who died on the gallows. The candle so made, lighted, and placed (as if in a candlestick) in the Hand of Glory, would have rendered motionless all persons to whom it was presented.") :Harrowing (ability :name "Harrowing") "Living Death" (ability :name "Living Death" :summary "* Temporarily turns the caster into a [Lich].") :Manifestation (ability :name "Manifestation" :summary "* Allows a dead spirit to temporarily interact with the living world.") "Moment of Death" (ability :name "Moment of Death" :summary "* Touch a corpse and view its death.") :Mummification (ability :name "Mummification" :summary "* A complex ritual to turn the target into a [Mummy] or [Lich]. A perfectly created undead appears like a completely normal living being (though it is no longer alive). Flaws is the casting make the being more monstrous.") :Necropotence (ability :name "Necropotence" :summary "* Reduce your own health to increase another magical effect.") :Necroscope (ability :name "Necroscope") "Prolong Life" (ability :name "Prolong Life") :Reanimation (ability :name "Reanimation" :reference "Reanimator" :summary "* The corpse of a dead unit may be reanimated returning it to an [Undead] semblance of life. * This ability does not give any control of the [Undead] to the caster unless the caster is somehow reanimating his own body. * [Action] - [Success] indicate the new maximum [Body] of the corpse up to its original [Body]. The closer the corpse gets to its full original [Body], the more alive it will appear. * Some otherworldly beings defy death by Reanimating themselves.") "Rigor Mortis" (ability :name "Rigor Mortis") :Seance (ability :name "Seance" :summary "* Draw ghosts to you and allow them to speak through you.") "Sever Soul" (ability :name "Sever Soul" :summary "* [Requires]: Target whose spirit has left its body. * [Action]: Cut the connection between the spirit and its body. The spirit may become lost, and the body falls into a coma. The soulless body is now an attractive target for possession.") :Undeath (ability :name "Undeath" :summary "* Similar to [Resurrect], this ritual allows a being to permanently transform a [Living] being into an [Undying] one. * This can be used to create [Zombie] and [Skeletons] servants or create indepenent undead like [Ghouls] and [Vampires]."))))) :Thergy (section :name "Thergy" :reference "* Pray, not for the gods, or the betterment of others, but for yourself - Rosaria, Genshin Impact" :titles "Channelling, Miracle Working, White Magic" :powermap (powermap :Asceticism (power :name "Asceticism" :reference "* Snow White" :summary "* Aura * All Purity skills are at -1 for each level of [Shadow]. Ironically, the [Beast] is natural and therefore is not impure. There are said to be 'Four Affirmations' of the spirit: * Tradition and the family - The family is seen as the main mechanism by which traditions are reserved. Their main celebrations relate to birth and marriage. * Love of nature - Nature is sacred; to be in contact with nature is to be close to the sacred spirits. Natural objects are worshipped as containing sacred spirits. Killing living beings should be done with reverence for taking a life to continue one's own, and should be kept to a minimum. * Physical cleanliness - Take baths, wash hands, and rinse mouths often. * Festivals - Any festival dedicated to the Spirits, of which there are many each year." :titles "Angel, Banisher, Brother, Buddist, Exorcist, Father, Friar, Hearth Mage, Monk, Mother Superior, Nun, Paladin, Penitent, Purifier, Purity, Shintoist, Sister" :stat "Spirit" :abilitymap (abilitymap :Absolution (ability :name "Absolution" :summary "* A ritual of cleansing of sin. Absolution can be a difficult journey depending on the person and the sins. To be absolved, one must fully express, accept and atone for one's sins, only then may absolution be found." :titles "Atonement") "Arrow of Purity" (ability :name "Arrow of Purity" :reference "* Kakome, Inuyasha * Mirana, DOTA" :summary "* An arrow or other projectile can be enhanced to destroy corruption. * +1 Attack and +1 Damage vs. [Corrupted] or [Chaotic]") "Blaze of Glory" (ability :name "Blaze of Glory") "Calm Animal" (ability :name "Calm Animal") "Chime of Purity" (ability :name "Chime of Purity" :summary "* The user sounds a bell or chime, and its piercingly pure tones are unbearable to otherworldly beings.") :Cleaning (ability :name "Cleaning" :summary "* By simply rubbing any dirty surface with a wet cloth, the material immediately becomes cleaner regardless of the contamination. All harmful contaminents are cleaned off as well.") :Cleanse (ability :name "Cleanse" :summary "* Those who believe see a silvery shower wash over the target and cleaning away [Disease] or [Poison] like dirt. * Reduces [Poison] and [Disease] damage rolls by the skill level.") :Exorcism (ability :name "Exorcism" :summary "* Banish a spirit that is possessing a person, item, or location.") :Halo (ability :name "Halo" :summary "* Magnificient halo of light appears behind the user's head. Observers are awed by the sight. * [Action] - +1 on Social abiliites." :titles "Godshead") :Introspection (ability :name "Introspection") :Pacifism (ability :name "Pacifism") :Penance (ability :name "Penance") :Purify (ability :name "Purify" :summary "* Contamination including filth, [Disease], [Poison], or [Raditation] may be cleansed in a small area.") :Purge (ability :name "Purge") :Sanctuary (ability :name "Sanctuary" :summary "* From the user's perspective, it is like being on stage. While chanting, a spotlight seems to come upon the user, all other lights dim, and enemies cease to notice the user's presence.") "Sense Corruption" (ability :name "Sense Corruption") :Serenity (ability :name "Serenity") "Throw Salt" (ability :name "Throw Salt") "True Sight" (ability :name "True Sight") "Vow of Chastity" (ability :name "Vow of Chastity" :titles "Celibacy") "Vow of Obedience" (ability :name "Vow of Obedience" :reference "To dream the impossible dream To fight the unbeatable foe To bear with unbearable sorrow And to run where the brave dare not go To right the unrightable wrong And to love pure and chaste from afar To try when your arms are too weary To reach the unreachable star This is my quest To follow that star No matter how hopeless No matter how far To fight for the right Without question or pause To be willing to march, march into Hell For that heavenly cause And I know if I'll only be true To this glorious quest That my heart will lie peaceful and calm When I'm laid to my rest - Don Quixote, The Impossible Dream" :summary "* The vow of obedience is a commitment to truly follow the direction of ones beliefs regardless of obstacles or consequences knowing that whatever the outcome, it was always the true, right outcome.") "Vow of Poverty" (ability :name "Vow of Poverty") "Vow of Silence" (ability :name "Vow of Silence") "Ward Undead" (ability :name "Ward Undead"))) :Conviction (power :name "Conviction" :reference "* Being religious is a form of conceit. the faith in which I was brought up assured me that I was better than other people; I was 'saved,' they were 'damned'... Our hymns were loaded with arrogance - self-congratulation... With a touch more confidence and a liberal helping of ignorance, I would have been a famous evangelist... A confidence man knows he's lying; that limits his scope. But a successful shaman believes what he says - and belief is contagious; there is no limit to his scope. - Jubal, Stranger in a Strange Land" :titles "Crusader, Faithful, Fanatic, Grand Inquisitor, Inquisitor, Paladin, Zealot" :stat "Spirit" :abilitymap (abilitymap :Crusade (ability :name "Crusade" :titles "Jihad") :Defiance (ability :name "Defiance") :Demonize (ability :name "Demonize") :Devotion (ability :name "Devotion") "Do or Die" (ability :name "Do or Die") "Eternal Vigilance" (ability :name "Eternal Vigilance") "Faith Sustains Me" (ability :name "Faith Sustains Me" :summary "* May fast as long as skill roll exceeds number of weeks of fasting.") :Fanaticism (ability :name "Fanaticism") "Holy Armor" (ability :name "Holy Armor") "Holy Shield" (ability :name "Holy Shield") "Holy Strength" (ability :name "Holy Strength") :Persecute (ability :name "Persecute") :Rapture (ability :name "Rapture") :Righteousness (ability :name "Righteousness") :Sacrifice (ability :name "Sacrifice") :Smite (ability :name "Smite" :summary "* [Action]: Imbue weapon and body with the strength of your Conviction. * [Melee] or [Close Combat] vs. [Undead], [Devil] or [Demon]: use Conviction instead of weapon to determine damage.") "Singular Will" (ability :name "Singular Will" :summary "* Gain +1 to Defense when fighting in single combat with no other combatants around.") "Soul Blast" (ability :name "Soul Blast") :Tithing (ability :name "Tithing" :summary "* Pay 10% of your income to your superior and gain 10% of the income of your followers. This income must be completely spent on the faith.") :Zeal (ability :name "Zeal"))) :Convergence (power :name "Convergence" :summary "* Divine power surrounds the petitioner and those deemed allies. * [Focus]: +1 [Defense]" :titles "Blessing, Protection" :stat "Spirit" :abilitymap (abilitymap "Bless Object" (ability :name "Bless Object" :summary "* Apply a different blessing to object. That object can hold the blessing until triggered. * Duration: Level hours * Only level objects may be blessed at one time. If exceeded the earliest one is erased.") "Blessing against Cold" (ability :name "Blessing against Cold" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Cold") "Blessing against Electricity" (ability :name "Blessing against Electricity" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Electricity") "Blessing against Fire" (ability :name "Blessing against Fire" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Fire") "Blessing against Projectiles" (ability :name "Blessing against Projectiles" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. projectilees.") "Blessing against Weapons" (ability :name "Blessing against Weapons" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. melee weapons. Unarmed combat is unaffected.")) :specialtymap (specialtymap "Enhance Blessing" (specialty :name "Enhance Blessing" :summary "* When user activates a Blessing on an item, that Blessing has increased effect."))) :Divine (power :name "Divine" :reference "* It might take the suffering or worship of 10,000 souls to produce a grain of Divinity...but a single grain is beyond all the power of this world." :summary "* The ability to absorb the worship of others. Level determines the amount of Divinity that can be held at once." :titles "Prime, Primal" :abilitymap (abilitymap "Divine Accuracy" (ability :name "Divine Accuracy" :summary "* Attack: Spend a [Divinity]. The attack cannot miss. The minimum number of hits is 1 Critical.") "Divine Blessing" (ability :name "Divine Blessing" :summary "* Action: Transfer any amount of [Divinity] to the target.") "Divine Grace" (ability :name "Divine Grace" :summary "* Action: Spend a [Divinity]. Perform another non-attack Action. That action cannot fail. The minimum success is 1 Critical.") "Divine Shield" (ability :name "Divine Shield" :summary "* Action: Choose a shield or armor and spend a [Divinity]. For the next 3 turns, the shield or armor cannot be penetrated by force that is not also Divine.") "Divine Strike" (ability :name "Divine Strike" :summary "* Attack: Spend a [Divinity]. If the attack hits, The damage is always at least 1 Critical."))) :Invocation (power :name "Invocation" :reference "* And he shall separate them one from another, as a shepherd divideth his sheep from the goats. And he shall set the sheep on his right, but the goats on his left. - Matthew 25: 32-33 * Many cultures have regarded left-handedness as evil. Words such as sinister, which in Latin means both left and unlucky. Consequently, the left hand has often symbolized the rejection of traditional religion. * The word 'right' derives from the Hebrew term 'yamin' from the Old Testament, meaning 'stronger'. In Hebrew, the term for 'left' is 'smowl', meaning 'dark'. * It is possible that this division also derives from the practice of using the left hand for purposes of personal hygiene after defecation in some cultures, rendering the left hand 'unclean'." :summary "* Calling or summoning a spirit, demon, god or other supernatural agent for assistance. * Right Hand Path - Elevates spirituality, the strict observance of moral codes, and the worship of deities. The goal is to attain proximity to divinity, or integration with divinity. * Left Hand Path - Conversely, Left Hand Path values the advancement and preservation of the self, glorification of more temporal and terrestrial goals, and personal power rather than ephemeral spiritual attainments. Rather than valuing proximity to the divine, followers of Left-Hand Path belief systems seek to become divinities in their own right." :titles "Cabalist, Cleric, Diabolist, Evoker, Exorcist, Invoker, Minister, Priest, Ritualist" :abilitymap (abilitymap "Angelic Chorus" (ability :name "Angelic Chorus" :titles "Divine Chorus") :Armageddon (ability :name "Armageddon" :titles "Cataclysm") :Aspecting (ability :name "Aspecting" :summary "The practitioner manifests a particular aspect of a goddess or god (whether in speech, appearanve, behaviour or thought).") :Avatar (ability :name "Avatar" :summary "The practitioner becomes a version of the goddess or god.") "Burnt Offering" (ability :name "Burnt Offering") "Dark Ritual" (ability :name "Dark Ritual") "Divine Intervention" (ability :name "Divine Intervention") "Divine Favor" (ability :name "Divine Favor") :Drought (ability :name "Drought") :Geis (ability :name "Geis" :titles "Geas") :Flood (ability :name "Flood") "Heaven's Gate" (ability :name "Heaven's Gate" :titles "Divine Gate, Hell's Gate") :Incarnation (ability :name "Incarnation") "Plague of Beetles" (ability :name "Plague of Beetles" :summary "* Flesh eating beetles burrow from the ground and sweep over the area like a carpet.") "Plague of Locusts" (ability :name "Plague of Locusts" :summary "* A swarm of locusts descends on the area. They devour all food, clog intakes, short out equipment, and terrify people.") "Plague of Sores" (ability :name "Plague of Sores" :summary "* A horrific disease descends on the area. Victims appear horrific and without treatment will be permanently scarred. Naturally, the disease is highly contagious.") "Rain of Frogs" (ability :name "Rain of Frogs" :summary "* A torrent of frogs fall from the sky, splattering on any hard surfaces. Fragile exposed items of all sorts are destroyed.") :Worship (ability :name "Worship" :summary "* Must choose a 'higher being' to worship. Each higher being provides a bonus to a single specific ability.") :Tribute (ability :name "Tribute") :Sacrifice (ability :name "Sacrifice") "Wrath of God" (ability :name "Wrath of God"))) :Life (power :name "Life" :abilitymap (abilitymap :Aneurysm (ability :name "Aneurysm") "Cure Disease" (ability :name "Cure Disease") "Heal Major Wound" (ability :name "Heal Major Wound") "Heal Minor Wound" (ability :name "Heal Minor Wound") "Heal Scars" (ability :name "Heal Scars") "Heart Attack" (ability :name "Heart Attack") "Poison Backlash" (ability :name "Poison Backlash" :summary "* [Action]: Touch a unit with a [Poison] ability. The target is affected as if the ability was used against itself at full strength.") :Regenerate (ability :name "Regenerate") :Replenish (ability :name "Replenish") :Resurrect (ability :name "Resurrect" :summary "* The ability to truly bring the dead back to life is one of the most desired and difficult of all abilities. The ritual is long and complicated with a high chance of failure. Only one of the same race as the deceased has sufficient self understanding to succeed at all. The caster must also get at least 10 [Successes] and/or [Criticals] or the ritual fails. Each subsequent attempt to raise the same target requires 1 additional success.") :Simulacrum (ability :name "Simulacrum" :summary "* Grow a physical copy of a living creature. It possesses no mind or spirit unless given one through other means." :titles "Clone") :Succor (ability :name "Succor" :summary "* Relieves pain * Can ignore the negative effects of all tokens while this is in effect." :titles "Comfort") :Transference (ability :name "Transference"))) :Radiant (power :name "Radiant" :titles "Bright, Light, Lightbringer" :abilitymap (abilitymap "Blinding Light" (ability :name "Blinding Light") "Blinding Wall" (ability :name "Blinding Wall" :titles "Wall of Light") :Daybreak (ability :name "Daybreak" :summary "* Gain +1 [Light] Skill for the first hour after the crack of dawn.") "Command Light" (ability :name "Command Light" :summary "* Redirect a [Light] ability to a new target.") :Moonbeam (ability :name "Moonbeam") "Purifying Light" (ability :name "Purifying Light" :summary "* Glowing rays of light appear to emanate from any light the user possesses. Vermin, undead, demons, devils, or any user of [Corruption] will be damaged by the light as if it were [Fire]. All pure beings struck by the rays may remove a [Stun] Token." :titles "Divine Light, Holy Light") "Summon Radiance" (ability :name "Summon Radiance") :Sunbeam (ability :name "Sunbeam") "Swords of Revealing Light" (ability :name "Swords of Revealing Light" :summary "* Blazing rays of light shine around the user, revealing hidden or disguised things. * [Action]: Any hidden or disguised thing directly in front of the user, reduces its chance to stay concealed by the [Successes]."))))) "Nature Magic" (section :name "Nature Magic" :powermap (powermap "Animal Control" (power :name "Animal Control" :summary "* Restrictions - Must not harm animals." :titles "Beast Lord, Beast Master" :abilitymap (abilitymap "Animal Magnetism" (ability :name "Animal Magnetism") "Animal Ward" (ability :name "Animal Ward" :summary "[Ward] - Defends against animals.") "Banish Vermin" (ability :name "Banish Vermin") "Beast Lore" (ability :name "Beast Lore") "Beast Tongue" (ability :name "Beast Tongue" :summary "[Tongue] - Speak with Animal") "Bird's Eye" (ability :name "Bird's Eye" :summary "* Have a bird spy for you.") "Call of the Wild" (ability :name "Call of the Wild" :summary "* [Action]: Make an emotional plea for aid to any [Beast]s or [Animal]s within [Range]. Note that creatures will only help if it serves their own interests, and they will act indepentently according to their intelligence and nature.") "Calm the Beast" (ability :name "Calm the Beast") "Commune with Animals" (ability :name "Commune with Animals" :summary "* [Action]: Sense if animals in [Range] notice anything significant. The higher the [Success], the more subtle information received.") "Control Beast" (ability :name "Control Beast") "Purge Venom" (ability :name "Purge Venom" :summary "* By sucking on a bite, the user may rapidly remove a creature's venom from a wound. * [Action]: Remove 1 Poison Counter for each success.") "Creeping Doom" (ability :name "Creeping Doom") "Giant Animal" (ability :name "Giant Animal") :Infestation (ability :name "Infestation") "Insect Swarm" (ability :name "Insect Swarm" :summary "Distracts targets and transfers up to 3 conditions from you to the target.") "Locate Animal" (ability :name "Locate Animal") "Nature of the Beast" (ability :name "Nature of the Beast") "Natural Order" (ability :name "Natural Order") "Scent of the Wild" (ability :name "Scent of the Wild" :summary "* [Action]: Cover the unnatural and threatening scent of creatures and gear in range. Natural creatures will treat them as if they were large herbivores.") "Shrink Animal" (ability :name "Shrink Animal") "Speak with Animals" (ability :name "Speak with Animals") "Survival of the Fittest" (ability :name "Survival of the Fittest" :titles "Natural Selection"))) :Naturalism (power :name "Naturalism" :summary "* Restrictions - Must not harm plants." :titles "Botomancy, Druid, Hierophant, Nature Master" :abilitymap (abilitymap "Animate Plant" (ability :name "Animate Plant") "Awaken Tree" (ability :name "Awaken Tree" :summary "* Awakens a tree and permanently gives it consciousness. Some say that all trees were once awake.") "Back to Nature" (ability :name "Back to Nature" :summary "* Dead wood or hide rapid decays.") "Banish Weeds" (ability :name "Banish Weeds") :Barkskin (ability :name "Barkskin") "Binding Vines" (ability :name "Binding Vines") "Call the Creep" (ability :name "Call the Creep") "Call the Trees" (ability :name "Call the Trees") "Commune with Nature" (ability :name "Commune with Nature") "Choking Fungus" (ability :name "Choking Fungus" :summary "* Fungus spontaneously grows in the area and releases spores that cause uncontrollable coughing to anyone who breathes without a fine filter in the area.") "Drink from the Earth" (ability :name "Drink from the Earth") "Fertile Crops" (ability :name "Fertile Crops") "Food from the Sun" (ability :name "Food from the Sun") "Force of Nature" (ability :name "Force of Nature") "Heal Nature" (ability :name "Heal Nature") "Knock on Wood" (ability :name "Knock on Wood" :summary "* Touch Wood and Remove a Token and place it on the Wood.") "Locate Plant" (ability :name "Locate Plant") "Nature Sight" (ability :name "Nature Sight") "Nature Walk" (ability :name "Nature Walk" :reference "Merlin, Excalibur" :summary "* Travel at exceptional speed through forests while appearing to walk calmly appearing and reappearing at greater distances. * [Continuous]: Ignore [Success] movement penalties in [Forest], [Jungle], [Swamp] and other overgrown terrain. Additionally, [Success] is applied as a penalty for anything attempting to [Track] you.") :Overgroth (ability :name "Overgroth") "Plant Lore" (ability :name "Plant Lore") "Plant Mastery" (ability :name "Plant Mastery") "Plant Tongue" (ability :name "Plant Tongue" :summary "* Speak with Plant") "Plant Ward" (ability :name "Plant Ward" :summary "* Defends against Plants") :Purification (ability :name "Purification") :Root (ability :name "Root") "Tree Form" (ability :name "Tree Form") "Wall of Thorns" (ability :name "Wall of Thorns" :summary "* [Wall] * May only be cast on [Forest]. * The wall gains double Terrain Penalty.") "Warp Wood" (ability :name "Warp Wood"))))) :Spiritualism (section :name "Spiritualism" :powermap (powermap :Divination (power :name "Divination" :reference "* Casting: In various methods of divination, stones, cards, sticks and other objects are cast onto the ground or a special cloth so that an insight into the life patterns can be revealed. * Querent: In divination and ritual, the querent is the asker of questions. * Scrying: This is the area of divining by gazing into a reflecting surface." :summary "* Divination is the practice of discovering the unknown. It can foresee the future, find hidden things, uncover lost lore, and reveal deception. * Practitioners may see the many roads to the future and may choose the path that favors themselves and hinders their foes. * Fortune telling is more interested in predicting future events. Rather, divination tends to be more about discovering information. * It is an accepted truism within magick that divination is imperfect." :titles "Augur, Diviner, Fortune Teller, Oracle, Prophet, Seer, Soothsayer, Visionary" :abilitymap (abilitymap "All Seeing Eye" (ability :name "All Seeing Eye" :reference "The Eye of Providence") :Augury (ability :name "Augury") :Cartomancy (ability :name "Cartomancy" :summary "* The art of reading the future through playing cards or tarot cards.") :Clairaudience (ability :name "Clairaudience") :Clairvoyance (ability :name "Clairvoyance") :Dowsing (ability :name "Dowsing" :summary "* Through the use of a divining rod the user may detect desired items hidden underground below them.") "Fortune Telling" (ability :name "Fortune Telling" :summary "* [Deploy]: Roll vs. target Spirit. If you succeed, you receive +1 on all actions against him this encounter. * Casting - In various methods of divination, bones, stones, cards, sticks and other objects are cast onto the ground or a special cloth so that an insight into the life patterns can be revealed. * Bibliomancy - Reading random passages from a book, such as Liber Legis or the I Ching. * Tea Leaves * Tarot") :Hallmark (ability :name "Hallmark" :summary "* Analyze a magical effect to learn information about its caster.") :Kismet (ability :name "Kismet") "Mirror of Truth" (ability :name "Mirror of Truth" :summary "* Enchant a reflective surface to show the true nature of the reflected scene. This reveals illusions, hidden things, and can even reveal the nature of those concealing terrible secrets.") :Portent (ability :name "Portent" :summary "* Determine if a chosen course of action will tend to be beneficial to the user or not. How it might be beneficial is not known." :titles "Omen") :Postcognition (ability :name "Postcognition") :Precognition (ability :name "Precognition") :Prediction (ability :name "Prediction") :Premonition (ability :name "Premonition") :Prophesy (ability :name "Prophesy") :Providence (ability :name "Providence" :summary "* [Action]: Divine a time and place nearby that will be beneficial if the user goes there. The roll result is not known by the user, and the success determines the benefit.") :Revelation (ability :name "Revelation") :Foresight (ability :name "Foresight" :summary "* Foresight is a passive form of extra-sensory perception whereby a person spontaneously perceives information, in the form of vision, about future events before they happen. It is distinguished from [Precognition] in that it is passive.") "Twist of Fate" (ability :name "Twist of Fate") :Visions (ability :name "Visions") :Wyrding (ability :name "Wyrding")) :specialtymap (specialtymap :Hepatomancy (specialty :name "Hepatomancy" :summary "* The art of divining the future through the examination of a creature's entrails.") :Numerology (specialty :name "Numerology" :summary "* The art of divining the future through the examination of numbers and dates.") :Osteomancy (specialty :name "Osteomancy" :summary "* The art of divining the future through decaying bones.") "Rune Casting" (specialty :name "Rune Casting" :summary "* The art of divining the future through the throwing of small tiles with runes on them.") :Scrying (specialty :name "Scrying" :summary "* This is the art of divining by gazing into a reflecting surface.") :Tasseomancy (specialty :name "Tasseomancy" :summary "* Reading the patterns of tea leaves or coffee grounds left after the person drink it."))) :Dreaming (power :name "Dreaming" :reference "* I don't believe it. That is why you fail. Luke and Yoda - Empire Strikes Back" :summary "* This is the magical art of the [Fae]. * Every child has a sense of wonder that comes with being new to the world. Adults must, of necessity, murder that special innocence in order to grow up. * When humanity turned its collective back on Dreaming, a terrible scourge of disbelief and negation smote the world. Hope, trust, and imagination were replaced with reason, pessimism, and scrutiny. By dismissing hope and faith, humanity avoids being hurt by its failure. Shutting out mystery and dreams anesthetizes fear, but deadens beauty as well and leads to apathy, callosuness, and close-mindedness. Though Banality is a mindless force, it is feared by the [Fae] more than any monster or villain. It is an enemy unlike anything the [Fae] have ever encountered, and they are largely helpless in its grasp. * Dreaming is never the same, so any Dreaming effect must be a uniquely crafted idea or it will automatically fail." :titles "Glamour" :abilitymap (abilitymap "As if in a Dream" (ability :name "As if in a Dream" :summary "* Confuse a target's senses to perceive a single thing incorrectly.") "Concoct Dream Essence" (ability :name "Concoct Dream Essence" :summary "* Dreams caught with [Dreamcatching] can be contained in a bottle called [Dream Essence]. Opening the bottle releases the experience of the dream to all surrounding it.") "Create Chimera" (ability :name "Create Chimera" :summary "A Chimera is an imaginary creation. It exists only to the user, though those with magical abilities, young children and the mentally impaired may see them. They only can affect those who can see them.") "Down the Rabbit Hole" (ability :name "Down the Rabbit Hole" :summary "* [Requires]: A hole that leads somewhere unknown. * [Action]: By entering a hole, the Dreamer may travel to the [Spirit Realm]. If the Dreamer is a native of the [Spirit Realm], he may stay as long as he wants. If not, he will return to the real world after [Skill] hours as if waking from a dream.") :Dreamcatching (ability :name "Dreamcatching") :Dreamquest (ability :name "Dreamquest" :summary "* [Requires]: Sleeping * [Action]: While asleep, Spirit enters the [Spirit Realm]. The Spirit may travel as long as it wants, but whenever the Body awakens, the Spirit immediately returns. * [Death]: Spirit may permanently enter the [Spirit Realm].") "Dream Effectively" (ability :name "Dream Effectively" :reference "* I was just thinking. Wouldn't it be funny if I wasn't the only one who could dream effectively? What if everybody could do it? And reality was being pulled out from under us all the time - and we didn't even know it? - George Orr, The Lathe of Heaven * Oh, my God... I just killed six billion people... - George Orr, The Lathe of Heaven") "Dream Riding" (ability :name "Dream Riding" :summary "* Ability to enter another person's dream.") "Dream Sight" (ability :name "Dream Sight") "Dream Speak" (ability :name "Dream Speak" :summary "* Grants the ability to converse with things that cannot normally speak including plants, animals, and inanimate objects. Such beings have knowledge and personalities limited by their natures.") "Dream Weaving" (ability :name "Dream Weaving" :reference "* She was shaping a world. She could envision the world, feel the spring of the earth beneath her bare feet, the warmth of the sun, the vibrant green of the grass, the hazy blue of distant mountains. 'Do you feel it?' 'Yes.' 'Then make it real.' She brought all of her will to paint all the details of the dream onto a new reality. She opened her eyes and gazed out upon the land she had already seen in her mind. It was so beautiful it took her breath away ... and failed to return it. She gasped as her lungs emptied and her vision faded to black ... 'A useful lesson. You forgot to breathe in the scents of your world that would indicate air. Remember even the smallest detail is crucial.' - Tales of Magick") :Epiphany (ability :name "Epiphany" :summary "* A moment of ecstasy, delight, and intense revelation. During epiphanies, disparate things suddenly synchronize and make sense. Ephipanies often trigger major changes in personality or goals.") "Eyes of a Child" (ability :name "Eyes of a Child" :summary "* All Chimera become visible to those you chose.") "Fond Memories" (ability :name "Fond Memories" :reference "Eternal Sunshine of the Spotless Mind" :summary "* This ability makes every childhood dream and ambition real again. Every imaginary friend is remembered clearly and the happiest moments from youth return with the intensity of a first kiss and the excitement of Christmas. Then, suddenly, its over. In their absence, depression can crash down. Truly fallen beings can become suicidal. The remembrance can be uplifting in the end, allowing one to relive the best moments of life.") "Imaginary Friend" (ability :name "Imaginary Friend" :reference "* As I was walking up the stair, I met a man who wasn't there. He wasn't there again today. If only he would go away. - Children's Nursery Rhyme * Mother, do you remember when I was little, I had a friend, he was make-believe? No. Don't you remember? Only I could see him? No, I don't remember Drop Dead Fred at all. - Drop Dead Fred * Let's write something on the carpet... I know how about 'Mother SUCKS'. - Drop Dead Fred" :summary "Create a character with a distinct personality of your choice that only the target can see.") "Living Nightmare" (ability :name "Living Nightmare" :summary "* A chimerical monster formed from nightmares or madness." :titles "Waking Nightmare") "Nightmare Essence" (ability :name "Nightmare Essence" :summary "* Nightmares caught with [Dreamcatching] can be contained in a bottle. Opening the bottle releases the experience of the dream to all surrounding it. These can be used as grenades.") "Pillow Fort" (ability :name "Pillow Fort" :summary "* By exercising one's imagination, a soft barrier can provide real defense but only for the Dreamer. * [Action]: Any material may be chosen to provide [Skill] defense for the user.") :Rapture (ability :name "Rapture" :summary "* An extremely difficult and rare ability of self-discovery to create Glamour from oneself. Only at a moment of sudden self-realization can a Rapture be attained. * [Passive] - While in a Rapture, all [Critical] results generate [Glamour Token]s.") :Ravaging (ability :name "Ravaging" :summary "* Drain creativity from a subject. The subject must be well known and a good knowledge of how the subject dreams is required. After that, the subject must simply be touched and he/she will experience a wave of depression and fear as the Glamour is drained from them. * [Action]: Touch the subject. Roll [Banality]. Gain +1 [Glamour Token] if any successes. If no [Glamour] is gained, both the user and subject gain +1 [Banality] instead.") :Reverie (ability :name "Reverie" :summary "* Say or suggest things that inspire others to wonderful ideas and creations. This is a time-consuming process to discover they subtle things that inspire another to great works. * [Extended Action]: Inspire someone while they create. * [Action]: View a work of art created during Reverie. Gain +1 [Glamour Token]. A particular work of art may only grant this bonus once a year." :titles "Muse") :Seeming (ability :name "Seeming" :summary "* Take on the appearance of another.") "Shattered Dreams" (ability :name "Shattered Dreams") "Wall of Wonders" (ability :name "Wall of Wonders" :summary "* A wall of dreams. Causes [Fascination] in those who view it."))) :Enchantment (power :name "Enchantment" :summary "* Enchantment/Witchcraft focuses on enchantments that alter the fate of the target. * The deities of Witchcraft are embodiments of a life-force manifest in nature. The Goddess and God are seen as complementary polarities and this balance is seen in nature. They are sometimes symbolised as the Sun and Moon, and from her lunar associations the Goddess becomes a Triple Goddess with aspects of Maiden, Mother, and Crone. Some hold the Goddess to be pre-eminent, since she contains and conceives all. The God is the spark of life and inspiration within her, simultaneously her lover and her child." :titles "Abjuration, Beguiler, Enchanter, Enchantress, Entrancer, Hexer, Warlock, Witch, Witchcraft, Witchdoctor" :abilitymap (abilitymap "Barren Loins" (ability :name "Barren Loins" :summary "* Target cannot conceive a child while under this curse.") :Charm (ability :name "Charm" :summary "* The opposite of [Malediction]. Charm reduces the severity of negative effects. * [Requires]: Target cannot have any [Charm] Tokens. * [Action]: Roll vs. Spirit and add a Black [Charm] Token for each [Hit]." :titles "Warding Sign") "Death Ward" (ability :name "Death Ward" :summary "* Provides increased defense against undead beings.") "Evil Eye" (ability :name "Evil Eye" :summary "* Reduces Spirit") "Fertile Loins" (ability :name "Fertile Loins" :summary "* Next intercourse will have doubled chance to conceive a child, if possible.") :Haste (ability :name "Haste" :summary "* [Effect]: +1 Move * [Target]: [Area] * [Duration]: [Hits]") "Inscribe Rune" (ability :name "Inscribe Rune" :summary "* Allows the permanent addition of magical properties to an item.") "Inscribe Sigil" (ability :name "Inscribe Sigil" :summary "* Allows the temporary addition of magical properties to an item, portal, or area.") :Malediction (ability :name "Malediction" :summary "* The opposite of [Charm]. Malediction increases the severity of negative effects. * [Action]: Roll vs. Spirit and add a Black [Curse] Token for each [Hit].") "Magic Ward" (ability :name "Magic Ward" :summary "* Provides increased defense against magical creatures.") "Mental Ward" (ability :name "Mental Ward" :summary "* Provides increased defense against mental attacks.") "Metal Ward" (ability :name "Metal Ward" :summary "* Provides increased defense against predominately metal weapons.") "Nature Ward" (ability :name "Nature Ward" :summary "* Provides increased defense against Animals, and weather.") :Palsy (ability :name "Palsy" :summary "* Reduces Move") :Pox (ability :name "Pox" :summary "* Reduces Social Skills") "Rule of Three" (ability :name "Rule of Three" :reference "* Ever mind the Rule of Three, three times what thou givest returns to thee, this lesson well, thou must learn, thee only gets what thou dost earn." :summary "* Whatever energy a person puts out into the world, be it positive or negative, will be returned to that person three times.") :Safekeep (ability :name "Safekeep" :summary "* [Action]: Enchant an item to prevent loss or theft. Any effect that would remove, loose, or damage the item must roll vs. Safekeep or fail in addition to any other checks.") :Slow (ability :name "Slow" :summary "* [Effect]: -1 Move * [Target]: [Area] * [Duration]: [Hits]") "Spirit Ward" (ability :name "Spirit Ward" :summary "* Provides increased defense against spirit beings and attack against [Spirit].") "Stone Ward" (ability :name "Stone Ward" :summary "* Provides increased defense against predominately stone weapons.") :Weaken (ability :name "Weaken" :summary "* Reduces Body") "Wood Ward" (ability :name "Wood Ward" :summary "* Provides increased defense against predominately wooden weapons."))) :Shamanism (power :name "Shamanism" :titles "Shaman, Spirit Caller, Witch Doctor" :abilitymap (abilitymap "Call Spirits" (ability :name "Call Spirits") "Control Spirit" (ability :name "Control Spirit") :Reincarnate (ability :name "Reincarnate" :summary "* Similar to [Resurrect], this ability allows a being to return to life in a new body if this ritual is performed soon after death. The reincarnated being will be physically different from the original, potentially different age, abilities, gender, race, or species. The being will have most of its original memories, but will often have a substantially different personality. If any [Successes] are made, the reincarnation succeeds and the character must be created again with significant differences and will appear in a location consistent with its new identity. The new character is built at a level equal to it original level or the reincarnate skill level whichever is lower. If the reincarnate skill level is lower than 10, the reincarnated being will be -10% younger than before for each level below 10.") "Second Sight" (ability :name "Second Sight" :reference "* I've got electric light, and I've got second sight. I've got amazing...powers...of observation. And that is how I know...When I try to get through...On the telephone to you...There will be nobody home. - Pink Floyd, Nobody Home" :summary "* Second sight is the ability to see the spiritual essence of beings. It quickly identifies the living from the unliving and can detect disease both phyiscal and mental.") "Spirit Guide" (ability :name "Spirit Guide") "Spiritual Affinity" (ability :name "Spiritual Affinity" :summary "* Death: Enter the Spirit Realm") :Totem (ability :name "Totem") "Vision Quest" (ability :name "Vision Quest"))) :Sympathy (power :name "Sympathy" :reference "* Synchronicity is a phenomenon where people interpret two seemingly unrelated experiences as being meaningfully intertwined." :summary "* Sympathetic magic is using a symbol to represent the thing you want to affect with your magic. Whatever you do to the symbol, you do to the target. The object and the thing it represents are 'in sympathy'; they are aligned. Sympathetic magic is a useful idea because often, your target is something non-physical, or something you can’t otherwise interact with directly. You could banish negative thoughts directly, but it’s easier to tie them to something physical by writing them down and then burning the paper. As the paper burns, so does the negativity. Correspondences are related to this. For example, different-colored candles represent different desires (like green for money, red for love, black for banishment, etc.) and as the candle burns down, your spell is cast. Wearing different stones or crystals can attract luck or success to you. * Cursed Energy - Cursed energy is born from negative emotions such as grief and anger. These negative feelings are common in human society so almost everyone possesses cursed energy. Cursed Energy can be controlled and focused to perform various magical feats. * Cursed Spirit - Cursed Spirits are apparitions manifested entirely from cursed energy. Even their bodies are composed of cursed energy, making cursed spirits invisible to non-sorcerers. The emission of cursed energy from humans collects like sediment until a cursed spirit is born from the collective negative energy. Cursed Spirits born with strong feelings directed toward a certain aspect are especially strong. The stronger humanity's fear and anger is directed at cursing a certain aspect of the world, like natural disasters, the more powerful Curse Spirits spawned from those negative sentiments will be. * Law of Similarity - Like produces like. An effect resembles its cause. * Law of Contact/Contagion - Things which have once been in contact with each other continue to act on each other at a distance." :titles "Correspondence, Curses, Sympathetic Magic, Synchonicity, Voodoo, Witch man, Witchdoctor" :abilitymap (abilitymap "Black Vise" (ability :name "Black Vise" :summary "* Target must use a special [Ability] each [Turn] or take a [Stun].") "Breath of Life" (ability :name "Breath of Life" :summary "* Create an [Animated] creature." :titles "Cursed Corpse") "Cursed Sight" (ability :name "Cursed Sight" :summary "* Curses and Cursed Spirits are normally invisibile, but this ability allows them to be seen.") "Cursed Tool" (ability :name "Cursed Tool") "Cursed Weapon" (ability :name "Cursed Weapon" :summary "* Cursed Item - Items can also be infused with Curse Energy including such as cursed tools, cursed objects, and cursed corpses.") "Dominant Possession" (ability :name "Dominant Possession" :summary "* After defeating a target in mental combat, the user possesses the body of the target. The user keeps his Mind and Will stats and uses the target's Body." :titles "Skinriding") :Effigy (ability :name "Effigy" :reference "Poppet, Voodoo Doll" :summary "* Create a figure representing the target. The target can be a being, a vehicle, a building, etc. The figure can be a doll, a wax figurine, an Origami, a sculpture, a drawing, or any other image created by hand by the caster. In addition, the Effigy must have some item linking it to the target. This can be a possession, a hair, a body part, etc. The more significant the better. * Spells may then be cast upon the figure as if the figure was at 4 spaces range regardless of actual distance or line of sight. This ability can create any number of effects, but it cannot actually cause physical damage. All Body damage becomes [Stun] if the target cannot take anymore [Stun], the excess is ignored. * The ability level of any Spells cast are [Limited] by the skill with which the Effigy is created and the significance of the item linked to the Effigy." :titles "Straw Man") :Fetish (ability :name "Fetish" :summary "* A fetish is a small object that can be used to bind a spirit. The item must be unique and may be found or created. * [Action]: If you killed an extradimensional creatures last turn, you may capture the spirit of that creature in the Fetish. * [Action]: Release the spirit in the fetish to perform one task that turn. The spirit must perform the task if it is able though it does so under duress and may twist the intentions or deceive the user. Regardless of outcome, the spirit is released and will disappear.") :Figurine (ability :name "Figurine" :summary "* A miniature of a small creature grows into a full size version.") "Iron Maiden" (ability :name "Iron Maiden" :summary "* Target takes 1 Stun Token for each point of combat damage it inflicts." :titles "Thorns") :Juju (ability :name "Juju" :summary "* The most horrific of fetishes, the shrunken head permanently holds the spirit of the slain person in an undead limbo. A shrunken head may only be created immediately after the user directly slays a person. After that a gruesome series of rituals over the next week mummifies the head and binds the spirit to the head. * [Action]: Once per day, for 1 hour, the user may speak to the head and the head will telepathically respond. The head is effectively a prisoner of the user, and the user may interrogate or torment the head as he sees fit. The head cannot remain silent, but it does not have to be helpful or truthful." :titles "Shrunken Head, Tsantsa") "Life-like Art" (ability :name "Life-like Art") "Life-like Tattoo" (ability :name "Life-like Tattoo") "Living Tool" (ability :name "Living Tool" :summary "* Animates a small tool which makes the next skill easier. * [Requires]: A simple tool with no moving parts. * [Action]: On the next action the tool may be used at [+1 Skill].") "Living Weapon" (ability :name "Living Weapon" :summary "* Animates a melee weapon which makes the next attack easier. * [Requires]: A melee weapon with no moving parts. * [Action]: On the next action the weapon may be used at [+1 Skill].") :Miniature (ability :name "Miniature" :summary "* A miniature of a simple item grows into a full size version.") :Puppeteer (ability :name "Puppeteer" :summary "* When this unit acts the target unit must perform the same actions.") :Rack (ability :name "Rack" :summary "* Each time Target uses a special [Ability] it takes a [Stun].") :Serendipity (ability :name "Serendipity") "Spirit Bottle" (ability :name "Spirit Bottle" :summary "* Create a bottle, mirror, or vase that captures and holds the Spirit of a being. If the being's body dies, the spirit continues to exist in the bottle. The spirit may mentally communicate with anyone touching the bottle.") "Spirit Link" (ability :name "Spirit Link" :summary "* Create a bond with target. Each time it does damage to a target, remove 1 white token from yourself.") "Subtle Possession" (ability :name "Subtle Possession" :summary "* The user's spirit secretly enters the body of the target. The user acts as a manipulative inner voice to the target.") "Sympathetic Bond" (ability :name "Sympathetic Bond" :summary "* [Action]: Bond with a willing unit. * [Action]: Transmit an emotion to a bonded unit.") "True Name" (ability :name "True Name" :summary "* If the user knows the True Name of his subject, he gains +1 [Synchonicity] against that subject.")))))))) (func chapter_magic_items : base/chapter (chapter :name "Magic Items" :sectionmap (sectionmap :Garb (section :name "Garb" :itemmap (itemmap "Fox Mask" (item :name "Fox Mask") "Oni Mask" (item :name "Oni Mask"))) "Miscellaneous Magic" (section :name "Miscellaneous Magic" :itemmap (itemmap "Fan of the Winds" (item :name "Fan of the Winds"))) "Magic Weapons" (section :name "Magic Weapons" :itemmap (itemmap "Ascalan Lance" (item :name "Ascalan Lance" :reference "* The lance (or in some versions of the story, sword) that Saint George used to slay the dragon, named after the city Ashkelon." :titles "Dragon Slayer Lance") :Firebrand (item :name "Firebrand" :titles "Flame Tongue") :Frostbrand (item :name "Frostbrand") :Moonblade (item :name "Moonblade" :titles "A silver sword that is as hard as steel") "Poseidon's Net" (item :name "Poseidon's Net") "Poseidon's Trident" (item :name "Poseidon's Trident") :Runestaff (item :name "Runestaff" :summary "* A staff with one or more Runes incribed upon it.") :Runesword (item :name "Runesword" :summary "* A sword with one or more Runes incribed upon it."))))))
nx/tactics/books/magic / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Magic" :image "Magick.jpg" :chaptermap (base/chaptermap "Magic Overview" (chapter_magic_overview) "Magical Skills" (chapter_magical_skills) "Magic Items" (chapter_magic_items) )))
nx/tactics/books/magic / chapter_magic_overview
Description:
Function Name:
  • chapter_magic_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_magic_overview : base/chapter (chapter :name "Magic Overview" :summary "* The Art Classifications * Abjuration - Protective Magic. They create barriers, negate abilities, harm trespassers, or banish those who do not belong. It includes Barriers and Wards."))
nx/tactics/books/magic / chapter_magical_skills
Description:
Function Name:
  • chapter_magical_skills
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_magical_skills : base/chapter (chapter :name "Magical Skills" :sectionmap (sectionmap "Magic Items" (section :name "Magic Items" :summary "* Magic Weapons ignore armor equal to their + value. * Magic Armor ignores damage equal to their + value.") "Arcane Magic" (section :name "Arcane Magic" :reference "* Magic/Magick is not capable of producing 'miracles' or violating the physical laws of the universe (e.g., it cannot cause a solar eclipse), although it is theoretically possible to cause in any object any change of which that object is capable by nature - Aleister Crowley * Every intentional (Willed) act is a Magical act. - Aleister Crowley * Magick is the Science of understanding oneself and one's conditions. It is the Art of applying that understanding in action. - Aleister Crowley" :summary "* Those who pursue the arcane arts believe that by aligning their own minds to the patterns of reality, they may turn those patterns to their own ends. * Many believe that one must Awaken before being able to wield Magic. * Arcanists focus on the will of the individual to bend the world to their desires. This individual supremicist viewpoint is typically reflected in their egos as well." :titles "Arcanist" :powermap (powermap :Alchemy (power :name "Alchemy" :summary "* Alchemy is the art of creating acids, dusts, philter, and potions. * Benefits: Alchemical substances may be prepared ahead of time, used by others, and sold for profit. Their signature talent is the creation of the Philosopher's Stone that transmutes lead into gold. Because their talents benefit others, Alchemists are in high demand. * Penalties: Alchemical substances MUST be prepared ahead of time and require exotic ingredients. Their preparation normally requires the use of a laboratory and special equipment (See Equipment / Alchemical Devices)." :titles "Alchemist, Apothecary, Brewer, Chemist, Concocter, Drug Merchant, Libationist, Potioner, Snake Oil Salesman, Witcher" :abilitymap (abilitymap "Animate Colossus" (ability :name "Animate Colossus") "Animate Homunculus" (ability :name "Animate Homunculus") "Animate Statue" (ability :name "Animate Statue" :reference "* Terra Cotta Warriors * Kali - The Golden Voyage of Sinbad") "Ashes to Ashes" (ability :name "Ashes to Ashes" :summary "* Force a substance to age as if hundreds of years had passed. Stone wears to powder, wood turns to ashes, metal corrodes, colors fade.") "Exract Rare Earths" (ability :name "Exract Rare Earths" :summary "* Rare Earths are the most important of all alchemical ingredients because they are the catalysts that unleash the innate powers of other ingredients. * To those without Alchemical skill, they are indistinguishable from normal soil or sand. An Alchemist, however, may tell the difference and may extract [Hits] drams of Rare Earths from any soil in an hour.") "Forge Orichalcum" (ability :name "Forge Orichalcum" :summary "* See Equipment / Metals / Orichalcum") "Forge Rebis" (ability :name "Forge Rebis" :summary "* The Rebis (from the Latin res bina, meaning dual or double matter) is the end product of the alchemical magnum opus or great work. * After one has gone through the stages of putrefaction and purification, separating opposing qualities, those qualities are united once more in what is sometimes described as the divine hermaphrodite, a reconciliation of spirit and matter, a being of both male and female qualities as indicated by the male and female head within a single body. The sun and moon correspond to the male and female halves, just as the Red King and White Queen are similarly associated.") :Imbue (ability :name "Imbue") "Magnum Opus" (ability :name "Magnum Opus" :summary "* The process of working with the prima materia to create the philosopher's stone. It has been used to describe personal and spiritual transmutation. * Prima Materia - The ubiquitous starting material required for the magnum opus. It is the primitive formless base of all matter similar to chaos, the quintessence or aether. * Process philosophy - An approach to philosophy that identifies processes, changes, or shifting relationships as the only true elements of the ordinary, everyday real world. It treats other real elements (examples: enduring physical objects, thoughts) as abstractions from, or dependents on, processes. * Stages of the Magnum Opus ** Nigredo - The blackening or melanosis means putrefaction or decomposition. After gathering the Prima Materia, the material and the Alchemist must undergo putrefactio. The material is processed until it turns completely black. This is by far the longest and most difficult stage. It is often known as the 'dark night of the soul.' We are being asked to let go of all within us and outside of us that is not in full alignment with the truth of who we are. This is a truth as it exists on a soul level, far beyond the ego and its limited ideas or illusions about who we 'should' be. It is made far more difficult by the resistance and defenses we put up against it. Many of us will resist for years, remaining unwilling to accept that our lives, as we know them, are over. Few of us are quick to grasp the fact that there is new life waiting for us if we would only let go of the limited vision of existence we usually try so desperately to cling to. It is only when we become willing to surrender that the alchemical process truly begins. Only when we are willing to die do we have the chance to one day be reborn. ** Albedo - The whitening or leucosis is the perfect purification. The material is further processed removing all blackness until only pure white remains. Then it is said that life has conquered death, that the king has been revived. When one has purified his awareness of Self, during meditation, by eliminating thoughts, or otherwise, then at a certain point, light appears. The light that appears is also metaphoric for an absolute clear, pure awareness of Self. In that state one is in a very fixed position, that is, very stable, very much in the here and now, in total clarity of Self. In Whiteness, the material has attained a degree of Fixedness that fire cannot destroy. ** Rubedo - The reddening, purpling, or iosis. When the White stone or the White Elixir has been made, it needs to purified further, sublimated, until the material becomes totally Fixed and is completely stable. Then we have the Red Sulfur, the red stone, the Red Elixir, the Stone of the Wise. When the divine light has emerged during meditation, one needs to make it last. this demands a continued effort of holding one's attention to this pure awareness, not only for the length of the meditation session, but also during every day life. At a certain point the pure awareness of one's divine self will be permanent." :titles "The Great Work") "Prepare Alchemical Substance" (ability :name "Prepare Alchemical Substance" :summary "* Each substance requires a separate ability to be taken. * See Equipment / Alchemical Substances") "Prepare Medicine" (ability :name "Prepare Medicine" :summary "* Each medicine requires a separate ability to be taken. * See Equipment / Medicines") "Prepare Powder" (ability :name "Prepare Powder" :summary "* Each powder requires a separate ability to be taken. * See Equipment / Powders") "Transmute State" (ability :name "Transmute State" :reference "* Supposedly, the ancient Egyptians could create ice from water by placing water out under the stars." :summary "* Force a substance to make a minor state change (e.g. Liquids become solids, soft substances turn to liquid, hard substances become soft, water evaporates, ice melts."))) :Artifice (power :name "Artifice" :summary "* Synergy with Mechanics" :titles "Artificer, Engineer, Inventor, Inventress, Machinist, Mechanic" :abilitymap (abilitymap "Construct Automaton" (ability :name "Construct Automaton" :reference "* Minaton - Sinbad and the Eye of the Tiger" :summary "* Purpose - When constructing an Automaton, it must be given one or more purposes. These are similar to skills, for example: Farming, Construction, Medicine, Melee, Ranged Combat, Strength, etc. The purpose must be trained by an expert in the field and an extended roll determines the level of the Skill. Once the level is determined, specialties and abilities may be chosen equal to the level.") "Construct Balloon" (ability :name "Construct Balloon") "Construct Device" (ability :name "Construct Device") "Construct Flying Machine" (ability :name "Construct Flying Machine") "Construct Machina" (ability :name "Construct Machina") :Firepower (ability :name "Firepower" :summary "* Temporarily increase the damage done by a mechanical weapon.") "Fulfill your Purpose" (ability :name "Fulfill your Purpose" :reference "* Bomb, this is Lt. Doolittle. You are NOT to detonate in the bomb bay. I repeat, you are NOT to detonate in the bomb bay! - Dark Star" :summary "* Machines want nothing more than to fulfill their designed purpose, so it is simple to convince them to perform this purpose, even when it is not supposed to.") "Ghost in the Shell" (ability :name "Ghost in the Shell") "Imbued Nails" (ability :name "Imbued Nails" :summary "* Empower nails to produce massive splitting damage when struck.") :Invention (ability :name "Invention") :Haywire (ability :name "Haywire") :Malfunction (ability :name "Malfunction") "Override Machine" (ability :name "Override Machine") "Speak with Machines" (ability :name "Speak with Machines"))) :Astrology (power :name "Astrology" :summary "* Astrology is the study of the [Stars] and the [Astral Realm] * Planetary days: Each day of the year is related to one of the planets, the moon and the sun. Energies differ in accordance with the position of the planets. * Lunar cycle: The cycle of the visible phase of the moon. This is a very powerful time for ritual ceremonies to be preformed." :titles "Astrologer, Astromancer, Celestial Magic, Stargazer" :abilitymap (abilitymap "Aim of Sagittarius" (ability :name "Aim of Sagittarius" :summary "* [Action]: Target gains [Synergy] for the next ranged [Attack].") "Astral Projection" (ability :name "Astral Projection" :image "Units/Magic/AstralProjection.jpg" :summary "* [Action]: Body fall unconscious with Spirit enters the [Spirit Realm]. The Spirit may travel as long as it wants, but if no one tends to the Body, it will die of dehydration in 3 days. * [Death]: At the moment of death, Spirit may permanently enter the [Spirit Realm].") "Astral Sight" (ability :name "Astral Sight") "Astral Ward" (ability :name "Astral Ward") "Balance of Libra" (ability :name "Balance of Libra" :summary "* [Action]: Place the Balance of Libra card on this unit. At any time you may discard the Balance of Libra card to cause a unit that has done damage to you to immediately suffer the same amount of damage.") "Calm of Cancer" (ability :name "Calm of Cancer" :summary "* [Action]: Targets ignore all [Mind] penalties for the duration of this ability.") "Celestial Convergence" (ability :name "Celestial Convergence") "Chariot of the Sun" (ability :name "Chariot of the Sun" :summary "* [Extended Action]: At dawn, if the sun is visible, summon a blazing chariot with horses of flame that can carry the user and up to level passengers high into the sky all day. At sunset, the chariot lands anywhere the user chooses where the sun is visible.") "Charm of Virgo" (ability :name "Charm of Virgo" :summary "* [Action]: Gain [Synergy] on unit's next communication skill. Duration 1 turn.") "Cleansing of Aquarius" (ability :name "Cleansing of Aquarius" :reference "* Aquarius is not a water sign. It's an air sign. The mix up often comes about from Aquarius' overarching symbol, the water-bearer." :summary "* [Action]: Remove X [Poison], [Disease], or [Corruption] cards from the target.") "Courage of Leo" (ability :name "Courage of Leo" :summary "* [Action]: Remove X [Retreat] tokens from all target in range.") :Daybreak (ability :name "Daybreak" :summary "* Banishes fatigue in diurnal (daytime) creatures. * Causes noturnal creatures to fall asleep.") "Déjà Vu" (ability :name "Déjà Vu" :summary "* You have seen this situation before and are not surprised by it. * [Action]: The next time you are [Suprised], ignore all penalties for [Surprise].") "Depth of Pisces" (ability :name "Depth of Pisces" :summary "* [Extended Action]: Gain [Synergy] on the next [Search], [Research], or [Investigation] [Action].") "Determination of Aries" (ability :name "Determination of Aries" :summary "* [Action]: Target ignores all movement penalties (including terrain) for the duration of this effect.") "Duality of Gemini" (ability :name "Duality of Gemini" :summary "* [Action]: Take on a different personality with different mannerisms. This can be the basis for a very convincing disguise.") :Eclipse (ability :name "Eclipse" :summary "* [Extended Action]: Predict where, when, and the intensity of the next solar or lunar eclipse. The eclipse is very impressive to others and is almost always tied to important mystical events. * Both the Solar Eclipse and Lunar Eclipse (Blood Moon) provide the following benefits or penalties: +2 [Astrology], +2 [Black Magic]. +1 [Sorcery], -1 [Thergy], -1 [Nature Magic]") "Eye of Jupiter" (ability :name "Eye of Jupiter") "Full Moon" (ability :name "Full Moon") "Hand of Fate" (ability :name "Hand of Fate") "Hide from the Stars" (ability :name "Hide from the Stars" :summary "* Protects from the divinations of others.") "Meteor Shower" (ability :name "Meteor Shower" :summary "* [Extended Action]: Call meteors" :titles "Starfall") "Moon Bridge" (ability :name "Moon Bridge" :summary "* Opens a bridge to the Ethereal version of the Moon.") "New Moon" (ability :name "New Moon") "Ring of Saturn" (ability :name "Ring of Saturn") "Secrets of Scorpio" (ability :name "Secrets of Scorpio" :summary "* [Extended Action]: Learn a secret about a subject.") "Star of Ill Omen" (ability :name "Star of Ill Omen") :Stargazing (ability :name "Stargazing") :Starsight (ability :name "Starsight" :summary "* See clearly at night while under the stars.") "Steadiness of Capricorn" (ability :name "Steadiness of Capricorn" :summary "* [Action]: Target gains [Synergy] for the next physical, non-attack [Action].") :Sunlight (ability :name "Sunlight" :summary "* [Action]: Cause a light the unit holds to become bright sunlight. The light produces warmth like a campfire and will cause damage to creatures harmed by sunlight.") "Waning Moon" (ability :name "Waning Moon") "Waxing Moon" (ability :name "Waxing Moon") "Will of Taurus" (ability :name "Will of Taurus" :summary "* [Action]: Targets ignore all attack penalties for the duration of this ability.") "Written in the Stars" (ability :name "Written in the Stars" :summary "* [Action]: Foresee a random event that will happen in [Time] level."))) :Chronomancy (power :name "Chronomancy" :abilitymap (abilitymap :Delay (ability :name "Delay") "Reverse Time" (ability :name "Reverse Time" :reference "* If I could turn back time... - Cher") "Slow Time" (ability :name "Slow Time") "Temporal Vision" (ability :name "Temporal Vision") "Tempus Fugit" (ability :name "Tempus Fugit" :summary "* Speeds time in an area" :titles "Time Flies") "Time Heals All Wounds" (ability :name "Time Heals All Wounds" :summary "* After healing the physical effects of a wound, the ability can remove the mental scars by actually removing the wounds from the past. The level of the ability determines the number of years in the past from which the wound is erased. If the entire history is erased the wound will have never occurred and no one will remember it except the caster. The person's life history is rewritten without the wound. This can result in significant changes if the wound was debilitating. The power of this ability ensures that any changes will never be worse than the current situation.") "Time Shift" (ability :name "Time Shift") "Time Stop" (ability :name "Time Stop" :titles "Time Freeze") "Wall of Time" (ability :name "Wall of Time") "Warp Time" (ability :name "Warp Time" :reference "* Let's do the Time Warp again... - The Rocky Horror Picture Show" :titles "Time Warp"))) :Conjuration (power :name "Conjuration" :summary "* Conjuration is the art of creating things directly from the imagination. Conjured items are relatively fragile and erode quickly with use, but otherwise will last indefinitely. An item is perfectly visualized and then drawn into reality from the Astral Realm. Conjuration is similar to [Illusion], but its creations are real though they are rarely permanent. * Action: Check Skill vs. the Value of the item to create. If successful, the item can be used a number of times equal to the result before disintegrating. If the user has a specialty with an item, that specialty may be applied to the check. * Benefits - Conjuration is the natural ability of the Astral Realm and Dream Realm. All abilities are +1 in these Realms. * Limitations - Creation magic is exceedingly difficult with only relatively minor creations possible. The process of Conjuration is different from natural things, so all Conjured things have some imperfection or mark that distinquishes itself from a natural thing. * Concidental - Conjuring in ways that appear like the object was already there is [Coincidental Magic]. E.g. Drawing an illusionary sword from a real scabbard." :titles "Conjurer, Creation, Creator, Manifestation" :abilitymap (abilitymap "Conjure Weapon" (ability :name "Conjure Weapon" :summary "* Conjure a weapon out of thin air. * [Limited]: By the user's skill in the weapon created."))) :Divergence (power :name "Divergence" :summary "* The opposite of Convergence, Divergence specializes on objects moving apart." :stat "Mind" :abilitymap (abilitymap "Amplify Repulsion" (ability :name "Amplify Repulsion" :summary "* Massively increase the repulsive force between two objects. This can increase magnetic repulsion and also increase the movement of two objects that have just collided to increase Knockback.") "Pressor Force" (ability :name "Pressor Force" :summary "* Apply low but steady pressure pushing an object away."))) "Paper Magic" (power :name "Paper Magic" :titles "Ofuda" :abilitymap (abilitymap "Binding Paper" (ability :name "Binding Paper") "Binding Symbol" (ability :name "Binding Symbol") "Giant Kite" (ability :name "Giant Kite") "House of Cards" (ability :name "House of Cards") "Paper Airplane" (ability :name "Paper Airplane") "Paper Crane" (ability :name "Paper Crane") "Paper Darts" (ability :name "Paper Darts") "Paper Doll" (ability :name "Paper Doll") "Paper Dragon" (ability :name "Paper Dragon") "Paper Flurry" (ability :name "Paper Flurry") "Paper Mache" (ability :name "Paper Mache") "Paper Plane" (ability :name "Paper Plane") "Paper Shuriken" (ability :name "Paper Shuriken") "Paper Snowflake" (ability :name "Paper Snowflake") "Paper Tiger" (ability :name "Paper Tiger") :Pinwheel (ability :name "Pinwheel"))) :Sorcery (power :name "Sorcery" :reference "* This is forbidden. This is a summoning. I cannot speak this!... There is no light here. You came to the darkness for knowledge... And all the knowledge you seek is here. Surrender. Speak the words. Call her home. By three thay come. By three thy way opens. By the blood of the willing. We call thee home. Hail, daughter of hatred. Hail, Lilith. - Diablo IV" :titles "Sorcerer, Sorceress, Sorceress Queen, Summoner" :abilitymap (abilitymap :Banishment (ability :name "Banishment" :summary "* [Action]: Return any [Outsider] to its original realm. This ability may only be attempted on a particular being once per month.") :Binding (ability :name "Binding" :summary "* Any subject successfully summoned is attuned to the caster and is subject to a binding. The caster may bind immediately or parley first and use the binding as a threat. * [Requires]: The caster must describe the subject's past in detail and name his/her demands. If the description is in error or the demand cannot be completed, the Binding automatically fails. * [Action]: If successful, the caster will know the subject is bound and it will perform the demand to the letter, but the subject is unwilling and will seek to defeat the caster's wishes through semantics or in passive/agressive ways.") "Binding Contract" (ability :name "Binding Contract" :summary "* Like [Binding], any subject successfully summoned is attuned to the caster and is subject to a binding. The caster may parley and use the binding to enforce an agreement. * [Requires]: The caster must name his/her demands and offer compensation to the subject. They may then negotiate for as long as desired. * [Action]: If the subject refuses to bargain, the caster may still cast or threaten a [Binding]. If the subject agrees to the bargain, the subject and the caster are automatically bound to the terms of the bargain, and both must fulfill their commitments or be immediately subject to a [Summoning] and automatically successful forced [Binding] (even if neither party has these abilities).") "Containment Jar" (ability :name "Containment Jar" :reference "* Evil Containment Wave - Dragon Ball" :summary "* A summoned being may be captured in a special container that permanently imprisons the creature. * The being in the jar can telepathically communicate with anyone touching the jar. If the jar is broken, the being is immediately freed. The being may bargain for its freedom, and if it does so, it must fulfill its bargain. * Imprisonment in a jar can be used as a threat or the caster may simply imprison the being to be used later." :titles "Soulbind") "Create Elder Sign" (ability :name "Create Elder Sign") "Daedalus Gateway" (ability :name "Daedalus Gateway" :summary "* A subtle gate that moves a person to a different Realm without them realizing. Both locations must be nearly identical.") "Dimension Door" (ability :name "Dimension Door" :summary "* Cross through a doorway or arch of some sort and appear through another similar arch some distance away.") "Dimensional Gateway" (ability :name "Dimensional Gateway" :summary "* Open a portal to another dimension.") :Gateway (ability :name "Gateway" :summary "* Open a portal to another location.") :Pentagram (ability :name "Pentagram" :summary "* A Triangle enclosed in a circle. A double triangle will form a Pentagram. * The five points represent the four elements with the spirit presiding at the top. The triangles form a doorway. * Time allowing, it is usually meticulously inscribed and used with a [Protective Circle]. * It serves to contain any being (and its minions) summoned by the caster. * It provides defense equal to the success roll versus any being (and its minions) summoned by the caster. This defense applies to ALL attempts to act across the Pentagram. If an attack exceeds the defense of the Pentagram, the defense reduces by one." :titles "Binding Circle, Devil's Door, Thaumaturgic Triangle") :Protection (ability :name "Protection" :summary "* A protective barrier inscribed on the ground to protect the caster from summoned beings (usually his own). * A typical size for a circle is nine feet in diameter, though the size can vary depending on the purpose of the circle. * Some practitioners choose to mark the physical boundary of their circle, either before or prior to the actual casting. This can be done using a cord, a chalk line, a line drawn in the soil, or small objects such as stones. * Some practitioners mark the four cardinal points with candles, either white, or of colors representative of the elements: ** North: green for the element of Earth ** East: yellow for the element of Air ** South: red for the element of Fire ** West: blue for the element of Water * Cutting a door - The barrier is fragile and sensitive to things passing through it. Leaving or passing through the circle often weakens or dispels the barrier. This is referred to as 'breaking the circle'. Practitioners should not leave the circle unless absolutely necessary. In order to leave a circle and keep it intact, a door must be cut in the energy of the circle. Using the athame, a doorway is cut in the circle, at which point anything may pass through without harming the circle. This opening must be closed afterwards by reconnecting the lines of the circle." :titles "Circle of Protection, Protective Circle") "Soul Pact" (ability :name "Soul Pact" :summary "* Death: Enter a specified Demon Realm. This ability is automatic and is not optional.") "Summon Demon" (ability :name "Summon Demon" :titles "Demonic Summoning") "Summon Devil" (ability :name "Summon Devil" :titles "Diabolic Summoning") "Summon Familiar" (ability :name "Summon Familiar" :reference "* Animal companions, such as cats, that are either trained to assist in magic, or are used as a mascot." :summary "* Summon an animal shaped familiar spirit to serve as a companion, servant, spy, etc. * The Familiar is highly intelligent and must be bargained with before it agrees to serve. * Duration: Indefinite. * The Familiar will age with its master. * The Familiar can gain abilities that its master possesses. * Three mystic cords are constructed to link the Familiar to its master. ** Golden Cord - Connects magical abilities. ** Silver Cord - Connects the minds. ** Bronze Cord - Connects the bodies. !Familiar Skills * Shapechange to Human Form * Giant Growth (Self) * Communicate with Master * Speech") "Summon Item" (ability :name "Summon Item" :summary "* A single item may be attuned to a summoning. Later that item may be summoned to the owner's hand."))) :Thaumaturgy (power :name "Thaumaturgy" :summary "* The interface between Magic and Science. Mathematics, Biology, Geology and Chemistry are studied to manifest amazing creations. * Thaumaturgy can create permanent artificial life. * Thaumaturgy favors crytals and gemstones for power supplies." :titles "The Art Mathematical, Wonder Working" :abilitymap (abilitymap "Create Homonculus" (ability :name "Create Homonculus") "Prepare Lightning in a Bottle" (ability :name "Prepare Lightning in a Bottle" :summary "* Create [Lightning in a Bottle]."))) :Wizardry (power :name "Wizardry" :summary "* Conventional Wizardry believes that everything in the universe holds massive energy potential waiting to be unleashed. * Wizardry is the study of Magic itself. As such it is a sort of meta-Magic, focused on altering magical energies." :titles "Archmagi, Magi, Wizard" :abilitymap (abilitymap "Analyze Magic" (ability :name "Analyze Magic" :summary "* Gain understanding of a magical item or effect.") :Counterspell (ability :name "Counterspell" :summary "* [Interrupt]: Roll a defense roll against a magical ability. If the defense succeeds, the ability has no effect.") :Dampen (ability :name "Dampen" :summary "* Magic can easily be reduced since magic already has a tentative hold on reality.") :Dispel (ability :name "Dispel" :summary "* Attack a placed magical ability. Each hit weakens its abilities.") :Fork (ability :name "Fork" :summary "* Duplicate an allied caster's magical ability. The other caster fully controls both abilities but may not aim both at the same target.") :Magnify (ability :name "Magnify" :summary "* Magnify draws from the potential energy in all things to increase the power in an existing force. * Note: Magic cannot be magnified. Magic only simulates reality and has no hidden reserves to tap. !Examples * An arrow can hit with devastating force. * A bird's weight can be increased so it falls. * A fire can be enhanced into an inferno while not burning fuel faster or producing additional smoke. The fuel has near infinite reserves to draw upon.") "Mana Burn" (ability :name "Mana Burn") "Mana Leak" (ability :name "Mana Leak") "Mana Shield" (ability :name "Mana Shield" :summary "* Forms an transparent crytal shell in front of the caster, but if they moves, the shield will drop. * [Defend]: Protected with level Armor from all [Physical] [Damage].") "Mirror Shield" (ability :name "Mirror Shield" :summary "* Forms an transparent crytal shell in front of the caster, but if they moves, the shield will drop. * [Defend]: If defender was targetted by an [Energy] attack lower than level, the Attacker also suffers the attack. * Wall that reflects attacks back to its source.") "Mirror Wall" (ability :name "Mirror Wall" :summary "* Wall that reflects [Energy] attacks lower than level back to their source. Any attack higher than level will destoy the Wall.") "Paradigm Shift" (ability :name "Paradigm Shift" :summary "* Change one rule of nature for a moment.") "Power Sink" (ability :name "Power Sink") "Power Surge" (ability :name "Power Surge") :Redirect (ability :name "Redirect" :summary "* [Reaction]: Redirect an Energy or Physical Ranged attack that has a single target to another target.") :Stasis (ability :name "Stasis" :summary "* Place an equal number of White Stasis Tokens on yourself and your target.") "White Noise" (ability :name "White Noise" :summary "Sounds are garbled preventing eavesdropping") "Wizard Armor" (ability :name "Wizard Armor" :summary "* Defense against Energy that creates [Feedback].") "Wizard Lock" (ability :name "Wizard Lock" :summary "* Wizard Lock alters an existing magical effect by freezing it in place. It becomes permanent until dispelled, but it no longer has an active effect. In this way a wall of fire would be a permanent wall that does not move or produce heat. This is often used to make a seal last indefinitely."))))) "Black Magic" (section :name "Black Magic" :powermap (powermap "Blood Magic" (power :name "Blood Magic" :summary "* Each use of Blood Magic requires a blood sacrifice. The user immediately suffers one [Blood Loss], or if a captured sacrifice is available, the user may instead use the blood of the sacrifice. * Blood magic is a favorite of Vampires who can recover from [Blood Loss] quickly." :titles "Blood Brother, Blood Mage, Blood Witch, Vampire" :stat "Shadow" :abilitymap (abilitymap "Blood Bath" (ability :name "Blood Bath" :summary "* Bathe in the blood of of the young and healthy. Gain [Vampiric Blood] (even if not a [Vampire]) equal to the number of victims drained up to [Blood Magic].") "Blood Bind" (ability :name "Blood Bind") "Blood Blade" (ability :name "Blood Blade" :summary "* Create a sword, knife, or axe from blood. Blood Weapons always cause [Bleeding].") "Blood Borne" (ability :name "Blood Borne" :summary "* Target: [Bleeding]. Apply [Sickness] to a [Bleeding] target.") "Blood Brother" (ability :name "Blood Brother") "Blood Feud" (ability :name "Blood Feud") "Blood Lust" (ability :name "Blood Lust" :summary "* Action: +1 [Attack] and +1 [Damage], take -1 [Body]" :titles "Blood Rage") "Blood Oath" (ability :name "Blood Oath") "Blood Spear" (ability :name "Blood Spear" :summary "* Create a spear or javelin from blood. Blood Weapons always cause [Bleeding].") "Blood Whip" (ability :name "Blood Whip" :summary "* Create a whip or rope from blood. Blood Weapons always cause [Bleeding].") "Boil Blood" (ability :name "Boil Blood" :summary "* Touch, Fire Attack, Criticals are only Damage.") "Call for Blood" (ability :name "Call for Blood") :Hecatomb (ability :name "Hecatomb" :reference "* In ancient Greece or Rome, a great public sacrifice, originally of a hundred oxen. * An extensive loss of life for some cause.") :Lifeblood (ability :name "Lifeblood" :summary "* Use Blood to heal yourself. * [Action]: Take a [Blood Loss]. Change 1 [Critical Damage] to a normal [Damage] or change 1 [Damage] to a [Blood Loss].") "Out for Blood" (ability :name "Out for Blood"))) :Chaos (power :name "Chaos" :reference "* Do what thou wilt shall be the whole of the Law. - Alesiter Crowley, Book of the Law * The Butterfly Effect - Any 'seemingly' insignificant event in the universe has the potential to trigger a chain reaction that will change the whole system. * Do I really look like a plan? ... I just...do things. The mob has plans. The cops have plans. Gordon's got plans. They're schemers, schemers trying to control their little worlds. I'm not a schemer. I try to show the schemers how pathetic their attempts to control things really are. ... I just do what I do best, I took your little plan and turned it on itself. Look at what happened to this city with a few drums of gas and a couple of bullets. ... Introduce a little anarchy. Upset the established order and everything becomes chaos. I'm an agent of chaos. - Joker, The Dark Knight" :summary "* Belief is a tool that can be applied at will rather than unconsciously. * Trying unusual, and often bizarre beliefs is in itself an experience worth having * Flexibility of belief is a form of power * Be outside of all categories - world views, theories, beliefs, opinions, habits and even personalities are tools that may be chosen arbitrarily in order to understand or manipulate the world one sees and creates around oneself. * Be tolerant - whatever one might disagree over is merely an opinion, and hence interchangeable, anyway. * Chaos magic is unique among magical traditions in that it does not attribute significance to any particular symbol or deity." :titles "Chaos Lord, Discordian, Logros Master, Lord of Chaos" :stat "Shadow" :abilitymap (abilitymap :Anarchy (ability :name "Anarchy") :Bedlam (ability :name "Bedlam") :Breakdown (ability :name "Breakdown" :summary "* Causes machinery to fail. The more complex the device the more dramatic the failure.") :Deconstruct (ability :name "Deconstruct" :reference "* People and planets and stars will become...dust...and the dust will become atoms...and the atoms will become...nothing. - Davros, Doctor Who" :summary "* Break apart an object into simpler pieces. Each successive use breaks down an object further. E.g. Wheel -> Tire -> Rubber -> Chemicals -> Atoms -> Particles") "Manipulate Luck" (ability :name "Manipulate Luck") :Pandemonium (ability :name "Pandemonium") "Sea of Chaos" (ability :name "Sea of Chaos") "Shroud of Uncertainty" (ability :name "Shroud of Uncertainty") "Tendrils of Chaos" (ability :name "Tendrils of Chaos") "Wild Ride" (ability :name "Wild Ride" :summary "* Allow the whims of fate to carry you to a destination of their choosing.") :Unravelling (ability :name "Unravelling" :summary "* Knots untie, locks unfasten, etc.") "Winds of Change" (ability :name "Winds of Change"))) :Corruption (power :name "Corruption" :reference "* How do we begin to covet? We begin by coveting what we see every day. - The Silence of the Lambs * Deadite: I'll swallow your soul! Ash: Come get some. - Ash, Army of Darkness * There is nothin' fair in this world... No... There is nothin' safe in this world... And there's nothin' sure in this world... And there's nothin' pure in this world... Look for something left in this world... Start again! - Billy Idol, White Wedding" :titles "Blight Caster, Contaminator, Corrupter, Defiler, Filth, Plague Bearer, Plague Lord, Plague Walker, Sin, Sin Lord, Scourge, Tainted" :stat "Shadow" :abilitymap (abilitymap :Balefire (ability :name "Balefire" :summary "* Balefire is a magical, corrupting fire that appears as a sickly pale, greenish flame that flows like a liquid. It burns like napalm and is not extinquished by water. Prolonged exposure produces damage like [Radiation]." :titles "Hellfire, Witchfire") :Befoul (ability :name "Befoul") :Blight (ability :name "Blight" :summary "* Damage plant life in an area.") :Contaminate (ability :name "Contaminate") :Corrosion (ability :name "Corrosion") :Corrupt (ability :name "Corrupt") :Decay (ability :name "Decay") :Defile (ability :name "Defile") :Despoil (ability :name "Despoil") :Deteriorate (ability :name "Deteriorate" :summary "* Magnify any existing negative tokens.") :Epidemic (ability :name "Epidemic" :summary "Copies all conditions from target to all targets in the area around the target.") "Eye of Corruption" (ability :name "Eye of Corruption") :Miasma (ability :name "Miasma") :Pestilence (ability :name "Pestilence") :Plague (ability :name "Plague") "Plague Carrier" (ability :name "Plague Carrier" :summary "* This ability inflicts a contagious disease on a subject while also providing some immunity to the victim. * The subject then spreads the disease to others." :titles "Plague Bearer, Typhoid Mary") "Plague Strike" (ability :name "Plague Strike" :summary "* Add [Disease] Criticals to a normal attack.") :Pollute (ability :name "Pollute" :summary "* Add Poison or Disease to any fluid or food.") :Putrefy (ability :name "Putrefy") "Putrid Explosion" (ability :name "Putrid Explosion") :Rot (ability :name "Rot") :Ruin (ability :name "Ruin" :summary "* Cause a structure to age and take structural damage." :titles "Raze") :Sicken (ability :name "Sicken") "Tainted Land" (ability :name "Tainted Land") :Wither (ability :name "Wither" :titles "Shrivelling"))) :Darkness (power :name "Darkness" :reference "* The blackness gathers about, so thick, so clinging, so penetrating, so oppressive, that all other darkness that I have ever conceived would be like bright light beside it. - Aleister Crowley, Magick Without Tears * When the shadows are devoured by even darker shadows, the curtain pulls back and reveals a world without light! - Dark Signers, Yugioh 5Ds * To go in the dark with a light is to know the light. To know the dark, go dark. Go without sight and find that the dark, too, blooms and sings, and is traveled by dark feet and dark wings. - Wendell Berry, To Know the Dark" :titles "Dark Lord, Dark Magician, Dark Master, Dread Knight, Lord of Night, Shadow Caster, Shadow Knight, Shadow Lord, Shadow Mage, Shadow Master, Shadow Rider, Shadow Walker, Shadow Warrior" :stat "Shadow" :abilitymap (abilitymap "Cast Shadows" (ability :name "Cast Shadows" :summary "* Animate shadows. Like [Illusions], they have full power but are destroyed on any hit.") "Circle of Darkness" (ability :name "Circle of Darkness") "Cloak of Shadows" (ability :name "Cloak of Shadows" :summary "* Increase Stealth" :titles "Shroud of Night") "Darkest Hour" (ability :name "Darkest Hour" :titles "Witching Hour") "Eye of Shadow" (ability :name "Eye of Shadow" :summary "* See perfectly in any form of darkness." :titles "Dark Sight, Night Vision") "Heart of Darkness" (ability :name "Heart of Darkness") :Nightfall (ability :name "Nightfall" :summary "* Gain +1 [Darkness] Skill for the first hour after the dusk.") :Oubliette (ability :name "Oubliette" :summary "* Trap a target in a prison of absolute darkness.") "Shadow Step" (ability :name "Shadow Step" :summary "* Step into a shadow and appear from a nearby shadow, though failure will leave the unit trapped in shadow.") "Shadow Strike" (ability :name "Shadow Strike" :summary "* Add [Blindness] Criticals to a normal attack.") "Tendrils of Night" (ability :name "Tendrils of Night") "Wall of Darkness" (ability :name "Wall of Darkness"))) "Demon Soul" (power :name "Demon Soul" :reference "* Claymore * Ghost Rider * Prototype" :summary "* Demon Soul is when a user has been partially or completely possessed by a demonic entity. * Demon Soul allows the user a number of physical advantages including regeneration and natural weaponry, however each use of an ability at full strength (higher than level - 2) risks increasing the Beast inside until it eventually dominates the user's Spirit." :titles "Yoma" :stat "Beast") :Fleshcraft (power :name "Fleshcraft" :summary "* This mastery of the flesh defies traditional life and death. Body parts may be removed, reattched, molded to create abominations or fiendish beauty. * Stats may be rearranged depending on the success roll. Only magical healing will repair." :titles "Flesh Molder, Sadist" :stat "Shadow" :abilitymap (abilitymap "Body Sculpting" (ability :name "Body Sculpting" :summary "* Stats may be rearranged depending on the success roll. Only magical healing will repair.") "Flesh Molding" (ability :name "Flesh Molding" :summary "* Body can be scuplted like clay. This is a very powerful but impercise ability. It can be further refined with [Body Scuplting].") :Grafting (ability :name "Grafting" :reference "Frankenstein's Monster" :summary "* Separate living organs from their host and graft them to another.") :Hybridize (ability :name "Hybridize" :summary "* Create new lifeforms by growing hybridized cells.") :Pain (ability :name "Pain" :reference "* And to think, I hesitated... - Hellraiser II * Oh, Kirsty. So eager to play, so reluctant to admit it. - Pinhead, Hellraiser II * I guess I'm always hoping that you'll end this reign. But it's my destiny to be the king of pain - The Police, King of Pain"))) :Necromancy (power :name "Necromancy" :reference "* Necromancy is the communication with the spirits of the dead sometimes via a ouija board, on which messages are spelled out and interpreted." :titles "Black Savant, Bone Caster, Grave Robber, Necromancer, Necrosavant" :stat "Shadow" :abilitymap (abilitymap "Bone Harvest" (ability :name "Bone Harvest") "Brush with Death" (ability :name "Brush with Death") "Call the Death" (ability :name "Call the Death" :reference "* Bring out your dead! - Monty Python and the Holy Grail" :summary "* Attract undead creatures to your location.") "Command the Dead" (ability :name "Command the Dead" :summary "* Compel undead creatures to serve you for the duration of the ability.") "Corpse Explosion" (ability :name "Corpse Explosion") "Dance of the Dead" (ability :name "Dance of the Dead" :summary "* Force a dead spirit to perform a task for you.") "Dead Eye" (ability :name "Dead Eye" :reference "The Sixth Sense" :summary "* The Necromancer's eyes become white with cataracts obscuring the real world while seeing through the [Shroud] into the [Underworld]. The Necromancer can see and speak with the dead in the [Shadowlands]. The dead, however, are generally not fond of being used by Necromancers.") "Dead Man Walking" (ability :name "Dead Man Walking" :summary "* The Necromancer becomes corpselike and is treated as [Undead] by other [Undead].") :Deathgrip (ability :name "Deathgrip") "Death's Door" (ability :name "Death's Door" :summary "* [Action]: Project your spirit into the [Underworld] while the body lies in a coma. * [Death]: Enter the Underworld") "Drain Life" (ability :name "Drain Life") "Draining Strike" (ability :name "Draining Strike" :summary "* While this ability is active, gain 1 Health when the user deals at least 1 [Health] damage with a [Close Combat] [Strike].") :Embalming (ability :name "Embalming" :summary "* By preparing a corpse both phyically and magically, the body can avoid most negative effects of decay. * Embalmed undead created through Reanimation can last indefinitely.") "Ghost Wind" (ability :name "Ghost Wind" :summary "* Summon terrifying spirits that cause fear in an area.") "Hand of Glory" (ability :name "Hand of Glory" :summary "* The Hand of Glory is the dried and pickled hand of a man who has been hanged, often specified as being the left (Latin: sinister) hand, or, if the man were hanged for murder, the hand that 'did the deed.' * Old European beliefs attribute great powers to a Hand of Glory combined with a candle made from fat from the corpse of the same malefactor who died on the gallows. The candle so made, lighted, and placed (as if in a candlestick) in the Hand of Glory, would have rendered motionless all persons to whom it was presented.") :Harrowing (ability :name "Harrowing") "Living Death" (ability :name "Living Death" :summary "* Temporarily turns the caster into a [Lich].") :Manifestation (ability :name "Manifestation" :summary "* Allows a dead spirit to temporarily interact with the living world.") "Moment of Death" (ability :name "Moment of Death" :summary "* Touch a corpse and view its death.") :Mummification (ability :name "Mummification" :summary "* A complex ritual to turn the target into a [Mummy] or [Lich]. A perfectly created undead appears like a completely normal living being (though it is no longer alive). Flaws is the casting make the being more monstrous.") :Necropotence (ability :name "Necropotence" :summary "* Reduce your own health to increase another magical effect.") :Necroscope (ability :name "Necroscope") "Prolong Life" (ability :name "Prolong Life") :Reanimation (ability :name "Reanimation" :reference "Reanimator" :summary "* The corpse of a dead unit may be reanimated returning it to an [Undead] semblance of life. * This ability does not give any control of the [Undead] to the caster unless the caster is somehow reanimating his own body. * [Action] - [Success] indicate the new maximum [Body] of the corpse up to its original [Body]. The closer the corpse gets to its full original [Body], the more alive it will appear. * Some otherworldly beings defy death by Reanimating themselves.") "Rigor Mortis" (ability :name "Rigor Mortis") :Seance (ability :name "Seance" :summary "* Draw ghosts to you and allow them to speak through you.") "Sever Soul" (ability :name "Sever Soul" :summary "* [Requires]: Target whose spirit has left its body. * [Action]: Cut the connection between the spirit and its body. The spirit may become lost, and the body falls into a coma. The soulless body is now an attractive target for possession.") :Undeath (ability :name "Undeath" :summary "* Similar to [Resurrect], this ritual allows a being to permanently transform a [Living] being into an [Undying] one. * This can be used to create [Zombie] and [Skeletons] servants or create indepenent undead like [Ghouls] and [Vampires]."))))) :Thergy (section :name "Thergy" :reference "* Pray, not for the gods, or the betterment of others, but for yourself - Rosaria, Genshin Impact" :titles "Channelling, Miracle Working, White Magic" :powermap (powermap :Asceticism (power :name "Asceticism" :reference "* Snow White" :summary "* Aura * All Purity skills are at -1 for each level of [Shadow]. Ironically, the [Beast] is natural and therefore is not impure. There are said to be 'Four Affirmations' of the spirit: * Tradition and the family - The family is seen as the main mechanism by which traditions are reserved. Their main celebrations relate to birth and marriage. * Love of nature - Nature is sacred; to be in contact with nature is to be close to the sacred spirits. Natural objects are worshipped as containing sacred spirits. Killing living beings should be done with reverence for taking a life to continue one's own, and should be kept to a minimum. * Physical cleanliness - Take baths, wash hands, and rinse mouths often. * Festivals - Any festival dedicated to the Spirits, of which there are many each year." :titles "Angel, Banisher, Brother, Buddist, Exorcist, Father, Friar, Hearth Mage, Monk, Mother Superior, Nun, Paladin, Penitent, Purifier, Purity, Shintoist, Sister" :stat "Spirit" :abilitymap (abilitymap :Absolution (ability :name "Absolution" :summary "* A ritual of cleansing of sin. Absolution can be a difficult journey depending on the person and the sins. To be absolved, one must fully express, accept and atone for one's sins, only then may absolution be found." :titles "Atonement") "Arrow of Purity" (ability :name "Arrow of Purity" :reference "* Kakome, Inuyasha * Mirana, DOTA" :summary "* An arrow or other projectile can be enhanced to destroy corruption. * +1 Attack and +1 Damage vs. [Corrupted] or [Chaotic]") "Blaze of Glory" (ability :name "Blaze of Glory") "Calm Animal" (ability :name "Calm Animal") "Chime of Purity" (ability :name "Chime of Purity" :summary "* The user sounds a bell or chime, and its piercingly pure tones are unbearable to otherworldly beings.") :Cleaning (ability :name "Cleaning" :summary "* By simply rubbing any dirty surface with a wet cloth, the material immediately becomes cleaner regardless of the contamination. All harmful contaminents are cleaned off as well.") :Cleanse (ability :name "Cleanse" :summary "* Those who believe see a silvery shower wash over the target and cleaning away [Disease] or [Poison] like dirt. * Reduces [Poison] and [Disease] damage rolls by the skill level.") :Exorcism (ability :name "Exorcism" :summary "* Banish a spirit that is possessing a person, item, or location.") :Halo (ability :name "Halo" :summary "* Magnificient halo of light appears behind the user's head. Observers are awed by the sight. * [Action] - +1 on Social abiliites." :titles "Godshead") :Introspection (ability :name "Introspection") :Pacifism (ability :name "Pacifism") :Penance (ability :name "Penance") :Purify (ability :name "Purify" :summary "* Contamination including filth, [Disease], [Poison], or [Raditation] may be cleansed in a small area.") :Purge (ability :name "Purge") :Sanctuary (ability :name "Sanctuary" :summary "* From the user's perspective, it is like being on stage. While chanting, a spotlight seems to come upon the user, all other lights dim, and enemies cease to notice the user's presence.") "Sense Corruption" (ability :name "Sense Corruption") :Serenity (ability :name "Serenity") "Throw Salt" (ability :name "Throw Salt") "True Sight" (ability :name "True Sight") "Vow of Chastity" (ability :name "Vow of Chastity" :titles "Celibacy") "Vow of Obedience" (ability :name "Vow of Obedience" :reference "To dream the impossible dream To fight the unbeatable foe To bear with unbearable sorrow And to run where the brave dare not go To right the unrightable wrong And to love pure and chaste from afar To try when your arms are too weary To reach the unreachable star This is my quest To follow that star No matter how hopeless No matter how far To fight for the right Without question or pause To be willing to march, march into Hell For that heavenly cause And I know if I'll only be true To this glorious quest That my heart will lie peaceful and calm When I'm laid to my rest - Don Quixote, The Impossible Dream" :summary "* The vow of obedience is a commitment to truly follow the direction of ones beliefs regardless of obstacles or consequences knowing that whatever the outcome, it was always the true, right outcome.") "Vow of Poverty" (ability :name "Vow of Poverty") "Vow of Silence" (ability :name "Vow of Silence") "Ward Undead" (ability :name "Ward Undead"))) :Conviction (power :name "Conviction" :reference "* Being religious is a form of conceit. the faith in which I was brought up assured me that I was better than other people; I was 'saved,' they were 'damned'... Our hymns were loaded with arrogance - self-congratulation... With a touch more confidence and a liberal helping of ignorance, I would have been a famous evangelist... A confidence man knows he's lying; that limits his scope. But a successful shaman believes what he says - and belief is contagious; there is no limit to his scope. - Jubal, Stranger in a Strange Land" :titles "Crusader, Faithful, Fanatic, Grand Inquisitor, Inquisitor, Paladin, Zealot" :stat "Spirit" :abilitymap (abilitymap :Crusade (ability :name "Crusade" :titles "Jihad") :Defiance (ability :name "Defiance") :Demonize (ability :name "Demonize") :Devotion (ability :name "Devotion") "Do or Die" (ability :name "Do or Die") "Eternal Vigilance" (ability :name "Eternal Vigilance") "Faith Sustains Me" (ability :name "Faith Sustains Me" :summary "* May fast as long as skill roll exceeds number of weeks of fasting.") :Fanaticism (ability :name "Fanaticism") "Holy Armor" (ability :name "Holy Armor") "Holy Shield" (ability :name "Holy Shield") "Holy Strength" (ability :name "Holy Strength") :Persecute (ability :name "Persecute") :Rapture (ability :name "Rapture") :Righteousness (ability :name "Righteousness") :Sacrifice (ability :name "Sacrifice") :Smite (ability :name "Smite" :summary "* [Action]: Imbue weapon and body with the strength of your Conviction. * [Melee] or [Close Combat] vs. [Undead], [Devil] or [Demon]: use Conviction instead of weapon to determine damage.") "Singular Will" (ability :name "Singular Will" :summary "* Gain +1 to Defense when fighting in single combat with no other combatants around.") "Soul Blast" (ability :name "Soul Blast") :Tithing (ability :name "Tithing" :summary "* Pay 10% of your income to your superior and gain 10% of the income of your followers. This income must be completely spent on the faith.") :Zeal (ability :name "Zeal"))) :Convergence (power :name "Convergence" :summary "* Divine power surrounds the petitioner and those deemed allies. * [Focus]: +1 [Defense]" :titles "Blessing, Protection" :stat "Spirit" :abilitymap (abilitymap "Bless Object" (ability :name "Bless Object" :summary "* Apply a different blessing to object. That object can hold the blessing until triggered. * Duration: Level hours * Only level objects may be blessed at one time. If exceeded the earliest one is erased.") "Blessing against Cold" (ability :name "Blessing against Cold" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Cold") "Blessing against Electricity" (ability :name "Blessing against Electricity" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Electricity") "Blessing against Fire" (ability :name "Blessing against Fire" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. Fire") "Blessing against Projectiles" (ability :name "Blessing against Projectiles" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. projectilees.") "Blessing against Weapons" (ability :name "Blessing against Weapons" :summary "* [Focus]: +1 [Defense] and +1 [Armor] vs. melee weapons. Unarmed combat is unaffected.")) :specialtymap (specialtymap "Enhance Blessing" (specialty :name "Enhance Blessing" :summary "* When user activates a Blessing on an item, that Blessing has increased effect."))) :Divine (power :name "Divine" :reference "* It might take the suffering or worship of 10,000 souls to produce a grain of Divinity...but a single grain is beyond all the power of this world." :summary "* The ability to absorb the worship of others. Level determines the amount of Divinity that can be held at once." :titles "Prime, Primal" :abilitymap (abilitymap "Divine Accuracy" (ability :name "Divine Accuracy" :summary "* Attack: Spend a [Divinity]. The attack cannot miss. The minimum number of hits is 1 Critical.") "Divine Blessing" (ability :name "Divine Blessing" :summary "* Action: Transfer any amount of [Divinity] to the target.") "Divine Grace" (ability :name "Divine Grace" :summary "* Action: Spend a [Divinity]. Perform another non-attack Action. That action cannot fail. The minimum success is 1 Critical.") "Divine Shield" (ability :name "Divine Shield" :summary "* Action: Choose a shield or armor and spend a [Divinity]. For the next 3 turns, the shield or armor cannot be penetrated by force that is not also Divine.") "Divine Strike" (ability :name "Divine Strike" :summary "* Attack: Spend a [Divinity]. If the attack hits, The damage is always at least 1 Critical."))) :Invocation (power :name "Invocation" :reference "* And he shall separate them one from another, as a shepherd divideth his sheep from the goats. And he shall set the sheep on his right, but the goats on his left. - Matthew 25: 32-33 * Many cultures have regarded left-handedness as evil. Words such as sinister, which in Latin means both left and unlucky. Consequently, the left hand has often symbolized the rejection of traditional religion. * The word 'right' derives from the Hebrew term 'yamin' from the Old Testament, meaning 'stronger'. In Hebrew, the term for 'left' is 'smowl', meaning 'dark'. * It is possible that this division also derives from the practice of using the left hand for purposes of personal hygiene after defecation in some cultures, rendering the left hand 'unclean'." :summary "* Calling or summoning a spirit, demon, god or other supernatural agent for assistance. * Right Hand Path - Elevates spirituality, the strict observance of moral codes, and the worship of deities. The goal is to attain proximity to divinity, or integration with divinity. * Left Hand Path - Conversely, Left Hand Path values the advancement and preservation of the self, glorification of more temporal and terrestrial goals, and personal power rather than ephemeral spiritual attainments. Rather than valuing proximity to the divine, followers of Left-Hand Path belief systems seek to become divinities in their own right." :titles "Cabalist, Cleric, Diabolist, Evoker, Exorcist, Invoker, Minister, Priest, Ritualist" :abilitymap (abilitymap "Angelic Chorus" (ability :name "Angelic Chorus" :titles "Divine Chorus") :Armageddon (ability :name "Armageddon" :titles "Cataclysm") :Aspecting (ability :name "Aspecting" :summary "The practitioner manifests a particular aspect of a goddess or god (whether in speech, appearanve, behaviour or thought).") :Avatar (ability :name "Avatar" :summary "The practitioner becomes a version of the goddess or god.") "Burnt Offering" (ability :name "Burnt Offering") "Dark Ritual" (ability :name "Dark Ritual") "Divine Intervention" (ability :name "Divine Intervention") "Divine Favor" (ability :name "Divine Favor") :Drought (ability :name "Drought") :Geis (ability :name "Geis" :titles "Geas") :Flood (ability :name "Flood") "Heaven's Gate" (ability :name "Heaven's Gate" :titles "Divine Gate, Hell's Gate") :Incarnation (ability :name "Incarnation") "Plague of Beetles" (ability :name "Plague of Beetles" :summary "* Flesh eating beetles burrow from the ground and sweep over the area like a carpet.") "Plague of Locusts" (ability :name "Plague of Locusts" :summary "* A swarm of locusts descends on the area. They devour all food, clog intakes, short out equipment, and terrify people.") "Plague of Sores" (ability :name "Plague of Sores" :summary "* A horrific disease descends on the area. Victims appear horrific and without treatment will be permanently scarred. Naturally, the disease is highly contagious.") "Rain of Frogs" (ability :name "Rain of Frogs" :summary "* A torrent of frogs fall from the sky, splattering on any hard surfaces. Fragile exposed items of all sorts are destroyed.") :Worship (ability :name "Worship" :summary "* Must choose a 'higher being' to worship. Each higher being provides a bonus to a single specific ability.") :Tribute (ability :name "Tribute") :Sacrifice (ability :name "Sacrifice") "Wrath of God" (ability :name "Wrath of God"))) :Life (power :name "Life" :abilitymap (abilitymap :Aneurysm (ability :name "Aneurysm") "Cure Disease" (ability :name "Cure Disease") "Heal Major Wound" (ability :name "Heal Major Wound") "Heal Minor Wound" (ability :name "Heal Minor Wound") "Heal Scars" (ability :name "Heal Scars") "Heart Attack" (ability :name "Heart Attack") "Poison Backlash" (ability :name "Poison Backlash" :summary "* [Action]: Touch a unit with a [Poison] ability. The target is affected as if the ability was used against itself at full strength.") :Regenerate (ability :name "Regenerate") :Replenish (ability :name "Replenish") :Resurrect (ability :name "Resurrect" :summary "* The ability to truly bring the dead back to life is one of the most desired and difficult of all abilities. The ritual is long and complicated with a high chance of failure. Only one of the same race as the deceased has sufficient self understanding to succeed at all. The caster must also get at least 10 [Successes] and/or [Criticals] or the ritual fails. Each subsequent attempt to raise the same target requires 1 additional success.") :Simulacrum (ability :name "Simulacrum" :summary "* Grow a physical copy of a living creature. It possesses no mind or spirit unless given one through other means." :titles "Clone") :Succor (ability :name "Succor" :summary "* Relieves pain * Can ignore the negative effects of all tokens while this is in effect." :titles "Comfort") :Transference (ability :name "Transference"))) :Radiant (power :name "Radiant" :titles "Bright, Light, Lightbringer" :abilitymap (abilitymap "Blinding Light" (ability :name "Blinding Light") "Blinding Wall" (ability :name "Blinding Wall" :titles "Wall of Light") :Daybreak (ability :name "Daybreak" :summary "* Gain +1 [Light] Skill for the first hour after the crack of dawn.") "Command Light" (ability :name "Command Light" :summary "* Redirect a [Light] ability to a new target.") :Moonbeam (ability :name "Moonbeam") "Purifying Light" (ability :name "Purifying Light" :summary "* Glowing rays of light appear to emanate from any light the user possesses. Vermin, undead, demons, devils, or any user of [Corruption] will be damaged by the light as if it were [Fire]. All pure beings struck by the rays may remove a [Stun] Token." :titles "Divine Light, Holy Light") "Summon Radiance" (ability :name "Summon Radiance") :Sunbeam (ability :name "Sunbeam") "Swords of Revealing Light" (ability :name "Swords of Revealing Light" :summary "* Blazing rays of light shine around the user, revealing hidden or disguised things. * [Action]: Any hidden or disguised thing directly in front of the user, reduces its chance to stay concealed by the [Successes]."))))) "Nature Magic" (section :name "Nature Magic" :powermap (powermap "Animal Control" (power :name "Animal Control" :summary "* Restrictions - Must not harm animals." :titles "Beast Lord, Beast Master" :abilitymap (abilitymap "Animal Magnetism" (ability :name "Animal Magnetism") "Animal Ward" (ability :name "Animal Ward" :summary "[Ward] - Defends against animals.") "Banish Vermin" (ability :name "Banish Vermin") "Beast Lore" (ability :name "Beast Lore") "Beast Tongue" (ability :name "Beast Tongue" :summary "[Tongue] - Speak with Animal") "Bird's Eye" (ability :name "Bird's Eye" :summary "* Have a bird spy for you.") "Call of the Wild" (ability :name "Call of the Wild" :summary "* [Action]: Make an emotional plea for aid to any [Beast]s or [Animal]s within [Range]. Note that creatures will only help if it serves their own interests, and they will act indepentently according to their intelligence and nature.") "Calm the Beast" (ability :name "Calm the Beast") "Commune with Animals" (ability :name "Commune with Animals" :summary "* [Action]: Sense if animals in [Range] notice anything significant. The higher the [Success], the more subtle information received.") "Control Beast" (ability :name "Control Beast") "Purge Venom" (ability :name "Purge Venom" :summary "* By sucking on a bite, the user may rapidly remove a creature's venom from a wound. * [Action]: Remove 1 Poison Counter for each success.") "Creeping Doom" (ability :name "Creeping Doom") "Giant Animal" (ability :name "Giant Animal") :Infestation (ability :name "Infestation") "Insect Swarm" (ability :name "Insect Swarm" :summary "Distracts targets and transfers up to 3 conditions from you to the target.") "Locate Animal" (ability :name "Locate Animal") "Nature of the Beast" (ability :name "Nature of the Beast") "Natural Order" (ability :name "Natural Order") "Scent of the Wild" (ability :name "Scent of the Wild" :summary "* [Action]: Cover the unnatural and threatening scent of creatures and gear in range. Natural creatures will treat them as if they were large herbivores.") "Shrink Animal" (ability :name "Shrink Animal") "Speak with Animals" (ability :name "Speak with Animals") "Survival of the Fittest" (ability :name "Survival of the Fittest" :titles "Natural Selection"))) :Naturalism (power :name "Naturalism" :summary "* Restrictions - Must not harm plants." :titles "Botomancy, Druid, Hierophant, Nature Master" :abilitymap (abilitymap "Animate Plant" (ability :name "Animate Plant") "Awaken Tree" (ability :name "Awaken Tree" :summary "* Awakens a tree and permanently gives it consciousness. Some say that all trees were once awake.") "Back to Nature" (ability :name "Back to Nature" :summary "* Dead wood or hide rapid decays.") "Banish Weeds" (ability :name "Banish Weeds") :Barkskin (ability :name "Barkskin") "Binding Vines" (ability :name "Binding Vines") "Call the Creep" (ability :name "Call the Creep") "Call the Trees" (ability :name "Call the Trees") "Commune with Nature" (ability :name "Commune with Nature") "Choking Fungus" (ability :name "Choking Fungus" :summary "* Fungus spontaneously grows in the area and releases spores that cause uncontrollable coughing to anyone who breathes without a fine filter in the area.") "Drink from the Earth" (ability :name "Drink from the Earth") "Fertile Crops" (ability :name "Fertile Crops") "Food from the Sun" (ability :name "Food from the Sun") "Force of Nature" (ability :name "Force of Nature") "Heal Nature" (ability :name "Heal Nature") "Knock on Wood" (ability :name "Knock on Wood" :summary "* Touch Wood and Remove a Token and place it on the Wood.") "Locate Plant" (ability :name "Locate Plant") "Nature Sight" (ability :name "Nature Sight") "Nature Walk" (ability :name "Nature Walk" :reference "Merlin, Excalibur" :summary "* Travel at exceptional speed through forests while appearing to walk calmly appearing and reappearing at greater distances. * [Continuous]: Ignore [Success] movement penalties in [Forest], [Jungle], [Swamp] and other overgrown terrain. Additionally, [Success] is applied as a penalty for anything attempting to [Track] you.") :Overgroth (ability :name "Overgroth") "Plant Lore" (ability :name "Plant Lore") "Plant Mastery" (ability :name "Plant Mastery") "Plant Tongue" (ability :name "Plant Tongue" :summary "* Speak with Plant") "Plant Ward" (ability :name "Plant Ward" :summary "* Defends against Plants") :Purification (ability :name "Purification") :Root (ability :name "Root") "Tree Form" (ability :name "Tree Form") "Wall of Thorns" (ability :name "Wall of Thorns" :summary "* [Wall] * May only be cast on [Forest]. * The wall gains double Terrain Penalty.") "Warp Wood" (ability :name "Warp Wood"))))) :Spiritualism (section :name "Spiritualism" :powermap (powermap :Divination (power :name "Divination" :reference "* Casting: In various methods of divination, stones, cards, sticks and other objects are cast onto the ground or a special cloth so that an insight into the life patterns can be revealed. * Querent: In divination and ritual, the querent is the asker of questions. * Scrying: This is the area of divining by gazing into a reflecting surface." :summary "* Divination is the practice of discovering the unknown. It can foresee the future, find hidden things, uncover lost lore, and reveal deception. * Practitioners may see the many roads to the future and may choose the path that favors themselves and hinders their foes. * Fortune telling is more interested in predicting future events. Rather, divination tends to be more about discovering information. * It is an accepted truism within magick that divination is imperfect." :titles "Augur, Diviner, Fortune Teller, Oracle, Prophet, Seer, Soothsayer, Visionary" :abilitymap (abilitymap "All Seeing Eye" (ability :name "All Seeing Eye" :reference "The Eye of Providence") :Augury (ability :name "Augury") :Cartomancy (ability :name "Cartomancy" :summary "* The art of reading the future through playing cards or tarot cards.") :Clairaudience (ability :name "Clairaudience") :Clairvoyance (ability :name "Clairvoyance") :Dowsing (ability :name "Dowsing" :summary "* Through the use of a divining rod the user may detect desired items hidden underground below them.") "Fortune Telling" (ability :name "Fortune Telling" :summary "* [Deploy]: Roll vs. target Spirit. If you succeed, you receive +1 on all actions against him this encounter. * Casting - In various methods of divination, bones, stones, cards, sticks and other objects are cast onto the ground or a special cloth so that an insight into the life patterns can be revealed. * Bibliomancy - Reading random passages from a book, such as Liber Legis or the I Ching. * Tea Leaves * Tarot") :Hallmark (ability :name "Hallmark" :summary "* Analyze a magical effect to learn information about its caster.") :Kismet (ability :name "Kismet") "Mirror of Truth" (ability :name "Mirror of Truth" :summary "* Enchant a reflective surface to show the true nature of the reflected scene. This reveals illusions, hidden things, and can even reveal the nature of those concealing terrible secrets.") :Portent (ability :name "Portent" :summary "* Determine if a chosen course of action will tend to be beneficial to the user or not. How it might be beneficial is not known." :titles "Omen") :Postcognition (ability :name "Postcognition") :Precognition (ability :name "Precognition") :Prediction (ability :name "Prediction") :Premonition (ability :name "Premonition") :Prophesy (ability :name "Prophesy") :Providence (ability :name "Providence" :summary "* [Action]: Divine a time and place nearby that will be beneficial if the user goes there. The roll result is not known by the user, and the success determines the benefit.") :Revelation (ability :name "Revelation") :Foresight (ability :name "Foresight" :summary "* Foresight is a passive form of extra-sensory perception whereby a person spontaneously perceives information, in the form of vision, about future events before they happen. It is distinguished from [Precognition] in that it is passive.") "Twist of Fate" (ability :name "Twist of Fate") :Visions (ability :name "Visions") :Wyrding (ability :name "Wyrding")) :specialtymap (specialtymap :Hepatomancy (specialty :name "Hepatomancy" :summary "* The art of divining the future through the examination of a creature's entrails.") :Numerology (specialty :name "Numerology" :summary "* The art of divining the future through the examination of numbers and dates.") :Osteomancy (specialty :name "Osteomancy" :summary "* The art of divining the future through decaying bones.") "Rune Casting" (specialty :name "Rune Casting" :summary "* The art of divining the future through the throwing of small tiles with runes on them.") :Scrying (specialty :name "Scrying" :summary "* This is the art of divining by gazing into a reflecting surface.") :Tasseomancy (specialty :name "Tasseomancy" :summary "* Reading the patterns of tea leaves or coffee grounds left after the person drink it."))) :Dreaming (power :name "Dreaming" :reference "* I don't believe it. That is why you fail. Luke and Yoda - Empire Strikes Back" :summary "* This is the magical art of the [Fae]. * Every child has a sense of wonder that comes with being new to the world. Adults must, of necessity, murder that special innocence in order to grow up. * When humanity turned its collective back on Dreaming, a terrible scourge of disbelief and negation smote the world. Hope, trust, and imagination were replaced with reason, pessimism, and scrutiny. By dismissing hope and faith, humanity avoids being hurt by its failure. Shutting out mystery and dreams anesthetizes fear, but deadens beauty as well and leads to apathy, callosuness, and close-mindedness. Though Banality is a mindless force, it is feared by the [Fae] more than any monster or villain. It is an enemy unlike anything the [Fae] have ever encountered, and they are largely helpless in its grasp. * Dreaming is never the same, so any Dreaming effect must be a uniquely crafted idea or it will automatically fail." :titles "Glamour" :abilitymap (abilitymap "As if in a Dream" (ability :name "As if in a Dream" :summary "* Confuse a target's senses to perceive a single thing incorrectly.") "Concoct Dream Essence" (ability :name "Concoct Dream Essence" :summary "* Dreams caught with [Dreamcatching] can be contained in a bottle called [Dream Essence]. Opening the bottle releases the experience of the dream to all surrounding it.") "Create Chimera" (ability :name "Create Chimera" :summary "A Chimera is an imaginary creation. It exists only to the user, though those with magical abilities, young children and the mentally impaired may see them. They only can affect those who can see them.") "Down the Rabbit Hole" (ability :name "Down the Rabbit Hole" :summary "* [Requires]: A hole that leads somewhere unknown. * [Action]: By entering a hole, the Dreamer may travel to the [Spirit Realm]. If the Dreamer is a native of the [Spirit Realm], he may stay as long as he wants. If not, he will return to the real world after [Skill] hours as if waking from a dream.") :Dreamcatching (ability :name "Dreamcatching") :Dreamquest (ability :name "Dreamquest" :summary "* [Requires]: Sleeping * [Action]: While asleep, Spirit enters the [Spirit Realm]. The Spirit may travel as long as it wants, but whenever the Body awakens, the Spirit immediately returns. * [Death]: Spirit may permanently enter the [Spirit Realm].") "Dream Effectively" (ability :name "Dream Effectively" :reference "* I was just thinking. Wouldn't it be funny if I wasn't the only one who could dream effectively? What if everybody could do it? And reality was being pulled out from under us all the time - and we didn't even know it? - George Orr, The Lathe of Heaven * Oh, my God... I just killed six billion people... - George Orr, The Lathe of Heaven") "Dream Riding" (ability :name "Dream Riding" :summary "* Ability to enter another person's dream.") "Dream Sight" (ability :name "Dream Sight") "Dream Speak" (ability :name "Dream Speak" :summary "* Grants the ability to converse with things that cannot normally speak including plants, animals, and inanimate objects. Such beings have knowledge and personalities limited by their natures.") "Dream Weaving" (ability :name "Dream Weaving" :reference "* She was shaping a world. She could envision the world, feel the spring of the earth beneath her bare feet, the warmth of the sun, the vibrant green of the grass, the hazy blue of distant mountains. 'Do you feel it?' 'Yes.' 'Then make it real.' She brought all of her will to paint all the details of the dream onto a new reality. She opened her eyes and gazed out upon the land she had already seen in her mind. It was so beautiful it took her breath away ... and failed to return it. She gasped as her lungs emptied and her vision faded to black ... 'A useful lesson. You forgot to breathe in the scents of your world that would indicate air. Remember even the smallest detail is crucial.' - Tales of Magick") :Epiphany (ability :name "Epiphany" :summary "* A moment of ecstasy, delight, and intense revelation. During epiphanies, disparate things suddenly synchronize and make sense. Ephipanies often trigger major changes in personality or goals.") "Eyes of a Child" (ability :name "Eyes of a Child" :summary "* All Chimera become visible to those you chose.") "Fond Memories" (ability :name "Fond Memories" :reference "Eternal Sunshine of the Spotless Mind" :summary "* This ability makes every childhood dream and ambition real again. Every imaginary friend is remembered clearly and the happiest moments from youth return with the intensity of a first kiss and the excitement of Christmas. Then, suddenly, its over. In their absence, depression can crash down. Truly fallen beings can become suicidal. The remembrance can be uplifting in the end, allowing one to relive the best moments of life.") "Imaginary Friend" (ability :name "Imaginary Friend" :reference "* As I was walking up the stair, I met a man who wasn't there. He wasn't there again today. If only he would go away. - Children's Nursery Rhyme * Mother, do you remember when I was little, I had a friend, he was make-believe? No. Don't you remember? Only I could see him? No, I don't remember Drop Dead Fred at all. - Drop Dead Fred * Let's write something on the carpet... I know how about 'Mother SUCKS'. - Drop Dead Fred" :summary "Create a character with a distinct personality of your choice that only the target can see.") "Living Nightmare" (ability :name "Living Nightmare" :summary "* A chimerical monster formed from nightmares or madness." :titles "Waking Nightmare") "Nightmare Essence" (ability :name "Nightmare Essence" :summary "* Nightmares caught with [Dreamcatching] can be contained in a bottle. Opening the bottle releases the experience of the dream to all surrounding it. These can be used as grenades.") "Pillow Fort" (ability :name "Pillow Fort" :summary "* By exercising one's imagination, a soft barrier can provide real defense but only for the Dreamer. * [Action]: Any material may be chosen to provide [Skill] defense for the user.") :Rapture (ability :name "Rapture" :summary "* An extremely difficult and rare ability of self-discovery to create Glamour from oneself. Only at a moment of sudden self-realization can a Rapture be attained. * [Passive] - While in a Rapture, all [Critical] results generate [Glamour Token]s.") :Ravaging (ability :name "Ravaging" :summary "* Drain creativity from a subject. The subject must be well known and a good knowledge of how the subject dreams is required. After that, the subject must simply be touched and he/she will experience a wave of depression and fear as the Glamour is drained from them. * [Action]: Touch the subject. Roll [Banality]. Gain +1 [Glamour Token] if any successes. If no [Glamour] is gained, both the user and subject gain +1 [Banality] instead.") :Reverie (ability :name "Reverie" :summary "* Say or suggest things that inspire others to wonderful ideas and creations. This is a time-consuming process to discover they subtle things that inspire another to great works. * [Extended Action]: Inspire someone while they create. * [Action]: View a work of art created during Reverie. Gain +1 [Glamour Token]. A particular work of art may only grant this bonus once a year." :titles "Muse") :Seeming (ability :name "Seeming" :summary "* Take on the appearance of another.") "Shattered Dreams" (ability :name "Shattered Dreams") "Wall of Wonders" (ability :name "Wall of Wonders" :summary "* A wall of dreams. Causes [Fascination] in those who view it."))) :Enchantment (power :name "Enchantment" :summary "* Enchantment/Witchcraft focuses on enchantments that alter the fate of the target. * The deities of Witchcraft are embodiments of a life-force manifest in nature. The Goddess and God are seen as complementary polarities and this balance is seen in nature. They are sometimes symbolised as the Sun and Moon, and from her lunar associations the Goddess becomes a Triple Goddess with aspects of Maiden, Mother, and Crone. Some hold the Goddess to be pre-eminent, since she contains and conceives all. The God is the spark of life and inspiration within her, simultaneously her lover and her child." :titles "Abjuration, Beguiler, Enchanter, Enchantress, Entrancer, Hexer, Warlock, Witch, Witchcraft, Witchdoctor" :abilitymap (abilitymap "Barren Loins" (ability :name "Barren Loins" :summary "* Target cannot conceive a child while under this curse.") :Charm (ability :name "Charm" :summary "* The opposite of [Malediction]. Charm reduces the severity of negative effects. * [Requires]: Target cannot have any [Charm] Tokens. * [Action]: Roll vs. Spirit and add a Black [Charm] Token for each [Hit]." :titles "Warding Sign") "Death Ward" (ability :name "Death Ward" :summary "* Provides increased defense against undead beings.") "Evil Eye" (ability :name "Evil Eye" :summary "* Reduces Spirit") "Fertile Loins" (ability :name "Fertile Loins" :summary "* Next intercourse will have doubled chance to conceive a child, if possible.") :Haste (ability :name "Haste" :summary "* [Effect]: +1 Move * [Target]: [Area] * [Duration]: [Hits]") "Inscribe Rune" (ability :name "Inscribe Rune" :summary "* Allows the permanent addition of magical properties to an item.") "Inscribe Sigil" (ability :name "Inscribe Sigil" :summary "* Allows the temporary addition of magical properties to an item, portal, or area.") :Malediction (ability :name "Malediction" :summary "* The opposite of [Charm]. Malediction increases the severity of negative effects. * [Action]: Roll vs. Spirit and add a Black [Curse] Token for each [Hit].") "Magic Ward" (ability :name "Magic Ward" :summary "* Provides increased defense against magical creatures.") "Mental Ward" (ability :name "Mental Ward" :summary "* Provides increased defense against mental attacks.") "Metal Ward" (ability :name "Metal Ward" :summary "* Provides increased defense against predominately metal weapons.") "Nature Ward" (ability :name "Nature Ward" :summary "* Provides increased defense against Animals, and weather.") :Palsy (ability :name "Palsy" :summary "* Reduces Move") :Pox (ability :name "Pox" :summary "* Reduces Social Skills") "Rule of Three" (ability :name "Rule of Three" :reference "* Ever mind the Rule of Three, three times what thou givest returns to thee, this lesson well, thou must learn, thee only gets what thou dost earn." :summary "* Whatever energy a person puts out into the world, be it positive or negative, will be returned to that person three times.") :Safekeep (ability :name "Safekeep" :summary "* [Action]: Enchant an item to prevent loss or theft. Any effect that would remove, loose, or damage the item must roll vs. Safekeep or fail in addition to any other checks.") :Slow (ability :name "Slow" :summary "* [Effect]: -1 Move * [Target]: [Area] * [Duration]: [Hits]") "Spirit Ward" (ability :name "Spirit Ward" :summary "* Provides increased defense against spirit beings and attack against [Spirit].") "Stone Ward" (ability :name "Stone Ward" :summary "* Provides increased defense against predominately stone weapons.") :Weaken (ability :name "Weaken" :summary "* Reduces Body") "Wood Ward" (ability :name "Wood Ward" :summary "* Provides increased defense against predominately wooden weapons."))) :Shamanism (power :name "Shamanism" :titles "Shaman, Spirit Caller, Witch Doctor" :abilitymap (abilitymap "Call Spirits" (ability :name "Call Spirits") "Control Spirit" (ability :name "Control Spirit") :Reincarnate (ability :name "Reincarnate" :summary "* Similar to [Resurrect], this ability allows a being to return to life in a new body if this ritual is performed soon after death. The reincarnated being will be physically different from the original, potentially different age, abilities, gender, race, or species. The being will have most of its original memories, but will often have a substantially different personality. If any [Successes] are made, the reincarnation succeeds and the character must be created again with significant differences and will appear in a location consistent with its new identity. The new character is built at a level equal to it original level or the reincarnate skill level whichever is lower. If the reincarnate skill level is lower than 10, the reincarnated being will be -10% younger than before for each level below 10.") "Second Sight" (ability :name "Second Sight" :reference "* I've got electric light, and I've got second sight. I've got amazing...powers...of observation. And that is how I know...When I try to get through...On the telephone to you...There will be nobody home. - Pink Floyd, Nobody Home" :summary "* Second sight is the ability to see the spiritual essence of beings. It quickly identifies the living from the unliving and can detect disease both phyiscal and mental.") "Spirit Guide" (ability :name "Spirit Guide") "Spiritual Affinity" (ability :name "Spiritual Affinity" :summary "* Death: Enter the Spirit Realm") :Totem (ability :name "Totem") "Vision Quest" (ability :name "Vision Quest"))) :Sympathy (power :name "Sympathy" :reference "* Synchronicity is a phenomenon where people interpret two seemingly unrelated experiences as being meaningfully intertwined." :summary "* Sympathetic magic is using a symbol to represent the thing you want to affect with your magic. Whatever you do to the symbol, you do to the target. The object and the thing it represents are 'in sympathy'; they are aligned. Sympathetic magic is a useful idea because often, your target is something non-physical, or something you can’t otherwise interact with directly. You could banish negative thoughts directly, but it’s easier to tie them to something physical by writing them down and then burning the paper. As the paper burns, so does the negativity. Correspondences are related to this. For example, different-colored candles represent different desires (like green for money, red for love, black for banishment, etc.) and as the candle burns down, your spell is cast. Wearing different stones or crystals can attract luck or success to you. * Cursed Energy - Cursed energy is born from negative emotions such as grief and anger. These negative feelings are common in human society so almost everyone possesses cursed energy. Cursed Energy can be controlled and focused to perform various magical feats. * Cursed Spirit - Cursed Spirits are apparitions manifested entirely from cursed energy. Even their bodies are composed of cursed energy, making cursed spirits invisible to non-sorcerers. The emission of cursed energy from humans collects like sediment until a cursed spirit is born from the collective negative energy. Cursed Spirits born with strong feelings directed toward a certain aspect are especially strong. The stronger humanity's fear and anger is directed at cursing a certain aspect of the world, like natural disasters, the more powerful Curse Spirits spawned from those negative sentiments will be. * Law of Similarity - Like produces like. An effect resembles its cause. * Law of Contact/Contagion - Things which have once been in contact with each other continue to act on each other at a distance." :titles "Correspondence, Curses, Sympathetic Magic, Synchonicity, Voodoo, Witch man, Witchdoctor" :abilitymap (abilitymap "Black Vise" (ability :name "Black Vise" :summary "* Target must use a special [Ability] each [Turn] or take a [Stun].") "Breath of Life" (ability :name "Breath of Life" :summary "* Create an [Animated] creature." :titles "Cursed Corpse") "Cursed Sight" (ability :name "Cursed Sight" :summary "* Curses and Cursed Spirits are normally invisibile, but this ability allows them to be seen.") "Cursed Tool" (ability :name "Cursed Tool") "Cursed Weapon" (ability :name "Cursed Weapon" :summary "* Cursed Item - Items can also be infused with Curse Energy including such as cursed tools, cursed objects, and cursed corpses.") "Dominant Possession" (ability :name "Dominant Possession" :summary "* After defeating a target in mental combat, the user possesses the body of the target. The user keeps his Mind and Will stats and uses the target's Body." :titles "Skinriding") :Effigy (ability :name "Effigy" :reference "Poppet, Voodoo Doll" :summary "* Create a figure representing the target. The target can be a being, a vehicle, a building, etc. The figure can be a doll, a wax figurine, an Origami, a sculpture, a drawing, or any other image created by hand by the caster. In addition, the Effigy must have some item linking it to the target. This can be a possession, a hair, a body part, etc. The more significant the better. * Spells may then be cast upon the figure as if the figure was at 4 spaces range regardless of actual distance or line of sight. This ability can create any number of effects, but it cannot actually cause physical damage. All Body damage becomes [Stun] if the target cannot take anymore [Stun], the excess is ignored. * The ability level of any Spells cast are [Limited] by the skill with which the Effigy is created and the significance of the item linked to the Effigy." :titles "Straw Man") :Fetish (ability :name "Fetish" :summary "* A fetish is a small object that can be used to bind a spirit. The item must be unique and may be found or created. * [Action]: If you killed an extradimensional creatures last turn, you may capture the spirit of that creature in the Fetish. * [Action]: Release the spirit in the fetish to perform one task that turn. The spirit must perform the task if it is able though it does so under duress and may twist the intentions or deceive the user. Regardless of outcome, the spirit is released and will disappear.") :Figurine (ability :name "Figurine" :summary "* A miniature of a small creature grows into a full size version.") "Iron Maiden" (ability :name "Iron Maiden" :summary "* Target takes 1 Stun Token for each point of combat damage it inflicts." :titles "Thorns") :Juju (ability :name "Juju" :summary "* The most horrific of fetishes, the shrunken head permanently holds the spirit of the slain person in an undead limbo. A shrunken head may only be created immediately after the user directly slays a person. After that a gruesome series of rituals over the next week mummifies the head and binds the spirit to the head. * [Action]: Once per day, for 1 hour, the user may speak to the head and the head will telepathically respond. The head is effectively a prisoner of the user, and the user may interrogate or torment the head as he sees fit. The head cannot remain silent, but it does not have to be helpful or truthful." :titles "Shrunken Head, Tsantsa") "Life-like Art" (ability :name "Life-like Art") "Life-like Tattoo" (ability :name "Life-like Tattoo") "Living Tool" (ability :name "Living Tool" :summary "* Animates a small tool which makes the next skill easier. * [Requires]: A simple tool with no moving parts. * [Action]: On the next action the tool may be used at [+1 Skill].") "Living Weapon" (ability :name "Living Weapon" :summary "* Animates a melee weapon which makes the next attack easier. * [Requires]: A melee weapon with no moving parts. * [Action]: On the next action the weapon may be used at [+1 Skill].") :Miniature (ability :name "Miniature" :summary "* A miniature of a simple item grows into a full size version.") :Puppeteer (ability :name "Puppeteer" :summary "* When this unit acts the target unit must perform the same actions.") :Rack (ability :name "Rack" :summary "* Each time Target uses a special [Ability] it takes a [Stun].") :Serendipity (ability :name "Serendipity") "Spirit Bottle" (ability :name "Spirit Bottle" :summary "* Create a bottle, mirror, or vase that captures and holds the Spirit of a being. If the being's body dies, the spirit continues to exist in the bottle. The spirit may mentally communicate with anyone touching the bottle.") "Spirit Link" (ability :name "Spirit Link" :summary "* Create a bond with target. Each time it does damage to a target, remove 1 white token from yourself.") "Subtle Possession" (ability :name "Subtle Possession" :summary "* The user's spirit secretly enters the body of the target. The user acts as a manipulative inner voice to the target.") "Sympathetic Bond" (ability :name "Sympathetic Bond" :summary "* [Action]: Bond with a willing unit. * [Action]: Transmit an emotion to a bonded unit.") "True Name" (ability :name "True Name" :summary "* If the user knows the True Name of his subject, he gains +1 [Synchonicity] against that subject."))))))))
nx/tactics/books/magic / chapter_magic_items
Description:
Function Name:
  • chapter_magic_items
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_magic_items : base/chapter (chapter :name "Magic Items" :sectionmap (sectionmap :Garb (section :name "Garb" :itemmap (itemmap "Fox Mask" (item :name "Fox Mask") "Oni Mask" (item :name "Oni Mask"))) "Miscellaneous Magic" (section :name "Miscellaneous Magic" :itemmap (itemmap "Fan of the Winds" (item :name "Fan of the Winds"))) "Magic Weapons" (section :name "Magic Weapons" :itemmap (itemmap "Ascalan Lance" (item :name "Ascalan Lance" :reference "* The lance (or in some versions of the story, sword) that Saint George used to slay the dragon, named after the city Ashkelon." :titles "Dragon Slayer Lance") :Firebrand (item :name "Firebrand" :titles "Flame Tongue") :Frostbrand (item :name "Frostbrand") :Moonblade (item :name "Moonblade" :titles "A silver sword that is as hard as steel") "Poseidon's Net" (item :name "Poseidon's Net") "Poseidon's Trident" (item :name "Poseidon's Trident") :Runestaff (item :name "Runestaff" :summary "* A staff with one or more Runes incribed upon it.") :Runesword (item :name "Runesword" :summary "* A sword with one or more Runes incribed upon it."))))))
nx/tactics/books/medieval
Description:
Package Name:
  • nx/tactics/books/medieval
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_medieval_overview, chapter_medieval_scenarios, chapter_medieval_items, chapter_medieval_english, chapter_medieval_french, chapter_medieval_german, chapter_medieval_spanish
Source Code:
  • (package nx/tactics/books/medieval :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Medieval" :image "Medieval-2-Total-War-Kingdoms-642.jpg" :chaptermap (base/chaptermap "Medieval Overview" (chapter_medieval_overview) "Medieval Scenarios" (chapter_medieval_scenarios) "Medieval Items" (chapter_medieval_items) "Medieval English" (chapter_medieval_english) "Medieval French" (chapter_medieval_french) "Medieval German" (chapter_medieval_german) "Medieval Spanish" (chapter_medieval_spanish) ))) (func chapter_medieval_overview : base/chapter (chapter :name "Medieval Overview" :sectionmap (sectionmap "Why Tactics: Medieval?" (section :name "Why Tactics: Medieval?") "Medieval Land Warfare" (section :name "Medieval Land Warfare" :summary "* Infantry * Formations * Axemen * Polearms * Cavalry * Horse Archers * Armored Cavalry * Knights * Elephants * Chariots * Archers * Longbows * Crossbows * Siege * Ballista * Catapult * Fortifications")))) (func chapter_medieval_scenarios : base/chapter (chapter :name "Medieval Scenarios" :sectionmap (sectionmap "Medieval Events" (section :name "Medieval Events" :scenariomap (scenariomap :Assassination (scenario :name "Assassination") "Bandit Raid" (scenario :name "Bandit Raid" :reference "Seven Samurai") :Battle (scenario :name "Battle") :Ceremony (scenario :name "Ceremony") :Contest (scenario :name "Contest") :Courier (scenario :name "Courier") :Deserters (scenario :name "Deserters") :Duel (scenario :name "Duel") "Empty Battlefield" (scenario :name "Empty Battlefield") :Escort (scenario :name "Escort") "Fist Fight" (scenario :name "Fist Fight") :Highwaymen (scenario :name "Highwaymen") :Hunt (scenario :name "Hunt") "Noble Hunt" (scenario :name "Noble Hunt") "Noble Party" (scenario :name "Noble Party" :reference "Cinderella") "Peasant Demonstration" (scenario :name "Peasant Demonstration" :summary "* Put down or support minor uprisings.") "Peasant Discontent" (scenario :name "Peasant Discontent" :summary "* Put down or support minor uprisings.") "Peasant Uprising" (scenario :name "Peasant Uprising" :summary "* Put down or support a major uprising.") :Quest (scenario :name "Quest") "Scouting Mission" (scenario :name "Scouting Mission") :Spying (scenario :name "Spying") "Visiting Dignitary" (scenario :name "Visiting Dignitary")))))) (func chapter_medieval_items : base/chapter (chapter :name "Medieval Items" :sectionmap (sectionmap "Medieval Firearms" (section :name "Medieval Firearms" :itemmap (itemmap "760mm Arquebus" (item :name "760mm Arquebus" :summary "In terms of accuracy, the arquebus was unable to match the accuracy of a bow in the hands of a highly-skilled archer. However, the arquebus had a faster rate of fire than the most powerful crossbow, had a shorter learning curve than a longbow, and was more powerful than either. An arquebusier could carry more ammunition and powder than a crossbowman or longbowman could with bolts or arrows. Once the methods were developed, powder and shot were relatively easy to mass-produce, while arrow making was a genuine craft requiring highly skilled labor. The weapon also had the added advantage of frightening enemies (and horses) with the noise. Wind can reduce the accuracy of archery, but has much less of an effect on an arquebusier. Perhaps most important, producing an effective arquebusier required much less training than producing an effective bowman. As low-velocity firearms, they were used against enemies that were often partially or fully protected by steel-plate armour. Plate armour was standard in European combat from about 1400 until the middle of the 17th century. Good suits of plate would usually stop an arquebus ball at long range. It was a common practice to 'proof' (test) armour by firing a pistol or arquebus at a new breastplate. The small dent would be circled by engraving, to call attention to it. However, at close range, it was possible to pierce even the armor of knights and other heavy cavalry," :muzzlevelocity "449m/s")))))) (func chapter_medieval_english : base/chapter (chapter :name "Medieval English" :sectionmap (sectionmap "Medieval English Infantry" (section :name "Medieval English Infantry" :unitmap (unitmap "English Longbowman" (unit :name "English Longbowman")))))) (func chapter_medieval_french : base/chapter (chapter :name "Medieval French" :sectionmap (sectionmap "Medieval French Infantry" (section :name "Medieval French Infantry" :unitmap (unitmap "French Gendarme" (unit :name "French Gendarme" :summary "Founded in 1400s." :classification "Hvy. Cavalry")))))) (func chapter_medieval_german : base/chapter (chapter :name "Medieval German")) (func chapter_medieval_spanish : base/chapter (chapter :name "Medieval Spanish"))
nx/tactics/books/medieval / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Medieval" :image "Medieval-2-Total-War-Kingdoms-642.jpg" :chaptermap (base/chaptermap "Medieval Overview" (chapter_medieval_overview) "Medieval Scenarios" (chapter_medieval_scenarios) "Medieval Items" (chapter_medieval_items) "Medieval English" (chapter_medieval_english) "Medieval French" (chapter_medieval_french) "Medieval German" (chapter_medieval_german) "Medieval Spanish" (chapter_medieval_spanish) )))
nx/tactics/books/medieval / chapter_medieval_overview
Description:
Function Name:
  • chapter_medieval_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_overview : base/chapter (chapter :name "Medieval Overview" :sectionmap (sectionmap "Why Tactics: Medieval?" (section :name "Why Tactics: Medieval?") "Medieval Land Warfare" (section :name "Medieval Land Warfare" :summary "* Infantry * Formations * Axemen * Polearms * Cavalry * Horse Archers * Armored Cavalry * Knights * Elephants * Chariots * Archers * Longbows * Crossbows * Siege * Ballista * Catapult * Fortifications"))))
nx/tactics/books/medieval / chapter_medieval_scenarios
Description:
Function Name:
  • chapter_medieval_scenarios
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_scenarios : base/chapter (chapter :name "Medieval Scenarios" :sectionmap (sectionmap "Medieval Events" (section :name "Medieval Events" :scenariomap (scenariomap :Assassination (scenario :name "Assassination") "Bandit Raid" (scenario :name "Bandit Raid" :reference "Seven Samurai") :Battle (scenario :name "Battle") :Ceremony (scenario :name "Ceremony") :Contest (scenario :name "Contest") :Courier (scenario :name "Courier") :Deserters (scenario :name "Deserters") :Duel (scenario :name "Duel") "Empty Battlefield" (scenario :name "Empty Battlefield") :Escort (scenario :name "Escort") "Fist Fight" (scenario :name "Fist Fight") :Highwaymen (scenario :name "Highwaymen") :Hunt (scenario :name "Hunt") "Noble Hunt" (scenario :name "Noble Hunt") "Noble Party" (scenario :name "Noble Party" :reference "Cinderella") "Peasant Demonstration" (scenario :name "Peasant Demonstration" :summary "* Put down or support minor uprisings.") "Peasant Discontent" (scenario :name "Peasant Discontent" :summary "* Put down or support minor uprisings.") "Peasant Uprising" (scenario :name "Peasant Uprising" :summary "* Put down or support a major uprising.") :Quest (scenario :name "Quest") "Scouting Mission" (scenario :name "Scouting Mission") :Spying (scenario :name "Spying") "Visiting Dignitary" (scenario :name "Visiting Dignitary"))))))
nx/tactics/books/medieval / chapter_medieval_items
Description:
Function Name:
  • chapter_medieval_items
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_items : base/chapter (chapter :name "Medieval Items" :sectionmap (sectionmap "Medieval Firearms" (section :name "Medieval Firearms" :itemmap (itemmap "760mm Arquebus" (item :name "760mm Arquebus" :summary "In terms of accuracy, the arquebus was unable to match the accuracy of a bow in the hands of a highly-skilled archer. However, the arquebus had a faster rate of fire than the most powerful crossbow, had a shorter learning curve than a longbow, and was more powerful than either. An arquebusier could carry more ammunition and powder than a crossbowman or longbowman could with bolts or arrows. Once the methods were developed, powder and shot were relatively easy to mass-produce, while arrow making was a genuine craft requiring highly skilled labor. The weapon also had the added advantage of frightening enemies (and horses) with the noise. Wind can reduce the accuracy of archery, but has much less of an effect on an arquebusier. Perhaps most important, producing an effective arquebusier required much less training than producing an effective bowman. As low-velocity firearms, they were used against enemies that were often partially or fully protected by steel-plate armour. Plate armour was standard in European combat from about 1400 until the middle of the 17th century. Good suits of plate would usually stop an arquebus ball at long range. It was a common practice to 'proof' (test) armour by firing a pistol or arquebus at a new breastplate. The small dent would be circled by engraving, to call attention to it. However, at close range, it was possible to pierce even the armor of knights and other heavy cavalry," :muzzlevelocity "449m/s"))))))
nx/tactics/books/medieval / chapter_medieval_english
Description:
Function Name:
  • chapter_medieval_english
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_english : base/chapter (chapter :name "Medieval English" :sectionmap (sectionmap "Medieval English Infantry" (section :name "Medieval English Infantry" :unitmap (unitmap "English Longbowman" (unit :name "English Longbowman"))))))
nx/tactics/books/medieval / chapter_medieval_french
Description:
Function Name:
  • chapter_medieval_french
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_french : base/chapter (chapter :name "Medieval French" :sectionmap (sectionmap "Medieval French Infantry" (section :name "Medieval French Infantry" :unitmap (unitmap "French Gendarme" (unit :name "French Gendarme" :summary "Founded in 1400s." :classification "Hvy. Cavalry"))))))
nx/tactics/books/medieval / chapter_medieval_german
Description:
Function Name:
  • chapter_medieval_german
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_german : base/chapter (chapter :name "Medieval German"))
nx/tactics/books/medieval / chapter_medieval_spanish
Description:
Function Name:
  • chapter_medieval_spanish
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_medieval_spanish : base/chapter (chapter :name "Medieval Spanish"))
nx/tactics/books/modern
Description:
Package Name:
  • nx/tactics/books/modern
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_modern_overview, chapter_cold_war, chapter_modern_ground_vehicles, chapter_the_abyss, chapter_modern_space, chapter_modern_cops_and_robbers, chapter_modern_mercenaries, chapter_the_prisoner, chapter_special_ops, chapter_modern_spies, chapter_modern_sports, chapter_modern_warfare
Source Code:
  • (package nx/tactics/books/modern :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Modern" :image "Modern.jpg" :chaptermap (base/chaptermap "Modern Overview" (chapter_modern_overview) "Cold War" (chapter_cold_war) "Modern Ground Vehicles" (chapter_modern_ground_vehicles) "The Abyss" (chapter_the_abyss) "Modern Space" (chapter_modern_space) "Modern Cops and Robbers" (chapter_modern_cops_and_robbers) "Modern Mercenaries" (chapter_modern_mercenaries) "The Prisoner" (chapter_the_prisoner) "Special Ops" (chapter_special_ops) "Modern Spies" (chapter_modern_spies) "Modern Sports" (chapter_modern_sports) "Modern Warfare" (chapter_modern_warfare) ))) (func chapter_modern_overview : base/chapter (chapter :name "Modern Overview" :sectionmap (sectionmap "Modern Naval Warfare" (section :name "Modern Naval Warfare" :summary "* Aircraft Carriers * Destroyers * Cruisers * Torpedo Boats * Radar * Naval Cannons * Stealth Fighters * Unmanned Naval Vehicles * Nuclear Submarines * Attack Submarines") "Modern Aerial Warfare" (section :name "Modern Aerial Warfare" :summary "* Jet Planes * Stealth Fighters * Unmanned Aerial Vehicles (UAV) * Air Cavalry * Flying Fortress * Landing Strips * Aircraft Carriers * Machine Guns * Strafing * Tank Killing * Stealth Bombing * Strategic Bombing * Nuclear Bombing * Cruise Missiles * Fuel Air Explosives * Intercontinental Ballistic Missiles (ICBM)")))) (func chapter_cold_war : base/chapter (chapter :name "Cold War" :sectionmap (sectionmap "American Aircraft" (section :name "American Aircraft" :unitmap (unitmap "A-10 Warthog" (unit :name "A-10 Warthog" :classification "Lt. Aircraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "30mm GAU-8 Avenger" (unititem :name "30mm GAU-8 Avenger"))))) "AH-1 Cobra" (unit :name "AH-1 Cobra" :image "Modern/American_Helicopter_Cobra.png" :summary "2x 7.62mm Miniguns 2x 7-round 70mm Rocket Pods 20mm XM195 Vulcan Cannon" :speed "350kph" :classification "Lt. Aircraft" :crew "2" :mass "4tons" :height "4m" :length "13m" :range "570km") "Candy Bomber" (unit :name "Candy Bomber" :classification "Hvy. Aircraft") "UH-1 Iroquois (Huey)" (unit :name "UH-1 Iroquois (Huey)" :image "Modern/American_Helicopter_Huey.png" :summary "2x 7.62mm M60 Machine Gun 2x 7-round 70mm Rocket Pods" :speed "200kph" :classification "Lt. Aircraft" :crew "1+14" :mass "4tons" :height "4m" :length "17m" :width "3m") "SR-71 Blackbird" (unit :name "SR-71 Blackbird" :image "Modern/American_SpyPlane_SR71Blackbird.png" :classification "Hvy. Aircraft"))) "American Ground Vehicles" (section :name "American Ground Vehicles" :unitmap (unitmap "M46 Patton" (unit :name "M46 Patton" :summary "* An improved Pershing sometimes called Pershing II, was used extensively in Korean War. * 90mm Cannon" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "M48 Patton" (unit :name "M48 Patton" :summary "* A completely redesigned Pershing based Vietnam Era Tank 4 Gunnery 105mm Cannon Armor 120mm .50 cal MG 7.62mm MG" :mass "50tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))))) "American Missles" (section :name "American Missles" :itemmap (itemmap :ICBM (item :name "ICBM") "Polaris Submarine Missile" (item :name "Polaris Submarine Missile"))) "British Ground Vehicles" (section :name "British Ground Vehicles" :unitmap (unitmap "QF 20 Pounder" (unit :name "QF 20 Pounder")))))) (func chapter_modern_ground_vehicles : base/chapter (chapter :name "Modern Ground Vehicles" :sectionmap (sectionmap "Modern Cycles" (section :name "Modern Cycles") "Modern Cars" (section :name "Modern Cars" :unitmap (unitmap :Compact (unit :name "Compact" :image "Modern/Civilian_Compact.png") "Luxury Sedan" (unit :name "Luxury Sedan") :Minivan (unit :name "Minivan" :image "Modern/Civilian_Minivan.png") :Sedan (unit :name "Sedan" :image "Modern/Civilian_Sedan.png") "Sports Car" (unit :name "Sports Car" :image "Modern/Civilian_SportsCar.png") :Subcompact (unit :name "Subcompact" :titles "Econobox") "Station Wagon" (unit :name "Station Wagon" :image "Modern/Civilian_StationWagon.png"))) "Modern Trucks" (section :name "Modern Trucks" :unitmap (unitmap "Armored Car" (unit :name "Armored Car" :summary "* RWD. 200 hp engine [20], 20 gallon tank [4], driver, gunner, SR 6, TS 80, AC 4 (max 8), 16 mpg @65. FP Armor: F30, L30, R30, B30, T30, U20. Cargo 200 cf. Max load 2000 lb. $70,000, 8500 lb.") :HummVee (unit :name "HummVee") :Jeep (unit :name "Jeep") "Land Cruiser" (unit :name "Land Cruiser") "Pickup Truck" (unit :name "Pickup Truck" :image "Modern/Civilian_PickupTruck.png" :summary "* Same as Sport Utility except: two to three passengers. Cargo 160 cf. Max load 1000-3000 lb. $20,000 3300 lb.") "Sport Utility" (unit :name "Sport Utility" :image "Modern/Civilian_SUV.png" :summary "* RWD or AWD with around 180 hp, two- or four-door with two to eight passengers. SR 6, TS 110, AC 6 (max 10), 18 mpg@65. Cargo 20-70 cf. Max load 500-1000 lb. $30,000 3500 lb.") :Van (unit :name "Van"))) "Modern Heavy Vehicles" (section :name "Modern Heavy Vehicles" :summary "150% Cost, 150% Load, 75% Speed, -1 Handling" :unitmap (unitmap :Bus (unit :name "Bus" :titles "School Bus") "Bus, Luxury" (unit :name "Bus, Luxury" :titles "Charter Bus") :Backhoe (unit :name "Backhoe") "Bobcat Loader" (unit :name "Bobcat Loader") :Bulldozer (unit :name "Bulldozer") :Camper (unit :name "Camper") "Cargo Truck" (unit :name "Cargo Truck") "Construction Crane" (unit :name "Construction Crane") "Dump Truck" (unit :name "Dump Truck") "Garbage Truck" (unit :name "Garbage Truck") "Giant Dump Truck" (unit :name "Giant Dump Truck") "Giant Shovel" (unit :name "Giant Shovel") "Recreational Vehicle (RV)" (unit :name "Recreational Vehicle (RV)") "Tractor Trailer" (unit :name "Tractor Trailer" :summary "* 200 gallon tank, driver, 2 passengers. SR 5.75, TS 125, AC 3 (max 6), 12 mpg@65. No Armor. Cargo 5000 cf. Max load 30 tons. $300,000, 10 tons. Tractor trailers use two overlapping vehicle counters."))) "Modern Police Vehicles" (section :name "Modern Police Vehicles" :unitmap (unitmap "Police Cruiser" (unit :name "Police Cruiser") "SWAT Truck" (unit :name "SWAT Truck"))) "Modern Military Vehicles" (section :name "Modern Military Vehicles" :summary "* Amphibious Vehicles * Artillery ** Light Tank ** Heavy Tank *** Tracked. 2000 hp supercharged engine [70], 120 gallon self-sealing armored tank [20], driver, commander, 2 gunners, 120 mm tank gun [15] in turret (50), MG50 [4] in turret (50), SS [3] front and back (5|5), targeting computer. SR 2, TS 50, AC 3 (max 20), 1 mpg@50. Military-grade Armor: F500, L350, R350, B300, T140, U170. Cargo 10 cf. Max load 4000 lb. $5 million, 40 tons. Each tread has 80 hits. The 120 mm cannon does 25d + 30 damage, and has a to-hit of 13, but requires one round to reload. * Hovertank" :unitmap (unitmap "Armored Personal Carrier (APC)" (unit :name "Armored Personal Carrier (APC)" :summary "* Wheeled. 500 hp engine, 60 gallon selfsealing tank, driver, gunner, MG50 also in turret (50), SS [3] back (5), SR 2, TS 50, AC 3 (max 20), 3 mpg@50. Militarygrade Armor: F100, L80, R80, B70, T40, U50. Cargo 10 soldiers with full gear. Max load 2000 lb. $250,000, 10 tons."))) "Modern Trailers" (section :name "Modern Trailers") "Modern Hovercraft" (section :name "Modern Hovercraft") "Modern Trains" (section :name "Modern Trains" :summary "* 150% Cost, 200% Load * With a maximum AC of less than one and silly amounts of weight, a train does not stop for anything. When a steadily moving train collides with a vehicle it does as much damage as the vehicle can take: even a tank would be completely shattered if a train struck it. A train is very hard to destroy, also... it would derail before actually turning into rubble." :unitmap (unitmap "Armored Boxcar" (unit :name "Armored Boxcar") "Automobile Cargo Car" (unit :name "Automobile Cargo Car") :Boxcar (unit :name "Boxcar") :Caboose (unit :name "Caboose") "Dining Car" (unit :name "Dining Car") "Flatbed Car" (unit :name "Flatbed Car") "Hand Cart" (unit :name "Hand Cart") :Locomotive (unit :name "Locomotive") :Monorail (unit :name "Monorail") "Passenger Car" (unit :name "Passenger Car") "Sleeping Car" (unit :name "Sleeping Car") :Streetcar (unit :name "Streetcar") "Tanker Car" (unit :name "Tanker Car") :Tram (unit :name "Tram") "Weapon Mount Car" (unit :name "Weapon Mount Car"))) "Modern Snowcraft" (section :name "Modern Snowcraft" :summary "* 75% Load, on Snow no Terrain Penalty and 150% Speed, off Snow +1 Terrain Penalty. * Icecraft - On Ice no Terrain Penalty and 200% Speed, off Ice cannot move." :itemmap (itemmap :Iceskates (item :name "Iceskates" :summary "* Personal, Unpowered, Icecraft") "Ice sailboat" (item :name "Ice sailboat" :summary "* Medium, Sail, Icecraft") :Skis (item :name "Skis" :summary "* Personal, Unpowered, Snowcraft") :Snowboard (item :name "Snowboard" :summary "* Personal, Unpowered, Snowcraft") :Snowshoes (item :name "Snowshoes" :summary "* Personal, Unpowered, Snowcraft")) :unitmap (unitmap "Dog Sled" (unit :name "Dog Sled" :summary "* Unpowered, Offroad, Snowcraft") :Snowmobile (unit :name "Snowmobile" :summary "* Offroad, Snowcraft")))))) (func chapter_the_abyss : base/chapter (chapter :name "The Abyss" :sectionmap (sectionmap "Abyss Units" (section :name "Abyss Units" :unitmap (unitmap "Construction Submarine" (unit :name "Construction Submarine") "Big Geek" (unit :name "Big Geek") "Little Geek" (unit :name "Little Geek") "Navy Seal" (unit :name "Navy Seal")))))) (func chapter_modern_space : base/chapter (chapter :name "Modern Space" :sectionmap (sectionmap "Modern Space Units" (section :name "Modern Space Units" :unitmap (unitmap :Astronaut (unit :name "Astronaut") "International Space Station" (unit :name "International Space Station") "Space Shuttle" (unit :name "Space Shuttle")))))) (func chapter_modern_cops_and_robbers : base/chapter (chapter :name "Modern Cops and Robbers" :sectionmap (sectionmap "Modern Government" (section :name "Modern Government" :unitmap (unitmap :Administrator (unit :name "Administrator") "ATF Agent" (unit :name "ATF Agent") :Congressman (unit :name "Congressman") "DEA Agent" (unit :name "DEA Agent") :Diplomat (unit :name "Diplomat" :unitskillmap (unitskillmap :Communications (unitskill :name "Communications" :unitabilitymap (unitabilitymap :Negotiation (unitability :name "Negotiation") :Politics (unitability :name "Politics"))))) "FBI Agent" (unit :name "FBI Agent") :Monarch (unit :name "Monarch") :Noble (unit :name "Noble" :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))) :Senator (unit :name "Senator"))) "Modern Police" (section :name "Modern Police" :unitmap (unitmap "Police Officer" (unit :name "Police Officer" :titles "Beat Cop, Pig (derogatory), Thin Blue Line") :Detective (unit :name "Detective") "Forensics Investigator" (unit :name "Forensics Investigator") "Internal Affair Agent" (unit :name "Internal Affair Agent") :S.W.A.T. (unit :name "S.W.A.T."))) "Modern Criminals" (section :name "Modern Criminals" :unitmap (unitmap "Armed Robber" (unit :name "Armed Robber") :Informant (unit :name "Informant") "Purse Snatcher" (unit :name "Purse Snatcher") "Serial Killer" (unit :name "Serial Killer"))) "Modern Crime Gangs" (section :name "Modern Crime Gangs" :unitmap (unitmap :Mafia (unit :name "Mafia") "Tong Gangs" (unit :name "Tong Gangs" :summary "Tongs are local street gangs.") :Triads (unit :name "Triads" :summary "The Triads are like the [Yakuza] offering protection to the locals. This protection normally comes in the form of crushing the competition on the triad's businesses. Unlike the [Yakuza], the triads deal in slavery and are more open in their illegal dealings. Enforcement is very brutal.") :Yakuza (unit :name "Yakuza" :summary "Besides weapons and drugs, the Yakuza are the neighborhood protection in many areas and do so far more efficiently than the police. Contrary to the attitudes protrayed in Hollywood, the Yakuza make justice swift and fair for the people they deal with. It has done this way for longer than the United States has been around. The Yakuza is not about random violence and mayhem. It is about order and discipline. Of course, many of the younger members have cast aside traditions and have become violent thugs. Like the Triads, the Yakuza was originally a response to the feudal lords when those who were not samurai had no rights or safety.")))))) (func chapter_modern_mercenaries : base/chapter (chapter :name "Modern Mercenaries" :reference "* Blackrock * Millenium's End" :summary "Mercenaries Smuggling Soldiers of Fortune VIP Bodyguards" :sectionmap (sectionmap "Black Eagle Security" (section :name "Black Eagle Security" :summary "* Black Eagle is a large security firm offering 'specialists for hire'. They maintain a strong reputation for effectiveness, discipline, and discretion. Their fees are high, but they are the gold standard when dealing with critical situations on a moment's notice. * Black Eagle is based in Atlanta, Georgia. It maintains branch facilities in Miami, Dubai, the Phillipines, and South Africa. * Black Eagle provides contract security teams to guard embassies for major countries. They also can be engaged for deniable covert actions including: smash and grab, target removal, and cyber espianoge. * Black Eagle is very careful to maintain deniability in all of its activities. It does not have business cards or letter-head or logos. Its personnel are all independent contractors who are always paid by the job, in cash. There is always a risk that Black Eagle personnel will be captured, killed, or imprisoned. Black Eagle values loyalty above all else and will go to great lengths to prove itself when its own people get in trouble. * The true secret to Black Eagle's success is its information network. The company maintains a large database of 'persons of interest' along with psychological profiles and potential future value. Whenever possible, Black Eagle will trade favors instead of cash. They proactively offer help to key individuals who are in trouble, so they can count on those people for help in the future. Black Eagle has influence among numerous politicians, lobbyists, lawyers, judges, military personnel, police, prison guards, prisoners, criminal informants, as well as numerous ordinary people who serve as their eyes and ears on the street.")))) (func chapter_the_prisoner : base/chapter (chapter :name "The Prisoner" :reference "* Where am I? You are at the village. Who do you work for? That would be telling. What do you want? Information. You won't get it. By hook or by crook, we will. Who are you? I am number 2. Who is number 1? You are number 6. I am not a number. I am a free man. Ha ha ha ha. - The Prisoner * Be seeing you. - The Prisoner")) (func chapter_special_ops : base/chapter (chapter :name "Special Ops" :summary "Special Ops Black Ops Deniable Insurgencies Impossible Missions Hostage Rescue")) (func chapter_modern_spies : base/chapter (chapter :name "Modern Spies" :sectionmap (sectionmap "Spy Units" (section :name "Spy Units" :unitmap (unitmap "CIA Agent" (unit :name "CIA Agent") "NSA Agent" (unit :name "NSA Agent") :Terrorist (unit :name "Terrorist") "Aaron Jorgenson" (unit :name "Aaron Jorgenson" :summary "* Wealthy Norwegian shipping magnate with subsidiaries in petroleum products, trucking, and pharmaceuticals. * He is an ultra-conservative and has served several terms in public office. * He was married and divorced (his wife died of natural causes soon after the divorce). * He has no heirs or family. * At 56, he is also dying of an inoperable brain tumor. * His greatest possessions are his fabulous collection of artwork in his luxurious mansion. * Personality - Mr. Jorgenson is an arrogant and selfish man. He is a self-made man and believes that the strong deserve to take what they can and that the weak deserve their lot. He idolizes men of action, especially his Viking ancestors. With only a short time left to live, he has dedicated his fortune to a spectacular plan that would make him a modern day Viking.") "James Bond" (unit :name "James Bond" :summary "* Mr. Bond, you persist in defying my efforts to provide an amusing death for you. - Hugo Drax, Moonraker * Do you expect me to talk. No, Mr. Bond. I expect you to die. - Auric Goldfinger and James Bond, Goldfinger" :titles "007")))))) (func chapter_modern_sports : base/chapter (chapter :name "Modern Sports" :sectionmap (sectionmap :Soccer (section :name "Soccer" :itemmap (itemmap "Soccer Ball" (item :name "Soccer Ball" :image "Modern/Soccer_Ball.png") "Soccer Player (Blue)" (item :name "Soccer Player (Blue)" :image "Modern/Soccer_PlayerBlue.png") "Soccer Player (Red)" (item :name "Soccer Player (Red)" :image "Modern/Soccer_PlayerRed.png")) :rulemap (rulemap "Soccer Goal" (rule :name "Soccer Goal" :image "Units/Modern/Soccer_Goal.png"))) :Football (section :name "Football" :rulemap (rulemap "Football Field" (rule :name "Football Field" :image "Units/Modern/Football_Field.jpg")) :unitmap (unitmap "Linebacker (Blue)" (unit :name "Linebacker (Blue)" :image "Modern/Football_LinebackerBlue.png") "Linebacker (Red)" (unit :name "Linebacker (Red)" :image "Modern/Football_LinebackerRed.png") "Quarterback (Blue)" (unit :name "Quarterback (Blue)" :image "Modern/Football_QuarterbackBlue.png") "Quarterback (Red)" (unit :name "Quarterback (Red)" :image "Modern/Football_QuarterbackRed.png") "Receiver (Blue)" (unit :name "Receiver (Blue)" :image "Modern/Football_ReceiverBlue.png") "Receiver (Red)" (unit :name "Receiver (Red)" :image "Modern/Football_ReceiverRed.png"))) "Underground Sports" (section :name "Underground Sports" :unitmap (unitmap "Pit Fighter" (unit :name "Pit Fighter") "Rollerball Player" (unit :name "Rollerball Player") "Street Fighter" (unit :name "Street Fighter"))) "Other Sports" (section :name "Other Sports" :unitmap (unitmap "Baseball Player" (unit :name "Baseball Player") :Boxer (unit :name "Boxer") "Hockey Player" (unit :name "Hockey Player") "Ping Pong Player" (unit :name "Ping Pong Player"))) "Modern Scenarios" (section :name "Modern Scenarios" :scenariomap (scenariomap "Boxing Match" (scenario :name "Boxing Match") "Soccer Game" (scenario :name "Soccer Game")))))) (func chapter_modern_warfare : base/chapter (chapter :name "Modern Warfare" :sectionmap (sectionmap "Modern America" (section :name "Modern America" :reference "* I'm going to make it up for all of the Sunday Times. I am going to make it up for all of the nusery rhymes. They never really wanted to tell the truth. I'm so tired of you America. ... Tell me, do you really think you go to hell for having loved? Tell me, enough of thinking everything that you've done is good. I really need to know. After soaking the body of Jesus Christ in blood. I 'm so tired of America. ... You took advantage of a world that loved you well. I'm going to a town that has already been burnt down. I'm so tired of you America - Rufus Wainwright, Going To a Town") "Modern American Aircraft" (section :name "Modern American Aircraft" :unitmap (unitmap "Advanced Tactical Fighter" (unit :name "Advanced Tactical Fighter") "B-1 Bomber" (unit :name "B-1 Bomber") "B-2 Stealth Bomber" (unit :name "B-2 Stealth Bomber") "Predator UAV" (unit :name "Predator UAV") "Stealth Fighter" (unit :name "Stealth Fighter") "SH-60 Seahawk Helicopter" (unit :name "SH-60 Seahawk Helicopter") "Blackhawk Helicopter" (unit :name "Blackhawk Helicopter") "Apache Helicopter" (unit :name "Apache Helicopter") "C-5 Galaxy" (unit :name "C-5 Galaxy") "C-17 Globemaster III" (unit :name "C-17 Globemaster III") "BGM-109 Tomahawk Cruise Missile" (unit :name "BGM-109 Tomahawk Cruise Missile" :summary "* Conventional: 1,000 lb (450 kg) Bullpup, or submunitions dispenser with BLU-97/B Combined Effects Bomb, or a 200 kiloton of TNT (840 terajoule) W80 nuclear device (inactivated per SALT)"))) "Modern American Ground Vehicles" (section :name "Modern American Ground Vehicles" :unitmap (unitmap "M1A2 Abrams Tank" (unit :name "M1A2 Abrams Tank" :summary "Turbine Engine: takes any fuel, typically Jet Fuel, starting the engine consumes nearly 11 gallons of fuel and it emits a jet blast behind it. Can survive multiple hits from the most powerful tank munitions including 120mm DU APFSDS and anti-tank missiles. Its own weapons are unable to penetrate front or side armor even at close range in friendly fire incidents. 4 Gunnery 120mm smoothbore: APFSDS, HEAT, Anti-Personnel .50 MG, 2 x 7.62mm MG Smoke Grenades, Smoke Screen Armor 610mm Composite DU, 1500mm vs HEAT, 950mm vs APDS Front Missile Countermeasures" :speed "72kph" :mass "70tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "M2A2 Bradley AFV" (unit :name "M2A2 Bradley AFV" :summary "25mm Chain Gun, 900 rounds, APDS, HEI 7.62mm MG, 2200 rounds TOWII Missiles Smoke Grenades, Smoke Screen" :speed "66kph" :mass "33tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "Patriot Missile System" (unit :name "Patriot Missile System"))) "American Naval Vessels" (section :name "American Naval Vessels" :unitmap (unitmap "Ticonderoga Missile Cruiser" (unit :name "Ticonderoga Missile Cruiser" :summary "* Aegis Combat System 2 x 61 cell Mk41 vertical launch systems 122 x RIM-66 SM-2, RIM-162 ESSM, BGM-109 Tomahawk, or RUM-139 VL-Asroc 8 x RGM-84 Harpoon missiles 2 x Mark 45 5in / 54cal lightweight gun 2 x 25mm 24 x .50cal (12.7mm) gun 2 x Phalanx CIWS 2 x Mk32 12.75in (324mm) triple torpedo tubes"))) "Modern British Ground Vehicles" (section :name "Modern British Ground Vehicles" :unitmap (unitmap "Challenger 2" (unit :name "Challenger 2" :summary "Comparable to the M1 Abrams, though it uses a diesel engine. One near Basra survived being hit by 70 RPGs. 105mm L7 Gun"))) "Modern German Ground Vehicles" (section :name "Modern German Ground Vehicles" :unitmap (unitmap "Leopard 2A6" (unit :name "Leopard 2A6" :summary "Comparable to the M1 Abrams, it carries a heavier gun and uses a diesel engine which increases reliability."))) "Modern Israeli Ground Vehicles" (section :name "Modern Israeli Ground Vehicles" :unitmap (unitmap "Merkava Mark IV" (unit :name "Merkava Mark IV"))) "Modern African Ground Vehicles" (section :name "Modern African Ground Vehicles" :unitmap (unitmap :Technical (unit :name "Technical"))))))
nx/tactics/books/modern / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Modern" :image "Modern.jpg" :chaptermap (base/chaptermap "Modern Overview" (chapter_modern_overview) "Cold War" (chapter_cold_war) "Modern Ground Vehicles" (chapter_modern_ground_vehicles) "The Abyss" (chapter_the_abyss) "Modern Space" (chapter_modern_space) "Modern Cops and Robbers" (chapter_modern_cops_and_robbers) "Modern Mercenaries" (chapter_modern_mercenaries) "The Prisoner" (chapter_the_prisoner) "Special Ops" (chapter_special_ops) "Modern Spies" (chapter_modern_spies) "Modern Sports" (chapter_modern_sports) "Modern Warfare" (chapter_modern_warfare) )))
nx/tactics/books/modern / chapter_modern_overview
Description:
Function Name:
  • chapter_modern_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_overview : base/chapter (chapter :name "Modern Overview" :sectionmap (sectionmap "Modern Naval Warfare" (section :name "Modern Naval Warfare" :summary "* Aircraft Carriers * Destroyers * Cruisers * Torpedo Boats * Radar * Naval Cannons * Stealth Fighters * Unmanned Naval Vehicles * Nuclear Submarines * Attack Submarines") "Modern Aerial Warfare" (section :name "Modern Aerial Warfare" :summary "* Jet Planes * Stealth Fighters * Unmanned Aerial Vehicles (UAV) * Air Cavalry * Flying Fortress * Landing Strips * Aircraft Carriers * Machine Guns * Strafing * Tank Killing * Stealth Bombing * Strategic Bombing * Nuclear Bombing * Cruise Missiles * Fuel Air Explosives * Intercontinental Ballistic Missiles (ICBM)"))))
nx/tactics/books/modern / chapter_cold_war
Description:
Function Name:
  • chapter_cold_war
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_cold_war : base/chapter (chapter :name "Cold War" :sectionmap (sectionmap "American Aircraft" (section :name "American Aircraft" :unitmap (unitmap "A-10 Warthog" (unit :name "A-10 Warthog" :classification "Lt. Aircraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "30mm GAU-8 Avenger" (unititem :name "30mm GAU-8 Avenger"))))) "AH-1 Cobra" (unit :name "AH-1 Cobra" :image "Modern/American_Helicopter_Cobra.png" :summary "2x 7.62mm Miniguns 2x 7-round 70mm Rocket Pods 20mm XM195 Vulcan Cannon" :speed "350kph" :classification "Lt. Aircraft" :crew "2" :mass "4tons" :height "4m" :length "13m" :range "570km") "Candy Bomber" (unit :name "Candy Bomber" :classification "Hvy. Aircraft") "UH-1 Iroquois (Huey)" (unit :name "UH-1 Iroquois (Huey)" :image "Modern/American_Helicopter_Huey.png" :summary "2x 7.62mm M60 Machine Gun 2x 7-round 70mm Rocket Pods" :speed "200kph" :classification "Lt. Aircraft" :crew "1+14" :mass "4tons" :height "4m" :length "17m" :width "3m") "SR-71 Blackbird" (unit :name "SR-71 Blackbird" :image "Modern/American_SpyPlane_SR71Blackbird.png" :classification "Hvy. Aircraft"))) "American Ground Vehicles" (section :name "American Ground Vehicles" :unitmap (unitmap "M46 Patton" (unit :name "M46 Patton" :summary "* An improved Pershing sometimes called Pershing II, was used extensively in Korean War. * 90mm Cannon" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "M48 Patton" (unit :name "M48 Patton" :summary "* A completely redesigned Pershing based Vietnam Era Tank 4 Gunnery 105mm Cannon Armor 120mm .50 cal MG 7.62mm MG" :mass "50tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))))) "American Missles" (section :name "American Missles" :itemmap (itemmap :ICBM (item :name "ICBM") "Polaris Submarine Missile" (item :name "Polaris Submarine Missile"))) "British Ground Vehicles" (section :name "British Ground Vehicles" :unitmap (unitmap "QF 20 Pounder" (unit :name "QF 20 Pounder"))))))
nx/tactics/books/modern / chapter_modern_ground_vehicles
Description:
Function Name:
  • chapter_modern_ground_vehicles
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_ground_vehicles : base/chapter (chapter :name "Modern Ground Vehicles" :sectionmap (sectionmap "Modern Cycles" (section :name "Modern Cycles") "Modern Cars" (section :name "Modern Cars" :unitmap (unitmap :Compact (unit :name "Compact" :image "Modern/Civilian_Compact.png") "Luxury Sedan" (unit :name "Luxury Sedan") :Minivan (unit :name "Minivan" :image "Modern/Civilian_Minivan.png") :Sedan (unit :name "Sedan" :image "Modern/Civilian_Sedan.png") "Sports Car" (unit :name "Sports Car" :image "Modern/Civilian_SportsCar.png") :Subcompact (unit :name "Subcompact" :titles "Econobox") "Station Wagon" (unit :name "Station Wagon" :image "Modern/Civilian_StationWagon.png"))) "Modern Trucks" (section :name "Modern Trucks" :unitmap (unitmap "Armored Car" (unit :name "Armored Car" :summary "* RWD. 200 hp engine [20], 20 gallon tank [4], driver, gunner, SR 6, TS 80, AC 4 (max 8), 16 mpg @65. FP Armor: F30, L30, R30, B30, T30, U20. Cargo 200 cf. Max load 2000 lb. $70,000, 8500 lb.") :HummVee (unit :name "HummVee") :Jeep (unit :name "Jeep") "Land Cruiser" (unit :name "Land Cruiser") "Pickup Truck" (unit :name "Pickup Truck" :image "Modern/Civilian_PickupTruck.png" :summary "* Same as Sport Utility except: two to three passengers. Cargo 160 cf. Max load 1000-3000 lb. $20,000 3300 lb.") "Sport Utility" (unit :name "Sport Utility" :image "Modern/Civilian_SUV.png" :summary "* RWD or AWD with around 180 hp, two- or four-door with two to eight passengers. SR 6, TS 110, AC 6 (max 10), 18 mpg@65. Cargo 20-70 cf. Max load 500-1000 lb. $30,000 3500 lb.") :Van (unit :name "Van"))) "Modern Heavy Vehicles" (section :name "Modern Heavy Vehicles" :summary "150% Cost, 150% Load, 75% Speed, -1 Handling" :unitmap (unitmap :Bus (unit :name "Bus" :titles "School Bus") "Bus, Luxury" (unit :name "Bus, Luxury" :titles "Charter Bus") :Backhoe (unit :name "Backhoe") "Bobcat Loader" (unit :name "Bobcat Loader") :Bulldozer (unit :name "Bulldozer") :Camper (unit :name "Camper") "Cargo Truck" (unit :name "Cargo Truck") "Construction Crane" (unit :name "Construction Crane") "Dump Truck" (unit :name "Dump Truck") "Garbage Truck" (unit :name "Garbage Truck") "Giant Dump Truck" (unit :name "Giant Dump Truck") "Giant Shovel" (unit :name "Giant Shovel") "Recreational Vehicle (RV)" (unit :name "Recreational Vehicle (RV)") "Tractor Trailer" (unit :name "Tractor Trailer" :summary "* 200 gallon tank, driver, 2 passengers. SR 5.75, TS 125, AC 3 (max 6), 12 mpg@65. No Armor. Cargo 5000 cf. Max load 30 tons. $300,000, 10 tons. Tractor trailers use two overlapping vehicle counters."))) "Modern Police Vehicles" (section :name "Modern Police Vehicles" :unitmap (unitmap "Police Cruiser" (unit :name "Police Cruiser") "SWAT Truck" (unit :name "SWAT Truck"))) "Modern Military Vehicles" (section :name "Modern Military Vehicles" :summary "* Amphibious Vehicles * Artillery ** Light Tank ** Heavy Tank *** Tracked. 2000 hp supercharged engine [70], 120 gallon self-sealing armored tank [20], driver, commander, 2 gunners, 120 mm tank gun [15] in turret (50), MG50 [4] in turret (50), SS [3] front and back (5|5), targeting computer. SR 2, TS 50, AC 3 (max 20), 1 mpg@50. Military-grade Armor: F500, L350, R350, B300, T140, U170. Cargo 10 cf. Max load 4000 lb. $5 million, 40 tons. Each tread has 80 hits. The 120 mm cannon does 25d + 30 damage, and has a to-hit of 13, but requires one round to reload. * Hovertank" :unitmap (unitmap "Armored Personal Carrier (APC)" (unit :name "Armored Personal Carrier (APC)" :summary "* Wheeled. 500 hp engine, 60 gallon selfsealing tank, driver, gunner, MG50 also in turret (50), SS [3] back (5), SR 2, TS 50, AC 3 (max 20), 3 mpg@50. Militarygrade Armor: F100, L80, R80, B70, T40, U50. Cargo 10 soldiers with full gear. Max load 2000 lb. $250,000, 10 tons."))) "Modern Trailers" (section :name "Modern Trailers") "Modern Hovercraft" (section :name "Modern Hovercraft") "Modern Trains" (section :name "Modern Trains" :summary "* 150% Cost, 200% Load * With a maximum AC of less than one and silly amounts of weight, a train does not stop for anything. When a steadily moving train collides with a vehicle it does as much damage as the vehicle can take: even a tank would be completely shattered if a train struck it. A train is very hard to destroy, also... it would derail before actually turning into rubble." :unitmap (unitmap "Armored Boxcar" (unit :name "Armored Boxcar") "Automobile Cargo Car" (unit :name "Automobile Cargo Car") :Boxcar (unit :name "Boxcar") :Caboose (unit :name "Caboose") "Dining Car" (unit :name "Dining Car") "Flatbed Car" (unit :name "Flatbed Car") "Hand Cart" (unit :name "Hand Cart") :Locomotive (unit :name "Locomotive") :Monorail (unit :name "Monorail") "Passenger Car" (unit :name "Passenger Car") "Sleeping Car" (unit :name "Sleeping Car") :Streetcar (unit :name "Streetcar") "Tanker Car" (unit :name "Tanker Car") :Tram (unit :name "Tram") "Weapon Mount Car" (unit :name "Weapon Mount Car"))) "Modern Snowcraft" (section :name "Modern Snowcraft" :summary "* 75% Load, on Snow no Terrain Penalty and 150% Speed, off Snow +1 Terrain Penalty. * Icecraft - On Ice no Terrain Penalty and 200% Speed, off Ice cannot move." :itemmap (itemmap :Iceskates (item :name "Iceskates" :summary "* Personal, Unpowered, Icecraft") "Ice sailboat" (item :name "Ice sailboat" :summary "* Medium, Sail, Icecraft") :Skis (item :name "Skis" :summary "* Personal, Unpowered, Snowcraft") :Snowboard (item :name "Snowboard" :summary "* Personal, Unpowered, Snowcraft") :Snowshoes (item :name "Snowshoes" :summary "* Personal, Unpowered, Snowcraft")) :unitmap (unitmap "Dog Sled" (unit :name "Dog Sled" :summary "* Unpowered, Offroad, Snowcraft") :Snowmobile (unit :name "Snowmobile" :summary "* Offroad, Snowcraft"))))))
nx/tactics/books/modern / chapter_the_abyss
Description:
Function Name:
  • chapter_the_abyss
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_the_abyss : base/chapter (chapter :name "The Abyss" :sectionmap (sectionmap "Abyss Units" (section :name "Abyss Units" :unitmap (unitmap "Construction Submarine" (unit :name "Construction Submarine") "Big Geek" (unit :name "Big Geek") "Little Geek" (unit :name "Little Geek") "Navy Seal" (unit :name "Navy Seal"))))))
nx/tactics/books/modern / chapter_modern_space
Description:
Function Name:
  • chapter_modern_space
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_space : base/chapter (chapter :name "Modern Space" :sectionmap (sectionmap "Modern Space Units" (section :name "Modern Space Units" :unitmap (unitmap :Astronaut (unit :name "Astronaut") "International Space Station" (unit :name "International Space Station") "Space Shuttle" (unit :name "Space Shuttle"))))))
nx/tactics/books/modern / chapter_modern_cops_and_robbers
Description:
Function Name:
  • chapter_modern_cops_and_robbers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_cops_and_robbers : base/chapter (chapter :name "Modern Cops and Robbers" :sectionmap (sectionmap "Modern Government" (section :name "Modern Government" :unitmap (unitmap :Administrator (unit :name "Administrator") "ATF Agent" (unit :name "ATF Agent") :Congressman (unit :name "Congressman") "DEA Agent" (unit :name "DEA Agent") :Diplomat (unit :name "Diplomat" :unitskillmap (unitskillmap :Communications (unitskill :name "Communications" :unitabilitymap (unitabilitymap :Negotiation (unitability :name "Negotiation") :Politics (unitability :name "Politics"))))) "FBI Agent" (unit :name "FBI Agent") :Monarch (unit :name "Monarch") :Noble (unit :name "Noble" :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))) :Senator (unit :name "Senator"))) "Modern Police" (section :name "Modern Police" :unitmap (unitmap "Police Officer" (unit :name "Police Officer" :titles "Beat Cop, Pig (derogatory), Thin Blue Line") :Detective (unit :name "Detective") "Forensics Investigator" (unit :name "Forensics Investigator") "Internal Affair Agent" (unit :name "Internal Affair Agent") :S.W.A.T. (unit :name "S.W.A.T."))) "Modern Criminals" (section :name "Modern Criminals" :unitmap (unitmap "Armed Robber" (unit :name "Armed Robber") :Informant (unit :name "Informant") "Purse Snatcher" (unit :name "Purse Snatcher") "Serial Killer" (unit :name "Serial Killer"))) "Modern Crime Gangs" (section :name "Modern Crime Gangs" :unitmap (unitmap :Mafia (unit :name "Mafia") "Tong Gangs" (unit :name "Tong Gangs" :summary "Tongs are local street gangs.") :Triads (unit :name "Triads" :summary "The Triads are like the [Yakuza] offering protection to the locals. This protection normally comes in the form of crushing the competition on the triad's businesses. Unlike the [Yakuza], the triads deal in slavery and are more open in their illegal dealings. Enforcement is very brutal.") :Yakuza (unit :name "Yakuza" :summary "Besides weapons and drugs, the Yakuza are the neighborhood protection in many areas and do so far more efficiently than the police. Contrary to the attitudes protrayed in Hollywood, the Yakuza make justice swift and fair for the people they deal with. It has done this way for longer than the United States has been around. The Yakuza is not about random violence and mayhem. It is about order and discipline. Of course, many of the younger members have cast aside traditions and have become violent thugs. Like the Triads, the Yakuza was originally a response to the feudal lords when those who were not samurai had no rights or safety."))))))
nx/tactics/books/modern / chapter_modern_mercenaries
Description:
Function Name:
  • chapter_modern_mercenaries
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_mercenaries : base/chapter (chapter :name "Modern Mercenaries" :reference "* Blackrock * Millenium's End" :summary "Mercenaries Smuggling Soldiers of Fortune VIP Bodyguards" :sectionmap (sectionmap "Black Eagle Security" (section :name "Black Eagle Security" :summary "* Black Eagle is a large security firm offering 'specialists for hire'. They maintain a strong reputation for effectiveness, discipline, and discretion. Their fees are high, but they are the gold standard when dealing with critical situations on a moment's notice. * Black Eagle is based in Atlanta, Georgia. It maintains branch facilities in Miami, Dubai, the Phillipines, and South Africa. * Black Eagle provides contract security teams to guard embassies for major countries. They also can be engaged for deniable covert actions including: smash and grab, target removal, and cyber espianoge. * Black Eagle is very careful to maintain deniability in all of its activities. It does not have business cards or letter-head or logos. Its personnel are all independent contractors who are always paid by the job, in cash. There is always a risk that Black Eagle personnel will be captured, killed, or imprisoned. Black Eagle values loyalty above all else and will go to great lengths to prove itself when its own people get in trouble. * The true secret to Black Eagle's success is its information network. The company maintains a large database of 'persons of interest' along with psychological profiles and potential future value. Whenever possible, Black Eagle will trade favors instead of cash. They proactively offer help to key individuals who are in trouble, so they can count on those people for help in the future. Black Eagle has influence among numerous politicians, lobbyists, lawyers, judges, military personnel, police, prison guards, prisoners, criminal informants, as well as numerous ordinary people who serve as their eyes and ears on the street."))))
nx/tactics/books/modern / chapter_the_prisoner
Description:
Function Name:
  • chapter_the_prisoner
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_the_prisoner : base/chapter (chapter :name "The Prisoner" :reference "* Where am I? You are at the village. Who do you work for? That would be telling. What do you want? Information. You won't get it. By hook or by crook, we will. Who are you? I am number 2. Who is number 1? You are number 6. I am not a number. I am a free man. Ha ha ha ha. - The Prisoner * Be seeing you. - The Prisoner"))
nx/tactics/books/modern / chapter_special_ops
Description:
Function Name:
  • chapter_special_ops
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_special_ops : base/chapter (chapter :name "Special Ops" :summary "Special Ops Black Ops Deniable Insurgencies Impossible Missions Hostage Rescue"))
nx/tactics/books/modern / chapter_modern_spies
Description:
Function Name:
  • chapter_modern_spies
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_spies : base/chapter (chapter :name "Modern Spies" :sectionmap (sectionmap "Spy Units" (section :name "Spy Units" :unitmap (unitmap "CIA Agent" (unit :name "CIA Agent") "NSA Agent" (unit :name "NSA Agent") :Terrorist (unit :name "Terrorist") "Aaron Jorgenson" (unit :name "Aaron Jorgenson" :summary "* Wealthy Norwegian shipping magnate with subsidiaries in petroleum products, trucking, and pharmaceuticals. * He is an ultra-conservative and has served several terms in public office. * He was married and divorced (his wife died of natural causes soon after the divorce). * He has no heirs or family. * At 56, he is also dying of an inoperable brain tumor. * His greatest possessions are his fabulous collection of artwork in his luxurious mansion. * Personality - Mr. Jorgenson is an arrogant and selfish man. He is a self-made man and believes that the strong deserve to take what they can and that the weak deserve their lot. He idolizes men of action, especially his Viking ancestors. With only a short time left to live, he has dedicated his fortune to a spectacular plan that would make him a modern day Viking.") "James Bond" (unit :name "James Bond" :summary "* Mr. Bond, you persist in defying my efforts to provide an amusing death for you. - Hugo Drax, Moonraker * Do you expect me to talk. No, Mr. Bond. I expect you to die. - Auric Goldfinger and James Bond, Goldfinger" :titles "007"))))))
nx/tactics/books/modern / chapter_modern_sports
Description:
Function Name:
  • chapter_modern_sports
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_sports : base/chapter (chapter :name "Modern Sports" :sectionmap (sectionmap :Soccer (section :name "Soccer" :itemmap (itemmap "Soccer Ball" (item :name "Soccer Ball" :image "Modern/Soccer_Ball.png") "Soccer Player (Blue)" (item :name "Soccer Player (Blue)" :image "Modern/Soccer_PlayerBlue.png") "Soccer Player (Red)" (item :name "Soccer Player (Red)" :image "Modern/Soccer_PlayerRed.png")) :rulemap (rulemap "Soccer Goal" (rule :name "Soccer Goal" :image "Units/Modern/Soccer_Goal.png"))) :Football (section :name "Football" :rulemap (rulemap "Football Field" (rule :name "Football Field" :image "Units/Modern/Football_Field.jpg")) :unitmap (unitmap "Linebacker (Blue)" (unit :name "Linebacker (Blue)" :image "Modern/Football_LinebackerBlue.png") "Linebacker (Red)" (unit :name "Linebacker (Red)" :image "Modern/Football_LinebackerRed.png") "Quarterback (Blue)" (unit :name "Quarterback (Blue)" :image "Modern/Football_QuarterbackBlue.png") "Quarterback (Red)" (unit :name "Quarterback (Red)" :image "Modern/Football_QuarterbackRed.png") "Receiver (Blue)" (unit :name "Receiver (Blue)" :image "Modern/Football_ReceiverBlue.png") "Receiver (Red)" (unit :name "Receiver (Red)" :image "Modern/Football_ReceiverRed.png"))) "Underground Sports" (section :name "Underground Sports" :unitmap (unitmap "Pit Fighter" (unit :name "Pit Fighter") "Rollerball Player" (unit :name "Rollerball Player") "Street Fighter" (unit :name "Street Fighter"))) "Other Sports" (section :name "Other Sports" :unitmap (unitmap "Baseball Player" (unit :name "Baseball Player") :Boxer (unit :name "Boxer") "Hockey Player" (unit :name "Hockey Player") "Ping Pong Player" (unit :name "Ping Pong Player"))) "Modern Scenarios" (section :name "Modern Scenarios" :scenariomap (scenariomap "Boxing Match" (scenario :name "Boxing Match") "Soccer Game" (scenario :name "Soccer Game"))))))
nx/tactics/books/modern / chapter_modern_warfare
Description:
Function Name:
  • chapter_modern_warfare
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_warfare : base/chapter (chapter :name "Modern Warfare" :sectionmap (sectionmap "Modern America" (section :name "Modern America" :reference "* I'm going to make it up for all of the Sunday Times. I am going to make it up for all of the nusery rhymes. They never really wanted to tell the truth. I'm so tired of you America. ... Tell me, do you really think you go to hell for having loved? Tell me, enough of thinking everything that you've done is good. I really need to know. After soaking the body of Jesus Christ in blood. I 'm so tired of America. ... You took advantage of a world that loved you well. I'm going to a town that has already been burnt down. I'm so tired of you America - Rufus Wainwright, Going To a Town") "Modern American Aircraft" (section :name "Modern American Aircraft" :unitmap (unitmap "Advanced Tactical Fighter" (unit :name "Advanced Tactical Fighter") "B-1 Bomber" (unit :name "B-1 Bomber") "B-2 Stealth Bomber" (unit :name "B-2 Stealth Bomber") "Predator UAV" (unit :name "Predator UAV") "Stealth Fighter" (unit :name "Stealth Fighter") "SH-60 Seahawk Helicopter" (unit :name "SH-60 Seahawk Helicopter") "Blackhawk Helicopter" (unit :name "Blackhawk Helicopter") "Apache Helicopter" (unit :name "Apache Helicopter") "C-5 Galaxy" (unit :name "C-5 Galaxy") "C-17 Globemaster III" (unit :name "C-17 Globemaster III") "BGM-109 Tomahawk Cruise Missile" (unit :name "BGM-109 Tomahawk Cruise Missile" :summary "* Conventional: 1,000 lb (450 kg) Bullpup, or submunitions dispenser with BLU-97/B Combined Effects Bomb, or a 200 kiloton of TNT (840 terajoule) W80 nuclear device (inactivated per SALT)"))) "Modern American Ground Vehicles" (section :name "Modern American Ground Vehicles" :unitmap (unitmap "M1A2 Abrams Tank" (unit :name "M1A2 Abrams Tank" :summary "Turbine Engine: takes any fuel, typically Jet Fuel, starting the engine consumes nearly 11 gallons of fuel and it emits a jet blast behind it. Can survive multiple hits from the most powerful tank munitions including 120mm DU APFSDS and anti-tank missiles. Its own weapons are unable to penetrate front or side armor even at close range in friendly fire incidents. 4 Gunnery 120mm smoothbore: APFSDS, HEAT, Anti-Personnel .50 MG, 2 x 7.62mm MG Smoke Grenades, Smoke Screen Armor 610mm Composite DU, 1500mm vs HEAT, 950mm vs APDS Front Missile Countermeasures" :speed "72kph" :mass "70tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "M2A2 Bradley AFV" (unit :name "M2A2 Bradley AFV" :summary "25mm Chain Gun, 900 rounds, APDS, HEI 7.62mm MG, 2200 rounds TOWII Missiles Smoke Grenades, Smoke Screen" :speed "66kph" :mass "33tons" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "Patriot Missile System" (unit :name "Patriot Missile System"))) "American Naval Vessels" (section :name "American Naval Vessels" :unitmap (unitmap "Ticonderoga Missile Cruiser" (unit :name "Ticonderoga Missile Cruiser" :summary "* Aegis Combat System 2 x 61 cell Mk41 vertical launch systems 122 x RIM-66 SM-2, RIM-162 ESSM, BGM-109 Tomahawk, or RUM-139 VL-Asroc 8 x RGM-84 Harpoon missiles 2 x Mark 45 5in / 54cal lightweight gun 2 x 25mm 24 x .50cal (12.7mm) gun 2 x Phalanx CIWS 2 x Mk32 12.75in (324mm) triple torpedo tubes"))) "Modern British Ground Vehicles" (section :name "Modern British Ground Vehicles" :unitmap (unitmap "Challenger 2" (unit :name "Challenger 2" :summary "Comparable to the M1 Abrams, though it uses a diesel engine. One near Basra survived being hit by 70 RPGs. 105mm L7 Gun"))) "Modern German Ground Vehicles" (section :name "Modern German Ground Vehicles" :unitmap (unitmap "Leopard 2A6" (unit :name "Leopard 2A6" :summary "Comparable to the M1 Abrams, it carries a heavier gun and uses a diesel engine which increases reliability."))) "Modern Israeli Ground Vehicles" (section :name "Modern Israeli Ground Vehicles" :unitmap (unitmap "Merkava Mark IV" (unit :name "Merkava Mark IV"))) "Modern African Ground Vehicles" (section :name "Modern African Ground Vehicles" :unitmap (unitmap :Technical (unit :name "Technical"))))))
nx/tactics/books/modern_fantasy
Description:
Package Name:
  • nx/tactics/books/modern_fantasy
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_modern_fantasy_overview, chapter_buffy_the_vampire_slayer, chapter_chronicles_of_amber, chapter_kengan_ashura, chapter_matrix_the, chapter_street_fighter, chapter_world_of_darkness
Source Code:
  • (package nx/tactics/books/modern_fantasy :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Modern Fantasy" :image "Vampire_Slayer_by_Prasa.jpg" :chaptermap (base/chaptermap "Modern Fantasy Overview" (chapter_modern_fantasy_overview) "Buffy the Vampire Slayer" (chapter_buffy_the_vampire_slayer) "Chronicles of Amber" (chapter_chronicles_of_amber) "Kengan Ashura" (chapter_kengan_ashura) "Matrix, The" (chapter_matrix_the) "Street Fighter" (chapter_street_fighter) "World of Darkness" (chapter_world_of_darkness) ))) (func chapter_modern_fantasy_overview : base/chapter (chapter :name "Modern Fantasy Overview" :sectionmap (sectionmap "Why Tactics: Modern Fantasy?" (section :name "Why Tactics: Modern Fantasy?")))) (func chapter_buffy_the_vampire_slayer : base/chapter (chapter :name "Buffy the Vampire Slayer" :sectionmap (sectionmap :Scoobies (section :name "Scoobies" :unitmap (unitmap "Buffy Summers" (unit :name "Buffy Summers" :image "Buffy/Buffy.png" :titles "The Slayer") "Rupert Giles" (unit :name "Rupert Giles" :image "Buffy/Giles.png" :reference "Ben: She could have killed me. Giles: No she couldn't. Never. And sooner or later, Glory will re-emerge and make Buffy pay for that mercy, and the world with her. Buffy even knows that, and still she couldn't take a human life. She's a hero, you see. She's not like us. Ben: Us? (Giles suffocates Ben)") "Willow Rosenberg" (unit :name "Willow Rosenberg" :image "Buffy/Willow.png" :reference "Buffy: You wanna go out tonight? Willow: Strangely, I feel like staying at home... and doing my homework... and flossing... and dying a virgin.") "Xander Harris" (unit :name "Xander Harris" :image "Buffy/Xander.png" :reference "Faith: She got me really wound up. A fight like that and, no kill. I'm about ready to pop! Xander: Really? Pop?! Faith: You up for it? Xander: Oh, I'm up. I'm suddenly very up. It's just, um, I've never been up with people before. Faith: Just relax. And take your pants off. Xander: Those two ... concepts are ... antithetical."))) :Independents (section :name "Independents" :unitmap (unitmap :Angel (unit :name "Angel" :image "Buffy/Angel.png" :reference "Angel: The elders conceived the perfect punishment for me. The restored my soul. Buffy: What, they were all out of boils and blinding torment? Angel: When you become a vampire, the demon takes your body, but it doesn't get your soul; that's gone. No conscience, no remorse, it's an easy way to live. You have no idea what it's like to have done the things I've done...and care." :titles "Angelus") "Cordelia Chase" (unit :name "Cordelia Chase" :image "Buffy/Cordelia.png" :reference "Cordelia: Xander, I know you take pride in being the voice of the common wuss, but the truth is, certain people deserve special priviledges - they're called winners. Xander: And what about that nutty 'all men are created equal' thing? Cordelia: Propaganda spouted out by the ugly and less deserving.") "Faith Lehane" (unit :name "Faith Lehane" :image "Buffy/Faith.png" :reference "Faith: ... You're still not seeing the big picture, B. Something made us different. We're warriors. We're built to kill. Buffy: To kill demons! But it does not mean that we get to pass judgment on people like we're better than everybody else! Faith: We are better!" :titles "The Slayer") :Spike (unit :name "Spike" :image "Buffy/Spike.png" :reference "Spike: I'll give you a choice. Now I'm going to kill you - no choice in that. But I can let you stay dead... or bring you back, to be like me. Willow: I'll scream! Spike: Bonus. [A short time later] Spike: I don't understand. This sort of thing's never happened to me before. Willow: Maybe you were nervous. Spike: I felt all right when I started. Let's try again. Spike: Ow ow ow! Dammit!! Willow: Maybe you're trying too hard. Doesn't this happen to every vampire? Spike: Not to me it doesn't!" :titles "William the Bloody"))) "Bad Guys" (section :name "Bad Guys" :unitmap (unitmap :Adam (unit :name "Adam" :image "Buffy/Adam.png" :reference "Adam: [After killing Professor Walsh, his first act of life] Mommy.") :Gentlemen (unit :name "Gentlemen" :image "Buffy/Gentlemen.png" :reference "Can't even shout, can't even cry. The Gentlemen are coming by. Looking in windows, knocking on doors. They need to take seven and they might take yours. Can't call to mom, can't say a word. You're gonna die screaming but you won't be heard. - Hush") :Glory (unit :name "Glory" :image "Buffy/Glory.png" :reference "Glory: Wait, I've always wanted to try this. You know that thing with worms, where if you have one and you rip it in half, you get two worms. Do you think that'll work with you? [Buffy headbutts her] Ow! You hit me. What are you crazy? You can't go around hitting people. What were you, born in a barn? Fine, be that way! [grabs Buffy by the throat] I just noticed something, you have superpowers, that is so cool. Can you fly? [throws Buffy across the room]" :titles "Glorificus, That Which Cannot Be Named, The Beast, Her Splendiferousness, Her Sparkling Luminescence, Oh Sweaty-Naughty-Feelings-Causing One") "Mayor Wilkins" (unit :name "Mayor Wilkins" :image "Buffy/Mayor.png" :reference "Do you think he was going to betray me? Oh, now, that's a horrible thought. And now he's dead, I'll never have the chance to scold him.") :Sweet (unit :name "Sweet" :image "Buffy/Sweet.png" :reference "I can bring whole cities to ruin and still have time to get a soft shoe in ... Something's cooking. I'm at the griddle. I bought Nero his very first fiddle.")))))) (func chapter_chronicles_of_amber : base/chapter (chapter :name "Chronicles of Amber")) (func chapter_kengan_ashura : base/chapter (chapter :name "Kengan Ashura" :summary "* Kengan Matches - In Japan, wealthy business owners resolve disputes by hiring unarmed fighters to duel on their behalf. The match is form of high stakes gambling with large business interests on the line. Though the conflict appears to be fought on stage, a great deal of preparation, manipulation, and deception occur before, during, and after a match. * Rules - A Kengan member may make a 'reasonable' bet of another and challenge them to a Kengan match. The challenge is made known to the other members who may attend and bet on the results. The challenged party may agree to the duel, object, or decline. If they duel, each party chooses a champion and agree to a venue. The results of the battle must be adhered to. Win or lose, both parties rise in status for making the attempt. If the challenged party objects, they may counter offer or claim the challenge is unreasonable. Such disputes are decided by concensus vote among the other members. Poor challenges or objections are frowned upon. If the challenged declines, they are considered to have forfeited and must adhere to the terms and lose status for not participating. * History - During the Edo period of Japan, wealthy merchants stuggled for the best business dealings especially for the Shogun's business needs. Conflicts between merchants became increasingly bloody and reckless until the Shogun put a stop to it by announcing that all such conflicts must be resolved in a single-combat, unarmed duel. The tradition was very successful at keeping the peace and continues to this day.")) (func chapter_matrix_the : base/chapter (chapter :name "Matrix, The" :sectionmap (sectionmap "The Matrix" (section :name "The Matrix" :reference "* Welcome to the desert of the real. - Morpheus * What is 'real'? How do you define 'real'? - Morpheus * You are a slave, Neo. Like everyone else you were born into bondage. Into a prison that you cannot taste or see or touch. A prison for your mind. - Morpheus * Did you know that the first Matrix was designed to be a perfect human world? Where none suffered, where everyone would be happy. It was a disaster. No one would accept the program. Entire crops were lost...human beings define their reality through suffering and misery. The perfect world was a dream that your primitive cerebrum kept trying to wake up from. - Agent Smith") :Units (section :name "Units" :unitmap (unitmap "Agent Smith" (unit :name "Agent Smith" :reference "* I hate this place. This zoo. This prison. This reality, whatever you want to call it, I can't stand it any longer. It's the smell, if there is such a thing. I feel saturated by it. I can taste your stink and every time I do, I fear that I've somehow been infected by it. - Agent Smith * You move to an area and you multiply and multiply until every natural resource is consumed and the only way you can survive is to spread to another area. There is another organism on this planet that follows the same pattern. Do you know what it is? A virus. Human beings are a disease, a cancer of this planet. You're a plague and we are the cure. - Agent Smith")))))) (func chapter_street_fighter : base/chapter (chapter :name "Street Fighter" :sectionmap (sectionmap "World Warriors" (section :name "World Warriors" :unitmap (unitmap :Blanka (unit :name "Blanka" :image "StreetFighter/BlankaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Capoeira (unitspecialty :name "Capoeira"))))) :Cammy (unit :name "Cammy" :image "StreetFighter/CammyToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Commando Training" (unitspecialty :name "Commando Training"))))) :Chun-Li (unit :name "Chun-Li" :image "StreetFighter/Chun-LiToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Wu Shu" (unitspecialty :name "Wu Shu"))))) :Dhalsim (unit :name "Dhalsim" :image "StreetFighter/DhalsimToken.png" :unitskillmap (unitskillmap :Flexible (unitskill :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Leg Stretch" (unitability :name "Leg Stretch"))))) "E. Honda" (unit :name "E. Honda" :image "StreetFighter/EHondaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Sumo (unitspecialty :name "Sumo"))))) :Fei-Long (unit :name "Fei-Long" :image "StreetFighter/Fei-LongToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Kung Fu, Dragon Style" (unitspecialty :name "Kung Fu, Dragon Style"))))) :Guile (unit :name "Guile" :image "StreetFighter/GuileToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Commando Training" (unitspecialty :name "Commando Training"))))) :Ken (unit :name "Ken" :image "StreetFighter/KenToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate"))))) :Ryu (unit :name "Ryu" :image "StreetFighter/RyuToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate"))))) :Zangief (unit :name "Zangief" :image "StreetFighter/ZangiefToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Wrestling (unitspecialty :name "Wrestling"))))))) :Shadaloo (section :name "Shadaloo" :unitmap (unitmap :Balrog (unit :name "Balrog" :image "StreetFighter/BalrogToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Boxing (unitspecialty :name "Boxing"))))) "M. Bison" (unit :name "M. Bison" :image "StreetFighter/MBisonToken.png" :reference "You come to fight a madman, and instead find a god? Do you still refuse to accept my godhood? Keep your own God! In fact, this time may be a good time to pray to Him!" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "9"))) :Sagat (unit :name "Sagat" :image "StreetFighter/SagatToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitabilitymap (unitabilitymap "Knee Strike" (unitability :name "Knee Strike")) :unitspecialtymap (unitspecialtymap "Muay Thai" (unitspecialty :name "Muay Thai"))))) :Vega (unit :name "Vega" :image "StreetFighter/VegaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Ninjutsu (unitspecialty :name "Ninjutsu")))))))))) (func chapter_world_of_darkness : base/chapter (chapter :name "World of Darkness" :sectionmap (sectionmap :Technocracy (section :name "Technocracy" :reference "* Science is the key. Learn it. Love it. Live it. * One World. One Truth. One Reality. * ...both sides are becoming identical. What, in fact, is being created: an international community, a perfect blueprint for World Order. When the sides facing each other realize that they're looking into a mirror, they will see that THIS is the pattern for the future. - #2, The Prisoner: Chimes of Big Ben * We apologize for the inconvenience. - God's Final Message - Douglas Adams, So Long and Thanks for All the Fish" :summary "* A world-wide conspiracy that employs a technological paradigm called Enlightened Science to pursue an agenda promoting safety of the world over freedom. Considering the influence they have had over the world, some would say they are the most powerful organization ever known. * Capturing the Hearts and Minds - The Technocracy understands that reality is subjective and that it conforms to the collective will of humanity. Their agenda is to guide the beliefs of mankind to secure humanity from the chaos that surrounds us on all sides. To do this, they must guide our beliefs, removing belief in dangerous things and replacing it with belief in things that can be used to defend and better mankind. Of course, in order to do this they must control what the people believe in and completely stamp out anything that conflicts with their model of the future. Those who do not meet their criteria are labeled Reality Deviants. * Reality War - Because of its strong stance against reality deviancy, the Technocracy is essentially at war with all supernatural beings, including vampires, werewolves, and other mages. In practice, this conflict is a cold war, and the Technocracy has had far more success in proving to the masses that supernatural beings do not exist rather than eliminating them directly. Many beings, such as changelings and 'bygones' (mythic beasts such as dragons, manticores, and harpies) will simply cease to exist if the world stops believing in them. * The Price of Safety - The Technocracy champions science as a way to better and secure mankind while rejecting any innovation not approved by its own leadership. In this way, its agenda prevents effective criticism as it can always claim its ideological opponents are themselves against the benefits of science, many of which the Technocracy itself opposes while claiming to uphold. * Enlightened Science - In place of mysticism, the Technocracy uses Enlightened Science. It advances scientific methods and principles (along with the technology they produces), the spread of capitalist market-forces, and the application of political power. Roughly one in ten Technocrats can use true Enlightened Science and almost all believe their technology is so advanced that it only appears magical. Enlightened Science is all about moving the edge of knowledge forward, turning the unknown into the known, doing what's never been done before and hammering it into forms that work. Repeatedly. Reliably. Universally. * All Technocrats regardless of their enlightenment, use some sort of carefully constructed device. By their own definition, reality alteration without some sort of material basis is superstition. * Paradox and Enlightened Science - Like mysticism, Enlightened Science is subject to Paradox. The larger, more public, and more unlikely the effect, the large the potential for spectacular failure. Highly experimental science is best done in tightly controlled laboratory environments. * Be Seeing You - Watchwords stated to remind a fellow agent he will always serve the Technocracy. Precepts * Bring stability and order to the universe. Predictability brings safety. * Define the nature of the universe. Knowledge must be absolute or chaos will envelop all. * Preserve the Gauntlet. Dangerous outside forces must be banished from the Earth. * Destroy Reality Deviants. Their recklessness threatens us all. * Shepherd the masses. Protect them from themselves by convincing them of the benefits of science and rationality. Conflict and suffering will be eliminated in our Utopia. History * Ancient World - Science and Magic coexisted for much of human history. Witchdoctors, Shamans, and Druids dominated their societies. Magic was as much trickery as substance because no one could prove a real Mage from a fake. Those with the real gift, however, steadily used it to gain individual power. * Rome - With the growth of the Roman Empire, Mages found that they lacked the organization necessary to hold off the Romans. Their people who had trusted in their magical leaders were disheartened by the inability of their magic to turn away the Romans. * Mythic Age - Without support from the people, the Mages were largely forced into hiding and into secret cabals and orders. Normally, Mages rarely had shared information, but now they were forced to share their knowledge within their Orders and this knowledge created a golden age for magical discovery. The Orders could not act publicly, but they were able to use their magic to subtley gain great influence in society. * Dark Ages - After the fall of the Roman Empire and with the coming of the Black Plague, the world was cast into fear and superstition. Reaon was at its weakest and the power of Mages was at its height. During this period, individual Mages controlled the gifts of Magic while the commoners languished in misery. * Craftmasons - The Craftmasons Guild of enchanters took on the mission of creating magical items that could be used by those without the gift. The guild found that in order for a lay person to use a magical item, he would have to believe that the item was not magical. To do this, the people would have to be convinced that the device was only a clever invention. This meant gradual development and regular public displays to allow the publich to accept each small enhancement. * Fall of Mistridge - After years of ideological conflict between the Craftmasons and the Mage Orders, the Craftmasons arranged an attack on Mistridge, the center of power of the Hermetic Orders. Peasants and spies created the distraction while the newest invention was rolled out, the cannon. Mistridge was soon demolished and the Craftmasons began their reign. * Inquisition - After the defeat of the Hermetic Orders, arrangements were made to set the public out to track down and eliminate the Order Mages. This culminated in the Inquisition under which many Mages and innocents were burned at the stake. * Renaissance - After centuries of steady progress, the Craftmasons' plans began to bear fruit and a new Age of Reason came upon man. Early Science, however, was just as outlandish as Magic, so inventions like Da Vinci's actually functioned at that time. Many of the most famous Techocrats developed during this period: Gutenberg, Copernicus. With the advent of the printing press, the Craftmasons were now able to communicate their ideals to a wider audience and to begin editing history that did not agree with their paradigm. * Victorian Era - As the power of the Craftmasons increased, they began to become fragmented into different specialties and disciplines called Conventions. This further fragmented into distinct idealogical groups concerned with nothing less than the destiny of humanity. In their minds, the Conventions have the power to direct the development of mankind in any way they see fit. What way to choose became hotly contested. The Sons of Ether actuallly walked out of the Conventions when it was deemed that their Convention would no longer be acceptable in their new world model. * World Wars - With the rise of Hitler, many within different regional Conventions found that they believed in his mission and began supporting his effort. Simultaneously, others began supporting the Allies. This led to a disaterous arms race within the Conventions that was fortunately resolved before it became completely out of control. Since then the Conventions have dismantled their regional control and focused on a single power structure with a global mission. Some, however, are still unhappy with this authoritarian approach. * Modern Era - The Technocracy has established bases of operation deep in the Ether, away from Paradox, and have already perfected artificial intelligence, cloning, cybernetics, fantastic methods of transportation, and mind shattering innovations in artificial life. These are even now being slowly introduced to the world. Scenarios: * Contain Reality Deviants * Recruit New Members * Establish a Front - The Technocracy mostly operates indirectly through other organizations, so it must maintain a number of front groups. * Investigate the Unknown * Internal Affairs * Contain Internal Threats * Explore the Depths * Everyday Living Viewpoints: * Marauders - Call for backup then kill on sight. These insane chaos mages threaten everything the Technocracy stands for and must be removed at all costs. * Demons - Wait for backup then eliminate. Demons are powerful opponents and will require a team to take down. * Nephandi - Report any suspected encounter, but do not engage without explicit orders. The Nephandi are subversive and exposing their plots are far more important than eliminating individuals. * Mages - Observe and report. Tradition mages act in direct opposition to the Technocracy, but they are not necessarily dangerous and can certainly be reasoned with. We have many Mages under observation at any given moment. Violence is a last resort. * Vampires - Observe but do not engage. Minimal threat. Vampires are well known to the Technocracy. Their low body heat makes them easy to track with infrared. Cities are choked with the bloodsuckers, but they actively cover their own tracks, so they are low on the agenda. What the Technocracy does not realize is the massive influence that Vampires possess through the Blood Bond and that the Technocracy itself is being manipulated by various Vampire factions to do their dirty work. * Werewolves - Observe but do not engage. Werewolves are extremely powerful combatants and direct engagement can be suicide even for well equipped teams. Our agenda of causing the public to disbelieve in supernatural beings seems especially effective on werewolves. Their numbers are declining, and even direct sightings are dismissed as animal encounters. With patience the werewolves will simply disappear on their own. The Technocracy is completely unaware that its greatest threat is actually the Wyrm (which they consider primitive Werewolf superstition). The Technocracy's goals fall directly into the hands of the Wyrm, and the Technocracy itself has already been so corrupted at the highest levels that it is practically a pawn of the Wyrm. * Faeries - No threat. Race almost extinct. Await confimration of extinction. * Ghosts - Report any encounter. Usually no threat." :sectionmap (sectionmap "Iteration X" (section :name "Iteration X" :summary "* Iteration X is dedicated to the adoption of the precision, speed, and unity that machines offer over flesh. They invest heavily in cybernetics, robotics, automation, and artificial intelligence. They are typically calculating and coldly rational. They are famous for being slow to action and tending to be bureaucratic in their attention to detail. * The merger of body and machine frightens other conventions. Implants could track, observe, or control every move, thought, or bodily function. Implants seem to also cause their users to become distant, inhuman, and sometimes dangerous." :titles "Clockwork Convention" :locationmap (locationmap :Autocthonia (location :name "Autocthonia" :summary "* Description - A metallic Horizon Realm the size of a moon. It was discovered by the Void Engineers, but Iteration X has taken charge of its exploration. Autocthonia seems to represent the mechanical precision of Iteration X's ideal world. It is ruled by logic instead of emotions without fear or pain. Others fear that this 'ideal' has no room for anything remotely human.")) :unitmap (unitmap :Biomechanic (unit :name "Biomechanic" :summary "* BioMechanics focus on using cybernetic implants to achieve a man-machine interface.") "Central Computer" (unit :name "Central Computer" :summary "* Iteration X has installed a massive central computer system on Autocthonia. It is the central hub tied to all Iteration systems. The Iteration believes so strongly in the infallible nature of the Central Computer that all of the convention's decisions are made in consulation with the Central Computer. * Some fear that Iteration X relies too heavily on the Central Computer which has become their master instead of their servant. Many see their trust in the Central Computer to have become worship. Pessimists wonder if the Central Computer is something more than just a computer system." :titles "Great Computer") "Iteration Cyborg" (unit :name "Iteration Cyborg") :Macrotechnician (unit :name "Macrotechnician" :summary "* Macrotechnicians focus on the construction of optimal equipment for other Iterators.") "Iteration Statistician" (unit :name "Iteration Statistician" :summary "* Statisticians focus on the use of predictive models and simulations to anticipate future events. They believein gathering massive amounts of data and number crush to discover patterns that have not been previously noticed.") "Time-Motion Manager" (unit :name "Time-Motion Manager" :summary "* Time-Motion Managers focus on the maximization of efficiency and the design of information technology."))) "New World Order" (section :name "New World Order" :reference "Men In Black (movie)" :summary "* The New World Order's highest priority is the conversion of the hearts and minds of the masses. They are the most humanistic of the conventions, relying on human interaction, psychology, and messaging instead of technology. By shaping the beliefs of the public, they strengthen the consensual reality paradigm of the Technocracy. * They also act as the hiring source for the entire technocracy for low to mid level staff. Other conventions sometimes express concern that some of these accountants, secretaries, and janitors are actually the eyes and ears of the NWO. * Critics see the NWO as extremely sinister, and that their social agenda is a blatant attempt at mind control and ultimately world domination. !Units !Skills * +1 [[Domination]], +1 [[Espionage]], +1 [[Research]] !Tactics * Eliminate reality deviants of all kinds !Divisions * The Ivory Tower: Performs the bulk of Control's administrative tasks and directs the Union's policies. * Operatives: Focus on using covert operations and counter-intelligence within the Technocracy. * Q Division: Design and create the equipment used by the New World Order. * Watchers: Focus on surveillance and media control to monitor the masses. !Titles * Adviser * Editor * Educator * Field Observer * Intelligence Analyst * Internal Affairs - 'Who watches the watchmen?' * Men In Black - Shocktroops * Reporter * Operative - Covert Ops * Public Relations * Sympathizer - Sleeper indoctrinated into believing in the NWO's goals without revealing the NWO itself." :titles "NWO" :unitmap (unitmap "Public Relations (NWO)" (unit :name "Public Relations (NWO)" :summary "* Smooth talking spin-doctors whose sole responsibility is to massage public opinion. They obtain positions in different organizations as PR men and women, and they make sure that the messsage that the public receives is always the same: there is a logical explanation; there will be an investigation to get to the bottom of it; there is nothing to worry about." :titles "Man in Gray"))) :Progenitors (section :name "Progenitors" :summary "* The Progenitors believe that living things are more wonderous than machines can ever be. They are dedicated to the analysis and enhancement of all living things and to grant humans to super human abilities. * Cloning, genetic engineering, advanced surgery, and phamacology are their primary tools. * History - The Progenitors strongly associate themselves with agriculture and the medical field. They traces their modern roots to Hippocrates and the Hippocratic Oath. In the past, the Progenitors experimented heavily with grafting body parts from different creatures together, but these techniques are considered outdated compared to the modern genetic and pharmacology sciences. !Group !Preferred Skills * [Life], [Mentalism], [Medicine], [Pharmacology] !Divisions * Damage Control: Engineers genetic monsters, tailored viruses and other biological warfare. * FACADE Engineers - Focus on cloning, biological implants, grafts, and other alterations. Also known as the Forced Adaptation and Clone Alteration Developmental Eugenicists. Their cloning techniques have given the elite Progenitors a form of immortality, transferring minds from aging bodies into new clones. Cloning has also given them a deadly espionage force. * Pharmacopoeists: Focus on the development and control of drugs, medicines, and narcotics. ** They exert a subtle and growing influence on the masses as the use of prescription drugs becomes increasingly commonplace. ** One of their goals is to slowly destroy the masses' sleeping Avatars to control them and to protect them from the awesome power that lies in each of us. !Devices * Clone Tank * DNA Samples * Pills" :unitmap (unitmap "Progenitor Security" (unit :name "Progenitor Security" :summary "* Created by Damage Control, they are the front line security detail for any Progenitor operation. They are fearless and know little besides combat." :titles "Blank, Pawn") "Damage Control" (unit :name "Damage Control" :summary "* Damage Control is the security wing of the Progenitors. They focus on weaponizing cloning, implants, and tailored viruses.") "Glamor Trap" (unit :name "Glamor Trap" :reference "* Keep young and beautiful, It's your duty to be beautiful. Keep young and beautiful If you want to be loved. - Annie Lennox, Keep Young and Beautiful" :summary "* The Progenitors have created a number of clones carefully bred to be have perfect eyes, hair, and bodies. They are mentally simplistic and suffer from myriad emotional and psychological problems though they can still pass as human. * These clones were introduced to the media and immediately became models, starlets, and other celebrities. Now women flock to the stores and hospitals for diet formulas, cosmetics, facelifts, implants, and other surgeries all in the attempt to reach the impossible goal of making themselves look like the produced perfect women. Men are slowly being indoctinated as well through hair loss and male potency products.") :Genegineer (unit :name "Genegineer" :summary "* Genegineers focus on harnessing the power of applied genetics. * Since the cloning of Dolly the sheep in 1996, cloning technology has become more acceptable to the masses (if feared). The Genegineers can now produce tailored clones for any occasion. They are physically perfect, but every clone invariably has glaring mental deficiencies. * The excesses of the Genegineers can be truly frightening. Botched creations often die horribly or spectacularly after 'birth'. Successful creations have no rights are routinely abused, enslaved, experimented on, and exterminated." :titles "Clone Arranger, Eugenist, Mutagenic Engineer"))) :Syndicate (section :name "Syndicate" :reference "* The real question was this: Was all this legal? Absolutely fucking not, but we were making so much money we didn't know what to do with it. - Wolf of Wall Street * Godfather * Pay the man." :summary "* Money is Reality. The masses shared belief in currency makes human civilization possible. To the Syndicate, wealth equals prosperity. Economic power has always exceeded military power, and hopefully economic warfare will eventually make conventional warfare obsolete. * The Syndicate is a largely invisible organization. They do not maintain bases or headquarters. Members usually have full-time jobs in business and finance where they can exercise their power in the course of their day to day activities. Syndicate members are notorious for their lack of morality, working with anyone who can turn a profit. They have ties to every major financial institution including: the World Bank, stock exchanges, hedge funds, oil corporations, tobacco corporations, organized crime, drug trafficers, and military dictatorships. The Syndicate just considers these groups as investments and will invest or divest as their stock rises and falls. * The Syndicate provides most of the financing for the other conventions. * Some are concerned that the Syndicate holds the purse strings of the Technocracy and holds too much influence over the direction of the other conventions. Others worry that the money they receive is blood money, since the Syndicate holds money over morality. Futher concerns surround the Syndicate's heavy lobbying, advertising, and political influence." :unitmap (unitmap "Syndicate Enforcer" (unit :name "Syndicate Enforcer" :summary "* Enforcers work in law enforcement, the judicial system, and the criminal underworld. They influence both the criminals that the masses fear and the police and judges to whom they turn to for protection. They make sure that the bills are paid and the contracts are kept.") "Syndicate Financier" (unit :name "Syndicate Financier" :summary "* The Financiers work in positions of finanical influence and perform silent adjustments to the flow of global commerce.") "Syndicate Messenger" (unit :name "Syndicate Messenger" :summary "* The Messengers work in advertising. Their mission is more than just selling products, they are in charge of shaping trends. They build demand for entire product segments. Among many other things, this includes creating conflict to spur military spending."))) "Void Engineers" (section :name "Void Engineers" :reference "* But tell me, did you sail across the sun? Did you make it to the Milky Way. To see the lights all faded. And that heaven is overrated? - Train, Drops Of Jupiter" :summary "* Dedicated to the study, colonization, and eventual control of realms beyond Earth. Their satellites and outposts stand vigilant watch over terrestrial and extraterrestrial threats. * The Void Engineers are rugged individualists with an unusual number of idealists. They do not get along well with the other Conventions. The NWO feels that the Void Engineers encourage fantastic thoughts in the public minds and therefore encourage reality deviants. The Syndicate regularly cuts the funding that the Void Engineers so desperately need. Some speculate that the Void Engineers would join the Sons of Ether if they didn't rely so heavily on funding. * A large number of this Convention live off Earth and some have no desire to return. Other Conventions are concerned that the Void Engineers have grown contemptuous of earthly pursuits, and that they are becoming as alien as the threats the Technocracy is defending against. A number of Void Engineers have returned from missions strangely changed and with unexplained gaps in data logs. Another enormous issue is Copernicus Research Center. Where did it come from? Why do the Void Engineers avoid discussing what goes on there? It is just too convenient to 'find' an uninhabited Dyson Sphere with an Earth-like gravity and atmosphere." :unitmap (unitmap "Copernicus Research Center" (unit :name "Copernicus Research Center" :summary "* An fantastically immense space station in the form of a Dyson Sphere") "Earth Frontier Corp" (unit :name "Earth Frontier Corp" :summary "* The Earth Frontier Corp continues to investigate the wonders of the extreme environments on Earth including the ocean deep, frozen poles, rain forests and jungles, inaccessible mountain-tops, and underground caverns.") "Neutralization Corp" (unit :name "Neutralization Corp" :summary "* The Neutralization Corps is responsible for identifying and eliminating Reality Deviants already on Earth. This includes alien landings, dimensional incursions, hauntings, etc. The NWO usually handles witnesses and media fallout.") "Pan Dimensional Corp" (unit :name "Pan Dimensional Corp" :summary "* The Pan-Dimensional Corps: Responsible for the exploration and study of the Deep Universe, the Digital Web and other alternate dimensions, including time itself.") "Research Corp" (unit :name "Research Corp" :summary "* The Research Corp is responsible for the development of dimensional science, the Technocratic study of the Umbra.") "Void Border Corp" (unit :name "Void Border Corp" :summary "* The Border Corps is responsible for repelling invasions from beyond the reaches of Earth. They maintain heavily armed spaceships, dimensional craft, and marines."))))) "Mages, Traditions" (section :name "Mages, Traditions" :reference "* There's a butterfly trapped in a spider's web. That's my soul up there. - The Police, King of Pain" :summary "Akashic Brotherhood Celestial Chorus Cult of Ecstasy * The Ecstatics are visionaries, shamans, and adventurers of the senses. * Out of music, dance and passion, the Cult of Ecstasy creates the magic of entrancement and exhilaration. Pushing past the boundaries and comfort zones of humanity, they seek the ultimate experience. They're the descendants of ancient ascetists - although now they use drugs, sex, piercing instead of meditating alone. * Though Cultists pursue sex, drugs, meditation, holistic living, music, and vision quests as focusing tools, serious Ecstatics consider these to be sacraments, not hobbies). * Give yourself over to absolute pleasure, Swim the warm waters of sins of the flesh. Erotic nightmares beyond any measure, and sensual daydreams to treasure forever. - Dr. Frank N. Furter, The Rocky Horror Picture Show Dreamspeakers Euthanatos Order of Hermes Virtual Adepts * Technolgy is a tool to empower individuals. The Technocracy has forgotten that goal. They see technology as a force to enslave the Masses, not liberate them. They're fanatics. That's why I'd do anything to destroy them. - Zarathursta, Virtual Adept" :sectionmap (sectionmap "Sons of Ether" (section :name "Sons of Ether" :unitmap (unitmap "Void Ship" (unit :name "Void Ship" :reference "* Flying Dutchman * Mage: Sons of Ether * Space 1889 * Spelljammers" :summary "* A Void Ship is designed to travel between realms through the [Aether]." :titles "Aether Flyer, Void Cruiser"))) :Verbena (section :name "Verbena"))) :Marauders (section :name "Marauders" :summary "* Mages who have fallen into Quiet which has warped around them into personal [Paradox] Bubble fantasy worlds that wreck havoc on those around them. Their Quiet blends the real world with their fantasy world. From the outside perspective, the Marauders are dangerously insane.") :Nephilm (section :name "Nephilm" :summary "* Nephandi - Their Avatars are 'inverted' (destroyed and recreated to server their dark masters).") "Wraiths and Spectres" (section :name "Wraiths and Spectres" :summary "* See Bestiary") :Changelings (section :name "Changelings" :reference "* Alice's Adventures in Wonderland - Lewis Carroll" :summary "* Changlings are Fae that have bonded with human hosts. * Changling stories tap into the roots of wonder and rediscover the world through the eyes of legend. In many ways, the lost children of the Fae are metaphors for our lost youth, and the World of Darkness mirrors the heartless society to which we are so resigned. By surrendering to the call of imagination, we can recapture some of our lost innocense. We can learn to laugh and weep again, for not all stories have happy endings, we can learn to remember. It is a journey between memory and forgetfulness, between dreams and reality, between wonder and banality.") :Spirits (section :name "Spirits" :summary "* Bane - A corruption spirit that exists in the [Spirit Realm]. * [Bane]s are attracted to hatred, cruelty, lust, and fear, and they are repelled by happiness, generosity, love, and kindness. Nature Spirit Pattern Spider" :unitmap (unitmap "Bane, Disease" (unit :name "Bane, Disease" :summary "* These repulsive Banes appear like blood covered bags of pus. They are drawn to plagues, cesspools, medical waste, etc.") "Bane, Madness" (unit :name "Bane, Madness" :summary "* These formless spirits wear down the sanity of those exposed to them with disembodied voices, disturbing visions, and horrible shrieking.") "Bane, Poison" (unit :name "Bane, Poison") "Bane, Radiation" (unit :name "Bane, Radiation"))) :Abominations (section :name "Abominations" :reference "Perhaps it started as an ulcer, a hole eaten away from inside. From a life of giddy possibilities, to unpleasant setbacks, still met with love, falling into an endless downward scream of missed chances, commitments, and hatred locked down, simmering hatred for everyone and everything. Like cancer, it began inside. - Freak Legion, World of Darkness" :summary "* A Fomor is a creature possessed by a [Bane] (a corruption spirit). * When a person experiences dark emotions, a [Bane] may gain entry and hide in the victim's mind waiting to exploit and intensify further darkness and bring the person down the road of corruption. * During the possession period, the [Bane] may be renounced or the [Bane] may be attacked in the [Spirit Realm]. * After possession, a slow transformation process begins. The [Bane] burrows into the deepest recesses of the victim's soul, becoming privy to all the person's memories, hopes, dreams, and fears. In exchange, the person is flooded with the [Bane]'s poisonous, black thoughts of murder and destruction. The process is a horrible violation, a rape most vile. When this process completes, the person permanently becomes a Formor. * The rest of a Formor's life is miserable, brutal, and short. Most take their suffering out on others including their own kind." :titles "Fomori, Monstrosities" :unitmap (unitmap "Corrupted Animal" (unit :name "Corrupted Animal" :summary "* [Corruption]") "Hollow Man" (unit :name "Hollow Man" :reference "* They're good for us. They kill the bad things inside us...What you're supposed to do is eat it. You eat as much as you can and you keep eating it. - The Stuff" :summary "* A person infested by parasites, insects, or small animals. The hapless victim has become completely hollowed out by its unwanted tenants, but is somehow still alive. The Hollow Man is desolate, immobile, and empty without the possessing colony, but they are poor company at best.") :Normality (unit :name "Normality" :reference "Hate Crimes" :summary "* Normalities are ghastly creatures that were once human but have been transformed into blank, sexless horrors. All Normalities appear exactly identical: thin, sexless, hairless, and faceless except for a slash of a mouth. With heavy clothing they may briefly pass for human. * Personality - Normalities have a hatred of all things different (which includes everything except themselves). They are homicidal with a particulary strong reaction to those who choose to flaunt their differences (e.g. piercings, tattoos, goths, punkers, women wearing pants) * History - The Normalities are created as part of a horrific treatment that pretends to be a cure for homosexuality. Indeed, the treatment does cure homosexuality, as well as any sexuality and finally humanity." :titles "Normals" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting"))) "Seventh Generation" (unit :name "Seventh Generation" :summary "* Seventh Generation is a Wyrm cult dedicated to the absolute domination of men over women and children. It encourages child abuse, spousal abuse, misogyny, pedophilia, and even murder and cannibalism. Their membership is composed of an interlocking network of politicians, businessmen, corrupted clergy, military officers, millionaires, and even serial killers. Each member is a twisted individual drawn together by the commonalities of their vile appetites. * Seventh Generation sponsors child foster care facilities. These facilities are like boot camps and are very successful at teaching children to follow instructions unquestioningly. This discipline comes at the price of the child's sense of self-esteem. The final steps are to place the child in abusive and alcholic homes. There abuse and inferiority come naturally. When the children mature, they are perfect fodder for Umbrella.") :Throwback (unit :name "Throwback" :reference "Bouncers, Frat Boys, Jocks, Weight Lifters" :summary "* Appearance - Throwbacks are hulking, musclebound, prettyboys who are constantly looking at themselves. * History - Throwbacks begin as insecure guys who want to increase their bodies or their manhood. The enhancements they receive brings out all of the worst male tendencies and exaggerate them to a homicidal degree. Vanity, violence, and sexual aggression all warp them into virtual cavemen who care for nothing but fighting, sex, and pumping iron."))) "Modern Fantasy Terms" (section :name "Modern Fantasy Terms" :rulemap (rulemap "Consensual Reality" (rule :name "Consensual Reality" :summary "* When the majority of people believe in something, that something comes into being. When the nature of a place differs from the new beliefs about it, a separation occurs. The Shattering, the Gauntlet, and the Veil shows what happens during this separation. This is the Technocracy's legacy and its goal: to replace lands of wonder by convincing us they do not exist.") :Paradox (rule :name "Paradox" :reference "* If we ask whether the position of the electron remains the same, we must say 'no'; if we ask whether the electron's position changes with time, we must say 'no'; if we ask whether the electron is at rest, we must say 'no'; if we ask whether it is in motion, we must say 'no'. The Buddha has given such answers when interrogated as to the conditions of a man's self after death. - Robert Oppenheimer * A hundred years ago paradox meant error to the scientific mind. But exploring such phenomena as the nature of light, electromagnetism, quantum mechanics and relativity theory, science has matured to the point where it is increasingly recognized that at a certain level reality is paradoxical. - M. Scott Peck, M.D., The Road Less Traveled" :summary "* The natural order of things must be consistent. Magick creates inconsistency displacing the natural order. Fortunately, the fabric of reality will bend before it will break. The tension generated by this bending is Paradox energy. Eventually, however, the fabric must snap back into place. This can physically damage the mage, cause Paradox Flaws, force the Mage into [Quiet], or actually fling the mage into a [Paradox Realm]."))) "Godlike Entities" (section :name "Godlike Entities" :summary "Weaver * Measures the thread of life !References * Lachesis / The Allotter Wyld * Spins the thread of life !References * Clotho / The Spinner Wyrm * The cutter of the thread of life !References * Atropos / The Unturning * Sitting in a bunker here behind my wall Waiting for the worms to come. In perfect isolation here behind my wall Waiting for the worms to come. Waiting to cut out the deadwood. Waiting to clean up the city. Waiting to follow the worms. Waiting to put on a black shirt. Waiting to weed out the weaklings. Waiting to smash in their windows And kick in their doors. Waiting for the final solution To strengthen the strain. Waiting to follow the worms. Waiting to turn on the showers And fire the ovens. Waiting for the queers and the coons and the reds and the Jews. Waiting to follow the worms. Would you like to see Britannia Rule again, my friend? All you have to do is follow the worms. Would you like to send our colored cousins Home again, my friend? All you need to do is follow the worms. - Pink Floyd, The Wall") "Modern Fantasy Places" (section :name "Modern Fantasy Places" :summary "Places Earth Arcadia The land of the Fae. !References * Notwithstanding the beauty of this country of Faerie, in which we are, there is much that is wrong in it. If there are great spleandours, there are corresponding horrors; heights and depths; beautiful women and awful fiends; noble men and weaklings. - George MacDonald, Phantastes Dreamworlds Dreamworlds are entire realms fashioned from the dreams of living beings. Each person has their personal dreamworld each the size of a planet. There are also dreamworlds clearly made from the collective dreams of many beings. Whether our own world is a dream created by others is a matter of philosophy and point of view. * Land of Nod * Twilight Zone !References * FROM breakfast on through all the day At home among my friends I stay, But every night I go abroad Afar into the land of Nod. - The Land of Nod - Robert Louis Stevenson Hollow World * The Hollow World is a realm that coexists with the interior of the planet as does the [[Underworld]]. * Major portals to the Hollow World exist and both North and South Poles. * Certain Volcanoes and underwater passageways hold portals. * Deepest sub-basements and catacombs are also possible portals. !References * Journey to the Center of the Earth * Land of the Lost * Down a Rabbit Hole - Lewis Carroll ** [Alternate Timelines] ** [Dreamworld] ** [Elysium] Solar System * Sun * Mercury * Venus ** [Venusian Jungle] * [Moon] ** [Darkside Moon Base] * Mars * Asteroid Belt * Jupiter * Saturn * Uranus * Neptune * Pluto ** [Yuggoth] Spirit Realm * This is the world of the spirit. !Attributes * Only nature spirits inhabit this realm, though elves and other Fae folk often travel to the Spirit Realm. * Animals, plants, Elves, and other Fae go to the Spirit Realm after death. * The Spirit Realm mirrors the spiritual health of the material world. * All Spirit and Nature skills are at +2 in this realm. !Units * [Bane] * [Elves] * [Fae] * [Lycanthropes] Underworld * The Underworld is the world of the dead and home of the Wraiths and Spectres. It appears that the Underworld is within the hollow Earth, but the Underworld is actually a separate Realm. It is a realm of eternal night containing a series of bleak islands in a sea of soul stuff slowly circling a whirlpool leading to a Black Hole, the Anti Sun, [[Oblivion]]. As a [[Wraith]] loses its connections with the living it is drawn closer to the [[Tempest]] and [[Oblivion]]. * Stygia is the Western capital of the Underworld. !Abilities +3 Necromancy !Titles * Hell * Hades * Shadow Realm * Yomi Shroud * Separating the Skinlands from the Shadowlands is a barrier of fear and disbelief. The more mundane the reality at a particular spot the thicker the Shroud. Shadowlands The highest layer of the Underworld. Here Non Corporeal [[Undead]] that maintain connections to the living world may dimly see the living world through the [[Shroud]]. Nihils or Sinkholes form randomly in the ground and open to the [[Underworld]] below. Ethereal Realm The Ethereal Realm is the realm of the mind and perception. It appears to be an inconceivably vast, misty, void without heat or air or substance. The mist is actually a material of sorts called the Ether. Our world and all worlds are tiny spheres floating distantly in ethereal space. All things are formed from the Ether, and the Ether can be bent to the will of a skilled mage. All [[Conjuration]]s, [[Phantasms]], and [[Illusions]] are formed from the Ether. * One can travel at speeds limited only by the imagination. * Mists * One can create enormous constructs and even worlds from the Ether. * Living things and intelligent machines appear in this world in idealized forms. * Mind may be used instead of Body while in this plane. * Spirits do not appear on the Astral Plane because they exist fully in the Spirit World. * Undead do not appear on the Astral Plane because they exist fully in the Underworld. * All Mind and Arcane skills except Necromancy are at +2 in this realm. * [[Hyperspace]] is a limited visualization of the Ethereal Realm. * The Ethereal Realm is highly subjective. What a person encounters has much to do with what they believe. ** Astral Videre - An astral videre casts everything in terms of symbols, themes, and metaphors. An astral videre feels at once intensely real and fundamentally surreal. ** Mortific Videre - A mortific videre casts everything as a decayed shadow of reality. The environments within this videre are familiar, but have been subjected to forces of decay, filth, and death. ** Spiritual Videre - This videre casts everything as an interaction of primal forces such as life and death, order and chaos, and yin and yang. ** Technological Videre - The most recently developed videre depicts everything either as deep space or as a series of parallel subdimensions. Interestingly, this videre carries with it a serious price - as the Astral reaches get further distant from Earth, beings with a technological videre find them increasingly toxic. Many Technocrats find themselves requiring respirators or even space suits where shamanistic mages have no difficulty breathing. !References * Aetheric Space * Akasha * Astral Realm * Hyperspace Horizon Realms Magically Created Realms Autochtonia * A metallic polyhedral space station approximately 10 miles in diameter with 4,294,967,200 sides (doubling each year, vainly seeking to be a sphere). * The logical replacement for heaven for [[Iteration X]]. Copernicus Research Center The COP - Dyson Sphere Gernsback Continuum * A metropolis built by the [[Sons of Ether]] to glorify the gods of Science. It is a representation of their perfect reality, a world of tomorrow. * Ether-powered phaeton cars zip along raised highways like shiny beetles. * Scientists stroll or ride the moving sidewalks that parallel the highways, linking the magnificent buildings of the Realm. * At night, the planets loom unusually large and the criss-crossing spotlights illuminate the metallic zepplins, Etherflyers, and jet-packed aeronauts that fly among the Art-Deco monuments and spires. * Oddly unique robots, custom built to their purpose, zoom from place to place performing their duties. !Travel * The realm may most easily be reached through the Great Hall Chantry in Paris, located on Rue de Puilly. Its large front courtyard accommodates panhandlers and street performers walking on broken glass and breathing fire to an excited gathering of tourists and pigeons. The inner hall houses the chantry meeting halls and classrooms. Secret doorways with fantastic carving lead to an identical building in the Continuum. !Daily Life * Many Etherites live and work their entire lives here. and to many it is the closest place to Heaven. Some live in complete rejection of the Earthly world's ugliness. This isolation makes them a bit out of touch. * Food is available in a just-add-water form that expands into a full meal with all the aroma and taste of home-cooked. !History * The realm is named for the extraordinary inventor and publisher Hugo Gernsback (1884-1967). During his life he received more than 80 patents and was the force behind both Modern Electric Magazine (later Popular Science) and Amazing Stories (the first magazine devoted exclusively to science-fiction). He predicted with startling accuracy radar, microfilm, artificial fabrics, and florescent lighting. The top annual prize for science-fiction was named the Hugo in his honor. Gernsback was old but present at the opening of the realm. !Reference * The dream of H.G. Wells, in which the tall elegant engineers rule, with perfect benevolence, a humanity which has no business except to be happy. To H.G. Wells, this was a dream of heaven - a modern version of the idle harp-sounding heaven. - Science and Human Values - Jacob Bronowski Pangaea Scar Industrial Dystopia - Metropolis Otherworlds Paradox Realm * Some continue long after their origins, though most collapse in upon themselves. * While we make efforts to rescue those imprisoned within, use caution to use magic wisely. The ravaged victims of [[Paradox]] are all the object lesson you need. !Rugnir's Realm * The oldest recorded [[Paradox]] Realm. * Rugnir a Viking Chieftain made a magical error so great that for 1000 years he has been imprisoned within. * The realm used to be large but over the centuries has shrunken to fit Rugnir like a second skin. * Inside this amniotic sack, Rugnir is conceived, grows from infancy to old age, dies, and is conceived again within a few days. * He gives no indication that he is in pain or that he cares what is happening to him. * His cycles of rebirth seem to have confused him and he seems to have forgotten his original life. * Perhaps he can be stimulated to realize his predicament and try to escape." :locationmap (locationmap "Wells of Silence" (location :name "Wells of Silence" :reference "* And in the naked light, I saw, 10,000 people or more. People talking without speaking, people hearing without listening People writing songs, that voices never share, and no one dared Disturb the sound of silence. Fools, said I, you do not know, silence like a cancer grows Hear my words so I might teach you, take my arms so I might reach you But my words like silent raindrops fell and echoed in the wells of silence And the people bowed and prayed, to the neon god they made - Disturbed, Sound of Silence" :summary "* A world where humanity has lost its empathy with others. People are observers and consumers, but do not share emotional bonds."))) "Paradigm Corporation" (section :name "Paradigm Corporation" :reference "* They say misery loves company We could start a company and make misery Frustrated, Incorporated We I know just what you need I may just have the thing I know what you paid to see Put me out of my misery I'd do it for you Would you do it for me? We will always be busy Making misery We could build a factory And make misery We'll create the cure We made the disease - Misery, Soul Asylum" :summary "* Paradigm appears to be a modest, little known, private corporate consulting and administrative assistance firm. * In reality, it is a vast business conglomerate that does not consult for companies, it owns or controls them through a series of false identities and numbered bank accounts. By secretly controlling multiple related companies, Paradigm has secured powerful, clandestine monopolies. * Unfortunately, Paradigm has a dark secret: its founders are corrupt followers of the [Wyrm], and their goal is nothing less than the gradual destruction of the world. * Paradigm hides its true intentions behind veils of lies, all the while feeding humanity's greed. Instant gratification satisfies the need to covet. That is Paradigm. * Few people outside the company know just how widespread the company is. Paradigm is like a cancer with foul growths quietly growing through healthy flesh until the host dies. * It has vast resources, but the need for secrecy creates limits of how those resources can be used. !Working for Paradigm * Outwardly, Paradigm is a nice place to work. Good benefits, good pay, holiday gifts, suggestion boxes, etc.. Except, sometimes people transfer out of state, never to be heard from again. No retirees ever come back to visit. People who have been around long enough know not to make waves or risk their jobs ... or worse. Better to lay low. * Friendships are discouraged. Personalizing items are not allowed in the workplace 'to keep things professional'. * Family life is your own problem. Work comes first. !Management * The CEO * The Board of Directors * Who runs Paradigm? Supposedly the CEO, but the CEO is not there to run the show; the CEO is there to take the blame when something goes wrong. For this, they are paid exceptionally handsomely when they are forced to 'resign'. The Board of Directors is equally expendable, but for different reasons. Board members are replaced when the stockholders feel the company is not making enough money. * Fortunately, Paradigm spends half of its energy fighting itself. Corrupt, egotistical, power-mongers don't work well together. Back-stabbing, hidden agendas, and subversion are daily activities at the top. !History * Paradigm started in 1865 when Jeremiah Lassater founded Standard Oil. He was a ruthless, opportunist even before the accident. In 1869, while inspecting a problematic drilling site, Lassater became trapped in a tunnel with a fearsome [Bane]. In exchange for his life, he allowed the [Bane] to act through him, and so began the company's long, dark descent." :titles "Pentex" :rulemap (rulemap "Ad Infinitum" (rule :name "Ad Infinitum" :image "Units/ModernFantasy/AdInfinitum.jpg" :summary "* Advertising and Marketing * Television * Communications") "Chrysalis Corporation" (rule :name "Chrysalis Corporation" :image "Units/ModernFantasy/ChyrsalisCorporation.jpg" :summary "* The Price of Beauty * Fashion, Beauty, Hygiene, Self Help, and Diet products * Rising Stars - Chrysalis sponsors a talent agency searching for desparate artists and actors that either can't find their big break or have already used up their 15 minutes of fame. Rising Stars has a good reputation since they give unknowns and has-beens a chance. Of course, they are actually interested in guiding them down a degrading series of lies, drugs, whoring, pornography and other exploitations. In these positions, they earn money and provide a useful spy network for Chrysalis. When they are too old to be of use Chrysalis can always find some use for their bodies. * A New You - This popular diet and exercise program secretly encourages vain and narcissistic tendencies. As the customer becomes stronger and more beautiful, he/she also starts losing friends. But, of course, A New You provides all the friends you might want... * Homogeniety - Chrysalis sponsors a social group dedicated to curing homosexuality. Through them it attracts the despondent and the outcast. Those filled with self doubt are easily duped into undergoing treatments that will make them more Normal. Homogenity is run by Pastor Jim Fowler who despite claiming to be cured of homosexuality, instead preys on youths under his care. If they reject him, he simply claims that they have passed a 'test'.") "Cyberdyne Systems" (rule :name "Cyberdyne Systems" :image "Units/ModernFantasy/Cyberdyne.jpg" :summary "* Cyberdyne is a leading manufacturer of computers, software, microchips, and robotics. * Massively Multiplayer Games - Cyberdyne secretly maintains a presense on many online game sites. Here they cultivate and recruit 'like-minded' players into the corporate fold. Many hackers, dangerous malcontents, and even terrorists have been duped into doing Cyberdyne's dirty work for them.") "Omni Comsume Products (OCP)" (rule :name "Omni Comsume Products (OCP)" :image "Units/ModernFantasy/OmniComsumerProducts.jpg" :reference "The Only Choice - Robocop") "Shinra Electric" (rule :name "Shinra Electric" :image "Units/ModernFantasy/ShinraElectric.jpg" :reference "* A nuclear meltdown, contrary to popular belief, does not involve nuclear material escaping from the cooling towers to spatter the area in nuclear waste. The reality is much worse. * When a fission reactor overheats sufficiently, it will literally 'melt down' through the floor. The core is so dense, that it will keep sinking until it hits bedrock, usually in the water table. * What happens next is nightmarish. The water becomes tainted with radioactivity and flows into wells, streams, rivers, and reserviors. It can poison tens of thousands of square miles in a frighteningly short time. * Worst of all, once a core melts down, it cannot be removed. It will continue pouring out radioactive water until the pile decays which can be a VERY long time indeed. * The Corcord 1 and 2 plants in New Hampshire sit astride the Connecticut River which flows between Vermont and New Hampshire, across Massachusetts, through Hartford and down to the Long Island Sound. This whole area would be poisoned in a meltdown not to mention the slow contamination of the body of water that touches New York City and the Atlantic Ocean." :summary "* Shinra is an electricity provider. Besides power lines, that means Coal and Nuclear.") "Standard Oil" (rule :name "Standard Oil" :image "Units/ModernFantasy/StandardOil.jpg" :reference "* So if I allow your employer to set up operations, they will build six hospitals and provide vaccines for two hundred thousand children living in poverty? What's the catch? We do have something of a corporate conscience, and it bothered our executives to think of all of the poverty and disease and suffering that would be within, well, spitting distance of the site...and if you should refuse this offer, we will make certain that every man, woman, and child in this fleabag of a country knows that you and you alone were responsible for turning down all those hospitals and medicines and jobs. - Regional Negotiations" :summary "* Standard is an international Oil and Petroleum product manufacturer including exploration, drilling, refining, trucking, shipping, gas stations, convenience stores, etc. * Every so often, Standard sponsors something on PBS to make itself known as a 'good corporate citizen', but in general, there is nothing to distinguish the company in the public mind from any other big corporation. Some see this as an advertising failure, but Standard considers this to be camouflage. * 'The cost of the fine is always less than the cost of compliance.' - Corporate policy is very simple: Make as much money as possible, as quickly as possible, with as little overhead as possible. This hell-bent-for-leather profitability grab makes the stockholders happy, though 'as little overhead as possible' translates to as few environmental and safety safeguards as possible. It also means as little maintenance on its tanker fleet as possible. * Of course they can't ignore environmental concerns completely, but they prefer to invest in ad campaigns that equate protecting the environment with lost jobs. Meanwhile, it makes high-profile, low content gestures toward responsibility to maintain the smokescreen. * In the Third World, Standard is especially powerful. They bribe or blackmail local governments to allow them to essentially establish independent fiefdoms complete with private armies. * Oil companys must always produce more oil, so Standard's research and exploration teams are well paid to find the oil WHEREEVER it lies. Oil doesn't respect national borders or religious sites, so neither do they.") "Tyrell Corporation" (rule :name "Tyrell Corporation" :image "Units/ModernFantasy/TyrellCorporation.jpg" :reference "* More Human Than Human - Blade Runner") "Umbrella Pharmaceutical" (rule :name "Umbrella Pharmaceutical" :image "Units/ModernFantasy/UmbrellaCorporation.jpg" :reference "* Our Business is Life Itself - Resident Evil * Regenerate's revolutionary T-Cell formula actually brings dead cells ... back to life. Now your youthful beauty can last ... forever. Always consult your doctor before starting treatment. Some side-effects can occur." :summary "* Pharmaceuticals * Conception Clinics - Umbrella sponsors fertility clinics and sperm banks. They take full advantage of the genetic material they receive and have been known to provide sperm of questionable origins to further their experimentation. They have councilors on staff to help the distraught mothers who for some reason feel that they have something unnatural inside them.") "United Fruit" (rule :name "United Fruit" :image "Units/ModernFantasy/UnitedFruit.jpg" :reference "* United Fruit had a deep and long-lasting impact in the economic and political development of several Latin American countries. Critics often accused it of exploitative neocolonialism and described it as the archetypal example of the influence of a multinational corporation on the internal politics of the so-called 'banana republics.' United Fruit became part of the present-day Chiquita Brands International.") :Weyland-Yutani (rule :name "Weyland-Yutani" :image "Units/ModernFantasy/WeylandYutani.jpg" :reference "* Building Better Worlds - Alien * Halliburton" :summary "* The Company is a manufacturing and construction firm known for innumerable no-bid public works projects for municipal governments and the military." :titles "The Company") "Yoyodyne Propulsion" (rule :name "Yoyodyne Propulsion" :image "Units/ModernFantasy/Yoyodyne.jpg" :reference "* Where the future begins tomorrow - Buckaroo Banzai * Numerous props in Star Trek series indicate that parts of Federation starships were manufactured by Yoyodyne Propulsion Systems or YPS. The creators of Star Trek: The Next Generation were noted fans of Buckaroo Banzai and featured many references to the film in the series." :summary "* Defense contractor"))))))
nx/tactics/books/modern_fantasy / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Modern Fantasy" :image "Vampire_Slayer_by_Prasa.jpg" :chaptermap (base/chaptermap "Modern Fantasy Overview" (chapter_modern_fantasy_overview) "Buffy the Vampire Slayer" (chapter_buffy_the_vampire_slayer) "Chronicles of Amber" (chapter_chronicles_of_amber) "Kengan Ashura" (chapter_kengan_ashura) "Matrix, The" (chapter_matrix_the) "Street Fighter" (chapter_street_fighter) "World of Darkness" (chapter_world_of_darkness) )))
nx/tactics/books/modern_fantasy / chapter_modern_fantasy_overview
Description:
Function Name:
  • chapter_modern_fantasy_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_modern_fantasy_overview : base/chapter (chapter :name "Modern Fantasy Overview" :sectionmap (sectionmap "Why Tactics: Modern Fantasy?" (section :name "Why Tactics: Modern Fantasy?"))))
nx/tactics/books/modern_fantasy / chapter_buffy_the_vampire_slayer
Description:
Function Name:
  • chapter_buffy_the_vampire_slayer
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_buffy_the_vampire_slayer : base/chapter (chapter :name "Buffy the Vampire Slayer" :sectionmap (sectionmap :Scoobies (section :name "Scoobies" :unitmap (unitmap "Buffy Summers" (unit :name "Buffy Summers" :image "Buffy/Buffy.png" :titles "The Slayer") "Rupert Giles" (unit :name "Rupert Giles" :image "Buffy/Giles.png" :reference "Ben: She could have killed me. Giles: No she couldn't. Never. And sooner or later, Glory will re-emerge and make Buffy pay for that mercy, and the world with her. Buffy even knows that, and still she couldn't take a human life. She's a hero, you see. She's not like us. Ben: Us? (Giles suffocates Ben)") "Willow Rosenberg" (unit :name "Willow Rosenberg" :image "Buffy/Willow.png" :reference "Buffy: You wanna go out tonight? Willow: Strangely, I feel like staying at home... and doing my homework... and flossing... and dying a virgin.") "Xander Harris" (unit :name "Xander Harris" :image "Buffy/Xander.png" :reference "Faith: She got me really wound up. A fight like that and, no kill. I'm about ready to pop! Xander: Really? Pop?! Faith: You up for it? Xander: Oh, I'm up. I'm suddenly very up. It's just, um, I've never been up with people before. Faith: Just relax. And take your pants off. Xander: Those two ... concepts are ... antithetical."))) :Independents (section :name "Independents" :unitmap (unitmap :Angel (unit :name "Angel" :image "Buffy/Angel.png" :reference "Angel: The elders conceived the perfect punishment for me. The restored my soul. Buffy: What, they were all out of boils and blinding torment? Angel: When you become a vampire, the demon takes your body, but it doesn't get your soul; that's gone. No conscience, no remorse, it's an easy way to live. You have no idea what it's like to have done the things I've done...and care." :titles "Angelus") "Cordelia Chase" (unit :name "Cordelia Chase" :image "Buffy/Cordelia.png" :reference "Cordelia: Xander, I know you take pride in being the voice of the common wuss, but the truth is, certain people deserve special priviledges - they're called winners. Xander: And what about that nutty 'all men are created equal' thing? Cordelia: Propaganda spouted out by the ugly and less deserving.") "Faith Lehane" (unit :name "Faith Lehane" :image "Buffy/Faith.png" :reference "Faith: ... You're still not seeing the big picture, B. Something made us different. We're warriors. We're built to kill. Buffy: To kill demons! But it does not mean that we get to pass judgment on people like we're better than everybody else! Faith: We are better!" :titles "The Slayer") :Spike (unit :name "Spike" :image "Buffy/Spike.png" :reference "Spike: I'll give you a choice. Now I'm going to kill you - no choice in that. But I can let you stay dead... or bring you back, to be like me. Willow: I'll scream! Spike: Bonus. [A short time later] Spike: I don't understand. This sort of thing's never happened to me before. Willow: Maybe you were nervous. Spike: I felt all right when I started. Let's try again. Spike: Ow ow ow! Dammit!! Willow: Maybe you're trying too hard. Doesn't this happen to every vampire? Spike: Not to me it doesn't!" :titles "William the Bloody"))) "Bad Guys" (section :name "Bad Guys" :unitmap (unitmap :Adam (unit :name "Adam" :image "Buffy/Adam.png" :reference "Adam: [After killing Professor Walsh, his first act of life] Mommy.") :Gentlemen (unit :name "Gentlemen" :image "Buffy/Gentlemen.png" :reference "Can't even shout, can't even cry. The Gentlemen are coming by. Looking in windows, knocking on doors. They need to take seven and they might take yours. Can't call to mom, can't say a word. You're gonna die screaming but you won't be heard. - Hush") :Glory (unit :name "Glory" :image "Buffy/Glory.png" :reference "Glory: Wait, I've always wanted to try this. You know that thing with worms, where if you have one and you rip it in half, you get two worms. Do you think that'll work with you? [Buffy headbutts her] Ow! You hit me. What are you crazy? You can't go around hitting people. What were you, born in a barn? Fine, be that way! [grabs Buffy by the throat] I just noticed something, you have superpowers, that is so cool. Can you fly? [throws Buffy across the room]" :titles "Glorificus, That Which Cannot Be Named, The Beast, Her Splendiferousness, Her Sparkling Luminescence, Oh Sweaty-Naughty-Feelings-Causing One") "Mayor Wilkins" (unit :name "Mayor Wilkins" :image "Buffy/Mayor.png" :reference "Do you think he was going to betray me? Oh, now, that's a horrible thought. And now he's dead, I'll never have the chance to scold him.") :Sweet (unit :name "Sweet" :image "Buffy/Sweet.png" :reference "I can bring whole cities to ruin and still have time to get a soft shoe in ... Something's cooking. I'm at the griddle. I bought Nero his very first fiddle."))))))
nx/tactics/books/modern_fantasy / chapter_chronicles_of_amber
Description:
Function Name:
  • chapter_chronicles_of_amber
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_chronicles_of_amber : base/chapter (chapter :name "Chronicles of Amber"))
nx/tactics/books/modern_fantasy / chapter_kengan_ashura
Description:
Function Name:
  • chapter_kengan_ashura
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_kengan_ashura : base/chapter (chapter :name "Kengan Ashura" :summary "* Kengan Matches - In Japan, wealthy business owners resolve disputes by hiring unarmed fighters to duel on their behalf. The match is form of high stakes gambling with large business interests on the line. Though the conflict appears to be fought on stage, a great deal of preparation, manipulation, and deception occur before, during, and after a match. * Rules - A Kengan member may make a 'reasonable' bet of another and challenge them to a Kengan match. The challenge is made known to the other members who may attend and bet on the results. The challenged party may agree to the duel, object, or decline. If they duel, each party chooses a champion and agree to a venue. The results of the battle must be adhered to. Win or lose, both parties rise in status for making the attempt. If the challenged party objects, they may counter offer or claim the challenge is unreasonable. Such disputes are decided by concensus vote among the other members. Poor challenges or objections are frowned upon. If the challenged declines, they are considered to have forfeited and must adhere to the terms and lose status for not participating. * History - During the Edo period of Japan, wealthy merchants stuggled for the best business dealings especially for the Shogun's business needs. Conflicts between merchants became increasingly bloody and reckless until the Shogun put a stop to it by announcing that all such conflicts must be resolved in a single-combat, unarmed duel. The tradition was very successful at keeping the peace and continues to this day."))
nx/tactics/books/modern_fantasy / chapter_matrix_the
Description:
Function Name:
  • chapter_matrix_the
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_matrix_the : base/chapter (chapter :name "Matrix, The" :sectionmap (sectionmap "The Matrix" (section :name "The Matrix" :reference "* Welcome to the desert of the real. - Morpheus * What is 'real'? How do you define 'real'? - Morpheus * You are a slave, Neo. Like everyone else you were born into bondage. Into a prison that you cannot taste or see or touch. A prison for your mind. - Morpheus * Did you know that the first Matrix was designed to be a perfect human world? Where none suffered, where everyone would be happy. It was a disaster. No one would accept the program. Entire crops were lost...human beings define their reality through suffering and misery. The perfect world was a dream that your primitive cerebrum kept trying to wake up from. - Agent Smith") :Units (section :name "Units" :unitmap (unitmap "Agent Smith" (unit :name "Agent Smith" :reference "* I hate this place. This zoo. This prison. This reality, whatever you want to call it, I can't stand it any longer. It's the smell, if there is such a thing. I feel saturated by it. I can taste your stink and every time I do, I fear that I've somehow been infected by it. - Agent Smith * You move to an area and you multiply and multiply until every natural resource is consumed and the only way you can survive is to spread to another area. There is another organism on this planet that follows the same pattern. Do you know what it is? A virus. Human beings are a disease, a cancer of this planet. You're a plague and we are the cure. - Agent Smith"))))))
nx/tactics/books/modern_fantasy / chapter_street_fighter
Description:
Function Name:
  • chapter_street_fighter
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_street_fighter : base/chapter (chapter :name "Street Fighter" :sectionmap (sectionmap "World Warriors" (section :name "World Warriors" :unitmap (unitmap :Blanka (unit :name "Blanka" :image "StreetFighter/BlankaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Capoeira (unitspecialty :name "Capoeira"))))) :Cammy (unit :name "Cammy" :image "StreetFighter/CammyToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Commando Training" (unitspecialty :name "Commando Training"))))) :Chun-Li (unit :name "Chun-Li" :image "StreetFighter/Chun-LiToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Wu Shu" (unitspecialty :name "Wu Shu"))))) :Dhalsim (unit :name "Dhalsim" :image "StreetFighter/DhalsimToken.png" :unitskillmap (unitskillmap :Flexible (unitskill :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Leg Stretch" (unitability :name "Leg Stretch"))))) "E. Honda" (unit :name "E. Honda" :image "StreetFighter/EHondaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Sumo (unitspecialty :name "Sumo"))))) :Fei-Long (unit :name "Fei-Long" :image "StreetFighter/Fei-LongToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Kung Fu, Dragon Style" (unitspecialty :name "Kung Fu, Dragon Style"))))) :Guile (unit :name "Guile" :image "StreetFighter/GuileToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap "Commando Training" (unitspecialty :name "Commando Training"))))) :Ken (unit :name "Ken" :image "StreetFighter/KenToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate"))))) :Ryu (unit :name "Ryu" :image "StreetFighter/RyuToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate"))))) :Zangief (unit :name "Zangief" :image "StreetFighter/ZangiefToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Wrestling (unitspecialty :name "Wrestling"))))))) :Shadaloo (section :name "Shadaloo" :unitmap (unitmap :Balrog (unit :name "Balrog" :image "StreetFighter/BalrogToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Boxing (unitspecialty :name "Boxing"))))) "M. Bison" (unit :name "M. Bison" :image "StreetFighter/MBisonToken.png" :reference "You come to fight a madman, and instead find a god? Do you still refuse to accept my godhood? Keep your own God! In fact, this time may be a good time to pray to Him!" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "9"))) :Sagat (unit :name "Sagat" :image "StreetFighter/SagatToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitabilitymap (unitabilitymap "Knee Strike" (unitability :name "Knee Strike")) :unitspecialtymap (unitspecialtymap "Muay Thai" (unitspecialty :name "Muay Thai"))))) :Vega (unit :name "Vega" :image "StreetFighter/VegaToken.png" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "8" :unitspecialtymap (unitspecialtymap :Ninjutsu (unitspecialty :name "Ninjutsu"))))))))))
nx/tactics/books/modern_fantasy / chapter_world_of_darkness
Description:
Function Name:
  • chapter_world_of_darkness
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_world_of_darkness : base/chapter (chapter :name "World of Darkness" :sectionmap (sectionmap :Technocracy (section :name "Technocracy" :reference "* Science is the key. Learn it. Love it. Live it. * One World. One Truth. One Reality. * ...both sides are becoming identical. What, in fact, is being created: an international community, a perfect blueprint for World Order. When the sides facing each other realize that they're looking into a mirror, they will see that THIS is the pattern for the future. - #2, The Prisoner: Chimes of Big Ben * We apologize for the inconvenience. - God's Final Message - Douglas Adams, So Long and Thanks for All the Fish" :summary "* A world-wide conspiracy that employs a technological paradigm called Enlightened Science to pursue an agenda promoting safety of the world over freedom. Considering the influence they have had over the world, some would say they are the most powerful organization ever known. * Capturing the Hearts and Minds - The Technocracy understands that reality is subjective and that it conforms to the collective will of humanity. Their agenda is to guide the beliefs of mankind to secure humanity from the chaos that surrounds us on all sides. To do this, they must guide our beliefs, removing belief in dangerous things and replacing it with belief in things that can be used to defend and better mankind. Of course, in order to do this they must control what the people believe in and completely stamp out anything that conflicts with their model of the future. Those who do not meet their criteria are labeled Reality Deviants. * Reality War - Because of its strong stance against reality deviancy, the Technocracy is essentially at war with all supernatural beings, including vampires, werewolves, and other mages. In practice, this conflict is a cold war, and the Technocracy has had far more success in proving to the masses that supernatural beings do not exist rather than eliminating them directly. Many beings, such as changelings and 'bygones' (mythic beasts such as dragons, manticores, and harpies) will simply cease to exist if the world stops believing in them. * The Price of Safety - The Technocracy champions science as a way to better and secure mankind while rejecting any innovation not approved by its own leadership. In this way, its agenda prevents effective criticism as it can always claim its ideological opponents are themselves against the benefits of science, many of which the Technocracy itself opposes while claiming to uphold. * Enlightened Science - In place of mysticism, the Technocracy uses Enlightened Science. It advances scientific methods and principles (along with the technology they produces), the spread of capitalist market-forces, and the application of political power. Roughly one in ten Technocrats can use true Enlightened Science and almost all believe their technology is so advanced that it only appears magical. Enlightened Science is all about moving the edge of knowledge forward, turning the unknown into the known, doing what's never been done before and hammering it into forms that work. Repeatedly. Reliably. Universally. * All Technocrats regardless of their enlightenment, use some sort of carefully constructed device. By their own definition, reality alteration without some sort of material basis is superstition. * Paradox and Enlightened Science - Like mysticism, Enlightened Science is subject to Paradox. The larger, more public, and more unlikely the effect, the large the potential for spectacular failure. Highly experimental science is best done in tightly controlled laboratory environments. * Be Seeing You - Watchwords stated to remind a fellow agent he will always serve the Technocracy. Precepts * Bring stability and order to the universe. Predictability brings safety. * Define the nature of the universe. Knowledge must be absolute or chaos will envelop all. * Preserve the Gauntlet. Dangerous outside forces must be banished from the Earth. * Destroy Reality Deviants. Their recklessness threatens us all. * Shepherd the masses. Protect them from themselves by convincing them of the benefits of science and rationality. Conflict and suffering will be eliminated in our Utopia. History * Ancient World - Science and Magic coexisted for much of human history. Witchdoctors, Shamans, and Druids dominated their societies. Magic was as much trickery as substance because no one could prove a real Mage from a fake. Those with the real gift, however, steadily used it to gain individual power. * Rome - With the growth of the Roman Empire, Mages found that they lacked the organization necessary to hold off the Romans. Their people who had trusted in their magical leaders were disheartened by the inability of their magic to turn away the Romans. * Mythic Age - Without support from the people, the Mages were largely forced into hiding and into secret cabals and orders. Normally, Mages rarely had shared information, but now they were forced to share their knowledge within their Orders and this knowledge created a golden age for magical discovery. The Orders could not act publicly, but they were able to use their magic to subtley gain great influence in society. * Dark Ages - After the fall of the Roman Empire and with the coming of the Black Plague, the world was cast into fear and superstition. Reaon was at its weakest and the power of Mages was at its height. During this period, individual Mages controlled the gifts of Magic while the commoners languished in misery. * Craftmasons - The Craftmasons Guild of enchanters took on the mission of creating magical items that could be used by those without the gift. The guild found that in order for a lay person to use a magical item, he would have to believe that the item was not magical. To do this, the people would have to be convinced that the device was only a clever invention. This meant gradual development and regular public displays to allow the publich to accept each small enhancement. * Fall of Mistridge - After years of ideological conflict between the Craftmasons and the Mage Orders, the Craftmasons arranged an attack on Mistridge, the center of power of the Hermetic Orders. Peasants and spies created the distraction while the newest invention was rolled out, the cannon. Mistridge was soon demolished and the Craftmasons began their reign. * Inquisition - After the defeat of the Hermetic Orders, arrangements were made to set the public out to track down and eliminate the Order Mages. This culminated in the Inquisition under which many Mages and innocents were burned at the stake. * Renaissance - After centuries of steady progress, the Craftmasons' plans began to bear fruit and a new Age of Reason came upon man. Early Science, however, was just as outlandish as Magic, so inventions like Da Vinci's actually functioned at that time. Many of the most famous Techocrats developed during this period: Gutenberg, Copernicus. With the advent of the printing press, the Craftmasons were now able to communicate their ideals to a wider audience and to begin editing history that did not agree with their paradigm. * Victorian Era - As the power of the Craftmasons increased, they began to become fragmented into different specialties and disciplines called Conventions. This further fragmented into distinct idealogical groups concerned with nothing less than the destiny of humanity. In their minds, the Conventions have the power to direct the development of mankind in any way they see fit. What way to choose became hotly contested. The Sons of Ether actuallly walked out of the Conventions when it was deemed that their Convention would no longer be acceptable in their new world model. * World Wars - With the rise of Hitler, many within different regional Conventions found that they believed in his mission and began supporting his effort. Simultaneously, others began supporting the Allies. This led to a disaterous arms race within the Conventions that was fortunately resolved before it became completely out of control. Since then the Conventions have dismantled their regional control and focused on a single power structure with a global mission. Some, however, are still unhappy with this authoritarian approach. * Modern Era - The Technocracy has established bases of operation deep in the Ether, away from Paradox, and have already perfected artificial intelligence, cloning, cybernetics, fantastic methods of transportation, and mind shattering innovations in artificial life. These are even now being slowly introduced to the world. Scenarios: * Contain Reality Deviants * Recruit New Members * Establish a Front - The Technocracy mostly operates indirectly through other organizations, so it must maintain a number of front groups. * Investigate the Unknown * Internal Affairs * Contain Internal Threats * Explore the Depths * Everyday Living Viewpoints: * Marauders - Call for backup then kill on sight. These insane chaos mages threaten everything the Technocracy stands for and must be removed at all costs. * Demons - Wait for backup then eliminate. Demons are powerful opponents and will require a team to take down. * Nephandi - Report any suspected encounter, but do not engage without explicit orders. The Nephandi are subversive and exposing their plots are far more important than eliminating individuals. * Mages - Observe and report. Tradition mages act in direct opposition to the Technocracy, but they are not necessarily dangerous and can certainly be reasoned with. We have many Mages under observation at any given moment. Violence is a last resort. * Vampires - Observe but do not engage. Minimal threat. Vampires are well known to the Technocracy. Their low body heat makes them easy to track with infrared. Cities are choked with the bloodsuckers, but they actively cover their own tracks, so they are low on the agenda. What the Technocracy does not realize is the massive influence that Vampires possess through the Blood Bond and that the Technocracy itself is being manipulated by various Vampire factions to do their dirty work. * Werewolves - Observe but do not engage. Werewolves are extremely powerful combatants and direct engagement can be suicide even for well equipped teams. Our agenda of causing the public to disbelieve in supernatural beings seems especially effective on werewolves. Their numbers are declining, and even direct sightings are dismissed as animal encounters. With patience the werewolves will simply disappear on their own. The Technocracy is completely unaware that its greatest threat is actually the Wyrm (which they consider primitive Werewolf superstition). The Technocracy's goals fall directly into the hands of the Wyrm, and the Technocracy itself has already been so corrupted at the highest levels that it is practically a pawn of the Wyrm. * Faeries - No threat. Race almost extinct. Await confimration of extinction. * Ghosts - Report any encounter. Usually no threat." :sectionmap (sectionmap "Iteration X" (section :name "Iteration X" :summary "* Iteration X is dedicated to the adoption of the precision, speed, and unity that machines offer over flesh. They invest heavily in cybernetics, robotics, automation, and artificial intelligence. They are typically calculating and coldly rational. They are famous for being slow to action and tending to be bureaucratic in their attention to detail. * The merger of body and machine frightens other conventions. Implants could track, observe, or control every move, thought, or bodily function. Implants seem to also cause their users to become distant, inhuman, and sometimes dangerous." :titles "Clockwork Convention" :locationmap (locationmap :Autocthonia (location :name "Autocthonia" :summary "* Description - A metallic Horizon Realm the size of a moon. It was discovered by the Void Engineers, but Iteration X has taken charge of its exploration. Autocthonia seems to represent the mechanical precision of Iteration X's ideal world. It is ruled by logic instead of emotions without fear or pain. Others fear that this 'ideal' has no room for anything remotely human.")) :unitmap (unitmap :Biomechanic (unit :name "Biomechanic" :summary "* BioMechanics focus on using cybernetic implants to achieve a man-machine interface.") "Central Computer" (unit :name "Central Computer" :summary "* Iteration X has installed a massive central computer system on Autocthonia. It is the central hub tied to all Iteration systems. The Iteration believes so strongly in the infallible nature of the Central Computer that all of the convention's decisions are made in consulation with the Central Computer. * Some fear that Iteration X relies too heavily on the Central Computer which has become their master instead of their servant. Many see their trust in the Central Computer to have become worship. Pessimists wonder if the Central Computer is something more than just a computer system." :titles "Great Computer") "Iteration Cyborg" (unit :name "Iteration Cyborg") :Macrotechnician (unit :name "Macrotechnician" :summary "* Macrotechnicians focus on the construction of optimal equipment for other Iterators.") "Iteration Statistician" (unit :name "Iteration Statistician" :summary "* Statisticians focus on the use of predictive models and simulations to anticipate future events. They believein gathering massive amounts of data and number crush to discover patterns that have not been previously noticed.") "Time-Motion Manager" (unit :name "Time-Motion Manager" :summary "* Time-Motion Managers focus on the maximization of efficiency and the design of information technology."))) "New World Order" (section :name "New World Order" :reference "Men In Black (movie)" :summary "* The New World Order's highest priority is the conversion of the hearts and minds of the masses. They are the most humanistic of the conventions, relying on human interaction, psychology, and messaging instead of technology. By shaping the beliefs of the public, they strengthen the consensual reality paradigm of the Technocracy. * They also act as the hiring source for the entire technocracy for low to mid level staff. Other conventions sometimes express concern that some of these accountants, secretaries, and janitors are actually the eyes and ears of the NWO. * Critics see the NWO as extremely sinister, and that their social agenda is a blatant attempt at mind control and ultimately world domination. !Units !Skills * +1 [[Domination]], +1 [[Espionage]], +1 [[Research]] !Tactics * Eliminate reality deviants of all kinds !Divisions * The Ivory Tower: Performs the bulk of Control's administrative tasks and directs the Union's policies. * Operatives: Focus on using covert operations and counter-intelligence within the Technocracy. * Q Division: Design and create the equipment used by the New World Order. * Watchers: Focus on surveillance and media control to monitor the masses. !Titles * Adviser * Editor * Educator * Field Observer * Intelligence Analyst * Internal Affairs - 'Who watches the watchmen?' * Men In Black - Shocktroops * Reporter * Operative - Covert Ops * Public Relations * Sympathizer - Sleeper indoctrinated into believing in the NWO's goals without revealing the NWO itself." :titles "NWO" :unitmap (unitmap "Public Relations (NWO)" (unit :name "Public Relations (NWO)" :summary "* Smooth talking spin-doctors whose sole responsibility is to massage public opinion. They obtain positions in different organizations as PR men and women, and they make sure that the messsage that the public receives is always the same: there is a logical explanation; there will be an investigation to get to the bottom of it; there is nothing to worry about." :titles "Man in Gray"))) :Progenitors (section :name "Progenitors" :summary "* The Progenitors believe that living things are more wonderous than machines can ever be. They are dedicated to the analysis and enhancement of all living things and to grant humans to super human abilities. * Cloning, genetic engineering, advanced surgery, and phamacology are their primary tools. * History - The Progenitors strongly associate themselves with agriculture and the medical field. They traces their modern roots to Hippocrates and the Hippocratic Oath. In the past, the Progenitors experimented heavily with grafting body parts from different creatures together, but these techniques are considered outdated compared to the modern genetic and pharmacology sciences. !Group !Preferred Skills * [Life], [Mentalism], [Medicine], [Pharmacology] !Divisions * Damage Control: Engineers genetic monsters, tailored viruses and other biological warfare. * FACADE Engineers - Focus on cloning, biological implants, grafts, and other alterations. Also known as the Forced Adaptation and Clone Alteration Developmental Eugenicists. Their cloning techniques have given the elite Progenitors a form of immortality, transferring minds from aging bodies into new clones. Cloning has also given them a deadly espionage force. * Pharmacopoeists: Focus on the development and control of drugs, medicines, and narcotics. ** They exert a subtle and growing influence on the masses as the use of prescription drugs becomes increasingly commonplace. ** One of their goals is to slowly destroy the masses' sleeping Avatars to control them and to protect them from the awesome power that lies in each of us. !Devices * Clone Tank * DNA Samples * Pills" :unitmap (unitmap "Progenitor Security" (unit :name "Progenitor Security" :summary "* Created by Damage Control, they are the front line security detail for any Progenitor operation. They are fearless and know little besides combat." :titles "Blank, Pawn") "Damage Control" (unit :name "Damage Control" :summary "* Damage Control is the security wing of the Progenitors. They focus on weaponizing cloning, implants, and tailored viruses.") "Glamor Trap" (unit :name "Glamor Trap" :reference "* Keep young and beautiful, It's your duty to be beautiful. Keep young and beautiful If you want to be loved. - Annie Lennox, Keep Young and Beautiful" :summary "* The Progenitors have created a number of clones carefully bred to be have perfect eyes, hair, and bodies. They are mentally simplistic and suffer from myriad emotional and psychological problems though they can still pass as human. * These clones were introduced to the media and immediately became models, starlets, and other celebrities. Now women flock to the stores and hospitals for diet formulas, cosmetics, facelifts, implants, and other surgeries all in the attempt to reach the impossible goal of making themselves look like the produced perfect women. Men are slowly being indoctinated as well through hair loss and male potency products.") :Genegineer (unit :name "Genegineer" :summary "* Genegineers focus on harnessing the power of applied genetics. * Since the cloning of Dolly the sheep in 1996, cloning technology has become more acceptable to the masses (if feared). The Genegineers can now produce tailored clones for any occasion. They are physically perfect, but every clone invariably has glaring mental deficiencies. * The excesses of the Genegineers can be truly frightening. Botched creations often die horribly or spectacularly after 'birth'. Successful creations have no rights are routinely abused, enslaved, experimented on, and exterminated." :titles "Clone Arranger, Eugenist, Mutagenic Engineer"))) :Syndicate (section :name "Syndicate" :reference "* The real question was this: Was all this legal? Absolutely fucking not, but we were making so much money we didn't know what to do with it. - Wolf of Wall Street * Godfather * Pay the man." :summary "* Money is Reality. The masses shared belief in currency makes human civilization possible. To the Syndicate, wealth equals prosperity. Economic power has always exceeded military power, and hopefully economic warfare will eventually make conventional warfare obsolete. * The Syndicate is a largely invisible organization. They do not maintain bases or headquarters. Members usually have full-time jobs in business and finance where they can exercise their power in the course of their day to day activities. Syndicate members are notorious for their lack of morality, working with anyone who can turn a profit. They have ties to every major financial institution including: the World Bank, stock exchanges, hedge funds, oil corporations, tobacco corporations, organized crime, drug trafficers, and military dictatorships. The Syndicate just considers these groups as investments and will invest or divest as their stock rises and falls. * The Syndicate provides most of the financing for the other conventions. * Some are concerned that the Syndicate holds the purse strings of the Technocracy and holds too much influence over the direction of the other conventions. Others worry that the money they receive is blood money, since the Syndicate holds money over morality. Futher concerns surround the Syndicate's heavy lobbying, advertising, and political influence." :unitmap (unitmap "Syndicate Enforcer" (unit :name "Syndicate Enforcer" :summary "* Enforcers work in law enforcement, the judicial system, and the criminal underworld. They influence both the criminals that the masses fear and the police and judges to whom they turn to for protection. They make sure that the bills are paid and the contracts are kept.") "Syndicate Financier" (unit :name "Syndicate Financier" :summary "* The Financiers work in positions of finanical influence and perform silent adjustments to the flow of global commerce.") "Syndicate Messenger" (unit :name "Syndicate Messenger" :summary "* The Messengers work in advertising. Their mission is more than just selling products, they are in charge of shaping trends. They build demand for entire product segments. Among many other things, this includes creating conflict to spur military spending."))) "Void Engineers" (section :name "Void Engineers" :reference "* But tell me, did you sail across the sun? Did you make it to the Milky Way. To see the lights all faded. And that heaven is overrated? - Train, Drops Of Jupiter" :summary "* Dedicated to the study, colonization, and eventual control of realms beyond Earth. Their satellites and outposts stand vigilant watch over terrestrial and extraterrestrial threats. * The Void Engineers are rugged individualists with an unusual number of idealists. They do not get along well with the other Conventions. The NWO feels that the Void Engineers encourage fantastic thoughts in the public minds and therefore encourage reality deviants. The Syndicate regularly cuts the funding that the Void Engineers so desperately need. Some speculate that the Void Engineers would join the Sons of Ether if they didn't rely so heavily on funding. * A large number of this Convention live off Earth and some have no desire to return. Other Conventions are concerned that the Void Engineers have grown contemptuous of earthly pursuits, and that they are becoming as alien as the threats the Technocracy is defending against. A number of Void Engineers have returned from missions strangely changed and with unexplained gaps in data logs. Another enormous issue is Copernicus Research Center. Where did it come from? Why do the Void Engineers avoid discussing what goes on there? It is just too convenient to 'find' an uninhabited Dyson Sphere with an Earth-like gravity and atmosphere." :unitmap (unitmap "Copernicus Research Center" (unit :name "Copernicus Research Center" :summary "* An fantastically immense space station in the form of a Dyson Sphere") "Earth Frontier Corp" (unit :name "Earth Frontier Corp" :summary "* The Earth Frontier Corp continues to investigate the wonders of the extreme environments on Earth including the ocean deep, frozen poles, rain forests and jungles, inaccessible mountain-tops, and underground caverns.") "Neutralization Corp" (unit :name "Neutralization Corp" :summary "* The Neutralization Corps is responsible for identifying and eliminating Reality Deviants already on Earth. This includes alien landings, dimensional incursions, hauntings, etc. The NWO usually handles witnesses and media fallout.") "Pan Dimensional Corp" (unit :name "Pan Dimensional Corp" :summary "* The Pan-Dimensional Corps: Responsible for the exploration and study of the Deep Universe, the Digital Web and other alternate dimensions, including time itself.") "Research Corp" (unit :name "Research Corp" :summary "* The Research Corp is responsible for the development of dimensional science, the Technocratic study of the Umbra.") "Void Border Corp" (unit :name "Void Border Corp" :summary "* The Border Corps is responsible for repelling invasions from beyond the reaches of Earth. They maintain heavily armed spaceships, dimensional craft, and marines."))))) "Mages, Traditions" (section :name "Mages, Traditions" :reference "* There's a butterfly trapped in a spider's web. That's my soul up there. - The Police, King of Pain" :summary "Akashic Brotherhood Celestial Chorus Cult of Ecstasy * The Ecstatics are visionaries, shamans, and adventurers of the senses. * Out of music, dance and passion, the Cult of Ecstasy creates the magic of entrancement and exhilaration. Pushing past the boundaries and comfort zones of humanity, they seek the ultimate experience. They're the descendants of ancient ascetists - although now they use drugs, sex, piercing instead of meditating alone. * Though Cultists pursue sex, drugs, meditation, holistic living, music, and vision quests as focusing tools, serious Ecstatics consider these to be sacraments, not hobbies). * Give yourself over to absolute pleasure, Swim the warm waters of sins of the flesh. Erotic nightmares beyond any measure, and sensual daydreams to treasure forever. - Dr. Frank N. Furter, The Rocky Horror Picture Show Dreamspeakers Euthanatos Order of Hermes Virtual Adepts * Technolgy is a tool to empower individuals. The Technocracy has forgotten that goal. They see technology as a force to enslave the Masses, not liberate them. They're fanatics. That's why I'd do anything to destroy them. - Zarathursta, Virtual Adept" :sectionmap (sectionmap "Sons of Ether" (section :name "Sons of Ether" :unitmap (unitmap "Void Ship" (unit :name "Void Ship" :reference "* Flying Dutchman * Mage: Sons of Ether * Space 1889 * Spelljammers" :summary "* A Void Ship is designed to travel between realms through the [Aether]." :titles "Aether Flyer, Void Cruiser"))) :Verbena (section :name "Verbena"))) :Marauders (section :name "Marauders" :summary "* Mages who have fallen into Quiet which has warped around them into personal [Paradox] Bubble fantasy worlds that wreck havoc on those around them. Their Quiet blends the real world with their fantasy world. From the outside perspective, the Marauders are dangerously insane.") :Nephilm (section :name "Nephilm" :summary "* Nephandi - Their Avatars are 'inverted' (destroyed and recreated to server their dark masters).") "Wraiths and Spectres" (section :name "Wraiths and Spectres" :summary "* See Bestiary") :Changelings (section :name "Changelings" :reference "* Alice's Adventures in Wonderland - Lewis Carroll" :summary "* Changlings are Fae that have bonded with human hosts. * Changling stories tap into the roots of wonder and rediscover the world through the eyes of legend. In many ways, the lost children of the Fae are metaphors for our lost youth, and the World of Darkness mirrors the heartless society to which we are so resigned. By surrendering to the call of imagination, we can recapture some of our lost innocense. We can learn to laugh and weep again, for not all stories have happy endings, we can learn to remember. It is a journey between memory and forgetfulness, between dreams and reality, between wonder and banality.") :Spirits (section :name "Spirits" :summary "* Bane - A corruption spirit that exists in the [Spirit Realm]. * [Bane]s are attracted to hatred, cruelty, lust, and fear, and they are repelled by happiness, generosity, love, and kindness. Nature Spirit Pattern Spider" :unitmap (unitmap "Bane, Disease" (unit :name "Bane, Disease" :summary "* These repulsive Banes appear like blood covered bags of pus. They are drawn to plagues, cesspools, medical waste, etc.") "Bane, Madness" (unit :name "Bane, Madness" :summary "* These formless spirits wear down the sanity of those exposed to them with disembodied voices, disturbing visions, and horrible shrieking.") "Bane, Poison" (unit :name "Bane, Poison") "Bane, Radiation" (unit :name "Bane, Radiation"))) :Abominations (section :name "Abominations" :reference "Perhaps it started as an ulcer, a hole eaten away from inside. From a life of giddy possibilities, to unpleasant setbacks, still met with love, falling into an endless downward scream of missed chances, commitments, and hatred locked down, simmering hatred for everyone and everything. Like cancer, it began inside. - Freak Legion, World of Darkness" :summary "* A Fomor is a creature possessed by a [Bane] (a corruption spirit). * When a person experiences dark emotions, a [Bane] may gain entry and hide in the victim's mind waiting to exploit and intensify further darkness and bring the person down the road of corruption. * During the possession period, the [Bane] may be renounced or the [Bane] may be attacked in the [Spirit Realm]. * After possession, a slow transformation process begins. The [Bane] burrows into the deepest recesses of the victim's soul, becoming privy to all the person's memories, hopes, dreams, and fears. In exchange, the person is flooded with the [Bane]'s poisonous, black thoughts of murder and destruction. The process is a horrible violation, a rape most vile. When this process completes, the person permanently becomes a Formor. * The rest of a Formor's life is miserable, brutal, and short. Most take their suffering out on others including their own kind." :titles "Fomori, Monstrosities" :unitmap (unitmap "Corrupted Animal" (unit :name "Corrupted Animal" :summary "* [Corruption]") "Hollow Man" (unit :name "Hollow Man" :reference "* They're good for us. They kill the bad things inside us...What you're supposed to do is eat it. You eat as much as you can and you keep eating it. - The Stuff" :summary "* A person infested by parasites, insects, or small animals. The hapless victim has become completely hollowed out by its unwanted tenants, but is somehow still alive. The Hollow Man is desolate, immobile, and empty without the possessing colony, but they are poor company at best.") :Normality (unit :name "Normality" :reference "Hate Crimes" :summary "* Normalities are ghastly creatures that were once human but have been transformed into blank, sexless horrors. All Normalities appear exactly identical: thin, sexless, hairless, and faceless except for a slash of a mouth. With heavy clothing they may briefly pass for human. * Personality - Normalities have a hatred of all things different (which includes everything except themselves). They are homicidal with a particulary strong reaction to those who choose to flaunt their differences (e.g. piercings, tattoos, goths, punkers, women wearing pants) * History - The Normalities are created as part of a horrific treatment that pretends to be a cure for homosexuality. Indeed, the treatment does cure homosexuality, as well as any sexuality and finally humanity." :titles "Normals" :unitskillmap (unitskillmap :Hunting (unitskill :name "Hunting"))) "Seventh Generation" (unit :name "Seventh Generation" :summary "* Seventh Generation is a Wyrm cult dedicated to the absolute domination of men over women and children. It encourages child abuse, spousal abuse, misogyny, pedophilia, and even murder and cannibalism. Their membership is composed of an interlocking network of politicians, businessmen, corrupted clergy, military officers, millionaires, and even serial killers. Each member is a twisted individual drawn together by the commonalities of their vile appetites. * Seventh Generation sponsors child foster care facilities. These facilities are like boot camps and are very successful at teaching children to follow instructions unquestioningly. This discipline comes at the price of the child's sense of self-esteem. The final steps are to place the child in abusive and alcholic homes. There abuse and inferiority come naturally. When the children mature, they are perfect fodder for Umbrella.") :Throwback (unit :name "Throwback" :reference "Bouncers, Frat Boys, Jocks, Weight Lifters" :summary "* Appearance - Throwbacks are hulking, musclebound, prettyboys who are constantly looking at themselves. * History - Throwbacks begin as insecure guys who want to increase their bodies or their manhood. The enhancements they receive brings out all of the worst male tendencies and exaggerate them to a homicidal degree. Vanity, violence, and sexual aggression all warp them into virtual cavemen who care for nothing but fighting, sex, and pumping iron."))) "Modern Fantasy Terms" (section :name "Modern Fantasy Terms" :rulemap (rulemap "Consensual Reality" (rule :name "Consensual Reality" :summary "* When the majority of people believe in something, that something comes into being. When the nature of a place differs from the new beliefs about it, a separation occurs. The Shattering, the Gauntlet, and the Veil shows what happens during this separation. This is the Technocracy's legacy and its goal: to replace lands of wonder by convincing us they do not exist.") :Paradox (rule :name "Paradox" :reference "* If we ask whether the position of the electron remains the same, we must say 'no'; if we ask whether the electron's position changes with time, we must say 'no'; if we ask whether the electron is at rest, we must say 'no'; if we ask whether it is in motion, we must say 'no'. The Buddha has given such answers when interrogated as to the conditions of a man's self after death. - Robert Oppenheimer * A hundred years ago paradox meant error to the scientific mind. But exploring such phenomena as the nature of light, electromagnetism, quantum mechanics and relativity theory, science has matured to the point where it is increasingly recognized that at a certain level reality is paradoxical. - M. Scott Peck, M.D., The Road Less Traveled" :summary "* The natural order of things must be consistent. Magick creates inconsistency displacing the natural order. Fortunately, the fabric of reality will bend before it will break. The tension generated by this bending is Paradox energy. Eventually, however, the fabric must snap back into place. This can physically damage the mage, cause Paradox Flaws, force the Mage into [Quiet], or actually fling the mage into a [Paradox Realm]."))) "Godlike Entities" (section :name "Godlike Entities" :summary "Weaver * Measures the thread of life !References * Lachesis / The Allotter Wyld * Spins the thread of life !References * Clotho / The Spinner Wyrm * The cutter of the thread of life !References * Atropos / The Unturning * Sitting in a bunker here behind my wall Waiting for the worms to come. In perfect isolation here behind my wall Waiting for the worms to come. Waiting to cut out the deadwood. Waiting to clean up the city. Waiting to follow the worms. Waiting to put on a black shirt. Waiting to weed out the weaklings. Waiting to smash in their windows And kick in their doors. Waiting for the final solution To strengthen the strain. Waiting to follow the worms. Waiting to turn on the showers And fire the ovens. Waiting for the queers and the coons and the reds and the Jews. Waiting to follow the worms. Would you like to see Britannia Rule again, my friend? All you have to do is follow the worms. Would you like to send our colored cousins Home again, my friend? All you need to do is follow the worms. - Pink Floyd, The Wall") "Modern Fantasy Places" (section :name "Modern Fantasy Places" :summary "Places Earth Arcadia The land of the Fae. !References * Notwithstanding the beauty of this country of Faerie, in which we are, there is much that is wrong in it. If there are great spleandours, there are corresponding horrors; heights and depths; beautiful women and awful fiends; noble men and weaklings. - George MacDonald, Phantastes Dreamworlds Dreamworlds are entire realms fashioned from the dreams of living beings. Each person has their personal dreamworld each the size of a planet. There are also dreamworlds clearly made from the collective dreams of many beings. Whether our own world is a dream created by others is a matter of philosophy and point of view. * Land of Nod * Twilight Zone !References * FROM breakfast on through all the day At home among my friends I stay, But every night I go abroad Afar into the land of Nod. - The Land of Nod - Robert Louis Stevenson Hollow World * The Hollow World is a realm that coexists with the interior of the planet as does the [[Underworld]]. * Major portals to the Hollow World exist and both North and South Poles. * Certain Volcanoes and underwater passageways hold portals. * Deepest sub-basements and catacombs are also possible portals. !References * Journey to the Center of the Earth * Land of the Lost * Down a Rabbit Hole - Lewis Carroll ** [Alternate Timelines] ** [Dreamworld] ** [Elysium] Solar System * Sun * Mercury * Venus ** [Venusian Jungle] * [Moon] ** [Darkside Moon Base] * Mars * Asteroid Belt * Jupiter * Saturn * Uranus * Neptune * Pluto ** [Yuggoth] Spirit Realm * This is the world of the spirit. !Attributes * Only nature spirits inhabit this realm, though elves and other Fae folk often travel to the Spirit Realm. * Animals, plants, Elves, and other Fae go to the Spirit Realm after death. * The Spirit Realm mirrors the spiritual health of the material world. * All Spirit and Nature skills are at +2 in this realm. !Units * [Bane] * [Elves] * [Fae] * [Lycanthropes] Underworld * The Underworld is the world of the dead and home of the Wraiths and Spectres. It appears that the Underworld is within the hollow Earth, but the Underworld is actually a separate Realm. It is a realm of eternal night containing a series of bleak islands in a sea of soul stuff slowly circling a whirlpool leading to a Black Hole, the Anti Sun, [[Oblivion]]. As a [[Wraith]] loses its connections with the living it is drawn closer to the [[Tempest]] and [[Oblivion]]. * Stygia is the Western capital of the Underworld. !Abilities +3 Necromancy !Titles * Hell * Hades * Shadow Realm * Yomi Shroud * Separating the Skinlands from the Shadowlands is a barrier of fear and disbelief. The more mundane the reality at a particular spot the thicker the Shroud. Shadowlands The highest layer of the Underworld. Here Non Corporeal [[Undead]] that maintain connections to the living world may dimly see the living world through the [[Shroud]]. Nihils or Sinkholes form randomly in the ground and open to the [[Underworld]] below. Ethereal Realm The Ethereal Realm is the realm of the mind and perception. It appears to be an inconceivably vast, misty, void without heat or air or substance. The mist is actually a material of sorts called the Ether. Our world and all worlds are tiny spheres floating distantly in ethereal space. All things are formed from the Ether, and the Ether can be bent to the will of a skilled mage. All [[Conjuration]]s, [[Phantasms]], and [[Illusions]] are formed from the Ether. * One can travel at speeds limited only by the imagination. * Mists * One can create enormous constructs and even worlds from the Ether. * Living things and intelligent machines appear in this world in idealized forms. * Mind may be used instead of Body while in this plane. * Spirits do not appear on the Astral Plane because they exist fully in the Spirit World. * Undead do not appear on the Astral Plane because they exist fully in the Underworld. * All Mind and Arcane skills except Necromancy are at +2 in this realm. * [[Hyperspace]] is a limited visualization of the Ethereal Realm. * The Ethereal Realm is highly subjective. What a person encounters has much to do with what they believe. ** Astral Videre - An astral videre casts everything in terms of symbols, themes, and metaphors. An astral videre feels at once intensely real and fundamentally surreal. ** Mortific Videre - A mortific videre casts everything as a decayed shadow of reality. The environments within this videre are familiar, but have been subjected to forces of decay, filth, and death. ** Spiritual Videre - This videre casts everything as an interaction of primal forces such as life and death, order and chaos, and yin and yang. ** Technological Videre - The most recently developed videre depicts everything either as deep space or as a series of parallel subdimensions. Interestingly, this videre carries with it a serious price - as the Astral reaches get further distant from Earth, beings with a technological videre find them increasingly toxic. Many Technocrats find themselves requiring respirators or even space suits where shamanistic mages have no difficulty breathing. !References * Aetheric Space * Akasha * Astral Realm * Hyperspace Horizon Realms Magically Created Realms Autochtonia * A metallic polyhedral space station approximately 10 miles in diameter with 4,294,967,200 sides (doubling each year, vainly seeking to be a sphere). * The logical replacement for heaven for [[Iteration X]]. Copernicus Research Center The COP - Dyson Sphere Gernsback Continuum * A metropolis built by the [[Sons of Ether]] to glorify the gods of Science. It is a representation of their perfect reality, a world of tomorrow. * Ether-powered phaeton cars zip along raised highways like shiny beetles. * Scientists stroll or ride the moving sidewalks that parallel the highways, linking the magnificent buildings of the Realm. * At night, the planets loom unusually large and the criss-crossing spotlights illuminate the metallic zepplins, Etherflyers, and jet-packed aeronauts that fly among the Art-Deco monuments and spires. * Oddly unique robots, custom built to their purpose, zoom from place to place performing their duties. !Travel * The realm may most easily be reached through the Great Hall Chantry in Paris, located on Rue de Puilly. Its large front courtyard accommodates panhandlers and street performers walking on broken glass and breathing fire to an excited gathering of tourists and pigeons. The inner hall houses the chantry meeting halls and classrooms. Secret doorways with fantastic carving lead to an identical building in the Continuum. !Daily Life * Many Etherites live and work their entire lives here. and to many it is the closest place to Heaven. Some live in complete rejection of the Earthly world's ugliness. This isolation makes them a bit out of touch. * Food is available in a just-add-water form that expands into a full meal with all the aroma and taste of home-cooked. !History * The realm is named for the extraordinary inventor and publisher Hugo Gernsback (1884-1967). During his life he received more than 80 patents and was the force behind both Modern Electric Magazine (later Popular Science) and Amazing Stories (the first magazine devoted exclusively to science-fiction). He predicted with startling accuracy radar, microfilm, artificial fabrics, and florescent lighting. The top annual prize for science-fiction was named the Hugo in his honor. Gernsback was old but present at the opening of the realm. !Reference * The dream of H.G. Wells, in which the tall elegant engineers rule, with perfect benevolence, a humanity which has no business except to be happy. To H.G. Wells, this was a dream of heaven - a modern version of the idle harp-sounding heaven. - Science and Human Values - Jacob Bronowski Pangaea Scar Industrial Dystopia - Metropolis Otherworlds Paradox Realm * Some continue long after their origins, though most collapse in upon themselves. * While we make efforts to rescue those imprisoned within, use caution to use magic wisely. The ravaged victims of [[Paradox]] are all the object lesson you need. !Rugnir's Realm * The oldest recorded [[Paradox]] Realm. * Rugnir a Viking Chieftain made a magical error so great that for 1000 years he has been imprisoned within. * The realm used to be large but over the centuries has shrunken to fit Rugnir like a second skin. * Inside this amniotic sack, Rugnir is conceived, grows from infancy to old age, dies, and is conceived again within a few days. * He gives no indication that he is in pain or that he cares what is happening to him. * His cycles of rebirth seem to have confused him and he seems to have forgotten his original life. * Perhaps he can be stimulated to realize his predicament and try to escape." :locationmap (locationmap "Wells of Silence" (location :name "Wells of Silence" :reference "* And in the naked light, I saw, 10,000 people or more. People talking without speaking, people hearing without listening People writing songs, that voices never share, and no one dared Disturb the sound of silence. Fools, said I, you do not know, silence like a cancer grows Hear my words so I might teach you, take my arms so I might reach you But my words like silent raindrops fell and echoed in the wells of silence And the people bowed and prayed, to the neon god they made - Disturbed, Sound of Silence" :summary "* A world where humanity has lost its empathy with others. People are observers and consumers, but do not share emotional bonds."))) "Paradigm Corporation" (section :name "Paradigm Corporation" :reference "* They say misery loves company We could start a company and make misery Frustrated, Incorporated We I know just what you need I may just have the thing I know what you paid to see Put me out of my misery I'd do it for you Would you do it for me? We will always be busy Making misery We could build a factory And make misery We'll create the cure We made the disease - Misery, Soul Asylum" :summary "* Paradigm appears to be a modest, little known, private corporate consulting and administrative assistance firm. * In reality, it is a vast business conglomerate that does not consult for companies, it owns or controls them through a series of false identities and numbered bank accounts. By secretly controlling multiple related companies, Paradigm has secured powerful, clandestine monopolies. * Unfortunately, Paradigm has a dark secret: its founders are corrupt followers of the [Wyrm], and their goal is nothing less than the gradual destruction of the world. * Paradigm hides its true intentions behind veils of lies, all the while feeding humanity's greed. Instant gratification satisfies the need to covet. That is Paradigm. * Few people outside the company know just how widespread the company is. Paradigm is like a cancer with foul growths quietly growing through healthy flesh until the host dies. * It has vast resources, but the need for secrecy creates limits of how those resources can be used. !Working for Paradigm * Outwardly, Paradigm is a nice place to work. Good benefits, good pay, holiday gifts, suggestion boxes, etc.. Except, sometimes people transfer out of state, never to be heard from again. No retirees ever come back to visit. People who have been around long enough know not to make waves or risk their jobs ... or worse. Better to lay low. * Friendships are discouraged. Personalizing items are not allowed in the workplace 'to keep things professional'. * Family life is your own problem. Work comes first. !Management * The CEO * The Board of Directors * Who runs Paradigm? Supposedly the CEO, but the CEO is not there to run the show; the CEO is there to take the blame when something goes wrong. For this, they are paid exceptionally handsomely when they are forced to 'resign'. The Board of Directors is equally expendable, but for different reasons. Board members are replaced when the stockholders feel the company is not making enough money. * Fortunately, Paradigm spends half of its energy fighting itself. Corrupt, egotistical, power-mongers don't work well together. Back-stabbing, hidden agendas, and subversion are daily activities at the top. !History * Paradigm started in 1865 when Jeremiah Lassater founded Standard Oil. He was a ruthless, opportunist even before the accident. In 1869, while inspecting a problematic drilling site, Lassater became trapped in a tunnel with a fearsome [Bane]. In exchange for his life, he allowed the [Bane] to act through him, and so began the company's long, dark descent." :titles "Pentex" :rulemap (rulemap "Ad Infinitum" (rule :name "Ad Infinitum" :image "Units/ModernFantasy/AdInfinitum.jpg" :summary "* Advertising and Marketing * Television * Communications") "Chrysalis Corporation" (rule :name "Chrysalis Corporation" :image "Units/ModernFantasy/ChyrsalisCorporation.jpg" :summary "* The Price of Beauty * Fashion, Beauty, Hygiene, Self Help, and Diet products * Rising Stars - Chrysalis sponsors a talent agency searching for desparate artists and actors that either can't find their big break or have already used up their 15 minutes of fame. Rising Stars has a good reputation since they give unknowns and has-beens a chance. Of course, they are actually interested in guiding them down a degrading series of lies, drugs, whoring, pornography and other exploitations. In these positions, they earn money and provide a useful spy network for Chrysalis. When they are too old to be of use Chrysalis can always find some use for their bodies. * A New You - This popular diet and exercise program secretly encourages vain and narcissistic tendencies. As the customer becomes stronger and more beautiful, he/she also starts losing friends. But, of course, A New You provides all the friends you might want... * Homogeniety - Chrysalis sponsors a social group dedicated to curing homosexuality. Through them it attracts the despondent and the outcast. Those filled with self doubt are easily duped into undergoing treatments that will make them more Normal. Homogenity is run by Pastor Jim Fowler who despite claiming to be cured of homosexuality, instead preys on youths under his care. If they reject him, he simply claims that they have passed a 'test'.") "Cyberdyne Systems" (rule :name "Cyberdyne Systems" :image "Units/ModernFantasy/Cyberdyne.jpg" :summary "* Cyberdyne is a leading manufacturer of computers, software, microchips, and robotics. * Massively Multiplayer Games - Cyberdyne secretly maintains a presense on many online game sites. Here they cultivate and recruit 'like-minded' players into the corporate fold. Many hackers, dangerous malcontents, and even terrorists have been duped into doing Cyberdyne's dirty work for them.") "Omni Comsume Products (OCP)" (rule :name "Omni Comsume Products (OCP)" :image "Units/ModernFantasy/OmniComsumerProducts.jpg" :reference "The Only Choice - Robocop") "Shinra Electric" (rule :name "Shinra Electric" :image "Units/ModernFantasy/ShinraElectric.jpg" :reference "* A nuclear meltdown, contrary to popular belief, does not involve nuclear material escaping from the cooling towers to spatter the area in nuclear waste. The reality is much worse. * When a fission reactor overheats sufficiently, it will literally 'melt down' through the floor. The core is so dense, that it will keep sinking until it hits bedrock, usually in the water table. * What happens next is nightmarish. The water becomes tainted with radioactivity and flows into wells, streams, rivers, and reserviors. It can poison tens of thousands of square miles in a frighteningly short time. * Worst of all, once a core melts down, it cannot be removed. It will continue pouring out radioactive water until the pile decays which can be a VERY long time indeed. * The Corcord 1 and 2 plants in New Hampshire sit astride the Connecticut River which flows between Vermont and New Hampshire, across Massachusetts, through Hartford and down to the Long Island Sound. This whole area would be poisoned in a meltdown not to mention the slow contamination of the body of water that touches New York City and the Atlantic Ocean." :summary "* Shinra is an electricity provider. Besides power lines, that means Coal and Nuclear.") "Standard Oil" (rule :name "Standard Oil" :image "Units/ModernFantasy/StandardOil.jpg" :reference "* So if I allow your employer to set up operations, they will build six hospitals and provide vaccines for two hundred thousand children living in poverty? What's the catch? We do have something of a corporate conscience, and it bothered our executives to think of all of the poverty and disease and suffering that would be within, well, spitting distance of the site...and if you should refuse this offer, we will make certain that every man, woman, and child in this fleabag of a country knows that you and you alone were responsible for turning down all those hospitals and medicines and jobs. - Regional Negotiations" :summary "* Standard is an international Oil and Petroleum product manufacturer including exploration, drilling, refining, trucking, shipping, gas stations, convenience stores, etc. * Every so often, Standard sponsors something on PBS to make itself known as a 'good corporate citizen', but in general, there is nothing to distinguish the company in the public mind from any other big corporation. Some see this as an advertising failure, but Standard considers this to be camouflage. * 'The cost of the fine is always less than the cost of compliance.' - Corporate policy is very simple: Make as much money as possible, as quickly as possible, with as little overhead as possible. This hell-bent-for-leather profitability grab makes the stockholders happy, though 'as little overhead as possible' translates to as few environmental and safety safeguards as possible. It also means as little maintenance on its tanker fleet as possible. * Of course they can't ignore environmental concerns completely, but they prefer to invest in ad campaigns that equate protecting the environment with lost jobs. Meanwhile, it makes high-profile, low content gestures toward responsibility to maintain the smokescreen. * In the Third World, Standard is especially powerful. They bribe or blackmail local governments to allow them to essentially establish independent fiefdoms complete with private armies. * Oil companys must always produce more oil, so Standard's research and exploration teams are well paid to find the oil WHEREEVER it lies. Oil doesn't respect national borders or religious sites, so neither do they.") "Tyrell Corporation" (rule :name "Tyrell Corporation" :image "Units/ModernFantasy/TyrellCorporation.jpg" :reference "* More Human Than Human - Blade Runner") "Umbrella Pharmaceutical" (rule :name "Umbrella Pharmaceutical" :image "Units/ModernFantasy/UmbrellaCorporation.jpg" :reference "* Our Business is Life Itself - Resident Evil * Regenerate's revolutionary T-Cell formula actually brings dead cells ... back to life. Now your youthful beauty can last ... forever. Always consult your doctor before starting treatment. Some side-effects can occur." :summary "* Pharmaceuticals * Conception Clinics - Umbrella sponsors fertility clinics and sperm banks. They take full advantage of the genetic material they receive and have been known to provide sperm of questionable origins to further their experimentation. They have councilors on staff to help the distraught mothers who for some reason feel that they have something unnatural inside them.") "United Fruit" (rule :name "United Fruit" :image "Units/ModernFantasy/UnitedFruit.jpg" :reference "* United Fruit had a deep and long-lasting impact in the economic and political development of several Latin American countries. Critics often accused it of exploitative neocolonialism and described it as the archetypal example of the influence of a multinational corporation on the internal politics of the so-called 'banana republics.' United Fruit became part of the present-day Chiquita Brands International.") :Weyland-Yutani (rule :name "Weyland-Yutani" :image "Units/ModernFantasy/WeylandYutani.jpg" :reference "* Building Better Worlds - Alien * Halliburton" :summary "* The Company is a manufacturing and construction firm known for innumerable no-bid public works projects for municipal governments and the military." :titles "The Company") "Yoyodyne Propulsion" (rule :name "Yoyodyne Propulsion" :image "Units/ModernFantasy/Yoyodyne.jpg" :reference "* Where the future begins tomorrow - Buckaroo Banzai * Numerous props in Star Trek series indicate that parts of Federation starships were manufactured by Yoyodyne Propulsion Systems or YPS. The creators of Star Trek: The Next Generation were noted fans of Buckaroo Banzai and featured many references to the film in the series." :summary "* Defense contractor"))))))
nx/tactics/books/powers
Description:
Package Name:
  • nx/tactics/books/powers
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_powers_overview, chapter_special_modifiers, chapter_equipment_powers, chapter_strength_and_weaknesses, chapter_mental_powers_and_weaknesses, chapter_movement_powers, chapter_physical_powers_and_weaknesses, chapter_body_powers, chapter_energy_and_forces, chapter_enhancement_powers, chapter_alteration_powers, chapter_godlike_powers
Source Code:
  • (package nx/tactics/books/powers :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Powers" :image "Powers.jpg" :chaptermap (base/chaptermap "Powers Overview" (chapter_powers_overview) "Special Modifiers" (chapter_special_modifiers) "Equipment Powers" (chapter_equipment_powers) "Strength and Weaknesses" (chapter_strength_and_weaknesses) "Mental Powers and Weaknesses" (chapter_mental_powers_and_weaknesses) "Movement Powers" (chapter_movement_powers) "Physical Powers and Weaknesses" (chapter_physical_powers_and_weaknesses) "Body Powers" (chapter_body_powers) "Energy and Forces" (chapter_energy_and_forces) "Enhancement Powers" (chapter_enhancement_powers) "Alteration Powers" (chapter_alteration_powers) "Godlike Powers" (chapter_godlike_powers) ))) (func chapter_powers_overview : base/chapter (chapter :name "Powers Overview" :sectionmap (sectionmap "Why Tactics: Powers?" (section :name "Why Tactics: Powers?")))) (func chapter_special_modifiers : base/chapter (chapter :name "Special Modifiers" :sectionmap (sectionmap :Buffs (section :name "Buffs" :modifiermap (modifiermap :Arc (modifier :name "Arc" :summary "* Triangle shaped effect starting at 3 spaces wide and widening by 1 additional space for each space of range. * [-2 Skill] for each Space of Range") "Armor-Piercing (AP)" (modifier :name "Armor-Piercing (AP)" :summary "* Specifically designed to target armored units.") :Anti-Armor (modifier :name "Anti-Armor" :summary "* Specifically designed to tear apart armor to leave target open to further attacks.") :Anti-Missile (modifier :name "Anti-Missile" :summary "* Specifically designed to intercept high speed targets moving in a straight line.") :Anti-Personnel (modifier :name "Anti-Personnel" :summary "* Specifically designed to attack man-sized targets.") :Anti-Shield (modifier :name "Anti-Shield" :summary "* Specifically designed to reduced [Shielding].") :Aura (modifier :name "Aura" :summary "* Radial effect encompassing the current space and continuing for Level Range.") :Beam (modifier :name "Beam" :summary "* Rectangular shaped effect 1 space wide. * [-1 Skill] for each 2 Spaces of Range") "Chain Reaction" (modifier :name "Chain Reaction") :Cloud (modifier :name "Cloud") :Cluster (modifier :name "Cluster") :Column (modifier :name "Column" :summary "* Rectangular shaped effect starting at 1 space wide and widening to 3 spaces. * [Action]: [-2 Skill] for each Space of Range") :Cone (modifier :name "Cone" :summary "* Triangle shaped effect starting at 1 space wide and widening by 1 additional space for every 2 spaces of range. * [Action]: [-2 Skill] for each Space of Range") :Fork (modifier :name "Fork") :Haywire (modifier :name "Haywire" :summary "* Attack that damages electrical systems.") "Hidden Effect" (modifier :name "Hidden Effect" :summary "Effect cannot be detected through normal means.") "High-Explosive (HE)" (modifier :name "High-Explosive (HE)" :summary "* [Targetting]: Target a space. All units in that space and surrounding spaces are attacked. * [Damage]: All target's are [+2 Armor] against this attack. * [Damage]: Units surrounding the space are attacked at -1 Damage for each space distant. Advanced: * Instead of standard [High Explosive (HE)] rules the following may be used to more accurately simulate the damage exponential decrease in energy of explosives. * [Targetting]: Target a space. All units in that space and surrounding spaces are attacked. * [Damage]: All target's are [+2 Armor] against this attack. * [Damage]: Units surrounding the space are attacked by dividing the energy (in Joules, or tons of TNT) using the following reduction pattern for each space distant: 1/1, 1/3, 1/10, 1/30, 1/100, 1/300, 1/1000, etc. Then look up the new damage based on the new energy level.") :Homing (modifier :name "Homing" :titles "Guided, Seeking") :Indirect (modifier :name "Indirect" :summary "* May use [Indirect Fire] ability to attack without [Line of Sight].") "Pushing the Limits" (modifier :name "Pushing the Limits" :summary "Powers may be increased temporarily, but this runs a risk of damaging or permanently altering the subject or his powers in some way. This may even increase the power but may create [Aberrations].") :Ring (modifier :name "Ring" :titles "Circle") :Sphere (modifier :name "Sphere" :summary "* Radial effect encompassing the current space. * [Action]: [-3 Skill] for each Space of Range") :Spray (modifier :name "Spray") :Swarm (modifier :name "Swarm") :Touch (modifier :name "Touch" :summary "* [Requires]: Target must be within 1 space and be able to be touched.") :Wall (modifier :name "Wall" :summary "* Walls start on the edge of a space and spread outward one space in each direction on each of this unit's turns until the unit ceases concentration or the maximum size is reached. Maximum Size is one square space per level.") :Wave (modifier :name "Wave"))) "Power Weaknesses" (section :name "Power Weaknesses" :modifiermap (modifiermap :Activation (modifier :name "Activation" :summary "* Activating the ability requires more than just desire") "Always On" (modifier :name "Always On" :summary "* Ability may not be turned off") :Annoying (modifier :name "Annoying" :summary "* Tiny things that make using the ability frustrating.") "Communications Broadcast Only" (modifier :name "Communications Broadcast Only") "Communications None" (modifier :name "Communications None") "Communications Receive Only" (modifier :name "Communications Receive Only") "Conditional Use" (modifier :name "Conditional Use" :summary "* Ability may only be used under specific circumstances") "Energy Discharge" (modifier :name "Energy Discharge" :summary "Cannot completely contain own energies and must allow them to leak out regularly. At low levels this just draws attention, but at higher levels becomes dangerous.") "Focus Item" (modifier :name "Focus Item") "Glider Only" (modifier :name "Glider Only") :Inefficient (modifier :name "Inefficient" :summary "* Uses excessive energy.") :Internalize (modifier :name "Internalize") "Large Sensor Profile" (modifier :name "Large Sensor Profile") "Limited Uses" (modifier :name "Limited Uses") :Overheats (modifier :name "Overheats") :Overloads (modifier :name "Overloads") "Poor Climb Angle" (modifier :name "Poor Climb Angle") "Poor Ceiling" (modifier :name "Poor Ceiling") "Poor Towing Capacity" (modifier :name "Poor Towing Capacity") "Power Fluxuation" (modifier :name "Power Fluxuation" :summary "Cannot completely control power level. At random, power use may be higher or lower than expected. High level powers may not be able to be turned off or may not turn on when needed.") "Power Hungry" (modifier :name "Power Hungry" :summary "* Requires extra turns of inactivity to use.") "Power Manifestation" (modifier :name "Power Manifestation" :summary "When powers are used, a visual or audible manifestation appears. The higher the power level the more obvious the manifestation.") "Requires Airstrip" (modifier :name "Requires Airstrip") "Sensor Dependent" (modifier :name "Sensor Dependent" :summary "* Blind without Sensors") "Traceable Emmissions" (modifier :name "Traceable Emmissions")))))) (func chapter_equipment_powers : base/chapter (chapter :name "Equipment Powers" :sectionmap (sectionmap "Item Powers" (section :name "Item Powers" :powermap (powermap "Quality Item" (power :name "Quality Item" :summary "* An item with this skill is of particularly high quality and possesses unusual abilities. * The level of quality effects the number of abilities as usual. * Each level of quality doubles the original price of the item." :abilitymap (abilitymap "Fine Workmanship" (ability :name "Fine Workmanship" :summary "* This item possesses fine details that are particularly attractive to collectors.") "Fire Resistant" (ability :name "Fire Resistant") "High Durability" (ability :name "High Durability" :summary "* This item is exceptionally well constructed and can withstand a suprising amount of punishment compared to a normal item of its type."))) "Quality Weapon" (power :name "Quality Weapon" :summary "* A weapon with this skill is of particularly high quality and possesses unusual abilities. * The level of quality effects the number of abilities as usual. * Each level of quality doubles the original price of the item." :abilitymap (abilitymap "Balanced for Throwing" (ability :name "Balanced for Throwing"))))) "Vehicular Systems" (section :name "Vehicular Systems" :summary "** Atmospheric Engine ** Sub-light Drive ** FTL Drive * Science Lab w/Sensors * Air Locks ** Magnetic Mooring Lines ** Vacc Suits * Weapons Locker * Drop Chamber w/Drop Pods * Cloaking Device * Shields" :powermap (powermap :Hanger (power :name "Hanger" :summary "* A special ability of vehicles to carry other vehicles. * A unit may carry 1 small unit (1 space) per space it takes up. * Action: Move 1 unit into or out of the hanger. The unit may not Move or take any Action the turn it moves into or out of the hanger. * Ship's Boat * Air Raft * Starfighter * Starbomber * Repair Drones * Mobile Armor" :titles "Vehicle Bay") "Mission Section" (power :name "Mission Section" :summary "* Determine the total hull size and then divide it as desired by the following abilities." :abilitymap (abilitymap "Air Locks" (ability :name "Air Locks") "Boarding Equipment" (ability :name "Boarding Equipment" :titles "Grapple Launchers, Magnetic Mooring Lines") "Cargo Hold" (ability :name "Cargo Hold") "Catapult Launcher" (ability :name "Catapult Launcher" :summary "*") "Catapult Hook Capture" (ability :name "Catapult Hook Capture") "Cloaking System" (ability :name "Cloaking System") "Cryogenic Chamber" (ability :name "Cryogenic Chamber" :summary "* Special ability of space craft to carry passengers in cryonic suspension.") "Captain's Quarters" (ability :name "Captain's Quarters") "Centrifuge Chamber" (ability :name "Centrifuge Chamber") "Climbing Apparatus" (ability :name "Climbing Apparatus") "Diving Wings" (ability :name "Diving Wings" :summary "+1 when pulling out of a dive") "Easy to Modify" (ability :name "Easy to Modify") :ECM (ability :name "ECM" :titles "Electronic Countermeasures, Jamming") :ECCM (ability :name "ECCM" :titles "Electronic Counter-Countermeasures") "Ejection System" (ability :name "Ejection System") "Escape Pods" (ability :name "Escape Pods") :Factory (ability :name "Factory") "Fuel Scoop" (ability :name "Fuel Scoop") :Glider (ability :name "Glider" :summary "* Can glide without using power and may gain altitude when flying over hot air currents.") "Gun Ports" (ability :name "Gun Ports" :summary "Allows crew to use small arms fire without sacrificing armor protection.") "Missile Decoys" (ability :name "Missile Decoys" :titles "Chaff Dispenser, Flares") "Launch Catapult" (ability :name "Launch Catapult" :summary "* Launching vehicle may begin move at up to full speed without using fuel.") "Living Quarters" (ability :name "Living Quarters" :summary "* Long range and luxury vessels offer more than the minimum crew quarters. This includes private rooms, mess, recreation areas, etc. * The larger the living space, the higher quality clientele may be brought aboard and the longer the ships range before shore leave is needed. * Includes Mess and Lounges") "Luxury Facilities" (ability :name "Luxury Facilities") "Marine Ready Room" (ability :name "Marine Ready Room") "Marine Drop Pods" (ability :name "Marine Drop Pods") "Medical Facilities" (ability :name "Medical Facilities" :titles "Sick Bay") :Minelayer (ability :name "Minelayer") :Minesweeper (ability :name "Minesweeper") "Mining Facilities" (ability :name "Mining Facilities") "Passenger Seating" (ability :name "Passenger Seating") "Prison Facilities" (ability :name "Prison Facilities" :titles "Brig") "Ram Plate" (ability :name "Ram Plate") :Refinery (ability :name "Refinery") "Science Lab" (ability :name "Science Lab") "Atmospheric Sensors" (ability :name "Atmospheric Sensors") "Biological Sensors" (ability :name "Biological Sensors") "Geological Sensors" (ability :name "Geological Sensors") "Stealth Equipment" (ability :name "Stealth Equipment") "Storm Chamber" (ability :name "Storm Chamber" :summary "Specially shielded chamber designed to be a safe room for particularly dangerous events including radiation flares and decompression.") "Tanker Hold" (ability :name "Tanker Hold" :summary "The hold is equipped to hold large amounts of liquids or gases at appropriate environments. This can be used for long range vessels to carry their own fuel or act as a fuel tanker.") "Towing Capacity" (ability :name "Towing Capacity") "Training Facilities" (ability :name "Training Facilities") "Weapons Locker" (ability :name "Weapons Locker")) :specialtymap (specialtymap :Battleship (specialty :name "Battleship" :summary "* A large (3 space) ship dedicated to being a battleship may carry a Spinal Mount weapon. * Spinal Mount") "Colony Vessel" (specialty :name "Colony Vessel" :summary "* Cryogenic Chamber") "Cargo Vessel" (specialty :name "Cargo Vessel" :summary "* Cargo Hold * Tanker Hold") "Factory Vessel" (specialty :name "Factory Vessel" :summary "* Factory * Refinery * Tanker Hold") "Heavy Bomber" (specialty :name "Heavy Bomber") "Heavy Carrier" (specialty :name "Heavy Carrier" :summary "* A large (3 space) ship dedicated to being a carrier can carry 1 extra unit (4 units) in its Hanger. * Hanger * Launch Catapult") "Luxury Vessel" (specialty :name "Luxury Vessel" :summary "* Living Quarters * Luxury Facilities") "Prison Vessel" (specialty :name "Prison Vessel") "Science Vessel" (specialty :name "Science Vessel" :summary "* Science Lab * Sensor Arrays") "Search and Rescue Vessel" (specialty :name "Search and Rescue Vessel" :summary "* Wide array of sensors * Multipurpse rescue vehicles * Heavy construction equipment * Emergency medical facilities * Space for evacuation and emergency supplies") "Stealth Vessel" (specialty :name "Stealth Vessel" :summary "* Cloaking Device * ECM * Stealth Equipment") "Transport Vessel" (specialty :name "Transport Vessel" :summary "* Living Quarters"))) "Electronic Systems" (power :name "Electronic Systems" :abilitymap (abilitymap "Analyze Target" (ability :name "Analyze Target") "Detailed Scan" (ability :name "Detailed Scan") "Electronic Countermeasures" (ability :name "Electronic Countermeasures") "Electronic Warfare" (ability :name "Electronic Warfare") "Haywire Resistance" (ability :name "Haywire Resistance" :summary "* Resists the Haywire attack") "Laser Link" (ability :name "Laser Link") "Locate Target" (ability :name "Locate Target") "Navigation System" (ability :name "Navigation System") "Quantum Entanglement Comm" (ability :name "Quantum Entanglement Comm" :summary "* A technique used to transfer quantum information from one quantum system to another over vast distances.") "Radio Comm" (ability :name "Radio Comm") "Radio Comm AM" (ability :name "Radio Comm AM") "Radio Comm CB" (ability :name "Radio Comm CB") "Radio Comm FM" (ability :name "Radio Comm FM") "Scan for Life" (ability :name "Scan for Life") "Scan for Weapons" (ability :name "Scan for Weapons"))) :Engineering (power :name "Engineering" :abilitymap (abilitymap "Damage Control Team" (ability :name "Damage Control Team" :summary "A crack team conducts emergency repairs. * [Action]: Roll vs. [Damage]. Each [Hit] removes a [White Token]. Each [Critical Hit] removes a [Black Token]. These repairs last until the end of the battle.") "Gas Engine" (ability :name "Gas Engine") "Diesel Engine" (ability :name "Diesel Engine") "Flex Fuel Engine" (ability :name "Flex Fuel Engine") "Electric Engine" (ability :name "Electric Engine") "Fission Engine" (ability :name "Fission Engine") "Fusion Engine" (ability :name "Fusion Engine" :summary "* 'rockets point down' principle * Everything has a price. And the price of powerful rockets with nuclear propulsion is of course the dread horror of deadly atomic radiation. But the danger can be brought under control with appropriate counter-measures, and by treating the power plant with the respect it deserves. And the same measures will come in handy if your ship may be facing hostile nuclear warheads.") "Geared for Endurance" (ability :name "Geared for Endurance" :summary "* Vehicle is designed for Endurance and can travel unusually long distances without resupply and is exceptionally rugged.") "Geared for Power" (ability :name "Geared for Power" :summary "* Vehicle is designed for Power and can tow, lift, or push 50% more load than usual.") "Geared for Speed" (ability :name "Geared for Speed" :summary "* Vehicle is designed for Speed and can accelerate faster and can temporarily exceed normal speed rating.") "Red Line" (ability :name "Red Line" :summary "* Engineering can push any of the ships' systems for extra performance, but run the risk of significant damage. * [Action]: Roll vs. the target system. Any [Hits] increase that system by 1 for [Hits] turns. Each [Critical Hit] increases that system by a further 1. Negative [Hits] reduce that system by the [Hits] for [Hits] turns. For each system [Critical Hit], the system takes a [System Damage Token]."))) :Factory (power :name "Factory" :abilitymap (abilitymap "Gas Refinery" (ability :name "Gas Refinery") "Oil Refinery" (ability :name "Oil Refinery") "Oil Rig" (ability :name "Oil Rig") "Manufacturing Factory" (ability :name "Manufacturing Factory") "Mining Rig" (ability :name "Mining Rig") "Pharmaceutical Manufacturing" (ability :name "Pharmaceutical Manufacturing") "Aircraft Factory" (ability :name "Aircraft Factory") "Mobile Shipyard" (ability :name "Mobile Shipyard") "Naval Shipyard" (ability :name "Naval Shipyard") "Spacecraft Shipyard" (ability :name "Spacecraft Shipyard") "Starship Shipyard" (ability :name "Starship Shipyard") "Tank Factory" (ability :name "Tank Factory") "Vehicle Factory" (ability :name "Vehicle Factory"))) :Laboratory (power :name "Laboratory" :summary "Special labs for analyzing information. Science labs are very flexible and can be used for any number of quick analytics. Obviously, they are severly limited compared to proper research facilities." :abilitymap (abilitymap "Chemical Lab" (ability :name "Chemical Lab") "Biological Lab" (ability :name "Biological Lab") "Geological Lab" (ability :name "Geological Lab") "Physics Lab" (ability :name "Physics Lab") "Sick Bay" (ability :name "Sick Bay"))) "Life Support" (power :name "Life Support" :abilitymap (abilitymap "Acceleration Dampening" (ability :name "Acceleration Dampening") "Air Filtration" (ability :name "Air Filtration") "Artificial Gravity" (ability :name "Artificial Gravity") "Ejection Systems" (ability :name "Ejection Systems") "Food Production" (ability :name "Food Production") "Low Pressure Resistance" (ability :name "Low Pressure Resistance") "High Pressure Resistance" (ability :name "High Pressure Resistance") "Radiation Shielding" (ability :name "Radiation Shielding") "Heat Resistance" (ability :name "Heat Resistance") "Cold Resistance" (ability :name "Cold Resistance") "Storm Cellar" (ability :name "Storm Cellar" :summary "* The crew will occupy the cellar when the sun kicks up a solar storm of radiation. As these can last for days, one had better include a few crew-days worth of food, water, and tranquilizers. If you are relying upon algae for your oxygen, it deserves space in the storm cellar as well. This probably also applies to stored food too. Particle radiation can destroy a lot of the vitamins in food. Alas, computers and other digital electronics are also vulnerable to radiation. If there is a critical failure outside, thenit is time to start drawing straws to decide who gets to heroically commit suicide by saving the ship.") "Water Filtration" (ability :name "Water Filtration") :Watertight (ability :name "Watertight"))) "Vehicle Abilities" (power :name "Vehicle Abilities" :abilitymap (abilitymap "Airlift Ready" (ability :name "Airlift Ready" :summary "* Ability to be quickly picked up and dropped by [Airlift] vehicles without them landing.") "Alarm System" (ability :name "Alarm System" :summary "* When armed, this defensive system will raise a warning whenever a person gets too close.") "Anti-Personnel Charges" (ability :name "Anti-Personnel Charges" :summary "* When armed, this defensive system will automatically detonate whenever a person gets too close.") "Artificial Intelligence" (ability :name "Artificial Intelligence") "Automated Combat System" (ability :name "Automated Combat System") :Autopilot (ability :name "Autopilot") "Camouflage Net" (ability :name "Camouflage Net") "Catapult Hook" (ability :name "Catapult Hook" :summary "* Can take off and land from carriers and gain the initial speed benefit of carrier catapults.") :Cloaking (ability :name "Cloaking") "Crane Arm" (ability :name "Crane Arm") "Ejection System" (ability :name "Ejection System") "High Mobility" (ability :name "High Mobility" :summary "* Vehicles with this ability sacrifice overall speed for rapid turning. Movement systems are divided across the entire vehicle to maximize mobility, but this greatly reduces maximum speed. * -2 Speed, Unit may use Infantry movement rules.") "Humanoid Form" (ability :name "Humanoid Form") "Long Range Package" (ability :name "Long Range Package") "Luxury Package" (ability :name "Luxury Package") "Off-Road Package" (ability :name "Off-Road Package") "Remote Controlled" (ability :name "Remote Controlled") "Sport Package" (ability :name "Sport Package") "Stealth Technology" (ability :name "Stealth Technology" :summary "* Reduces detection by radar, heat and other similar vehicle detection systems.") "Transformation System" (ability :name "Transformation System" :summary "* Transformation allows a unit to switch into a different form. Each form must be designnated at creation time, and each form may have any or all of the units abilities. This is particularly useful for abilities that have penalties (e.g. High Mobility).") "Vector Movement" (ability :name "Vector Movement" :summary "* Movement in frictionless environments follow Newton's first law, a object in motion tends to stay in motion. * Units will continue at their current speed. * [Speed] can used to increase or decrease current speed. * [Speed] can also be used to sideslip left or right by 1 space. * Facing can be changed by one side each space moved, but this does not change speed or direction.") "Active Camoflage" (ability :name "Active Camoflage") "Camo Netting" (ability :name "Camo Netting") "Cold Protection" (ability :name "Cold Protection") "Desert Protection" (ability :name "Desert Protection") "Escape Pods" (ability :name "Escape Pods") "Grapple Launcher" (ability :name "Grapple Launcher") "Manipulator Arm" (ability :name "Manipulator Arm") "Landing Gear" (ability :name "Landing Gear") "Ram Plate" (ability :name "Ram Plate") :Streamlining (ability :name "Streamlining") "Stealth System" (ability :name "Stealth System") "Tool Arm" (ability :name "Tool Arm")))) :sectionmap (sectionmap "Weapon Bay" (section :name "Weapon Bay" :summary "* Main Turrets * Point Defense ** Antiaircraft * Grenade Launcher * Laser * Mass Driver * Missiles ** Micro-missiles ** Mini-missiles ** Heavy missiles * Particle Beam * Plasma Lance * Spinfuser * Taser * Payloads ** Acid ** Antimatter ** Bioweaponry ** Chemical ** Explosive ** Fusion ** Incendiary ** Nuclear ** Nuclear Waste * Missile Bay * Torpedo Bay ** Nuclear ** Fusion ** Antimatter ** Planet Buster")))))) (func chapter_strength_and_weaknesses : base/chapter (chapter :name "Strength and Weaknesses" :sectionmap (sectionmap "Special Skills" (section :name "Special Skills" :powermap (powermap "Special Ability" (power :name "Special Ability" :abilitymap (abilitymap :Cannibal (ability :name "Cannibal" :summary "* [Requires]: Close Combat * [Attack]: Each [Critical Hit] may remove a [Damage Token] from this unit.") :Chaotic (ability :name "Chaotic") :Corrupted (ability :name "Corrupted") :Ethereal (ability :name "Ethereal") "Feeding Frenzy" (ability :name "Feeding Frenzy") :Giant (ability :name "Giant") :Huge (ability :name "Huge") "Lernaean Poison" (ability :name "Lernaean Poison") :Mindless (ability :name "Mindless" :summary "* 0 [Mind] * Cannot use any Mind Abilities * Immune to Abilities that target [Mind].") :Monstrous (ability :name "Monstrous") "Nemean Invulnerability" (ability :name "Nemean Invulnerability") "Rapid Metabolism" (ability :name "Rapid Metabolism") :Savage (ability :name "Savage" :summary "* Must Attack if able. * Ignores Fear, Despair, and Morale") :Skeletal (ability :name "Skeletal" :summary "* +1 Body * Ignores [Bleeding], [Poison], and [Disease]") :Soulless (ability :name "Soulless" :summary "* A soulless unit is not truly alive. It may not use or gain Spirit skills.") :Tainted (ability :name "Tainted"))))) :Weaknesses (section :name "Weaknesses" :powermap (powermap "Physical Weakness" (power :name "Physical Weakness" :summary "A being that has a great deal of power becomes increasingly inhuman as power increases. Physical powers become harder to conceal growing increasingly monstrous and mentality leans more toward megalomania, messiah complex, or detached alien." :titles "Aberrations, Inhumanity, The Price of Power, Taint" :abilitymap (abilitymap :Allergy (ability :name "Allergy" :summary "Affected by substances or energies that have little or no effect on normal people.") :Asthma (ability :name "Asthma") :Atrophy (ability :name "Atrophy" :summary "* One or more limbs has limited mobility") :Blind (ability :name "Blind") :Brittle (ability :name "Brittle") :Child (ability :name "Child" :summary "* You are still a child and have difficulty getting others to take you seriously. This is usually taken with [Short].") "Cold Blooded" (ability :name "Cold Blooded") "Color Blindness" (ability :name "Color Blindness") :Contagious (ability :name "Contagious" :summary "Spreads disease.") :Clumsy (ability :name "Clumsy") :Deaf (ability :name "Deaf") :Deformity (ability :name "Deformity" :summary "* Reduces Social Skills and some Physical Skills.") :Disfigured (ability :name "Disfigured" :summary "* Reduces Social Skills dramatically.") "Extra Body Parts" (ability :name "Extra Body Parts") "Hard of Hearing" (ability :name "Hard of Hearing") :Lame (ability :name "Lame" :summary "* Reduces Speed") :Leprosy (ability :name "Leprosy") "Missing Body Parts" (ability :name "Missing Body Parts") :Mute (ability :name "Mute") :Obvious (ability :name "Obvious" :summary "* Easy to detect and target" :titles "Large Profile") "Obvious Signature" (ability :name "Obvious Signature" :summary "* Easy to identify and track" :titles "Energy Signature, Heat Signature") :Numb (ability :name "Numb") :Old (ability :name "Old") :Paralyzed (ability :name "Paralyzed") "Parasitic Infection" (ability :name "Parasitic Infection") "Peeling Skin" (ability :name "Peeling Skin") "Poor Vision" (ability :name "Poor Vision") :Short (ability :name "Short" :summary "* This minor weakness reduces vision over objects and movement speed. * It can, however, provide benefits to [Stealth].") :Sterile (ability :name "Sterile" :summary "* May not produce offspring") :Tasteless (ability :name "Tasteless") "Temperature Control Problem" (ability :name "Temperature Control Problem" :summary "* Cannot regulate temperature correctly") "Terminal Condition" (ability :name "Terminal Condition") "Unusual Appearance" (ability :name "Unusual Appearance") "Unusual Diet" (ability :name "Unusual Diet" :summary "* Minor: Eat wood, garbage, hair, etc. * Major: Eat metal, energy * Extreme: Eat blood, human flesh, plutonium") "Unusual Eyes" (ability :name "Unusual Eyes" :summary "* Minor: Strange colored * Major: Animal-like, or glowing eyes * Extreme: Bug-eyes, or no eyes") "Unusual Limbs" (ability :name "Unusual Limbs" :summary "Gnarled, segmented, snake-like, eloganted or other bizarre looking limbs") "Unusual Musculature" (ability :name "Unusual Musculature" :summary "Bulging muscles or wasted looking") "Unusual Skin" (ability :name "Unusual Skin" :summary "* Minor: Strange colored * Major: Furry, Striped, Glowing * Extreme: Translucent, Reptilian, Rock-like, Exoskeleton, Oozing") "Unusual Vulnerability" (ability :name "Unusual Vulnerability" :reference "Kryptonite, Severe Allergies" :summary "* Take damage from things that are not dangerous to ordinary people.") :Vulnerability (ability :name "Vulnerability" :summary "* Take additional damage from certain effects") "Vulnerable to Bleeding" (ability :name "Vulnerable to Bleeding") "Vulnerable to Electricity" (ability :name "Vulnerable to Electricity") "Vulnerable to Fire" (ability :name "Vulnerable to Fire") "Vulnerable to Heat" (ability :name "Vulnerable to Heat") "Vulnerable to Impact" (ability :name "Vulnerable to Impact") "Vulnerable to Piercing" (ability :name "Vulnerable to Piercing") "Vulnerable to Radiation" (ability :name "Vulnerable to Radiation") "Vulnerable to Slashing" (ability :name "Vulnerable to Slashing") :Wasting (ability :name "Wasting"))) "Social Weakness" (power :name "Social Weakness" :abilitymap (abilitymap :Awkward (ability :name "Awkward") :Hideous (ability :name "Hideous") :Hunted (ability :name "Hunted") :Naive (ability :name "Naive") :Nemesis (ability :name "Nemesis") :Noble (ability :name "Noble") :Notorious (ability :name "Notorious") "Speech Impediment" (ability :name "Speech Impediment") :Strangeness (ability :name "Strangeness") :Terrifying (ability :name "Terrifying") :Timid (ability :name "Timid") :Ugly (ability :name "Ugly") "Unnatural Presense" (ability :name "Unnatural Presense" :summary "* Subtly disturbing, homely, or too perfect and inspires negative attention from others.") :Ward (ability :name "Ward" :summary "* You are devoted to taking care of another (who happens to get into trouble a lot)."))) "Supernatural Weakness" (power :name "Supernatural Weakness" :abilitymap (abilitymap :Cursed (ability :name "Cursed") "Dark Fate" (ability :name "Dark Fate") :Haunted (ability :name "Haunted")))))))) (func chapter_mental_powers_and_weaknesses : base/chapter (chapter :name "Mental Powers and Weaknesses" :sectionmap (sectionmap "Mental Powers" (section :name "Mental Powers" :powermap (powermap :Domination (power :name "Domination" :reference "* We don't need no education. We don't need no thought control. - Pink Floyd, The Wall * He accepted everything. The past was alterable. The past had never been altered. Oceania was at war with Eastasia. Oceania had always been at war with Eastasia. Jones, Aaronson, and Rutherford were guilty of the crimes they were charged with. He had never seen the photograph that disproved their guilt. It had never existed; he had invented it. He remembered remembering contradictory things, but those were false memories, products of self deception. How easy it all was! - 1984 * Every move you make, every vow you break, every smile you fake, every claim you stake, I'll be watching you. Every single day... - Every Breath You Take, The Police * Your face will turn to alabaster. When you find your servant is your master. You'll be wrapped around my finger. - Wrapped around your Finger, The Police * I know this steak doesn't exist. I know that when I put it in my mouth, the Matrix is telling my brain that it is juicy and delicious. After nine years, you know what I realize? Ignorance is bliss. - Cypher, The Matrix" :titles "Dominator, Master, Puppet Master, Puppeteer" :abilitymap (abilitymap :Brainwashing (ability :name "Brainwashing") :Conditioning (ability :name "Conditioning" :reference "Manchurian Candidate" :summary "* Low level success creates a confused zombie. * High level success creates fanatical loyalty.") "Edit Memories" (ability :name "Edit Memories") :Indoctrination (ability :name "Indoctrination" :summary "Slowly convert a subject into a willing servant.") "Induce Delusions" (ability :name "Induce Delusions" :summary "Create paranoid delusions in the target.") "Past Life Regression" (ability :name "Past Life Regression") "Private World" (ability :name "Private World" :summary "Create a specific dream world that the subject believes is real.") "Retrive Memories" (ability :name "Retrive Memories") "Subconscious Trigger" (ability :name "Subconscious Trigger") :Subjugation (ability :name "Subjugation") "Subliminal Messaging" (ability :name "Subliminal Messaging") :Suggestion (ability :name "Suggestion" :summary "Change")) :specialtymap (specialtymap :Hypnotism (specialty :name "Hypnotism" :summary "* [Past Life Regression] * [Retrive Memories] * [Subconscious Trigger]"))) :Empathy (power :name "Empathy" :summary "The ability to feel the joys and pains of others" :titles "Empath" :stat "Spirit" :abilitymap (abilitymap "Change of Heart" (ability :name "Change of Heart") :Compulsion (ability :name "Compulsion") "Cure Insanity" (ability :name "Cure Insanity") :Demoralize (ability :name "Demoralize") :Depression (ability :name "Depression") :Despair (ability :name "Despair") "Ego Crush" (ability :name "Ego Crush" :summary "* Reduce the [Spirit] of the target to make them more ... pliable.") "Empathic Bond" (ability :name "Empathic Bond" :summary "* Create a permanent empathic connection with a single target with an already established deep connection (typically lovers or longtime friends). Each senses the other's strong feelings over any distance. No effort is required to maintain the bond, but only one such bond can be maintained at a time.") "Empathic Healing" (ability :name "Empathic Healing" :reference "* The Empath - Star Trek" :summary "* Feel the pain the target is experiencing. Slowly duplicate all the damage from a target onto yourself and then begin healing. * Continuous. Each turn, duplicate 1 damage or negative condition from the target onto yourself. Once all have been duplicated, instead remove a damage or condition from the target.") "Empathic Link" (ability :name "Empathic Link" :summary "* Create an empathic connection with a target. Each senses the other's honest feelings. This ability creates trust if the parties are being honest, or mistrust if the parties are false." :titles "Telesthesia") "Empathic Sense" (ability :name "Empathic Sense" :summary "* Sense nearby sentient creatures by their emotions. A general sense of the emotions can be determined as well.") :Enrage (ability :name "Enrage") :Enrapture (ability :name "Enrapture" :titles "Rapture") :Enthrall (ability :name "Enthrall") "Fear Eater" (ability :name "Fear Eater" :summary "* Remove a [Fear] from the target and gain [Spirit].") :Guilt (ability :name "Guilt") "Heal Mental Trauma" (ability :name "Heal Mental Trauma") "Lie Detector" (ability :name "Lie Detector") :Nostalgia (ability :name "Nostalgia") :Obsession (ability :name "Obsession") "Project Pain" (ability :name "Project Pain" :summary "* Relive a past (or current) trauma and project those feelings on a target. If you have more than 1 damage you may move 1 to the target. If you have more than 1 negative condition, you may move 1 negative condition to the target." :titles "Pain Shared is a Pain Doubled") "Share Pain" (ability :name "Share Pain" :reference "* Your pain runs deep. ... Share your pain with me... and gain strength from the sharing. - Sybok, Star Trek V: The Final Frontier" :summary "* Feel the pain the target is experiencing and create trust through the shared experience." :titles "Pain Shared is Pain Halved") :Sympathy (ability :name "Sympathy") :Terrify (ability :name "Terrify"))) :Illusion (power :name "Illusion" :reference "* Fantasy... can only survive with an underlying reality. Reality... is the stillness buried deep beneath the illusion. This is eternity. - Raiden Shogun, Genshin Impact" :summary "* Illusion is the art of fooling the target into believing in something that is not really there. Illusion is Limited by [Art]. * Illusions ** Alter the perceptions to see and hear things that do not exist. ** Skill roll determines the difficulty to detect the illusion, but even those who detect the illusion cannot see through the illusion including the caster. ** Illusions may be enormous, altering terrain and populating it with any number of creatures. ** Illusions may cover real things, but cannot make them disappear. ** Illusions may not do damage or take damage since they are not really there. ** Note: unliving creatures cannot detect or be influenced by illusions. * Phantasms ** Phantasmal objects appear real, but are only partially real and are destroyed with a single [Damage Token]. ** All [Phantasm]s are moved independently each time the unit Moves. All [Phantasm]s perform the same actions as the unit but no effect. When [Phantasm]s are attacked they take effects normally but are uneffected by effects except [Damage] which immediately destroys them." :titles "Illusionist" :abilitymap (abilitymap "Conjure Effigy" (ability :name "Conjure Effigy" :summary "* Create a phantasmal copy of an object touched. The Effigy appears real in most ways, but does not function as the original and will shatter to dust if force is applied to it.") "Conjure Phantasmal Force" (ability :name "Conjure Phantasmal Force" :summary "Conjures a phantasmal minion.") "Conjure Phantom Monster" (ability :name "Conjure Phantom Monster") "Conjure Simulacrum" (ability :name "Conjure Simulacrum") "Dazzling Beauty" (ability :name "Dazzling Beauty" :summary "Raises the appearance of the caster.") "Disembodied Voice" (ability :name "Disembodied Voice") :Forgetfulness (ability :name "Forgetfulness" :summary "* Roll vs. Spirit. Target forgets a specific fact or time period.") :Foxfire (ability :name "Foxfire") "Hidden Thing" (ability :name "Hidden Thing" :summary "* A Phantasm may be placed on other objects making them partially or completely invisible.") "Hypnotic Eyes" (ability :name "Hypnotic Eyes" :summary "Criticals: [Fascination]") "Illusion Shattered" (ability :name "Illusion Shattered" :reference "* Raiden Shogun, Genshin Impact") "Illusionary Meal" (ability :name "Illusionary Meal" :summary "* Creates a tasty meal out of other less appetizing things. The meal appears and tastes anyway the user wishes. The meal serves level squared human sized persons. The original ingredients may be unpleasant but cannot be harmful.") "Illusionary Wall" (ability :name "Illusionary Wall" :summary "* Appears to be a real wall of any sort including magical ones, but has no real effect except to obscure or block line of sight.") "Mental Block" (ability :name "Mental Block" :summary "* Roll vs. Spirit. Target becomes confused and forgets how to a chosen power for Hits Turns.") :Mirage (ability :name "Mirage" :summary "Also known as Illusionary Terrain.") "Mirror of the Soul" (ability :name "Mirror of the Soul" :summary "* A person's true nature can be ascertained by looking in his or her eyes.") "Mirror Image" (ability :name "Mirror Image" :summary "* [Mind]: Replace the unit with a [Phantasm] and place 1+Criticals additional [Phantasm]s 1 space from the unit. Secretly mark one of these [Phantasm]s as the unit. When all other Mirror Images are destroyed, replace the final [Phantasm] with the unit.") "Mistaken Identity" (ability :name "Mistaken Identity" :summary "* [Action]: Choose a willing unit of roughly equal size and switch places with that unit. * Range: [Mind]") "Phantom Pain" (ability :name "Phantom Pain") "Phantom Smell" (ability :name "Phantom Smell") "Phantom Sound" (ability :name "Phantom Sound") "Phantom Weapon" (ability :name "Phantom Weapon") "Shattered Image" (ability :name "Shattered Image" :summary "* [Mind]: Destroy any number of [Illusion]s to cause [Stun] and [Confusion] to targets in the area." :titles "Broken Mirror") :Shimmer (ability :name "Shimmer") :Simulacrum (ability :name "Simulacrum") "Sleight of Mind" (ability :name "Sleight of Mind" :summary "* [Slow] [Even] [Mind]: +1 [Stress]. Create a distraction.") "Smoke and Mirrors" (ability :name "Smoke and Mirrors") "Taste of Ambrosia" (ability :name "Taste of Ambrosia") "Taste of Ashes" (ability :name "Taste of Ashes") :Vertigo (ability :name "Vertigo"))) :Intuition (power :name "Intuition" :abilitymap (abilitymap "Danger Sense" (ability :name "Danger Sense" :summary "* [Event]: Chance to detect a surprise attack.") "Deja Vu" (ability :name "Deja Vu" :summary "* [Event]: Chance to recognize a series of events as if they had happened before. This gives insight into how these events might play out.") :Insight (ability :name "Insight" :summary "* [Action]: Synergy with a [Mind] ability.") "Instinctive Defense" (ability :name "Instinctive Defense" :summary "* [Passive]: Synergy with Defense Rolls.") "Paranormal Memory" (ability :name "Paranormal Memory" :summary "* [Action]: Attempt to remember events that happened in an alternate timeline or universe.") :Psychometry (ability :name "Psychometry" :summary "Obtain information about an individual by making physical contact with an object that belongs to them. * [Action]: Attempt to remember events associated with an object."))) :Mastermind (power :name "Mastermind" :summary "* Attempts to confuse by introducing misleading, paradoxical, or spurious logic into a discussion." :titles "Mind Games" :abilitymap (abilitymap "Circular Logic" (ability :name "Circular Logic" :reference "* If such actions were not illegal, then they would not be prohibited by the law." :summary "* A seemingly reasonable argument that is in fact based upon dependent information. * Such arguments are logically valid. That is, the conclusion does in fact follow from the premise, since it is already contained in the premise. They do not, however, aid in the proof of the statement or the premise.") :Compartmentalize (ability :name "Compartmentalize" :summary "* Separate a hidden thought process away from the normal mind.") :Cryptography (ability :name "Cryptography") :Doublethink (ability :name "Doublethink" :reference "* To tell deliberate lies while genuinely believing in them, to forget any fact that has become inconvenient, and then, when it becomes necessary again, to draw it back from oblivion for just so long as it is needed. - 1984 George Orwell" :summary "* Doublethink is the act of simultaneously holding two mutually contradictory beliefs while fervently fooling oneself into believing both.") "Master Plan" (ability :name "Master Plan") "Maze of the Mind" (ability :name "Maze of the Mind" :summary "* Confuses the target's senses so it cannot accurately choose its direction. This can be extremely hazardous to fast moving units. * [Move]: Whenever the unit moves, its direction is randomized from among its normal movement options (including diving and climbing for air units).") "Maze Mastery" (ability :name "Maze Mastery" :summary "* The user knows thousands of mazes and can choose an optimal course through any maze with minimal trial and error.") "Mind Blank" (ability :name "Mind Blank" :summary "* Hide ones true thoughts. * Makes an excellent poker face. * Full defense against any attempt to detect the unit's mind. * Full defense against any attempt to detect lies.") :Misinformation (ability :name "Misinformation" :summary "* Spock: Logic is a little tweeting bird chirping in a meadow. Logic is a wreath of pretty flowers which smell BAD. Are you sure your circuits are functioning correctly? Your ears are green. - I, Mudd, Star Trek") :Puzzles (ability :name "Puzzles") :Rationalize (ability :name "Rationalize" :summary "* Increases resistance to all forms of mental attack by reinterpreting and rationalizing commands to render them meaningless.") "Simplify, Simplify, Simplify" (ability :name "Simplify, Simplify, Simplify" :summary "* Progressively breakdown a problem into simpler problems which can each be resolved separately.") "Unsolvable Problem" (ability :name "Unsolvable Problem" :reference "* Kirk: Everything Harry says is a lie. Remember that, Norman. *Everything* he says is a lie. * Mudd: Now I want you to listen to me very carefully, Norman. I'm... lying. * Norman: You say you are lying, but if everything you say is a lie, then you are telling the truth, but you cannot tell the truth because you always lie... illogical! Illogical - I, Mudd, Star Trek" :summary "* Fool the target into trying to resolve a problem with no easy solution."))) :Madness (power :name "Madness" :titles "Lunatic, Madman, Manic" :abilitymap (abilitymap :Delirium (ability :name "Delirium") :Delusions (ability :name "Delusions") :Dementia (ability :name "Dementia") "False Memories" (ability :name "False Memories" :summary "* Alter the memories of the target.") :Hyteria (ability :name "Hyteria") "Induce Paranoia" (ability :name "Induce Paranoia") "Mind Twist" (ability :name "Mind Twist") "Through the Looking Glass" (ability :name "Through the Looking Glass" :reference "* I'm sorry to tell you this, but you've suffered a schizoid embolism. We can't snap you out of your fantasy... and I've been sent in to try to talk you down. - Total Recall") :Tripping (ability :name "Tripping") "Twisted Words" (ability :name "Twisted Words" :summary "* This subtle power is a sort of malicious therapy, and it requires nothing more than casual conversation. Its influence is hidden by inflections and suggestions. The victim finds themselves increasing agitated as their inner demons bubble to the surface. This can lead to confusion, a panic attack, nervous breakdown or even a psychotic break.") "Warped Image" (ability :name "Warped Image" :summary "* Share your own derangements with the target. This also rouses the Shadow.") "Wave of Madness" (ability :name "Wave of Madness"))) "Mental Fortitude" (power :name "Mental Fortitude" :stat "Mind, Spirit" :abilitymap (abilitymap :Gestalt (ability :name "Gestalt" :reference "The whole is greater than the sum of its parts - Gestalt Psychology" :summary "* This ability allows a unit to share knowledge with another unit that also has [Gestalt]. They may give information or loan an ability to the target." :titles "Hive Mind") "Intellect Fortress" (ability :name "Intellect Fortress" :summary "Ward") :Concentration (ability :name "Concentration" :summary "* [Buff Self]: Place X Concentration Tokens on the user, and place 1 negative token under each Concentration token. Covered tokens are treated as if they do not exist while covered.") "Mirror Mind" (ability :name "Mirror Mind" :summary "Mental defense that creates Feedback.") "Peace of Mind" (ability :name "Peace of Mind" :summary "Find the Quiet Place in your mind") "Tower of Iron Will" (ability :name "Tower of Iron Will" :summary "Ward"))) "Mind Over Matter" (power :name "Mind Over Matter" :titles "Telekinesis, Psychokinesis" :stat "Mind" :abilitymap (abilitymap "Invisible Hand" (ability :name "Invisible Hand" :summary "* Lift items from a distance.") :Levitate (ability :name "Levitate" :summary "* Lift oneself off the ground.") "Mind Crush" (ability :name "Mind Crush" :summary "* Hold an object in place and crush it.") "Telekinetic Manipulation" (ability :name "Telekinetic Manipulation" :summary "* Perform delicate manipulation on items from a distance. An example would be to perform lock picking over distance.") "Telekinetic Projectile" (ability :name "Telekinetic Projectile" :summary "* Throw a small object at high speed.") "Telekinetic Push" (ability :name "Telekinetic Push" :summary "* Push items from a distance.") "Telekinetic Shield" (ability :name "Telekinetic Shield") "Telekinetic Strike" (ability :name "Telekinetic Strike" :summary "* Attack unit from a distance.") "Telekinetic Touch" (ability :name "Telekinetic Touch" :summary "* Feel items from a distance."))) "Mental Combat" (power :name "Mental Combat" :titles "Psionic, Scanner" :stat "Mind" :abilitymap (abilitymap "Brain Drain" (ability :name "Brain Drain") "Brain Freeze" (ability :name "Brain Freeze") "Brain Storm" (ability :name "Brain Storm") "Ego Whip" (ability :name "Ego Whip" :summary "* Attack with [Mind] vs. [Spirit].") :Feeblemind (ability :name "Feeblemind") "Feedback Loop" (ability :name "Feedback Loop") :Lobotomy (ability :name "Lobotomy") "Mental Blast" (ability :name "Mental Blast" :summary "Attacks Mind. All tokens are stun.") "Mental Prison" (ability :name "Mental Prison" :summary "* Trap a person's personality in a prison within their own mind." :titles "Mind Prison, Prison of the Mind") "Summon Id Monster" (ability :name "Summon Id Monster" :summary "[Call] [Id Monster]") "Tabula Rasa" (ability :name "Tabula Rasa"))) "Mental Connection" (power :name "Mental Connection" :reference "Scanners" :titles "Esper, Mentalist, Psionic, Scanner, Telepath" :stat "Mind" :abilitymap (abilitymap "Cloud Senses" (ability :name "Cloud Senses" :reference "These aren't the droids you're looking for... - Obi-Wan Kenobi, Star Wars" :summary "Reduce chance that target will notice things.") :Confusion (ability :name "Confusion") :Lingua-Franca (ability :name "Lingua-Franca" :summary "Synergy with [Linguistics]") "Memory Lapse" (ability :name "Memory Lapse") "Memory Restoration" (ability :name "Memory Restoration" :summary "* Retrieve lost memories from a subject.") "Mental Bond" (ability :name "Mental Bond") "Mental Cloak" (ability :name "Mental Cloak" :summary "All living units must roll Mind vs Mental Cloak to target this unit. Another target may not be chosen.") "Mental Probe" (ability :name "Mental Probe" :summary "Delve deeper into targets memories each turn." :titles "Mind Probe") "Mental Projection" (ability :name "Mental Projection") "Mind Reading" (ability :name "Mind Reading" :summary "Owner of target unit must announce the next Hits movements and actions that unit will perform. That unit must perform those actions if it is able.") "Mind's Eye" (ability :name "Mind's Eye" :summary "* Eye - The caster can close his eyes and see into the astral world instead of the real world.") "Store Consciousness" (ability :name "Store Consciousness" :summary "* [Action]: At the moment of another unit's death, capture its spirit within one's own mind. * [Action]: If the dead unit's body can somehow be restored (or a perfect duplicate can be found), transfer the captured spirit back into the body.") :Telepathy (ability :name "Telepathy" :summary "Unit owner may have up to a Hits minute secret conversation with anyone (Player or not, strategy or not). Clock starts once roll is made.") "Transfer Consciousness" (ability :name "Transfer Consciousness" :reference "* Change Now! - Captain Jinyu, Dragonball Z" :titles "Body Swap"))) "Mental Weakness" (power :name "Mental Weakness" :summary "* Note: Mental Weaknesses may be physical in nature, but they are grouped here because they effect mental function." :abilitymap (abilitymap "Addle Minded" (ability :name "Addle Minded" :summary "* Tendency to forget to do things or misplace things. The missed things may be trival, important, or critical." :titles "Absent Minded, Addle Minded, Airhead") :Addiction (ability :name "Addiction") "Alien Thoughts" (ability :name "Alien Thoughts") :Amnesia (ability :name "Amnesia" :reference "* Memento" :summary "* Unit has strange lapses of memory. It may forget generally known facts, friends, family, or own identity.") :Anxious (ability :name "Anxious") :Bipolar (ability :name "Bipolar" :summary "* Prone to fits of erratic up moods and severe depression. May be moody, lie around and mope, risk life and limb, or even suicidal." :titles "Manic Depressive") :Bloodthirsty (ability :name "Bloodthirsty" :summary "* Must attack Bleeding Enemies first. May attack Bleeding Allies if a Spirit roll fails.") :Brainwashed (ability :name "Brainwashed") :Catatonia (ability :name "Catatonia") "Compulsive Liar" (ability :name "Compulsive Liar") :Cleptomania (ability :name "Cleptomania") :Cyberpsychosis (ability :name "Cyberpsychosis" :reference "* Something happens when you start to add metal and plastic to people. They start to change. And it isn't pretty - Cyberpunk RPG" :summary "* A psychotic aberration suffered by excessive users of cyberware. It begins as a sense of loss for the portions of the body replaced with unfeeling machinery. Later it manifests as a Overconfidence and detachment from other people (sometimes in favor of machines). Extreme cases lead to more serious derangements such as: Martyr Syndrome, Megalomania, Delusions of Grandear, Inferiority Complex, and Messiah Complex.") :Delusional (ability :name "Delusional" :reference "* The walls of reality will come crashing down. One minute you'll be the savior of the rebel cause. The next thing you know you'll be Cohagen's busom buddy. You'll even have fantasies of alien civilizations, as you requested, but in the end, back on Earth, you'll be lobotomized! - Dr. Edgemar, Total Recall" :summary "* Believe things that are not real. May hear voices or see things." :titles "Free-form Delusion, Schizoid Embelism") :Flashbacks (ability :name "Flashbacks") :Frightened (ability :name "Frightened" :summary "* Lacks nerve, especially in combat. May freeze or flee." :titles "Cowardly") :Hallucinations (ability :name "Hallucinations") :Homicidal (ability :name "Homicidal") "Inferiority Complex" (ability :name "Inferiority Complex") :Intolerant (ability :name "Intolerant") :Manic (ability :name "Manic") "Martyr Syndrome" (ability :name "Martyr Syndrome") :Masochism (ability :name "Masochism" :summary "* Dislikes self. Will go out of way to injure oneself. May seek verbal, physical, psychological, or sexual abuse. May seek life threatening abuse.") :Megalomania (ability :name "Megalomania" :summary "* A specific form of delusion that you are more important than you are. May believe you are destined for greatness, a Messiah, or even God." :titles "Delusions of Grandeur, Messiah Complex") "Mental Decay" (ability :name "Mental Decay" :titles "Alzheimers") "Multiple Personalities" (ability :name "Multiple Personalities" :reference "Sybil" :summary "* More than one distinct personality. Personalities may change under stress or randomly. Personalities may like, dislike, or be oblivious to each other. Some may be dangerous to self or others.") :Narssicist (ability :name "Narssicist") :Nightmares (ability :name "Nightmares") :Obsessed (ability :name "Obsessed" :summary "* Focused on a single person or object and will talk about it all the time. May risk embarrassment, financial loss, or bodily harm to pursue it.") "Obsessive Compulsive" (ability :name "Obsessive Compulsive" :summary "* Compulsively performs trivial activities." :titles "OCD") :Overcompensating (ability :name "Overcompensating" :summary "* Constantly attempt to draw attention away from preceived flaw.") :Overconfidence (ability :name "Overconfidence") :Paranoia (ability :name "Paranoia" :reference "Just because you're paranoid doesn't mean they aren't after you. - Catch 22" :summary "* Belief that enemies are everywhere. May rant endlessly about the conspiracy, compulsively work on defenses, risk everything to stop them.") :Phobia (ability :name "Phobia" :summary "* Unreasoning fear of some common thing. Fear of dogs, heights, sounds, or colors. May feel discomfort, paralyzing fear, beserk fear, or catatonia.") "Post Traumatic Stress Disorder" (ability :name "Post Traumatic Stress Disorder") :Pyromania (ability :name "Pyromania") :Robophobia (ability :name "Robophobia" :reference "* Uncanny Valley - The theory that as a robot is made more humanlike in its appearance and motion, the emotional response from a human being to the robot will become increasingly positive, until a point is reached beyond which the response quickly becomes that of strong revulsion. However, as the appearance and motion continue to become less distinguishable from a human being, the emotional response becomes positive once more. * This area of repulsive response aroused by a robot with appearance and motion between a 'barely human' and 'fully human' entity is called the uncanny valley. The name captures the idea that a robot which is 'almost human' will seem overly strange and corpselike. * Not robots...walking dead. They pretend we control them...but really... - Doctor Who, The Robots of Death * The name 'Grimwade's Syndrome' was an in-joke reference to production assistant Peter Grimwade who had bemoaned the fact that the stories on which he was assigned to work almost always involved robots. - Doctor Who, The Robots of Death" :summary "* Fear of Robots" :titles "Grimwade's Syndrome, Uncanny Valley") "Refuses to Kill" (ability :name "Refuses to Kill") :Sadistic (ability :name "Sadistic") "Sex Crazed" (ability :name "Sex Crazed" :titles "Cassonova, Heartbreaker, Lady Killer, Libertine, Lothario, Romeo, Sex Addict") :Shy (ability :name "Shy" :summary "* Hate dealing with others. Avoid interactions with new people. May need to retreat from others.") :Sociopath (ability :name "Sociopath") :Stubborn (ability :name "Stubborn" :summary "* Will not give in or compromise. May risk embarrassment, financial loss, or injury to prove you're right.") :Tempermental (ability :name "Tempermental" :reference "* What do we have? Sea Bass. Riiiight? They are mutated Sea Bass. Really. Are they ill-tempered. Absolutely. Well that's a start. - Dr. Evil and Number 2 - Austin Powers" :summary "* Constantly irritable. When temper flares will risk embarrassment, financial loss, incarceration, or life and limb." :titles "Bad Tempered, Hot Tempered") "Unreasoning Hatred" (ability :name "Unreasoning Hatred") :Vengeful (ability :name "Vengeful")))))))) (func chapter_movement_powers : base/chapter (chapter :name "Movement Powers" :sectionmap (sectionmap :Travel (section :name "Travel" :powermap (powermap :Flight (power :name "Flight" :image "Rules/Images/MoveFlight.png" :abilitymap (abilitymap :Afterburner (ability :name "Afterburner") "Air Droppable" (ability :name "Air Droppable") :Airlift (ability :name "Airlift" :summary "* Ability to pick up and drop cargo or [Airlift Ready] vehicles without landing.") :Atmospheric (ability :name "Atmospheric") "Diving Attack" (ability :name "Diving Attack") :Glide (ability :name "Glide" :titles "Glider, Parachute") :Levitate (ability :name "Levitate" :summary "* Levitate is a slow form of movement with a maximum speed of just half a normal Move. Levitating is very stable, silent, can move in any direction, and requires no concentration. Levitating causes no noise or movement related penalties and can avoid most terrain penalties as well.") "Lighter Than Air" (ability :name "Lighter Than Air") "Nape of Earth Flight" (ability :name "Nape of Earth Flight") :Orbital (ability :name "Orbital") "Reentry System" (ability :name "Reentry System" :summary "* A heat shield (either inflatable or built in) for atmospheric reentry." :titles "Ballute") "Rocket Engine" (ability :name "Rocket Engine") "Stratospheric Flight" (ability :name "Stratospheric Flight") "Supersonic Flight" (ability :name "Supersonic Flight") "Trans-atmospheric Flight" (ability :name "Trans-atmospheric Flight") :VTOL (ability :name "VTOL" :summary "* Hovering units may [Move] backwards. * Hovering units may use [Vector Movement] rule."))) "Ground Movement" (power :name "Ground Movement" :abilitymap (abilitymap :2-Legged (ability :name "2-Legged") :3-Legged (ability :name "3-Legged") :4-Legged (ability :name "4-Legged") :6-Legged (ability :name "6-Legged") :8-Legged (ability :name "8-Legged") :Hover (ability :name "Hover" :summary "* Hovering allows full movement speed over any flat terrain without actually touching the surface. Ground, Water, Sand, Ice, generally cause no penalty, but turning is difficult and imprecise especially at high speeds. * Hovering units may [Move] backwards. * Hovering units may use [Vector Movement] rule.") "Jump Jets" (ability :name "Jump Jets") "Off Roading" (ability :name "Off Roading") :Snowcraft (ability :name "Snowcraft" :summary "* Off Snow +1 Terrain Penalty.") :Tracked (ability :name "Tracked") :Tunnelling (ability :name "Tunnelling") "Turbo Booster" (ability :name "Turbo Booster" :titles "Boost, Nitro, Turbo, Turbo Charger") :Wheeled (ability :name "Wheeled"))) "Water Movement" (power :name "Water Movement" :abilitymap (abilitymap :Hydrofoil (ability :name "Hydrofoil") :Sailed (ability :name "Sailed" :image "Maps/Windsock.png" :reference "Estimated 18ft Skiff speeds at 20mph winds: 0 (180deg), 16mph (150deg), 26mph (120deg), 31mph (90deg), 32mph (60deg), 27mph (30deg), 19mph (0deg) Estimated ice yacht speeds at 30mph winds: 0 (180deg), 95mph (150deg), 144mph (120deg), 165mph (90deg), 155mph (60deg), 115mph (30deg), 30mph (0deg)" :summary "* Wind direction has an effect on all vehicles but it is most pronounced on sailing vessels. * [Setup] - Point Windsock in direction of the wind. If wind direction is not already determined, roll a die to randomize the wind direction. * [Move] - [-1 Speed] when starting the turn against the wind at an angle. * [Move] - [-2 Speed] when starting the turn directly against the wind. * Sailing speed is based on Wind speed, direction, angle of motion and vesselsize. * Same direction as wind (Running Downwind): Max Speed = Wind Speed * 30 degrees off direction (Broad Reach): Max Speed = Wind Speed * 1.3 (* 4 on ice) * 60 degrees off direction (Broad Reach): Max Speed = Wind Speed * 1.5 (* 5 on ice) * 90 degrees off direction (Beam Reach): Max Speed = Wind Speed * 1.4 (* 5.5 on ice) * 120 degrees off direction (Close Reach): Max Speed = Wind Speed * 1.2 (* 4.8 on ice) * 150 degrees off direction (Close Hauled): Max Speed = Wind Speed * .7 (* 4 on ice) * 180 degrees (Head To Wind or In Irons): Max Speed = 0 * Over distance, sailboats average speed over distance is further limited by their length at waterline: * This is estimated to be about 1.34 x the square root of the waterline length. * For a 144 ft sailboat at the waterline, the square root is 12, and the boat will probably not exceed 12 x 1.34, or about 16 knots/18mph/30kph. * A 100 footer should do 13.4 knots/15mph/25kph. * A 30 footer should do 7.34 knots/8mph/13kph. * A 16 footer should do 5.36 knots/6mph/10kph.") :Submersible (ability :name "Submersible"))) "Space Movement" (power :name "Space Movement" :abilitymap (abilitymap "Chemical Rockets" (ability :name "Chemical Rockets") "Impulse Drive" (ability :name "Impulse Drive" :summary "* The Impulse Drive is a drive system based upon the concept that repeated energy releases at the same harmonic frequency will cause small ripples in the fabric of space. * By rhythmic repetition, the Drive can cause an action/reaction effect against the fabric of space itself, therefore no longer needing reaction mass to travel large distances. * Further, the ripples in space cause space itself to slightly change orientation on each wave. Anything crossing a wave will suffer minor disruption. Light, lasers, radio waves, radiation, and relativistic particles are increasingly scattered as they strike each wave effectively dispersing them. * This spatial effect has a number of implications on space travel: * High energy radiation becomes unfocused effectively creating radiation shielding proportionate to the distance from the source. * Energy weapons, relativistic particle weapons, and railguns become unfocused and scattered effectively increasing the armor of the vessel proportionate to the distance of the weapon. * At long distances, the energy detected by radar and other detection devices (even telescopes) become diffused. This effectively provides the vessel with increased stealth proportionate to the distance of the detector. * At closer distances, microcircuitry becomes prone to failure and damage. This makes computer chips, the foundation of modern computer science, next to useless. Therefore, computer systems must be turned off when the wave drive is active. Piloting, weaponry, and navigation must therefore be performed manually with limited automation." :titles "Impulse, Ripple Drive, Wave Drive") "Ion Drive" (ability :name "Ion Drive") "Nuclear Rockets" (ability :name "Nuclear Rockets") "Reaction Mass" (ability :name "Reaction Mass") "Subspace Drive" (ability :name "Subspace Drive" :reference "* Comet Empire Subspace Attack Submarine" :summary "* By creating a minor fold in space, a unit may drop almost completely out of normal space while maintaining a small window through which it may still interact with normal space.") "Torch Drive" (ability :name "Torch Drive" :summary "* This drive creates a tight gravity well around the ship dropping it partially out of normal space. Because the ship is no longer in normal space, it does not actually move. What does move is the interface between normal space and the ship. Speed and direction are adjusted by controlling the depth and shape of the field. * There are a number of distinct advantages to this drive system. Because the ship in not moving, it is not subject to inertia or problems incurred at relativistic speeds. * Combat with the Torch drive is unique for several reasons. The occupants are not subject to the enormous stress of maneuvering at relativistic speeds. Conventional weapons have greatly reduced effect because only damage that crosses the interface has any effect on the ship. * Weaknesses - The Torch drive must also maintain a protective gravity bubble to defend against its own gravity well. Weapons designed to disrupt the Torch drive have a strong effect by making the ship more vulnerable to damage, by reducing its speed, by subjecting it to increased stress from travelling at relativistic speeds, and by exposing it to its own gravity well." :titles "TISA, Trans-Gravitic, Interphased, Sub-Light Anamoly Drive") "Rocket Booster" (ability :name "Rocket Booster" :titles "Boost, Turbo Booster") "Vernier Thruster" (ability :name "Vernier Thruster" :titles "Apogee Motor"))) "Interstellar Movement" (power :name "Interstellar Movement" :abilitymap (abilitymap :Hyperdrive (ability :name "Hyperdrive" :image "Units/SpaceAndTime/Hyperspace.jpg" :summary "* Faster than light travel can be accomplished by warping space into a Wormhole/Black hole, dropping out of normal space and travelling through the parallel universe called Hyperspace/Tachyon Space where physical laws are not bound by the relationship between mass and the speed of light, and finally returning to normal space by creating another space warp. * Hyperspace/Tachyon Space - Tachyon Space, like other dimensions is at right angles to our existing 3 dimension. In Hyperspace, time and distance have different meanings, all particles are tachyons, and the speed of light is an absolute minimum speed instead of a maximum. Travelling through Hyperspace is exceptionally hazardous. In fact, any deviation from the calculated route cause the corridor to collapse leaving one stranded in Hyperpace forever with no way to calculate a return. * Calculating a Route - Once a destination is chosen, complex calculations must be performed to calculate a direct route from the current location to the destination through the shifting reality of Hyperspace. A successful route will be a 'straight' line through Hyperspace. Proximity to a gravity well makes these calculations next to impossible. Typically, all ship computer resources are required for this calculation and the larger the ship fewer the available routes and therefore the greater the complexity. Ships may only enter and exit hyperspace at the edge of a solar system and must use conventional sub light drives within the system. A day or more at sub-light speed is therefore required to reach or leave a planet in an inner solar system. Route calculation time is roughly light years x tons / 10secs e.g. 4 light years x 100 tons / 10 = 40sec. * Hyperspace Corridor - Once calculated, the ship must meet the speed defined by the calculation while modulating the Hyperdrive energy signature to match the bridge to Hyperspace. If all goes well, the vast energies in Tachyon Space will form a corridor directly to the destination. Errors in any of the steps usually involve intense gravitional shearing forces that will at best cause damage to the Hyperdrive and leave the traveller stranded in deep space, or worse, Hyperspace. * Travel in Hyperspace - Hyperspace travel is typically a boring affair. The Hyperspace corridor carries the ship to its destination, so no manuevering is needed. The time spent in Hyperspace varies, but is usually proportional to the distance. Transit time is roughly 2 hours per light year travelled (e.g. 4 light years x 2 = 8hours) * Tachyon Doppler Effect - When the Hyperspace Corridor is created, both ends of the corridor will start leaking Tachyons which can be detected by sensitive instruments. The amount of Tachyons increases with the size of the ship, the distance travelled and the closer the time of arrival. * Tachyon Relay Network - Satellites at the edge of stellar systems use Hyperspace Corridors to beam tranmissions through Hyperspace to their opposites in other systesm. Since these communications have negligible mass, the calculations are nearly instantaneous though the same transit times apply. * History - Imaginary Space, I-Space - While studying fusion plant efficiency using various algorithms, a surprising discovery was made: very rarely and seemingly at random, the plant would produce a tiny tachyon burst. After decades of study, a pattern began to emerge along with a shocking discovery: only algorithms using imaginary numbers could trigger a burst and a small amount of particles were actually disappearing during the event. Where the particles were going became the primary focus of astrophysics from then on. Eventually a hypothesis gathered momentum. The particles were leaving real space and traveling along trajectories plotted through so called imaginary space. This implied that the destination of the particles could be predicted. After much trial and error another breakthrough: a second tachyon burst moments after the first and many kilometers away. The particles had returned. Faster than light travel was possible. The implications for communications were immediately obvious, but could something larger make the trip? Research was slow because increased mass meant increased complexity. The power and computational needs were high but not unachievable. Only a decade later the first successful test craft made the trip. A decade later commercial hyperdrives became available. A decade later they were affordable on even modest starships." :titles "FTL Drive, Gravity Drive, Gravity Lens, Subspace Drive, T-Drive, Tachyon Drive, Warp Drive"))) "Jump Drive" (power :name "Jump Drive" :image "Units/SpaceAndTime/Wormhole.jpg" :reference "* I created the Event Horizon to reach the stars, but she's gone much, much farther than that. She tore a hole in our universe, a gateway to another dimension. A dimension of pure chaos. Pure... evil. When she crossed over, she was just a ship. But when she came back... she was alive! - Dr. Weir, Event Horizon" :summary "* Jump Drives generate energy pulses in the ship's drive to create ripples in the fabric of space. Each pulse must be precisely timed to the apex of each ripple to create an increasing harmonic wave (the 'Wave Motion' effect). Eventually, the energy of the occillation becomes too great, a tear in space is produced, and the starship falls in." :titles "Gate Drive, Stargate, Wave Motion Engine, Wormhole" :abilitymap (abilitymap "Strategic Warp Jump" (ability :name "Strategic Warp Jump" :summary "* A ship with a Warp Engine may perform a strategic warp jump and instantly remove itself from combat, returning to the strategic map. * A unit already on the strategic map may move [Skill] spaces on the strategic map. * [Requires]: The unit must cease maneuvering and must perform this ability for 3 consecutive turns. * [Action]: On the second consecutive action, the unit immediately removes all Vector tokens and moves the unit to any other space on the map.") "Tactical Warp Jump" (ability :name "Tactical Warp Jump" :summary "* A ship with a Warp Engine may perform a tactical warp jump and instantly transport from any space on the map to any other. * [Requires]: The unit must cease maneuvering and must perform this ability for 2 consecutive turns. * [Action]: On the second consecutive action, the unit immediately removes all Vector tokens and moves the unit to any other space on the map."))) :Teleportation (power :name "Teleportation" :titles "Instant Transmission, Teleporter, Transporter" :abilitymap (abilitymap "Teleport Away" (ability :name "Teleport Away" :summary "* Teleport an object/objects to a precisely known location. * Level determines size of object/objects and distance. * Tricks: Teleporting mines, bombs, fighters, drill missiles." :titles "Smite") "Teleport Self" (ability :name "Teleport Self") "Teleport Toward" (ability :name "Teleport Toward" :reference "Beam me up Scotty" :summary "* Teleport an object/objects that you know the exact location of to your location. * Level determines size of object/objects and distance."))) "Dimensional Travel" (power :name "Dimensional Travel" :reference "* I reject your reality and substitute my own. - Adam Savage, Mythbusters" :abilitymap (abilitymap "Dimension Drop" (ability :name "Dimension Drop" :summary "* Send a small object through a dimensional portal and immediately close it again. This is most practical for sending messages or explosives.") "Dimensional Interference" (ability :name "Dimensional Interference" :summary "* Create an area that is more difficult to use dimensional or teleporting abilities.") "Dimensional Portal" (ability :name "Dimensional Portal" :titles "Gate") "Dimensional Teleport" (ability :name "Dimensional Teleport" :summary "* Move rapidly from one location to another by creating a wormhole between the locations.") "Dimension Trace" (ability :name "Dimension Trace" :summary "* Detect the origin of a Teleporter, Dimensional Portal, or an [Outsider].") "Dimension Track" (ability :name "Dimension Track" :summary "* Track the destination of someone who recently travelled using Teleport or Dimensional Travel. Also can be used to track an [Outsider] as if the user had [Tracking].") "Dimensional Trap" (ability :name "Dimensional Trap" :summary "* Open a Dimensional Portal that opens when a target enters the area, draws them through, and then closes behind.") "Dimensional Walk" (ability :name "Dimensional Walk" :summary "* Move rapidly over terrain by quickly phasing in and out of the current space."))) "Time Travel" (power :name "Time Travel" :image "Units/SpaceAndTime/Vortex.jpg" :summary "* The Vortex is a point of null space-time. It is a tunnel through which one can escape the bounds of space-time. * Here time and distance have no meaning. Travelers through the Vortex have no sense of their own body, but have a strong sense that they have been in the Vortex forever. Some suggest that this may actually be true. * Entering the Vortex is like dying. Leaving is like being born. Some suggest that this birth and death cycle is the reason why only living things may be brought through the Vortex." :titles "Chronos, Eye of Harmony, Yog-Sothoth" :abilitymap (abilitymap "Freeze Time" (ability :name "Freeze Time") "Reverse Time" (ability :name "Reverse Time" :summary "* Rewind recent events within the surrounding area and possibly choose a different [Action].") :Rewind (ability :name "Rewind") "Slow Time" (ability :name "Slow Time") "Time Shift" (ability :name "Time Shift")))))))) (func chapter_physical_powers_and_weaknesses : base/chapter (chapter :name "Physical Powers and Weaknesses" :sectionmap (sectionmap "Physical Powers" (section :name "Physical Powers" :powermap (powermap :Agility (power :name "Agility" :stat "Body") :Appearance (power :name "Appearance" :abilitymap (abilitymap "Alter Appearance" (ability :name "Alter Appearance") "Another Face in the Crowd" (ability :name "Another Face in the Crowd") "Chameleon Skin" (ability :name "Chameleon Skin") :Doppleganger (ability :name "Doppleganger" :summary "Take on the appearance of someone else.") "Enhanced Beauty" (ability :name "Enhanced Beauty") "Eye of the Beholder" (ability :name "Eye of the Beholder" :summary "* Appear differently to different viewers.") "Face of Terror" (ability :name "Face of Terror"))) :Armored (power :name "Armored" :summary "* Armor normally alters appearance and may be a permanent alteration or a suit that may be donned. * [+1 Value] for Armor that can appear on demand. * [+2 Value] for Armor that cannot be detected. Body Armor may be permanent or temporary. If permanent, no time is needed to activate it, but is must either be donned and carried or it permanently alters appearance." :abilitymap (abilitymap "Auto Med System" (ability :name "Auto Med System" :summary "* Detects severe damage to the wearer and automatically takes action to reduce shock and maintain suit integrity (sealing leaks or amputating if necessary).") "Ablative Armor" (ability :name "Ablative Armor" :summary "* Armor that vaporizes when hit decreasing damage but also damaging the armor. * Ignore the first point of [Damage] and reduce [Armor] (on that facing) instead.") "Hardened vs. Energy" (ability :name "Hardened vs. Energy" :summary "* [Damage]: [+2 Armor] if attack is an [Energy Weapon] * Only 1 Hardened vs. ability may be taken") "Body Flares" (ability :name "Body Flares" :summary "* Detects and distracts heat seaking missiles, * [Passive] - +1 Defense vs. Heat-Seaking Missiles (3 uses)") "Corrosion Resistance" (ability :name "Corrosion Resistance" :summary "* [Passive] - +1 Armor vs. Corrosive Agents") "Cyro Sleep System" (ability :name "Cyro Sleep System" :summary "* Can freeze the wearer into cryo-sleep and armor runs on minimal power to preserve the wearer from hostile environments or critical wounds for up to a month before power gives out.") "Electrical Resistance" (ability :name "Electrical Resistance" :summary "* [Passive] - +1 Armor vs. Electricity") "Environmental Containment" (ability :name "Environmental Containment" :summary "* Suit is sealed against chemical and biological weapons except corrosive ones. It is also water-proof.") "Environmental Independence" (ability :name "Environmental Independence" :summary "* Suit is sealed against most hostile environments including space. Does not include corrosive environments. * Requires - [Enviromental Containment]") "Floation Device" (ability :name "Floation Device" :summary "* An emergency floatation device.") "Grappling Hoist" (ability :name "Grappling Hoist" :summary "* A grappling dart that is fired into stone or hooked onto any uneven surface. The attached winch can then pull the wearer to the target or vis versa depending on relative weight. This can be used for climbing or towing. The darts can be recovered and reused, but they are often not recoverable. 2 replacement darts are included.") "Hardened vs. Fire" (ability :name "Hardened vs. Fire" :summary "* [Damage]: [+2 Armor] if attack produces [Fire] tokens * Only 1 Hardened vs. ability may be taken") "Hardened vs. Projectiles" (ability :name "Hardened vs. Projectiles" :summary "* [Damage]: [+2 Armor] if attack is a [Projectile] * Only 1 Hardened vs. ability may be taken") "Infrared Dampener" (ability :name "Infrared Dampener" :summary "* By activating this system, the armor reduces all heat signatures. Use of any system (even passive ones) will negate the stealth. * [Continuous Action] - Stealth vs. Infrared Sensors") "Magnetic Resistance" (ability :name "Magnetic Resistance" :summary "* Reduces the chance that a magnetic attachment can hold on the armor (assuming it is metallic). * [Passive] - +1 Armor vs. Magnetism") "Missile Mount" (ability :name "Missile Mount" :summary "* A special mount to add a missile pack on the back of the armor.") "Plasma Resistance" (ability :name "Plasma Resistance" :summary "* Detects and disrupts the magnetic bottle surrounding plasma rounds causing them to detonate too early. * [Passive] - +1 Armor vs. Plasma") "Pressure Resistance" (ability :name "Pressure Resistance" :summary "* [Passive] - +1 Armor vs. Pressure and Impact") "Radar Dampener" (ability :name "Radar Dampener" :summary "* By activating this system, the armor reduces all radar signatures. Use of any system (even passive ones) will negate the stealth. * [Continuous Action] - Stealth vs. Radar") "Radar Jammer" (ability :name "Radar Jammer" :summary "* By activating this system, the armor emits powerful radar white noise. * [Continuous Action] - [-Range] Radar sensors detection to any target within range.") "Radiation Resistance" (ability :name "Radiation Resistance" :summary "* [Passive] - +1 Armor vs. Radiation") "Reactive Armor" (ability :name "Reactive Armor" :summary "* Exterior layer of armor explodes on impact reducing damage of the first hit but reduces armor rating for all subsequent hits. * [Passive] - +2 Armor vs. the first hit. -1 Armor for each subsequent hit.") "Turret Mount" (ability :name "Turret Mount" :summary "* A special mount to add a turreted weapon on the back of the armor.") "Ultraviolet Jammer" (ability :name "Ultraviolet Jammer" :summary "* By activating this system, the armor emits a powerful blinding strobe in the ultraviolet band. * [Continuous Action] - [-Range] Ultraviolet sensors detection to any target within range.") "Underwater Operation" (ability :name "Underwater Operation" :summary "* Sealed against water and can operate underwater. Small thrusters allow slow movement underwater. Oxygen scrubbers allow extended underwater operation."))) :Fortitude (power :name "Fortitude" :titles "Resistence, Toughness" :stat "Body" :abilitymap (abilitymap :Resilience (ability :name "Resilience") "Resist Acid" (ability :name "Resist Acid") "Resist Cold" (ability :name "Resist Cold") "Resist Disease" (ability :name "Resist Disease") "Resist Electricity" (ability :name "Resist Electricity") "Resist Exposure" (ability :name "Resist Exposure") "Resist Fire" (ability :name "Resist Fire") "Resist Gravity" (ability :name "Resist Gravity") "Resist Hunger" (ability :name "Resist Hunger") "Resist Poison" (ability :name "Resist Poison") "Resist Pressure" (ability :name "Resist Pressure") "Resist Radiation" (ability :name "Resist Radiation") "Resist Space" (ability :name "Resist Space") "Resist Thirst" (ability :name "Resist Thirst") "Resist Vacuum" (ability :name "Resist Vacuum") "Resist Water" (ability :name "Resist Water") "Suspended Animation" (ability :name "Suspended Animation"))) :Healing (power :name "Healing" :abilitymap (abilitymap "Lernaean Regeneration" (ability :name "Lernaean Regeneration" :summary "* [Activate]: If unit is Damaged, Remove a Damage Token and add a White Close Combat Token.") :Recover (ability :name "Recover" :summary "* May roll extra dice when resisting [Disease] or [Poison].") :Regeneration (ability :name "Regeneration" :summary "* [Passive] * [Bleeding] and [Damage] Tokens are considered Yellow Tokens.") :Regrowth (ability :name "Regrowth"))) :Movement (power :name "Movement" :abilitymap (abilitymap "Wall Crawling" (ability :name "Wall Crawling") "Wall Running" (ability :name "Wall Running" :summary "* Requires: [Wall Crawling]") "Water Walking" (ability :name "Water Walking") "Water Running" (ability :name "Water Running" :summary "* Requires: [Water Walking]"))) "Natural Weaponry" (power :name "Natural Weaponry" :abilitymap (abilitymap :Bite (ability :name "Bite" :summary "* The fighter savagely bites his opponent. * Criticals - [Piercing]") "Bull Rush" (ability :name "Bull Rush" :titles "Charge") :Burrowing (ability :name "Burrowing") :Claw (ability :name "Claw" :summary "* The fighter attacks with both claws. * Criticals - [Bleeding]") "Claw Rake" (ability :name "Claw Rake" :summary "* A quick raking claw attack with one set of claws. * +2 Initiative * -1 Accuracy * +1 Move * Criticals - [Bleeding]") :Constrict (ability :name "Constrict" :titles "Bear Hug") "Death Roll" (ability :name "Death Roll") "Feather Blades" (ability :name "Feather Blades" :summary "* Feathers become as hard as steel and may be used as swords.") "Feather Knives" (ability :name "Feather Knives" :summary "* Feathers become as hard as steel and may be thrown like knives.") :Horns (ability :name "Horns" :summary "* Usually they are worn as antlers, but may sprout form anywhere on the body.") "Jaw Lock" (ability :name "Jaw Lock" :summary "* The fighter locks his powerful jaws onto the opponent to immobilize. * Damage - [Slow] * Criticals - [Piercing]") "Jaws of Death" (ability :name "Jaws of Death" :summary "* Fericiously attack with huge bites.") "Neck Bite" (ability :name "Neck Bite" :summary "* After grabbing an opponent, the fighter bites the neck/shoulders of the opponents doing damage each turn. * Requires: [Hold], [Continuous Hold] * +1 Initiative * +1 Accuracy * Critcals - [Bleeding]") :Overwhelm (ability :name "Overwhelm") :Pounce (ability :name "Pounce" :summary "* The fighter drops into a crouch and then explodes into a mighty leap at his prey attempting to knock down the opponent. * [Aerial] * +1 Accuracy * +1 Move * Criticals - [Knockdown]") "Quill Attack" (ability :name "Quill Attack") "Ripping Bite" (ability :name "Ripping Bite" :summary "* The fighter strikes a limb with the intention to disable his opponent. * -1 Initiative * -1 Damage * +1 Critical - [Bleeding] or [Weakness]" :titles "Jaws of Death") "Savage Genitalia" (ability :name "Savage Genitalia" :summary "* Male variations include excessive length, hardness, spines, and thorns. * Female variations include teeth, ripping suction, crushers, and grinders. * [Hidden Weapon] * -2 Initiative * -1 Accuracy * +1 Critical") :Spines (ability :name "Spines") :Sting (ability :name "Sting") "Swallow Whole" (ability :name "Swallow Whole") "Tail Sweep" (ability :name "Tail Sweep") "Tongue Lash" (ability :name "Tongue Lash") :Tusk (ability :name "Tusk") :Trample (ability :name "Trample"))) :Quickness (power :name "Quickness" :titles "Celerity, Hyperspeed, Quickening, Speed" :abilitymap (abilitymap "After Image" (ability :name "After Image" :reference "* Dragon Ball * Phantom Miria - Claymore" :summary "* Evade: Instantly make a Move without triggering Opportunity Attacks.") "Fast Actions" (ability :name "Fast Actions" :summary "* Time to complete time consuming actions is dramatically reduced.") "Hyper Punch" (ability :name "Hyper Punch" :summary "* Action: Perform a basic [Attack] on a single target. If the attack succeeds, roll additional damage dice up to level.") "Hyper Running" (ability :name "Hyper Running") "Hyper Swimming" (ability :name "Hyper Swimming") "Hyper Storm" (ability :name "Hyper Storm" :summary "Action: Use a Move and perform a basic [Attack] up to 1 target per level on each target along your path. If the attack succeeds, roll additional damage dice up to level."))) :Senses (power :name "Senses" :abilitymap (abilitymap "360 Vision" (ability :name "360 Vision") "Blood Scent" (ability :name "Blood Scent") "Cosmic Awareness" (ability :name "Cosmic Awareness" :reference "Captain Marvel, Gundam New Types") "Death Sense" (ability :name "Death Sense") "Electromagnetic Vision" (ability :name "Electromagnetic Vision" :summary "See into radio and radiation band of electromagnetic spectrum") "Enhanced Hearing" (ability :name "Enhanced Hearing") "Enhanced Smell" (ability :name "Enhanced Smell") "Enhanced Taste" (ability :name "Enhanced Taste") "Enhanced Touch" (ability :name "Enhanced Touch") "Microscopic Vision" (ability :name "Microscopic Vision") "Motion Detection" (ability :name "Motion Detection") "Night Vision" (ability :name "Night Vision" :titles "Light Intensifying") "Radar Sense" (ability :name "Radar Sense") "Radio Sense" (ability :name "Radio Sense" :summary "* May hear radio, television, shortwave, and even cellular telephone communications when concentrating.") :Sonar (ability :name "Sonar" :titles "Echo Location") "Telescopic Hearing" (ability :name "Telescopic Hearing") "Telescopic Vision" (ability :name "Telescopic Vision") "Thermal Vision" (ability :name "Thermal Vision") "Tracking Sense" (ability :name "Tracking Sense") "Ultrasonic/Subsonic Hearing" (ability :name "Ultrasonic/Subsonic Hearing" :summary "* Hear ultra high or low pitched sounds. Subsonic sounds can travel extreme distances and are some of the communication systems used by whales and elephants.") "Ultraviolet Vision" (ability :name "Ultraviolet Vision") "X-Ray Vision" (ability :name "X-Ray Vision" :reference "* Superman: Bruce Wayne? Batman: You peeked. - Superman and Batman, Superman: The Animated Series" :summary "* See through solid objects. The higher the density the blurrier the vision."))) :Shielding (power :name "Shielding" :abilitymap (abilitymap "Shield Modulation" (ability :name "Shield Modulation"))) :Strength (power :name "Strength" :reference "* Technique is for lightweights. - Sett, Runeterra" :stat "Body" :abilitymap (abilitymap "Power Leap" (ability :name "Power Leap") "Power Lift" (ability :name "Power Lift" :summary "* Lift additional kg equal to Power Rating.") "Power Strike" (ability :name "Power Strike" :summary "* Add Power Rating to weapon damage using Melee, or Close Combat.") "Power Throw" (ability :name "Power Throw" :summary "* Add Power Rating to weapon damage when throwing any object or weapon.") :Shockwave (ability :name "Shockwave") :Thunderclap (ability :name "Thunderclap")))))))) (func chapter_body_powers : base/chapter (chapter :name "Body Powers" :sectionmap (sectionmap "Alteration Powers" (section :name "Alteration Powers" :powermap (powermap :Adaptation (power :name "Adaptation" :summary "Ability to survive in hostile environments. Higher power levels ignore the effects of increasingly hostile environments." :abilitymap (abilitymap "Adapt to Cold" (ability :name "Adapt to Cold") "Adapt to Desert" (ability :name "Adapt to Desert") "Adapt to Electricity" (ability :name "Adapt to Electricity") "Adapt to Fire" (ability :name "Adapt to Fire") "Adapt to Fresh Water" (ability :name "Adapt to Fresh Water") "Adapt to Heat" (ability :name "Adapt to Heat") "Adapt to High Altitude" (ability :name "Adapt to High Altitude") "Adapt to High Gravity" (ability :name "Adapt to High Gravity") "Adapt to High Pressure" (ability :name "Adapt to High Pressure") "Adapt to Low Gravity" (ability :name "Adapt to Low Gravity") "Adapt to Low Pressure" (ability :name "Adapt to Low Pressure") "Adapt to Micro Impact" (ability :name "Adapt to Micro Impact" :summary "* Can endure the impact of very small, high velocity particles like micro meterorites and small caliber bullets.") "Adapt to Radiation" (ability :name "Adapt to Radiation") "Adapt to Salt Water" (ability :name "Adapt to Salt Water") "Adapt to Vacuum" (ability :name "Adapt to Vacuum") "Adapt to Zero Gravity" (ability :name "Adapt to Zero Gravity") "Adapt to Zero Pressure" (ability :name "Adapt to Zero Pressure"))) :Acidic (power :name "Acidic" :abilitymap (abilitymap "Acid Bite" (ability :name "Acid Bite") "Acid Blood" (ability :name "Acid Blood" :reference "Gestates in a human host and has concentrated acid for blood - Aliens") "Acid Spray" (ability :name "Acid Spray") "Acid Spit" (ability :name "Acid Spit") "Acid Sting" (ability :name "Acid Sting"))) "Altered Skin" (power :name "Altered Skin" :abilitymap (abilitymap "Slippery Skin" (ability :name "Slippery Skin") "Tar Baby" (ability :name "Tar Baby"))) :Animalism (power :name "Animalism" :reference "Beast Boy, Teen Titans" :titles "Shapeshifter" :abilitymap (abilitymap "Adhesive Grip" (ability :name "Adhesive Grip") "Aspect of Wolf" (ability :name "Aspect of Wolf" :reference "Everquest") "Bat Sight" (ability :name "Bat Sight") "Bear Form" (ability :name "Bear Form") "Bear Strength" (ability :name "Bear Strength") "Cat Feet" (ability :name "Cat Feet" :summary "* Reduce damage from falls") "Chameleon Skin" (ability :name "Chameleon Skin") "Extra Limbs" (ability :name "Extra Limbs") "Fish Eye" (ability :name "Fish Eye") "Fish Form" (ability :name "Fish Form") :Gills (ability :name "Gills") "Hawk Eye" (ability :name "Hawk Eye" :titles "Eagle Eye") "Hawk Form" (ability :name "Hawk Form") "Rat Form" (ability :name "Rat Form") "Snake Bite" (ability :name "Snake Bite") "Snake Form" (ability :name "Snake Form") "Spider Climb" (ability :name "Spider Climb") :Spines (ability :name "Spines") :Tendrils (ability :name "Tendrils") :Wings (ability :name "Wings") "Wolf Form" (ability :name "Wolf Form") "Wolf Scent" (ability :name "Wolf Scent"))) "Demonic Power" (power :name "Demonic Power" :summary "* Yoki - 妖気, or 'demon essence' (the first character means demon, and second character is the same as the Chinese word commonly known as chi)." :titles "Demon, Yoki, Yoma") :Diseases (power :name "Diseases" :abilitymap (abilitymap "Fungal Growth" (ability :name "Fungal Growth") "Intestinal Parasite" (ability :name "Intestinal Parasite") :Rabid (ability :name "Rabid"))) :Explosive (power :name "Explosive" :abilitymap (abilitymap "Bombardier Spray" (ability :name "Bombardier Spray"))) :Flexible (power :name "Flexible" :abilitymap (abilitymap "Animated Hair" (ability :name "Animated Hair") "Arm Stretch" (ability :name "Arm Stretch" :summary "* [Action]: May perform known [Punch] ability at range.") "Body Stretch" (ability :name "Body Stretch" :reference "* You need to be more ... flexible. - Elastigirl, The Incredibles") "Bouncing Ball" (ability :name "Bouncing Ball") :Engulf (ability :name "Engulf") "Hair Whip" (ability :name "Hair Whip") "Leg Stretch" (ability :name "Leg Stretch" :summary "* [Action]: May perform known [Kick] ability at range.") :Tentacles (ability :name "Tentacles") "Tentacle Hammer" (ability :name "Tentacle Hammer") "Tentacle Spear" (ability :name "Tentacle Spear") "Tentacle Whip" (ability :name "Tentacle Whip"))) :Intangibility (power :name "Intangibility" :abilitymap (abilitymap :Dematerialize (ability :name "Dematerialize") "Dematerialize Other" (ability :name "Dematerialize Other"))) :Invisibility (power :name "Invisibility" :abilitymap (abilitymap :Invisible (ability :name "Invisible") :Transparency (ability :name "Transparency") :Vanish (ability :name "Vanish"))) :Longevity (power :name "Longevity" :abilitymap (abilitymap "Eternal Youth" (ability :name "Eternal Youth" :titles "Ageless") "Long Life" (ability :name "Long Life") :Reincarnation (ability :name "Reincarnation" :reference "* Doctor Who") "Reincarnation - Transference" (ability :name "Reincarnation - Transference") "True Immortality" (ability :name "True Immortality"))) :Lycanthropy (power :name "Lycanthropy" :summary "* Lycanthropy is an inherited trait that normally lies dormant. It seems to be triggered by near death experiences with other Lycanthropes. !Traits * Permanent - Lycanthropy is an inherited trait and cannot be 'cured'. * Rage - Lycanthropes are easily angered and are subject to berserk rages. ** [Anytime]: When taunted or after taking 2 or more damage, the unit must roll Lycanthropy vs. Spirit, gaining [Berserk] Tokens for each Hit. If the unit has any [Berserk] Tokens it immediately takes a non human Lycanthropy form on its next [Action]. ** [Daily]: On the first nights of the waxing and waning Moons or on any night under a Full Moon, the unit must check for going berserk as if taunted. * [Tooth and Claw] ** Requires: Must be in a non human form. ** Passive ** +1 Melee or Close Combat for each [Rage] Token." :stat "Beast" :abilitymap (abilitymap "Animal Form" (ability :name "Animal Form" :summary "* Action: Change to specific animal unit. ** +1 Move, -2 Mind, +1 Spirit. ** Clothes and Armor are destroyed or dropped. All Equipment is dropped. ** Gain [Natural Weaponry] and [Regeneration] Abilities. ** Duration: Until sunrise.") "Primal Animal Form" (ability :name "Primal Animal Form" :reference "American Werewolf in London") "Beastman Form" (ability :name "Beastman Form" :reference "Wolfman or Mr. Hyde." :summary "* Action: Change to bestial humanoid unit. ** +1 Body, -1 Mind. ** Shirt and Armor is destroyed or dropped. ** Gain [Regeneration] Ability. ** Duration: Until sunrise.") "Crinos Form" (ability :name "Crinos Form" :reference "The Howling" :summary "* Requires: [Animal Form], [Beastman Form] * Action: Change to specific Crinos unit. ** +2 Body, -2 Mind, +1 Spirit. ** Clothes and Armor are destroyed or dropped. ** All Equipment not in hands is dropped. ** Gain [Natural Weaponry], [Armor], and [Regeneration] Abilities. ** Each [[Bleeding]] or [[Damage]] Token taken grants a [[Rage]] Token. ** Each [[Bleeding]] Token inflicted grants a [[Rage]] Token. ** Each adjacent Ally or Foe slain grants a [[Rage]] Token. ** Remove a [[Rage]] Token instead of gaining a [[Hold]], [[Control]], [[Morale]], [[Despair]] or [[Fear]] Token. ** If [[Rage]] Tokens exceed Spirit, then roll [[Rage]] vs [[Spirit]] or gain a [[Berserk]] Token. ** Duration: Until sunrise.") "Human Form" (ability :name "Human Form" :summary "* Action: Change back to human unit from other Lycanthropy form. * Duration: Indefinite") "Mark Territory" (ability :name "Mark Territory" :summary "* By scenting an area, animals and supernatural beings will recognize the scent as a warning to stay away. Aggressive beings may be drawn to it.") "Mirror Walk" (ability :name "Mirror Walk" :summary "* Action: As a creature of spirit, Lycanthropes may enter the [Spirit Realm] merely by looking at their reflection in any surface.") "Spirit Claw" (ability :name "Spirit Claw" :summary "* Allows unit to attack targets across the [Veil]."))) :Phasing (power :name "Phasing" :abilitymap (abilitymap "Phase Jump" (ability :name "Phase Jump" :summary "* The ability to move without travelling through the intervening space. * [Action]: Instantly move to any empty space up to 1/3 speed away without passing through any intervening spaces.") "Phase Walk" (ability :name "Phase Walk" :summary "* The ability to move through solid matter. * [Action]: Move at half speed ignoring terrain penalties or other objects. While Phase Walking, the user takes no physical damage (unless it is magical). If the move ends in a solid object, the user is still considered to be Phase Walking unitl it no longer ends it turn on a solid object. No attacks can be made this turn."))) "Reality Warping" (power :name "Reality Warping" :reference "* Franklin Richards" :summary "* Perhaps equal to Time Travel as the most powerful of all abilities. By altering reality, seemingly nothing is beyond possibility." :abilitymap (abilitymap "Closed Universe" (ability :name "Closed Universe" :reference "* M.C. Escher, Relativity * Land of the Lost" :summary "* Exits from a location loop back upon themselves to leave a person back where they started."))) "Shape Change" (power :name "Shape Change" :titles "Shapeshifter" :abilitymap (abilitymap "Physical Imitation" (ability :name "Physical Imitation" :reference "* So, how do we know who's human? If I was an imitation, a perfect imitation, how would you know it was really me? - Childs, The Thing"))) "Size Control" (power :name "Size Control" :abilitymap (abilitymap :Growth (ability :name "Growth") :Shrinking (ability :name "Shrinking"))) :Spawning (power :name "Spawning" :abilitymap (abilitymap "Copy Other" (ability :name "Copy Other" :summary "Split target into 2 copies, each with -1 on all abilities.") "Copy Self" (ability :name "Copy Self" :summary "Split yourself into 2 copies, each with -1 on all abilities.") "Detach Body Parts" (ability :name "Detach Body Parts") :Offspring (ability :name "Offspring" :reference "* A Cell gets out, and it will IMITATE EVERYTHING on the face of the EARTH! AND NOTHING CAN STOP IT! - Blair, The Thing"))) :Toxins (power :name "Toxins" :reference "* Say 'ah'. Some poisons can kill people in the thousands with that amount. Like botulinum toxin. It inhibits acetylcholine release, causing loss of muscle tone, lethary, .. dizziness .., visual impairment.., heavy eyelids, intense thirst, loss of speech, vomiting, diarrhea, stomach distention, breathing difficulty.. then.. respiratory failure. - A.K.I, Street Fighter 6" :titles "Poisonous, Venomous" :abilitymap (abilitymap "Blinding Spit" (ability :name "Blinding Spit") "Blinding Toxin" (ability :name "Blinding Toxin") "Irritating Toxin" (ability :name "Irritating Toxin") "Paralyzing Bite" (ability :name "Paralyzing Bite") "Paralyzing Spit" (ability :name "Paralyzing Spit") "Paralyzing Spray" (ability :name "Paralyzing Spray") "Paralyzing Sting" (ability :name "Paralyzing Sting") "Poison Bite" (ability :name "Poison Bite") "Poison Blood" (ability :name "Poison Blood") "Poison Spit" (ability :name "Poison Spit") "Poison Spray" (ability :name "Poison Spray") "Poison Sting" (ability :name "Poison Sting") "Poison Touch" (ability :name "Poison Touch") "Poisonous Flesh" (ability :name "Poisonous Flesh" :summary "* Poisonous if bitten") "Poisonous Skin" (ability :name "Poisonous Skin" :summary "* Poisonous to the touch"))) :Transformation (power :name "Transformation" :reference "* Let me change into something a little more... Comfortable. - Elise, Runeterra" :abilitymap (abilitymap "Change Clothing" (ability :name "Change Clothing") :Combination (ability :name "Combination" :reference "* Form feet and legs; form arms and body; and I'll form the head! - Keith, Voltron" :summary "* [Action]: Unit may combine with another unit with this ability to form a new unit with their combined value of Transformation skills or less.") "Gaseous Form" (ability :name "Gaseous Form") "Liquid Form" (ability :name "Liquid Form") "Matter Chameleon" (ability :name "Matter Chameleon" :reference "Kevin from Ben 10" :summary "* Transform body into any material touched") "Metal Form" (ability :name "Metal Form" :reference "* Colossus - X-men * I'm bulletproof, nothing to lose...fire away, fire away...richochet, you take your aim... fire away, fire away...you shoot me down, but I won't fall...I am titanium - David Guetta, Titanium" :summary "* Transform body into any material touched") "Plant Form" (ability :name "Plant Form" :reference "* Swamp Thing, Man-Thing") "Quick Change" (ability :name "Quick Change") :Transform (ability :name "Transform" :reference "More Than Meets the Eye - Transformers" :summary "* [Action]: Change into a new unit with skill points equal to Transform."))) :Vampirism (power :name "Vampirism" :summary "* Any unit with Vampirism is by definition a [Vampire]. * [Deploy]: Start with [Vampire Blood] Tokens equal to Vampirisim. * Generations - When a Vampire is created, it automatically gains the Vampire Generation ability one less than the one who created them. A Vampire can only gain a lower Generation by [Diablerie]. * Vitae - The blood * Hunger - Vampires are always hungry, unless they have recently killed." :stat "Beast" :abilitymap (abilitymap "Vampire: 15th Generation" (ability :name "Vampire: 15th Generation" :titles "Stray") "Vampire: 14th Generation" (ability :name "Vampire: 14th Generation" :summary "* The last generation is known as thin-blooded vampires and start with only basic Vampiric powers. During the Dark Ages the Thirteenth Generation was believed to be the last, but in the Final Nights this is comprised of the 14th and 15th Generations." :titles "Thin Blood") "Vampire: 13th Generation" (ability :name "Vampire: 13th Generation") "Vampire: 12th Generation" (ability :name "Vampire: 12th Generation" :summary "* Although they lack the powers of the lower generations, the vampires of the 12th and 13th generations stand above men, capable of besting the strongest mortal knight in battle and wielding influence over barons, merchants and courts.") "Vampire: 11th Generation" (ability :name "Vampire: 11th Generation") "Vampire: 10th Generation" (ability :name "Vampire: 10th Generation" :summary "* While they are comparatively young, most vampires created within the last few centuries belong to the tenth and eleventh generation.") "Vampire: 9th Generation" (ability :name "Vampire: 9th Generation") "Vampire: 8th Generation" (ability :name "Vampire: 8th Generation" :summary "* Achieving a delicate balance between age and generation, these vampires are the most visible ones of the 14th century. They are nowhere near as old as most Cainites of lower generation, which places them in a delicate position. Most Cainites of eighth and ninth generation overcome this disadvantage by siring large covens of childer.") "Vampire: 7th Generation" (ability :name "Vampire: 7th Generation") "Vampire: 6th Generation" (ability :name "Vampire: 6th Generation" :summary "* Many of the vampires of the sixth and seventh generation are the self-styled lords of Cainite society. Although they are not as powerful as the Methuselahs, these Cainites are still formidable opponents, who gladly sacrifice mystical and spiritual power for temporal influence. These Cainites rule over vast kingdoms, donning the crown of monarchs and commanding armies of younger Cainites and mortal thralls.") "Vampire: 5th Generation" (ability :name "Vampire: 5th Generation" :titles "Methuselah") "Vampire: 4th Generation" (ability :name "Vampire: 4th Generation" :summary "* Methsuselahs are the most powerful modern Vampires that have been encountered. They are terrifyingly alien and powerful. It is hard to imagine the power of the lower Generations, given the strenght of the 4th Generation." :titles "Methuselah") "Vampire: 3rd Generation" (ability :name "Vampire: 3rd Generation" :summary "* Thirteen ancient Vampires were thought to have survived past the great flood and to have started the existing clans. Presumably the Antediluvians are of such age and potency of blood that they possess nearly god-like power, and in fact some of them may be deities. Most believe these god-like beings to be either in torpor, manipulating the Jyhad, or dead. While some clans regard their progenitor favorably, as a whole the Antediluvians are often portrayed as boogeymen that will one day rise and devour their descendants in at time called Gehenna." :titles "Antedeluvlain") "Vampire: 2nd Generation" (ability :name "Vampire: 2nd Generation" :summary "* It is said that there were three second generation Vampires: Enoch, the Wise (Caine's advisor), Irad, the Strong (Caine's general) and Zillah, the Beautiful (Caine's wife). They lived in the first city and presumably created the Antedeluvians, but nothing is known of them after their childer rose up against them in the final nights of the First City. Perhaps the Second Generation perished in the Deluge, or at the hands of their childer.") "Vampire: 1st Generation" (ability :name "Vampire: 1st Generation" :summary "* Only Cain, the original Vampire, is 1st generation. After all this time, his abilities would be beyond imagination.") "Blood Bond" (ability :name "Blood Bond") "Blood Sight" (ability :name "Blood Sight" :summary "* See blood through the skin. * With close observation, subtle blood characteristics can be detected including blood diseases, poisoning, or Diablerie") "Consume Flesh" (ability :name "Consume Flesh" :summary "* Consume the flesh of a grabbed unit. Gain a [Vampire Blood] token and target gains a [Damage] and a [Spirit Damage]. * You may not gain more [Vampire Blood] than target has [Spirit], though you gain one more [Vampire Blood] if the target is slain by drinking its blood. * You may not have more [Vampire Blood] than [Vampirism]. * You may not drink from the dead.") "Drink Blood" (ability :name "Drink Blood" :summary "* Drink blood from a grabbed unit. Gain a [Vampire Blood] token and target gains a [Damage] and a [Spirit Damage]. * You may not gain more [Vampire Blood] than target has [Spirit], though you gain one more [Vampire Blood] if the target is slain by drinking its blood. * You may not have more [Vampire Blood] than [Vampirism]. * You may not drink from the dead." :titles "The Kiss") :Embrace (ability :name "Embrace" :reference "* It was magical. The surrender. The exquisite suicide of giving in ... words cannot encompass that experience ... I asked him ... 'What gives you the right?' ... My question had struck no chord of mercy ... Rather, I believe he wanted me to become as he was and see for myself what gave him the right - what gives all of our kind the right." :summary "* Sire - When a Vampire creates a another the creator is called its Sire.") :Torpor (ability :name "Torpor" :summary "* If slain, but the body is not burned or the head severed, the vampire will not die but instead enter a deep sleep while his body slowly recovers. * It is said that very old Vampires may be sleeping for centuries in Torpor.")) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/power :tag "weakness") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/power :tag "weakness") :severity 2)))))))) :Cybernetics (section :name "Cybernetics" :reference "* Metal is perfection. - Viktor, Runeterra" :summary "* Faux Flesh (Faux Skin) - The great breakthrough in cybernetics was not in machinery but in synthetic flesh. Faux Flesh is a foam that hardens into soft, realistic flesh that will not be rejected by user's immune system. Faux Flesh can be injected between machine parts and is used at all interface points between living tissue and cyberware. It seals wounds like chalking and is a staple of medical kits." :powermap (powermap "Cybernetic Arm" (power :name "Cybernetic Arm" :summary "* All abilities assume both arms are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap "Cybernetic Blade" (ability :name "Cybernetic Blade") "Cybernetic Claws" (ability :name "Cybernetic Claws" :reference "* I'm the best at what I do - Wolverine") "Cybernetic Electrifier" (ability :name "Cybernetic Electrifier" :summary "* Discharge a massive electric charge through the palms of the hands.") "Cybernetic Fingernails" (ability :name "Cybernetic Fingernails") "Cybernetic Hammer" (ability :name "Cybernetic Hammer") "Cybernetic Knife" (ability :name "Cybernetic Knife" :titles "Punch Blade") "Cybernetic Knuckles" (ability :name "Cybernetic Knuckles") "Cybernetic Saw" (ability :name "Cybernetic Saw") "Cybernetic Shredder" (ability :name "Cybernetic Shredder") "Cybernetic Spike" (ability :name "Cybernetic Spike") "Cybernetic Strength" (ability :name "Cybernetic Strength") "Cybernetic Weapon Arm" (ability :name "Cybernetic Weapon Arm" :summary "* Nonconsealable. * One or both arms may be replaced with heavy weapons from rifles, grenade launchers, micromissile launchers, up to miniguns.") "Cybernetic Weapon Hand" (ability :name "Cybernetic Weapon Hand" :summary "* A regular pistol or SMG of any sort may be modified to fit into a cybernetic arm. This ability may be purchased for each arm.") "Cybernetic Whip" (ability :name "Cybernetic Whip") "Extension Hand" (ability :name "Extension Hand") "Extra Cybernetic Arm" (ability :name "Extra Cybernetic Arm") "False Fingerprints" (ability :name "False Fingerprints") "False Palmprint" (ability :name "False Palmprint") "Grapple Hand" (ability :name "Grapple Hand") "Monofilament Whip" (ability :name "Monofilament Whip") "Smartgun Link" (ability :name "Smartgun Link") "Sonic Filter" (ability :name "Sonic Filter" :summary "* Reduces sonic damage") "Tactile Enhancer" (ability :name "Tactile Enhancer") "Tool Hand" (ability :name "Tool Hand"))) "Cybernetic Hearing" (power :name "Cybernetic Hearing" :summary "* All abilities assume both ears are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap :Antideafening (ability :name "Antideafening") "Bug Detector" (ability :name "Bug Detector") "Enhanced Hearing Range" (ability :name "Enhanced Hearing Range" :summary "* Can hear supersonic and subsonic sounds.") "Noise Filter" (ability :name "Noise Filter") "Parabolic Hearing" (ability :name "Parabolic Hearing") "Radar Sensor" (ability :name "Radar Sensor") "Sonar Sensor" (ability :name "Sonar Sensor") "Stethoscope Hearing" (ability :name "Stethoscope Hearing") "Voice Stress Analyzer" (ability :name "Voice Stress Analyzer" :summary "* Detects stress in the target's voice. Often this means lying."))) "Cybernetic Implants" (power :name "Cybernetic Implants" :stat "Shadow" :abilitymap (abilitymap "Animated Tatoo" (ability :name "Animated Tatoo") "Artificial Gills" (ability :name "Artificial Gills") "Biomesh Skin" (ability :name "Biomesh Skin") "Breast Enhancement" (ability :name "Breast Enhancement" :summary "* Size and shape may be changed at will") "Body Plating" (ability :name "Body Plating") "Contraceptive Implant" (ability :name "Contraceptive Implant") :Cybersnake (ability :name "Cybersnake" :summary "* A visious close combat weapon that is implanted in mouth, stomach, or genitals! When in Close Combat range, the Cybersnake may lash out with surprise and land a potentially fatal blow.") :Cyberteeth (ability :name "Cyberteeth" :reference "* Jaws - Moonraker" :titles "Cyberfangs") "Cybernetic Rebreather" (ability :name "Cybernetic Rebreather" :summary "* May survive without fresh air for 10 minutes per level.") "Cybernetic Tail" (ability :name "Cybernetic Tail" :summary "* Adds a tail") "Disease Filter" (ability :name "Disease Filter") "Drug Filter" (ability :name "Drug Filter") "False DNA" (ability :name "False DNA") "Gas Filter" (ability :name "Gas Filter" :summary "* Filters harmful gases from the particles from the air, so they never reach the lungs.") "Hair Colorizing" (ability :name "Hair Colorizing") "Hair Styleshifting" (ability :name "Hair Styleshifting") "Jamming Transmitter" (ability :name "Jamming Transmitter") "Medical Injection System" (ability :name "Medical Injection System") "Motion Sensor" (ability :name "Motion Sensor") "Nasal Filter" (ability :name "Nasal Filter" :summary "* Removes particles from the air including sand, dust, pollen, and other large particles.") "Olfactory Enhancer" (ability :name "Olfactory Enhancer") "Poison Sniffer" (ability :name "Poison Sniffer") "Poisonous Cyberteeth" (ability :name "Poisonous Cyberteeth") "Reflex Enhancer" (ability :name "Reflex Enhancer") "Reinforced Bones" (ability :name "Reinforced Bones") "Sexual Implant" (ability :name "Sexual Implant") "Skin Colorizing" (ability :name "Skin Colorizing") "Stimulant Injectors" (ability :name "Stimulant Injectors") "Subdermal Holster" (ability :name "Subdermal Holster") "Subdermal Pouch" (ability :name "Subdermal Pouch") "Subdermal Transponder" (ability :name "Subdermal Transponder") "Toxin Filter" (ability :name "Toxin Filter") "Voice Amplifier" (ability :name "Voice Amplifier") "Voice Descrambler" (ability :name "Voice Descrambler" :summary "* May understand encrypted audio information if you know the key.") "Voice Scrambler" (ability :name "Voice Scrambler" :summary "* May speak in encrypted phrases that only a descrambler with the key can understand.") "Voice Synthesizer" (ability :name "Voice Synthesizer"))) "Cybernetic Interface" (power :name "Cybernetic Interface" :summary "* Cybernetic Interface include mostly software-based sensors and systems." :titles "Neuralware" :stat "Shadow" :abilitymap (abilitymap :Co-processor (ability :name "Co-processor") "Cybernetic Countermeasures" (ability :name "Cybernetic Countermeasures" :summary "* Hardens cybernetic computer components against attempts to hack or scramble it systems.") "Cybernetic Datapad" (ability :name "Cybernetic Datapad") "Cybernetic Recorders" (ability :name "Cybernetic Recorders" :summary "* Can record or playback audio and video") "Direct Comm Link" (ability :name "Direct Comm Link" :summary "* Listen to your music collection or radio stations, watch television, surf the web, or make phone calls. * Because these are neural links, they do not actually require cybernetic eyes or ears.") "Direct Neural Link" (ability :name "Direct Neural Link" :reference "* Do you think that's air your breathing?") "Medical Scanner" (ability :name "Medical Scanner") "Memory Chip Interface" (ability :name "Memory Chip Interface") "Pain Suppressor" (ability :name "Pain Suppressor") "Security Scanner" (ability :name "Security Scanner") "Skill Chip Interface" (ability :name "Skill Chip Interface" :reference "* I know Kung Fu * Do you know how to fly that thing? Not yet. - The Matrix") "Translation Software" (ability :name "Translation Software") "Vehicle Link" (ability :name "Vehicle Link"))) "Cybernetic Legs" (power :name "Cybernetic Legs" :summary "* All abilities assume both legs are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap "Cybernetic Kick" (ability :name "Cybernetic Kick") "Cybernetic Leap" (ability :name "Cybernetic Leap") "Cybernetic Rocket Launcher" (ability :name "Cybernetic Rocket Launcher") "Cybernetic Running" (ability :name "Cybernetic Running") "Cybernetic Tractor" (ability :name "Cybernetic Tractor" :summary "* Nonconsealable. * Replace both legs with wheels or treads.") "Extra Cybernetic Leg" (ability :name "Extra Cybernetic Leg") "Prehensile Foot" (ability :name "Prehensile Foot") "Spike Foot" (ability :name "Spike Foot") "Talon Foot" (ability :name "Talon Foot") "Webbed Foot" (ability :name "Webbed Foot" :summary "* Enhanced swimming"))) "Cybernetic Vision" (power :name "Cybernetic Vision" :stat "Shadow" :abilitymap (abilitymap "Colorizing Eyes" (ability :name "Colorizing Eyes") "Cybernetic Antidazzle" (ability :name "Cybernetic Antidazzle") "Cybernetic Camera" (ability :name "Cybernetic Camera") "Cybernetic Eye Laser" (ability :name "Cybernetic Eye Laser") "Cybernetic Heat Vision" (ability :name "Cybernetic Heat Vision") "Cybernetic Image Enhancement" (ability :name "Cybernetic Image Enhancement") "Cybernetic Laser Pointer" (ability :name "Cybernetic Laser Pointer") "Cybernetic Microscopic Vision" (ability :name "Cybernetic Microscopic Vision") "Cybernetic Night Vision" (ability :name "Cybernetic Night Vision") "Cybernetic Rangefinder" (ability :name "Cybernetic Rangefinder") "Cybernetic Targeting System" (ability :name "Cybernetic Targeting System") "Cybernetic Telescopic Vision" (ability :name "Cybernetic Telescopic Vision") "False Retina" (ability :name "False Retina"))) :Netrunning (power :name "Netrunning" :reference "* Do not try and bend the spoon. That's impossible. Instead, only try to realize the truth. What truth? There is no spoon. There is no spoon? Then you will see that it is not the spoon that bends. It is only yourself. - The Matrix * You must let it all go... Fear... Doubt... Disbelief. Free Your Mind. - Morpheus, The Matrix" :summary "* By directly connecting the brain to a computer program, the user can greatly increase his reaction time and resourcefulness while travelling in cyberspace. * Netrunners - Outlaw computer jocks or hackers. * SysOps - Corporate or government computer system defenders. * ICE - Intrusion Countermeasures Electronics. Guardian software designed to thwart hackers and intrusion programs. * Black ICE - ICE programs designed to trap and harm the hackers or software it is defending against. This can range from induced system failures, data loss, or dangerous electric feedback. Numerous safeguards exist against such dangerous software, but Black ICE attempts to lure the user into believing that by lowering these safeguards that he will have the opportunity to steal information. Often to make this lure credible, actual information must be put at risk. * ICE Breker - Software designed to counter ICE. * Avatar - The digital representation of those in the NET." :abilitymap (abilitymap "Code Breaker Program" (ability :name "Code Breaker Program" :summary "* Attempts to fool a [Gateway Program] that you are a legitimate user.") "Crash Program" (ability :name "Crash Program") "Denial Of Service Program" (ability :name "Denial Of Service Program" :summary "* Attempts to overwhelm the target program with millions of requests, thereby preventing legitimate users from accessing it until it can catch up with all of the requests." :titles "DOS") "Feedback Program" (ability :name "Feedback Program") "Flatline Program" (ability :name "Flatline Program") "Freeze Program" (ability :name "Freeze Program" :summary "* Attempts to alter the target program's internal clock, thereby slowing it or causing it to become non-responsive for a short about of time.") "Jackhammer Program" (ability :name "Jackhammer Program" :summary "* Attempts to damage a [Firewall Program]. Such blatant attempts immediately raise alarms and are often a tool of last resort.") "Phishing Program" (ability :name "Phishing Program" :titles "Password Research Program") "Speedtrap Program" (ability :name "Speedtrap Program") "Stealth Program" (ability :name "Stealth Program") "Succubus Program" (ability :name "Succubus Program") "Task Killer Program" (ability :name "Task Killer Program") "Tracer Program" (ability :name "Tracer Program" :titles "Bloodhound") "Trojan Horse Program" (ability :name "Trojan Horse Program") "Worm Program" (ability :name "Worm Program") "Camera Control Program" (ability :name "Camera Control Program") "Communications Uplink Program" (ability :name "Communications Uplink Program") "Elevator Control Program" (ability :name "Elevator Control Program") "Engine Control Program" (ability :name "Engine Control Program") "Factory Control Program" (ability :name "Factory Control Program") "Lock Control Program" (ability :name "Lock Control Program") "Navigation Control Program" (ability :name "Navigation Control Program") "Printer Control Program" (ability :name "Printer Control Program") "Telecom Control Program" (ability :name "Telecom Control Program") "Vehicle Control Program" (ability :name "Vehicle Control Program") :Firewall (ability :name "Firewall") "Gateway Program" (ability :name "Gateway Program" :titles "Login Screen, Padlock") "Guardian Program" (ability :name "Guardian Program" :titles "Doberman") "Intrusion Detection System" (ability :name "Intrusion Detection System" :titles "Alarm, Watchdog") "Worm Consumer Program" (ability :name "Worm Consumer Program" :titles "Aardvark, Robin") "Daemon Program" (ability :name "Daemon Program") "Database Search Program" (ability :name "Database Search Program") "Decryption Program" (ability :name "Decryption Program") "Encryption Program" (ability :name "Encryption Program") "Filelocker Program" (ability :name "Filelocker Program") "Unerase Program" (ability :name "Unerase Program") "Adware Program" (ability :name "Adware Program") "Eraser Program" (ability :name "Eraser Program") "Malware Program" (ability :name "Malware Program") "Memory Cosumer Program" (ability :name "Memory Cosumer Program") "Metamorphic Virus" (ability :name "Metamorphic Virus") "Polymorphic Virus" (ability :name "Polymorphic Virus") "Spyware Program" (ability :name "Spyware Program") "Zombie Program" (ability :name "Zombie Program")) :specialtymap (specialtymap "Attack Programs" (specialty :name "Attack Programs") "Control Programs" (specialty :name "Control Programs") "Protection Programs" (specialty :name "Protection Programs" :titles "ICE") :Utilities (specialty :name "Utilities") :Viruses (specialty :name "Viruses")))))))) (func chapter_energy_and_forces : base/chapter (chapter :name "Energy and Forces" :sectionmap (sectionmap :Elements (section :name "Elements" :powermap (powermap :Air (power :name "Air" :reference "* But still the clever north wind was not satisfied. It spoke to Vianne of towns yet to be visited, friends in need yet to be discovered, battles yet to be fought... - Chocolat * You're really going to trust me ... My mind is like the wind on the waves. It could change in an instant. - Kazuha, Genshin Impact" :summary "* Air is the element of freedom. Air elementalists remain distant from worldly concerns. They are always in continous motion, moving from place to place and never putting down roots. * Symbol - White Swirling Wind * Personality - Airy, Flighty, Emphemeral, Ethereal, Gossamer" :titles "Aeromancer. Storm Lord, Storm Shaman, Weather Witch, Wind Rider, Wind Walker" :abilitymap (abilitymap "Acid Cloud" (ability :name "Acid Cloud") "Acid Rain" (ability :name "Acid Rain" :summary "* Calls acid rain from an existing cloud.") "Air Breathing" (ability :name "Air Breathing" :summary "* Can breath in any kind of air without ill effect including poison gases.") "Alter Temperature" (ability :name "Alter Temperature") "Alter Weather" (ability :name "Alter Weather") "Call Storm" (ability :name "Call Storm" :summary "* Calls a storm cloud.") "Carried on the Wind" (ability :name "Carried on the Wind" :summary "* By focusing, the user can detect small things carried on the wind. Smoke, pollen, poison, unusual smells, ash, dust, faint sounds, etc. may be detected with uncanny ability. Higher levels detect more distanct and faint things.") "Control Storm" (ability :name "Control Storm") "Clean Air" (ability :name "Clean Air") "Choking Cloud" (ability :name "Choking Cloud") "Control Winds" (ability :name "Control Winds" :summary "* Effect: Raise or lower Wind strength.") :Downdraft (ability :name "Downdraft") "Eye of the Storm" (ability :name "Eye of the Storm" :summary "* [Action]: Create an eye in the storm that reduces [Wind Intensity] in 1 space radius for each Hit. * [Continue]: Reroll wind reduction and radius increases by 2 up to Level radius. * [Discontinue]: Wind returns to normal at same rate it was reduced.") "Fan the Flames" (ability :name "Fan the Flames") "Fog Bank" (ability :name "Fog Bank") :Hailstorm (ability :name "Hailstorm") :Hurricane (ability :name "Hurricane" :summary "* Buildup" :titles "Divine Wind") "Lightning Charge" (ability :name "Lightning Charge" :summary "* Imbue an item with electric charge that is discharged on contact.") :Smother (ability :name "Smother") :Spindrift (ability :name "Spindrift" :summary "* Wind generates a thick mist above any body of water.") :Suffocate (ability :name "Suffocate") "Summon Cloud" (ability :name "Summon Cloud" :summary "* Summons a large living cloud in moisture rich air. This can obscure vision.") "Summon Djinn" (ability :name "Summon Djinn") "Summon Gust" (ability :name "Summon Gust" :summary "* Summons a small living wind on items that may be blown in the breeze. Air elementals love nothing more than pushing things around.") "Summon Slyph" (ability :name "Summon Slyph") :Swirl (ability :name "Swirl") "Temperature Control" (ability :name "Temperature Control" :summary "* Effect: Raise or lower Temperature, Humidity.") :Tempest (ability :name "Tempest") "Tempest in a Teapot" (ability :name "Tempest in a Teapot" :summary "* Hits have no effect. Criticals change Weather Intensity.") :Thunderstorm (ability :name "Thunderstorm") "Voices Carry" (ability :name "Voices Carry" :summary "Listen to conversation within line of sight.") "Weather Sight" (ability :name "Weather Sight" :summary "* Analyze and predict weather") "Wind Lash" (ability :name "Wind Lash" :titles "Wind Whip") :Whirlwind (ability :name "Whirlwind" :titles "Cyclone, Tornado") "Whispering Winds" (ability :name "Whispering Winds" :summary "Speak to others (one way) over long distances.") "Wind Blade" (ability :name "Wind Blade" :summary "* Create an ephemeral Sword created from thin air. It acts as a normal sword except that it does [Knockback] instead of [Bleeding].") "Wind Blast" (ability :name "Wind Blast" :reference "* Where the two winds meet, there I will see the Wind Scar - Inuyasha") "Wind Form" (ability :name "Wind Form" :summary "* [Requires]: Stand in a breeze. * [Action]: Gain attributes of Wind as well as [Wind Walk] for the turn. * [Continue]: May make [Strike] and [Grab] Wind Close Combat attacks at Level.") "Wind Slash" (ability :name "Wind Slash") "Wind Walk" (ability :name "Wind Walk") "Wind Wall" (ability :name "Wind Wall" :summary "* Wall that deflects missles and strikes aerial units.") :Updraft (ability :name "Updraft" :summary "* [Action]: Apply [Wind] in a radius around user, lift enemies off the ground with Level weight, and hurl them down, if they strike a surface they take Level damage .")) :specialtymap (specialtymap :Aeromancy (specialty :name "Aeromancy" :summary "* Aero is the magical version of Air. * Aero effects can be sustained without a source, but they can also be canceled by counter-magic. * Aero reacts with Pyro to produce the [Wildfire] effect. * Aero reacts with Cryo to produce the [Chill] effect. * Aero reacts with Hydro to produce the [Fog] effect. * Aero reacts with Electro to produce the [Ionized] effect. * Aero reacts with Geo to produce the [Weightess] effect."))) :Cold (power :name "Cold" :reference "Cold Miser, Frozen" :summary "* Cold abilities slow the movement of particles in the target. This slowing causes heat to leave the target. Therefore, cold powers also trigger a rush of hot air to rise from the target swirling wind all around. * Symbol - Bluish White Snowflake * Personality: Cold Elementalist personalities are influenced by their link to Cold. ** Examples: Cold, Icy, Chilly, Severe, Harsh, Brutal, Reserved" :titles "Frost Lord, Ice Breaker, Ice Queen, Snow Queen, Ice Princess" :abilitymap (abilitymap :Avalanche (ability :name "Avalanche") :Blizzard (ability :name "Blizzard") "Call Cold" (ability :name "Call Cold" :titles "Coldsnap") :Chill (ability :name "Chill" :summary "* Damage are Slow") :Comet (ability :name "Comet" :summary "* A massive ball of cold falls from the sky.") "Control Cold" (ability :name "Control Cold" :summary "* [Reaction]: Redirect a cold effect to another target.") "Frost Whip" (ability :name "Frost Whip" :titles "Frost Lash") "Frost Weapon" (ability :name "Frost Weapon" :summary "* Add cold damage to normal attack." :titles "Freezing Strike") "Glacial Wall" (ability :name "Glacial Wall") "Ice Armor" (ability :name "Ice Armor" :titles "Frozen Man, Ice Form, Ice Man Cometh") "Ice Blast" (ability :name "Ice Blast" :titles "Frost Bite") "Ice Bridge" (ability :name "Ice Bridge") "Ice Castle" (ability :name "Ice Castle" :reference "* The cold never bothered me anyway. - Elsa, Frozen" :titles "Snow Fort") "Ice Flow" (ability :name "Ice Flow" :summary "* A floating block of ice suitable for a raft rises to the water's surface. * [Requires]: May only be cast near water.") "Ice Riding" (ability :name "Ice Riding" :summary "* Provides [Skating] ability without the requirement of Skates." :titles "Ice Walk") "Ice Sculpture" (ability :name "Ice Sculpture") "Ice Slide" (ability :name "Ice Slide") "Ice Storm" (ability :name "Ice Storm" :titles "Hail Storm") "Icy Prison" (ability :name "Icy Prison") :Snowblind (ability :name "Snowblind")) :specialtymap (specialtymap :Cryomancy (specialty :name "Cryomancy" :summary "* Cryo is the magical version of Cold. * Cryo effects can be sustained without a source, but they can also be canceled by counter-magic. * Cryo reacts with Pyro to produce the [Melt] effect. * Cryo reacts with Geo to produce the [Brittle] effect. * Cryo reacts with Hydro to produce the [Freeze] effect. * Cryo reacts with Electro to produce the [Superconduct] effect. * Cryo reacts with Aero to produce the [Chill] effect."))))) :Forces (section :name "Forces" :powermap (powermap :Earth (power :name "Earth" :summary "* Earth is the element of substance. Earth Elementalists must be persistent, stoic, strong and enduring. They must be subbornly immobile in mind and spirit. * Symbol - Brown Mountain" :titles "Earth Lord, Earth Master, Geomancer" :abilitymap (abilitymap "Buried Alive" (ability :name "Buried Alive" :reference "* I've done far worse than kill you. I've hurt you. And I wish to go on hurting you. I shall leave you as you left me, as you left her; marooned for all eternity in the center of a dead planet... buried alive! Buried alive...! - Khan, Star Trek II: The Wrath of Khan" :summary "* Collapse earth to close an opening.") "Call Rockslide" (ability :name "Call Rockslide") "Control Earth" (ability :name "Control Earth" :summary "* [Reaction]: Redirect an earth effect to another target.") :Earthbind (ability :name "Earthbind" :summary "* Gravity increases for target flying unit. [-1 Altitude] for each success. No effect on units that are not flying." :titles "Grip of Earth") "Earth Move" (ability :name "Earth Move" :summary "* Pushes a mound of earth like a bulldozer.") "Earth Sight" (ability :name "Earth Sight" :summary "* By touching the ground with bare skin, detect any object directly touching the ground in sight range regardless of intervening obstacle. This ability is particularly useful underground, for seeing through walls, and for indirect fire." :titles "Earthsense") "Earth Till" (ability :name "Earth Till" :summary "* Softens earth. Also can prepare earth for planting crops in a large area.") "Earth Walk" (ability :name "Earth Walk" :summary "* Ignore movement penalties while travelling over natural earth or stone.") "Earth Wall" (ability :name "Earth Wall") :Earthquake (ability :name "Earthquake") :Landslide (ability :name "Landslide" :summary "* Causes a weak section of earth or rock to collapse.") "Mountain out of a Molehill" (ability :name "Mountain out of a Molehill" :summary "* Grow a small pile of earth bigger and bigger.") "Pass Through Earth" (ability :name "Pass Through Earth" :summary "* Allows the user to move through earth as if it were water.") :Quagmire (ability :name "Quagmire" :summary "* Any unit in the area is must spend double movement when moving." :titles "Mudslide, Quicksand") :Sandstorm (ability :name "Sandstorm") :Shatter (ability :name "Shatter" :summary "* [Attack] - Does no damage to the target, but instead damages its [Armor]." :titles "Armor Break") :Sinkhole (ability :name "Sinkhole" :summary "* A prone character on bare earth begins to sink." :titles "Dirt Nap") :Solidify (ability :name "Solidify" :summary "* Any liquified solid become solid again.") "Stone Form" (ability :name "Stone Form" :summary "* [Requires]: Cover body in dust, dirt, or mud. * [Action]: Gain attributes of [Earth] as well as [Earth Walk] for the turn. * [Continue]: May make [Strike] and [Grab] [Earth] [Close Combat] attacks at Level.") "Treacherous Ground" (ability :name "Treacherous Ground" :summary "* Creates a patch of broken earth or rock that will trip anything moving across it at more than a slow walk.") :Tremor (ability :name "Tremor" :summary "* Summons a small living earthquake in broken earth or rock. Earth elementals love nothing more than knocking things over.") "Volcanic Eruption" (ability :name "Volcanic Eruption")) :specialtymap (specialtymap :Geomancy (specialty :name "Geomancy" :summary "* Geo is the magical version of Earth. * Geo effects can be sustained without a source, but they can also be canceled by counter-magic. * Geo reacts with Pyro to produce the [Overheat] effect. * Geo reacts with Cryo to produce the [Brittle] effect. * Geo reacts with Hydro to produce the [Quagmire] effect. * Geo reacts with Electro to produce the [Grounded] effect. * Geo reacts with Aero to produce the [Weightess] effect."))) :Electricity (power :name "Electricity" :reference "* Lightning is eternal, the world is but shadow. - Raiden Shogun, the Electro Archon, Genshin Impact" :summary "* Electric Elementalist personalities are influenced by their link to Electricity. * Energetic, Explosive, Dynamic, Animated, Spark of Life, High Strung * Symbol - Yellow Lightning" :titles "Electro, Lightning" :abilitymap (abilitymap "Arc Lightning" (ability :name "Arc Lightning" :summary "* Lightning leaps from the target to others in range.") "Body Electric" (ability :name "Body Electric" :titles "Electricity Form") "Absorb Electricity" (ability :name "Absorb Electricity") "Ball Lightning" (ability :name "Ball Lightning") "Call Lightning" (ability :name "Call Lightning" :summary "* Calls a lightning strike from an existing storm cloud.") "Control Lightning" (ability :name "Control Lightning" :summary "* [Reaction]: Redirect a lightning effect to another target.") "Electromagnetic Pulse" (ability :name "Electromagnetic Pulse") "Lightning Lash" (ability :name "Lightning Lash" :titles "Arc Lash, Lightning Whip") "Lightning Warp" (ability :name "Lightning Warp" :summary "* Near instantaneous travel in a flash of lightning. * Level determines distance travelled.") "Resist Electricity" (ability :name "Resist Electricity")) :specialtymap (specialtymap :Electromancy (specialty :name "Electromancy" :summary "* Electro is the magical version of Electricity. * Electro effects can be sustained without a source, but they can also be canceled by counter-magic. * Electro reacts with Pyro to produce the [Overload] effect. * Electro reacts with Cryo to produce the [Superconduct] effect. * Electro reacts with Hydro to produce the [Electrocharged] effect. * Electro reacts with Geo to produce the [Grounded] effect. * Electro reacts with Aero to produce the [Ionized] effect."))) :Fire (power :name "Fire" :reference "* Fire. It's a living thing, Brian. It breathes, it eats, and it hates. The only way to beat it is to think like it. To know that this flame will spread this way across the door and up across the ceiling, not because of the physics of flammable liquids, but because it wants to. Some guys on this job, the fire owns them, makes 'em fight it on it's level, but the only way to truly kill it is to love it a little. - Donald Rimgate, Backdraft * Dry is good and wind is better. Count the years you always knew it. Strike a match go on and do it...Oh light the sky and hold on tight, the world is burning down. - Shawn Colvin, Sunny Came Home" :summary "* Fire is the element of power. Fire Elementalists must have desire, passion, and the energy and drive to achieve it. * Symbol - Red Flame * Passionate, Fiery, Explosive, Incendiary, Violent" :titles "Arsonist, Fire Lord, Firebomber, Firestarter, Firewalker, Pyrokinetic, Pyromancer, Pyromaniac, Volcanist" :abilitymap (abilitymap "Burning Eyes" (ability :name "Burning Eyes" :summary "* Flaming eyes may see heat." :titles "Fire Eyes") "Control Fire" (ability :name "Control Fire" :reference "* Pyro - X-Force" :summary "* [Action]: Change the shape of fire. * [Reaction]: Redirect a fire effect to another target.") "Cinder Cloud" (ability :name "Cinder Cloud") "Cleansing Fire" (ability :name "Cleansing Fire") :Combustion (ability :name "Combustion" :summary "* Summons a small living flame on combustible material. Fire elementals love nothing more than creating fires.") "Eternal Flame" (ability :name "Eternal Flame" :summary "* Creates a flame that burns without fuel for as long as desired (only one at a time).") "Fan the Flames" (ability :name "Fan the Flames") "Fire Break" (ability :name "Fire Break" :summary "* Create an area where fire is smothered (does not effect existing heat).") "Fire Breathing" (ability :name "Fire Breathing") "Fire Form" (ability :name "Fire Form" :summary "* Body becomes living flame. * [Action]: Gain attributes of [Fire] as well as [Fire Breathing] and [Fire Walk] for the turn. * [Continue]: May make [Strike] and [Grab] [Fire] [Close Combat] attacks at Level.") "Fire Lore" (ability :name "Fire Lore") "Fire Storm" (ability :name "Fire Storm" :titles "Rain of Fire") "Fire Walk" (ability :name "Fire Walk" :reference "* I touch the fire and freezes me. I look into it and its black. Why can't I feel? My skin should crack and peel. I want the fire back. Now through the smoke, she calls to me, to make my way across the flame. To save the day or maybe melt away. I guess it's all the same. So I will walk through the fire, cause whereelse can I turn. I will walk through the fire and let it... The torch I bear is scorthing me, and Buffy's laughing I've no doubt. I hope she fries. I'm free if that bitch dies. I'd better help her out. Cause she is drawn to the fire. Some people never learn, and she will walk through the fire and let it... These endless days are finally ending in a blaze. And we are caught in the fire. The point of no return. So we will walk through the fire and let it burn. - Buffy the Vampire Slayer, Once More with Feeling" :summary "* Walk through flames. Gain [Armor] vs. Fire and ignore [Burning] effects.") "Fire Ward" (ability :name "Fire Ward") :Fireworks (ability :name "Fireworks") "Flame Cage" (ability :name "Flame Cage") "Flame Whip" (ability :name "Flame Whip" :titles "Fire Lash") "Flame Skin" (ability :name "Flame Skin" :summary "* Immolate body in Fire * [Action]: Gain attributes of [Fire]. * [Continue]: May make [Strike] and [Grab] [Fire] [Close Combat] attacks at Level." :titles "Burning Man, Fire Armor, Immolate") "Flaming Weapon" (ability :name "Flaming Weapon" :summary "* Add the [Fire] trait to a weapon or to unarmed attacks." :titles "Fire Fist, Flame Tongue, Flamebrand, Flaming Arrow, Flaming Sword") :Inferno (ability :name "Inferno" :titles "Pyroclasm") "Living Flame" (ability :name "Living Flame") "Pyroclastic Flow" (ability :name "Pyroclastic Flow" :reference "* A fast-moving current of volcanic hot gas and rock, which reaches speeds up to 700 km/h (450 mph). The gas can reach temperatures of about 1,000 °C (1,830 °F). Pyroclastic flows normally hug the ground and travel downhill, or spread laterally under gravity." :titles "Pyrolclastic Cloud, Pyronado") "Ring of Fire" (ability :name "Ring of Fire") :Smother (ability :name "Smother") "Summon Efreet" (ability :name "Summon Efreet") "Summon Salamander" (ability :name "Summon Salamander") "Wall of Fire" (ability :name "Wall of Fire" :summary "* Forms a continuous [Wall] of [Fire]. * [Requires]: A flammable fuel must exist for the whole length of the wall.") :Wildfire (ability :name "Wildfire" :summary "* Air in the area becomes bone dry and overheated. +1 [Fire] or [Air] abilities.")) :specialtymap (specialtymap :Pyromancy (specialty :name "Pyromancy" :summary "* Pyro is the magical version of Earth. * Pyro effects can be sustained without a source, but they can also be canceled by counter-magic. * Pyro reacts with Geo to produce the [Overheat] effect. * Pyro reacts with Cryo to produce the [Melt] effect. * Pyro reacts with Hydro to produce the [Vaporize] effect. * Pyro reacts with Electro to produce the [Overload] effect. * Pyro reacts with Aero to produce the [Wildfire] ability."))) :Water (power :name "Water" :reference "* Davy Jones Locker * The power of water is its ability to change shape. - Genshin Impact" :summary "* Adaptable, Adjustable, Easy-going, Empathic, Flexible, Fluid, Patient, Serene, Versatile, Wrathful * Water is the element of change. Water elementalists must be adaptable, fluid, and flexible in their attitude (though not arbitrary). They are generally patient and empathetic, but they are also known for the intensity of their wrath. Their flexiblitity is often reflected in their sexuality. * Symbol - Blue Teardop * Water is the source of life and after Air it is the thing that we need most urgently to survive. Pure, unspoiled water can bestow many amazing benefits and has been the rise and fall of many empires. Of course, water can also be the source of a quick death. * Though Water washes away impurities, it does so by taking them unto itself and Water always remembers." :titles "Aquamancer, Hydromancer, Wave Rider" :abilitymap (abilitymap "Air Bubble" (ability :name "Air Bubble") "Call Water" (ability :name "Call Water" :titles "Flashflood") "Control Water" (ability :name "Control Water" :summary "* [Reaction]: Redirect a water effect to another target.") :Extinguish (ability :name "Extinguish") "Fountain of Youth" (ability :name "Fountain of Youth") :Liquify (ability :name "Liquify" :summary "* Any solid becomes a liquid.") "Part Water" (ability :name "Part Water") "Purify Water" (ability :name "Purify Water") "Ride the Wave" (ability :name "Ride the Wave" :summary "* Slide on water") "Scrying Pool" (ability :name "Scrying Pool" :summary "* Look at your reflection in any pool of water, drop something in, and when the ripples recede you may see the current reflection from any other body of water that you have seen your reflection in.") "Summon Current" (ability :name "Summon Current" :summary "* Summons a small living water flow in moving water. Water elementals love nothing more than pushing things around.") "Summon Undine" (ability :name "Summon Undine") :Tides (ability :name "Tides" :summary "* Raise or lower water level.") :Tsunami (ability :name "Tsunami") :Undertow (ability :name "Undertow" :summary "* Creates a strong downward current that can suck things downward.") "Wall of Water" (ability :name "Wall of Water" :summary "* [Effect]: [Wall] of Water * [Requires]: May only be cast in water. * [Anytime]: Turbulence strikes any surface or underwater unit that crosses it.") "Water Breathing" (ability :name "Water Breathing") "Water Form" (ability :name "Water Form" :summary "* [Requires]: Douse body in at least a bucket of water. * [Continuous]: May make [Strike] and [Grab] Water Close Combat attacks at Level. Gain attributes of Water as well as [Water Breathing] and [Walk on Water]. [Pierce Resistance], [Slash Resisteance], [Fire Resistance], [Impact Vulnerable], [Heat Vulnerable], [Electric Vulnerable]." :titles "Liquifiy") "Water Spout" (ability :name "Water Spout") "Water Walk" (ability :name "Water Walk" :summary "* Move on or under water as if it were solid ground of any desired slope.") "Waters of Life" (ability :name "Waters of Life") "Watery Grave" (ability :name "Watery Grave") :Wave (ability :name "Wave" :summary "Intensifies existing waves or creates new waves.") "Wave Ride" (ability :name "Wave Ride") :Whirlpool (ability :name "Whirlpool") "Wishing Well" (ability :name "Wishing Well")) :specialtymap (specialtymap :Hydromancy (specialty :name "Hydromancy" :summary "* Hydro is the magical version of Water. * Hydro effects can be sustained without a source, but they can also be canceled by counter-magic. * Hydro reacts with Pyro to produce the [Vaporize] effect. * Hydro reacts with Cryo to produce the [Freeze] effect. * Hydro reacts with Geo to produce the [Quagmire] effect. * Hydro reacts with Electro to produce the [Electrocharged] effect. * Hydro reacts with Aero to produce the [Fog] effect."))))) "Energy and Forces" (section :name "Energy and Forces" :powermap (powermap "Energy Manipulation" (power :name "Energy Manipulation" :abilitymap (abilitymap "Control Energy" (ability :name "Control Energy" :summary "* [Reaction]: Redirect an energy effect to another target.") "Energy Absorption" (ability :name "Energy Absorption") "Energy Drain" (ability :name "Energy Drain") "Energy Vampire" (ability :name "Energy Vampire"))) :Dimensional (power :name "Dimensional" :abilitymap (abilitymap "Faster than Light" (ability :name "Faster than Light") :Gate (ability :name "Gate") "Identify Dimension" (ability :name "Identify Dimension" :summary "* Ability to gain knowledge of the current dimension or the home dimension of an object or being from another dimension.") :Teleport (ability :name "Teleport" :titles "Teleportation, Translocation") :Warp (ability :name "Warp") :Waypoint (ability :name "Waypoint"))) :Explosive (power :name "Explosive") :Forces (power :name "Forces" :abilitymap (abilitymap "Control Force" (ability :name "Control Force" :summary "* [Reaction]: Redirect a force effect to another target.") "Bands of Force" (ability :name "Bands of Force" :titles "Crimson Bands of Cyttorak") "Force Blast" (ability :name "Force Blast") "Force Break" (ability :name "Force Break") "Force Wall" (ability :name "Force Wall"))) :Gravity (power :name "Gravity" :abilitymap (abilitymap "Call Anti-Gravity" (ability :name "Call Anti-Gravity") "Call Gravity" (ability :name "Call Gravity") "Control Gravity" (ability :name "Control Gravity" :summary "* [Reaction]: Redirect a gravity effect to another target.") "Gravity Field" (ability :name "Gravity Field") "Gravity Well" (ability :name "Gravity Well"))) :Heat (power :name "Heat" :reference "Heat Miser" :abilitymap (abilitymap "Heat Mirage" (ability :name "Heat Mirage" :summary "* Create vague illusions in heated areas. The scale of the illusion is only limited by the size of the heated area.") "Heat Vision" (ability :name "Heat Vision" :summary "* May see heat." :titles "Thermal Vision") :Heatwave (ability :name "Heatwave"))) :Inertia (power :name "Inertia" :abilitymap (abilitymap "Impact Absorption" (ability :name "Impact Absorption") "Inertial Dampening" (ability :name "Inertial Dampening") :Unstoppable (ability :name "Unstoppable"))) :Light (power :name "Light" :abilitymap (abilitymap "Blinding Light" (ability :name "Blinding Light") "Call Light" (ability :name "Call Light") "Control Light" (ability :name "Control Light" :summary "* [Reaction]: Redirect a light effect to another target.") :Flash (ability :name "Flash") :Glow (ability :name "Glow") :Laser (ability :name "Laser") "Light Form" (ability :name "Light Form") "Project Image" (ability :name "Project Image") "Shine Down" (ability :name "Shine Down" :reference "* Raiden Shogun, Genshin Impact") "Solar Beam" (ability :name "Solar Beam"))) :Magnetism (power :name "Magnetism" :abilitymap (abilitymap "Control Magnetism" (ability :name "Control Magnetism" :summary "* [Reaction]: Redirect a magnetic effect to another target.") "Magnetic Field" (ability :name "Magnetic Field") "Magnetic Pull" (ability :name "Magnetic Pull") :Magnetize (ability :name "Magnetize") "Magnetic Storm" (ability :name "Magnetic Storm"))) :Radiation (power :name "Radiation" :abilitymap (abilitymap :Fallout (ability :name "Fallout") "Radiation Beam" (ability :name "Radiation Beam") "Radiation Blast" (ability :name "Radiation Blast"))) :Sound (power :name "Sound" :summary "* Sonic attacks are a form of vibration/explosive attack that generaly does [Concussive Damage]. They also can cause temporary or permanent deafness." :titles "Sonic" :abilitymap (abilitymap :Mimicry (ability :name "Mimicry" :summary "* Exactly duplicate sounds you have just heard or committed to memory. At high levels, even modem communication can be duplicated.") "Sonic Wave" (ability :name "Sonic Wave") "Sound Carries" (ability :name "Sound Carries"))) :Temporal (power :name "Temporal" :abilitymap (abilitymap "Age Alteration" (ability :name "Age Alteration") "Control Time" (ability :name "Control Time" :summary "* [Reaction]: Redirect a time effect to another target.") :Postcognition (ability :name "Postcognition") :Precognition (ability :name "Precognition") "Temporal Tracking" (ability :name "Temporal Tracking" :summary "* Ability to track a time traveler to his/her destination.") "Time Lapse" (ability :name "Time Lapse") "Time Loop" (ability :name "Time Loop") "Time Slow" (ability :name "Time Slow") "Time Stop" (ability :name "Time Stop" :summary "* Ability to briefly exit the normal timestream. This effectively freezes time for a few seconds. The user is can move freely, but nothing but air can be moved or harmed. Note that doors cannot be opened and air is thick to move through or breathe." :titles "Freeze Time, Time Slip"))) :Vibration (power :name "Vibration" :titles "Tremors")))))) (func chapter_enhancement_powers : base/chapter (chapter :name "Enhancement Powers" :sectionmap (sectionmap "Physical Enhancement" (section :name "Physical Enhancement") "Mental Enhancement" (section :name "Mental Enhancement" :powermap (powermap :Genius (power :name "Genius" :titles "Genius, Prodigy, Savant, Super Genius" :stat "Mind" :abilitymap (abilitymap "Analyze Weakness" (ability :name "Analyze Weakness") "Calculator Mind" (ability :name "Calculator Mind") "Engineering Genius" (ability :name "Engineering Genius") "Financial Genius" (ability :name "Financial Genius") "Investigative Genius" (ability :name "Investigative Genius") "Linguistic Genius" (ability :name "Linguistic Genius") "Mathematical Genius" (ability :name "Mathematical Genius") :Multitasking (ability :name "Multitasking") "Photographic Memory" (ability :name "Photographic Memory") "Scientific Genius" (ability :name "Scientific Genius") "Speed Reading" (ability :name "Speed Reading") "Tactical Genius" (ability :name "Tactical Genius"))))) "Psychic Enhancement" (section :name "Psychic Enhancement" :powermap (powermap :Charm (power :name "Charm" :abilitymap (abilitymap "Commanding Presense" (ability :name "Commanding Presense")))))))) (func chapter_alteration_powers : base/chapter (chapter :name "Alteration Powers" :sectionmap (sectionmap "Material Control" (section :name "Material Control" :powermap (powermap "Atomic Control" (power :name "Atomic Control" :abilitymap (abilitymap :Disintegrate (ability :name "Disintegrate" :summary "* Causes wounds that are difficult to heal * A victim that takes Disintegrate Tokens equal to Body are completely destroyed.") :Destruction (ability :name "Destruction" :summary "* Effects only unliving objects * A target that takes Destruction Tokens equal to Body are completely destroyed."))) "Density Control" (power :name "Density Control") :Transfiguration (power :name "Transfiguration" :summary "* The ability to transform others." :titles "Fleshcrafting, Vissisitude" :abilitymap (abilitymap :Blinding (ability :name "Blinding") "Body Morph" (ability :name "Body Morph") :Deafening (ability :name "Deafening") :Malleate (ability :name "Malleate" :summary "* Make target soft and malleable.") :Petrification (ability :name "Petrification" :summary "* [Focus]: vs. Spirit and place [Petrification] counters on the target body location. * Any body location with a [Petrification] is encased in stone. It requires an [Action] to remove a [Petrification]. Any area that suffers 3 [Petrification] turns completely to stone. If any other area is so petrified, then complete petrification immediately spreads across the entire body and then the body and all its gear immediately converts to a stone statue. * Additioan Effects: A petrified arm cannot move. A petrified leg reduces Move by half. A petrified head is unable to see or hear. Other petrifed areas have no additional effect. Petrified Arms or legs can break off like a clean amputation without blood loss. * This ability can also be used to restore a petrified target back to its original form if the skill is at least equal to the original. Lost limbs may also be restored by reattaching the limb before restoration. * This ability can also be used on any sort of earth to harden the earth to equivalent stone.") :Polymorph (ability :name "Polymorph" :summary "* [Action]: Roll vs. Spirit and place Black [Shapeshift] Tokens on target. * A unit with 0 Spirit due to polymorph changes into any creature desired of equal Body. When the last Shapeshift Token is removed, a polymorphed unit returns to normal.") "Sensory Deprivation" (ability :name "Sensory Deprivation") "Sensory Overload" (ability :name "Sensory Overload"))) :Transmutation (power :name "Transmutation" :summary "* The ability to transform non-living matter." :titles "Reality Warper, Shaper, Transmuter" :stat "Mind" :abilitymap (abilitymap "Molecular Alteration" (ability :name "Molecular Alteration"))))) "Power Manipulation" (section :name "Power Manipulation" :powermap (powermap "Power Copy" (power :name "Power Copy") "Power Disruption" (power :name "Power Disruption") "Power Drain" (power :name "Power Drain") "Power Feedback" (power :name "Power Feedback") "Power Fluctuation" (power :name "Power Fluctuation") "Power Reflection" (power :name "Power Reflection") "Power Theft" (power :name "Power Theft") "Power Vampire" (power :name "Power Vampire")))))) (func chapter_godlike_powers : base/chapter (chapter :name "Godlike Powers" :sectionmap (sectionmap "Primal Powers" (section :name "Primal Powers" :titles "Primal Order" :powermap (powermap "Primal Force" (power :name "Primal Force" :summary "* Primal energy is the most fundamental energy in existence. It is, at once, physical, mental, and spiritual. As the fundamental energy of the cosmos, those that wield it have a special connection to reality and can gain control over certain aspects of reality. * Though Primal is not innately more powerful than other forces, it makes other abilities a great deal more effective." :titles "Arch Demon, Arch Fiend, Celestials, Deity, Demigod, Divine Power, Galactus, Godling, Godly, Godlike, Greater Deity, Lesser Deity, Planeswalker, Power Cosmic, Supreme Deity" :abilitymap (abilitymap "Channel Worship" (ability :name "Channel Worship" :reference "A god cannot survive as a memory. - Apollo, Star Trek - Who Mourns for Adonais?" :summary "* With this ability, the user may use the worship directed toward him, to recover [Primal].") "Create Artifact" (ability :name "Create Artifact" :summary "* [Requires]: Spend a [Primal] * [Action]: Create [Skill] worth of artifacts of any sort desired. These are free to maintain on any Plane the user created. They require an additional [Primal] per day when up to [Skill] Artifacts are on any other Plane.") "Create Servitors" (ability :name "Create Servitors" :summary "* [Requires]: Spend a [Primal] * [Action]: Create [Skill] worth of creatures of any sort desired. These are free to maintain on any Plane the user created. They require an additional [Primal] per day when up to [Skill] Servitors are on any other Plane. Such Servitors are usually fanatically loyal, though some users do not inspire loyalty.") :Planescaping (ability :name "Planescaping" :summary "* [Requires]: Spend a [Primal] * [Action]: Create a small Plane (pocket dimension) in the [Etherial Realm] that lasts up to [Level] days. This Plane has a radius of [Skill] x 100 miles. * [Action]: Sustain a previously created Plane for an additional [Level] days. * [Action]: Make a single alteration to a previously create Plane. This alteration may be anything that the user chooses, has a radius of [Skill] miles, and is permanent.") "Primal Accuracy" (ability :name "Primal Accuracy" :summary "* [Requires]: Spend a [Primal] * [Free]: The current [Attack] ignores target [Defense]. It may also be targetted to affect only one type of material.") "Primal Armor" (ability :name "Primal Armor" :summary "* [Requires]: Spend a [Primal] * [Free]: For this turn, gain [Armor] equal to [Skill] vs. any type of attack including [Primal Strike].") "Primal Avatar" (ability :name "Primal Avatar") "Primal Awe" (ability :name "Primal Awe") "Primal Defense" (ability :name "Primal Defense" :summary "* [Requires]: Spend a [Primal] * [Free]: For this turn, gain [Defense] equal to [Skill] vs. any type of attack including [Primal Accuracy].") "Primal Embodiment" (ability :name "Primal Embodiment" :summary "* [Requires]: Spend a [Primal] * [Action]: For the next [Skill] turns, the user may use any ability through any willing target.") "Primal Immortality" (ability :name "Primal Immortality" :summary "* [Passive]: User does not age, does not require food, water or air. User is immune to disease, gases, non-acidic poisons.") "Primal Immunity" (ability :name "Primal Immunity" :summary "* [Requires]: Spend a [Primal] * [Free]: Enable survival in any environment for the next [Skill] days.") "Primal Reach" (ability :name "Primal Reach" :summary "* [Requires]: Spend a [Primal] * [Free]: Another ability has unlimited [Range] with no penalty for distance. This can even apply to [Melee] and [Close Combat].") "Primal Regeneration" (ability :name "Primal Regeneration" :summary "* [Requires]: Spend a [Primal] * [Action]: Immediately remove [Skill] damage tokens of any kind.") "Primal Reincarnation" (ability :name "Primal Reincarnation" :summary "* [Requires]: Spend a [Primal] * [Action]: Return from the dead in a new form.") "Primal Resurrection" (ability :name "Primal Resurrection" :reference "* Hmm, my heroic last stands never seem to stick. - Jax, Runeterra" :summary "* [Requires]: Spend all [Primal] * [Action]: Return from the dead.") "Primal Sense" (ability :name "Primal Sense" :summary "* [Action]: Detect any being with [Primal] or [Primal] used within the area within the last [Skill] days.") "Primal Strength" (ability :name "Primal Strength" :summary "* [Requires]: Spend a [Primal] * [Free]: Perform any feat of strength.") "Primal Strike" (ability :name "Primal Strike" :summary "* [Requires]: Spend a [Primal] * [Free]: The current [Attack] ignores target [Armor].") "Primal Transfer" (ability :name "Primal Transfer" :summary "* [Requires]: Spend a [Primal] * [Action]: Target gains a [Primal].") "Primal Vision" (ability :name "Primal Vision" :summary "* [Requires]: Spend a [Primal] * [Action]: View any area that is known or the area that a known person occupies.") "Soul Binding" (ability :name "Soul Binding" :summary "* Capture a soul that has become separated from its body. This soul can be willing or unwilling. It can then be bound to a body or other form on a Plane created by the user.") "Sphere of Control" (ability :name "Sphere of Control" :summary "* Sphere of control is an idea, activity, or philosophy with which the user is strongly associated. * Developing a Sphere of Control is difficult, but allows the user to have far reaching powers whenever the Sphere is present. This benefits both the user and his followers."))))) :Projectiles (section :name "Projectiles" :powermap (powermap :Ropes (power :name "Ropes" :abilitymap (abilitymap :Entanglement (ability :name "Entanglement" :summary "Reduces Movement" :titles "Tanglers") "Line Swinging" (ability :name "Line Swinging" :titles "Web Swinging"))))) :Miscellaneous (section :name "Miscellaneous" :powermap (powermap "Computer Control" (power :name "Computer Control" :summary "Gives ability to control computers like Computer Science."))))))
nx/tactics/books/powers / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Powers" :image "Powers.jpg" :chaptermap (base/chaptermap "Powers Overview" (chapter_powers_overview) "Special Modifiers" (chapter_special_modifiers) "Equipment Powers" (chapter_equipment_powers) "Strength and Weaknesses" (chapter_strength_and_weaknesses) "Mental Powers and Weaknesses" (chapter_mental_powers_and_weaknesses) "Movement Powers" (chapter_movement_powers) "Physical Powers and Weaknesses" (chapter_physical_powers_and_weaknesses) "Body Powers" (chapter_body_powers) "Energy and Forces" (chapter_energy_and_forces) "Enhancement Powers" (chapter_enhancement_powers) "Alteration Powers" (chapter_alteration_powers) "Godlike Powers" (chapter_godlike_powers) )))
nx/tactics/books/powers / chapter_powers_overview
Description:
Function Name:
  • chapter_powers_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_powers_overview : base/chapter (chapter :name "Powers Overview" :sectionmap (sectionmap "Why Tactics: Powers?" (section :name "Why Tactics: Powers?"))))
nx/tactics/books/powers / chapter_special_modifiers
Description:
Function Name:
  • chapter_special_modifiers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_special_modifiers : base/chapter (chapter :name "Special Modifiers" :sectionmap (sectionmap :Buffs (section :name "Buffs" :modifiermap (modifiermap :Arc (modifier :name "Arc" :summary "* Triangle shaped effect starting at 3 spaces wide and widening by 1 additional space for each space of range. * [-2 Skill] for each Space of Range") "Armor-Piercing (AP)" (modifier :name "Armor-Piercing (AP)" :summary "* Specifically designed to target armored units.") :Anti-Armor (modifier :name "Anti-Armor" :summary "* Specifically designed to tear apart armor to leave target open to further attacks.") :Anti-Missile (modifier :name "Anti-Missile" :summary "* Specifically designed to intercept high speed targets moving in a straight line.") :Anti-Personnel (modifier :name "Anti-Personnel" :summary "* Specifically designed to attack man-sized targets.") :Anti-Shield (modifier :name "Anti-Shield" :summary "* Specifically designed to reduced [Shielding].") :Aura (modifier :name "Aura" :summary "* Radial effect encompassing the current space and continuing for Level Range.") :Beam (modifier :name "Beam" :summary "* Rectangular shaped effect 1 space wide. * [-1 Skill] for each 2 Spaces of Range") "Chain Reaction" (modifier :name "Chain Reaction") :Cloud (modifier :name "Cloud") :Cluster (modifier :name "Cluster") :Column (modifier :name "Column" :summary "* Rectangular shaped effect starting at 1 space wide and widening to 3 spaces. * [Action]: [-2 Skill] for each Space of Range") :Cone (modifier :name "Cone" :summary "* Triangle shaped effect starting at 1 space wide and widening by 1 additional space for every 2 spaces of range. * [Action]: [-2 Skill] for each Space of Range") :Fork (modifier :name "Fork") :Haywire (modifier :name "Haywire" :summary "* Attack that damages electrical systems.") "Hidden Effect" (modifier :name "Hidden Effect" :summary "Effect cannot be detected through normal means.") "High-Explosive (HE)" (modifier :name "High-Explosive (HE)" :summary "* [Targetting]: Target a space. All units in that space and surrounding spaces are attacked. * [Damage]: All target's are [+2 Armor] against this attack. * [Damage]: Units surrounding the space are attacked at -1 Damage for each space distant. Advanced: * Instead of standard [High Explosive (HE)] rules the following may be used to more accurately simulate the damage exponential decrease in energy of explosives. * [Targetting]: Target a space. All units in that space and surrounding spaces are attacked. * [Damage]: All target's are [+2 Armor] against this attack. * [Damage]: Units surrounding the space are attacked by dividing the energy (in Joules, or tons of TNT) using the following reduction pattern for each space distant: 1/1, 1/3, 1/10, 1/30, 1/100, 1/300, 1/1000, etc. Then look up the new damage based on the new energy level.") :Homing (modifier :name "Homing" :titles "Guided, Seeking") :Indirect (modifier :name "Indirect" :summary "* May use [Indirect Fire] ability to attack without [Line of Sight].") "Pushing the Limits" (modifier :name "Pushing the Limits" :summary "Powers may be increased temporarily, but this runs a risk of damaging or permanently altering the subject or his powers in some way. This may even increase the power but may create [Aberrations].") :Ring (modifier :name "Ring" :titles "Circle") :Sphere (modifier :name "Sphere" :summary "* Radial effect encompassing the current space. * [Action]: [-3 Skill] for each Space of Range") :Spray (modifier :name "Spray") :Swarm (modifier :name "Swarm") :Touch (modifier :name "Touch" :summary "* [Requires]: Target must be within 1 space and be able to be touched.") :Wall (modifier :name "Wall" :summary "* Walls start on the edge of a space and spread outward one space in each direction on each of this unit's turns until the unit ceases concentration or the maximum size is reached. Maximum Size is one square space per level.") :Wave (modifier :name "Wave"))) "Power Weaknesses" (section :name "Power Weaknesses" :modifiermap (modifiermap :Activation (modifier :name "Activation" :summary "* Activating the ability requires more than just desire") "Always On" (modifier :name "Always On" :summary "* Ability may not be turned off") :Annoying (modifier :name "Annoying" :summary "* Tiny things that make using the ability frustrating.") "Communications Broadcast Only" (modifier :name "Communications Broadcast Only") "Communications None" (modifier :name "Communications None") "Communications Receive Only" (modifier :name "Communications Receive Only") "Conditional Use" (modifier :name "Conditional Use" :summary "* Ability may only be used under specific circumstances") "Energy Discharge" (modifier :name "Energy Discharge" :summary "Cannot completely contain own energies and must allow them to leak out regularly. At low levels this just draws attention, but at higher levels becomes dangerous.") "Focus Item" (modifier :name "Focus Item") "Glider Only" (modifier :name "Glider Only") :Inefficient (modifier :name "Inefficient" :summary "* Uses excessive energy.") :Internalize (modifier :name "Internalize") "Large Sensor Profile" (modifier :name "Large Sensor Profile") "Limited Uses" (modifier :name "Limited Uses") :Overheats (modifier :name "Overheats") :Overloads (modifier :name "Overloads") "Poor Climb Angle" (modifier :name "Poor Climb Angle") "Poor Ceiling" (modifier :name "Poor Ceiling") "Poor Towing Capacity" (modifier :name "Poor Towing Capacity") "Power Fluxuation" (modifier :name "Power Fluxuation" :summary "Cannot completely control power level. At random, power use may be higher or lower than expected. High level powers may not be able to be turned off or may not turn on when needed.") "Power Hungry" (modifier :name "Power Hungry" :summary "* Requires extra turns of inactivity to use.") "Power Manifestation" (modifier :name "Power Manifestation" :summary "When powers are used, a visual or audible manifestation appears. The higher the power level the more obvious the manifestation.") "Requires Airstrip" (modifier :name "Requires Airstrip") "Sensor Dependent" (modifier :name "Sensor Dependent" :summary "* Blind without Sensors") "Traceable Emmissions" (modifier :name "Traceable Emmissions"))))))
nx/tactics/books/powers / chapter_equipment_powers
Description:
Function Name:
  • chapter_equipment_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_equipment_powers : base/chapter (chapter :name "Equipment Powers" :sectionmap (sectionmap "Item Powers" (section :name "Item Powers" :powermap (powermap "Quality Item" (power :name "Quality Item" :summary "* An item with this skill is of particularly high quality and possesses unusual abilities. * The level of quality effects the number of abilities as usual. * Each level of quality doubles the original price of the item." :abilitymap (abilitymap "Fine Workmanship" (ability :name "Fine Workmanship" :summary "* This item possesses fine details that are particularly attractive to collectors.") "Fire Resistant" (ability :name "Fire Resistant") "High Durability" (ability :name "High Durability" :summary "* This item is exceptionally well constructed and can withstand a suprising amount of punishment compared to a normal item of its type."))) "Quality Weapon" (power :name "Quality Weapon" :summary "* A weapon with this skill is of particularly high quality and possesses unusual abilities. * The level of quality effects the number of abilities as usual. * Each level of quality doubles the original price of the item." :abilitymap (abilitymap "Balanced for Throwing" (ability :name "Balanced for Throwing"))))) "Vehicular Systems" (section :name "Vehicular Systems" :summary "** Atmospheric Engine ** Sub-light Drive ** FTL Drive * Science Lab w/Sensors * Air Locks ** Magnetic Mooring Lines ** Vacc Suits * Weapons Locker * Drop Chamber w/Drop Pods * Cloaking Device * Shields" :powermap (powermap :Hanger (power :name "Hanger" :summary "* A special ability of vehicles to carry other vehicles. * A unit may carry 1 small unit (1 space) per space it takes up. * Action: Move 1 unit into or out of the hanger. The unit may not Move or take any Action the turn it moves into or out of the hanger. * Ship's Boat * Air Raft * Starfighter * Starbomber * Repair Drones * Mobile Armor" :titles "Vehicle Bay") "Mission Section" (power :name "Mission Section" :summary "* Determine the total hull size and then divide it as desired by the following abilities." :abilitymap (abilitymap "Air Locks" (ability :name "Air Locks") "Boarding Equipment" (ability :name "Boarding Equipment" :titles "Grapple Launchers, Magnetic Mooring Lines") "Cargo Hold" (ability :name "Cargo Hold") "Catapult Launcher" (ability :name "Catapult Launcher" :summary "*") "Catapult Hook Capture" (ability :name "Catapult Hook Capture") "Cloaking System" (ability :name "Cloaking System") "Cryogenic Chamber" (ability :name "Cryogenic Chamber" :summary "* Special ability of space craft to carry passengers in cryonic suspension.") "Captain's Quarters" (ability :name "Captain's Quarters") "Centrifuge Chamber" (ability :name "Centrifuge Chamber") "Climbing Apparatus" (ability :name "Climbing Apparatus") "Diving Wings" (ability :name "Diving Wings" :summary "+1 when pulling out of a dive") "Easy to Modify" (ability :name "Easy to Modify") :ECM (ability :name "ECM" :titles "Electronic Countermeasures, Jamming") :ECCM (ability :name "ECCM" :titles "Electronic Counter-Countermeasures") "Ejection System" (ability :name "Ejection System") "Escape Pods" (ability :name "Escape Pods") :Factory (ability :name "Factory") "Fuel Scoop" (ability :name "Fuel Scoop") :Glider (ability :name "Glider" :summary "* Can glide without using power and may gain altitude when flying over hot air currents.") "Gun Ports" (ability :name "Gun Ports" :summary "Allows crew to use small arms fire without sacrificing armor protection.") "Missile Decoys" (ability :name "Missile Decoys" :titles "Chaff Dispenser, Flares") "Launch Catapult" (ability :name "Launch Catapult" :summary "* Launching vehicle may begin move at up to full speed without using fuel.") "Living Quarters" (ability :name "Living Quarters" :summary "* Long range and luxury vessels offer more than the minimum crew quarters. This includes private rooms, mess, recreation areas, etc. * The larger the living space, the higher quality clientele may be brought aboard and the longer the ships range before shore leave is needed. * Includes Mess and Lounges") "Luxury Facilities" (ability :name "Luxury Facilities") "Marine Ready Room" (ability :name "Marine Ready Room") "Marine Drop Pods" (ability :name "Marine Drop Pods") "Medical Facilities" (ability :name "Medical Facilities" :titles "Sick Bay") :Minelayer (ability :name "Minelayer") :Minesweeper (ability :name "Minesweeper") "Mining Facilities" (ability :name "Mining Facilities") "Passenger Seating" (ability :name "Passenger Seating") "Prison Facilities" (ability :name "Prison Facilities" :titles "Brig") "Ram Plate" (ability :name "Ram Plate") :Refinery (ability :name "Refinery") "Science Lab" (ability :name "Science Lab") "Atmospheric Sensors" (ability :name "Atmospheric Sensors") "Biological Sensors" (ability :name "Biological Sensors") "Geological Sensors" (ability :name "Geological Sensors") "Stealth Equipment" (ability :name "Stealth Equipment") "Storm Chamber" (ability :name "Storm Chamber" :summary "Specially shielded chamber designed to be a safe room for particularly dangerous events including radiation flares and decompression.") "Tanker Hold" (ability :name "Tanker Hold" :summary "The hold is equipped to hold large amounts of liquids or gases at appropriate environments. This can be used for long range vessels to carry their own fuel or act as a fuel tanker.") "Towing Capacity" (ability :name "Towing Capacity") "Training Facilities" (ability :name "Training Facilities") "Weapons Locker" (ability :name "Weapons Locker")) :specialtymap (specialtymap :Battleship (specialty :name "Battleship" :summary "* A large (3 space) ship dedicated to being a battleship may carry a Spinal Mount weapon. * Spinal Mount") "Colony Vessel" (specialty :name "Colony Vessel" :summary "* Cryogenic Chamber") "Cargo Vessel" (specialty :name "Cargo Vessel" :summary "* Cargo Hold * Tanker Hold") "Factory Vessel" (specialty :name "Factory Vessel" :summary "* Factory * Refinery * Tanker Hold") "Heavy Bomber" (specialty :name "Heavy Bomber") "Heavy Carrier" (specialty :name "Heavy Carrier" :summary "* A large (3 space) ship dedicated to being a carrier can carry 1 extra unit (4 units) in its Hanger. * Hanger * Launch Catapult") "Luxury Vessel" (specialty :name "Luxury Vessel" :summary "* Living Quarters * Luxury Facilities") "Prison Vessel" (specialty :name "Prison Vessel") "Science Vessel" (specialty :name "Science Vessel" :summary "* Science Lab * Sensor Arrays") "Search and Rescue Vessel" (specialty :name "Search and Rescue Vessel" :summary "* Wide array of sensors * Multipurpse rescue vehicles * Heavy construction equipment * Emergency medical facilities * Space for evacuation and emergency supplies") "Stealth Vessel" (specialty :name "Stealth Vessel" :summary "* Cloaking Device * ECM * Stealth Equipment") "Transport Vessel" (specialty :name "Transport Vessel" :summary "* Living Quarters"))) "Electronic Systems" (power :name "Electronic Systems" :abilitymap (abilitymap "Analyze Target" (ability :name "Analyze Target") "Detailed Scan" (ability :name "Detailed Scan") "Electronic Countermeasures" (ability :name "Electronic Countermeasures") "Electronic Warfare" (ability :name "Electronic Warfare") "Haywire Resistance" (ability :name "Haywire Resistance" :summary "* Resists the Haywire attack") "Laser Link" (ability :name "Laser Link") "Locate Target" (ability :name "Locate Target") "Navigation System" (ability :name "Navigation System") "Quantum Entanglement Comm" (ability :name "Quantum Entanglement Comm" :summary "* A technique used to transfer quantum information from one quantum system to another over vast distances.") "Radio Comm" (ability :name "Radio Comm") "Radio Comm AM" (ability :name "Radio Comm AM") "Radio Comm CB" (ability :name "Radio Comm CB") "Radio Comm FM" (ability :name "Radio Comm FM") "Scan for Life" (ability :name "Scan for Life") "Scan for Weapons" (ability :name "Scan for Weapons"))) :Engineering (power :name "Engineering" :abilitymap (abilitymap "Damage Control Team" (ability :name "Damage Control Team" :summary "A crack team conducts emergency repairs. * [Action]: Roll vs. [Damage]. Each [Hit] removes a [White Token]. Each [Critical Hit] removes a [Black Token]. These repairs last until the end of the battle.") "Gas Engine" (ability :name "Gas Engine") "Diesel Engine" (ability :name "Diesel Engine") "Flex Fuel Engine" (ability :name "Flex Fuel Engine") "Electric Engine" (ability :name "Electric Engine") "Fission Engine" (ability :name "Fission Engine") "Fusion Engine" (ability :name "Fusion Engine" :summary "* 'rockets point down' principle * Everything has a price. And the price of powerful rockets with nuclear propulsion is of course the dread horror of deadly atomic radiation. But the danger can be brought under control with appropriate counter-measures, and by treating the power plant with the respect it deserves. And the same measures will come in handy if your ship may be facing hostile nuclear warheads.") "Geared for Endurance" (ability :name "Geared for Endurance" :summary "* Vehicle is designed for Endurance and can travel unusually long distances without resupply and is exceptionally rugged.") "Geared for Power" (ability :name "Geared for Power" :summary "* Vehicle is designed for Power and can tow, lift, or push 50% more load than usual.") "Geared for Speed" (ability :name "Geared for Speed" :summary "* Vehicle is designed for Speed and can accelerate faster and can temporarily exceed normal speed rating.") "Red Line" (ability :name "Red Line" :summary "* Engineering can push any of the ships' systems for extra performance, but run the risk of significant damage. * [Action]: Roll vs. the target system. Any [Hits] increase that system by 1 for [Hits] turns. Each [Critical Hit] increases that system by a further 1. Negative [Hits] reduce that system by the [Hits] for [Hits] turns. For each system [Critical Hit], the system takes a [System Damage Token]."))) :Factory (power :name "Factory" :abilitymap (abilitymap "Gas Refinery" (ability :name "Gas Refinery") "Oil Refinery" (ability :name "Oil Refinery") "Oil Rig" (ability :name "Oil Rig") "Manufacturing Factory" (ability :name "Manufacturing Factory") "Mining Rig" (ability :name "Mining Rig") "Pharmaceutical Manufacturing" (ability :name "Pharmaceutical Manufacturing") "Aircraft Factory" (ability :name "Aircraft Factory") "Mobile Shipyard" (ability :name "Mobile Shipyard") "Naval Shipyard" (ability :name "Naval Shipyard") "Spacecraft Shipyard" (ability :name "Spacecraft Shipyard") "Starship Shipyard" (ability :name "Starship Shipyard") "Tank Factory" (ability :name "Tank Factory") "Vehicle Factory" (ability :name "Vehicle Factory"))) :Laboratory (power :name "Laboratory" :summary "Special labs for analyzing information. Science labs are very flexible and can be used for any number of quick analytics. Obviously, they are severly limited compared to proper research facilities." :abilitymap (abilitymap "Chemical Lab" (ability :name "Chemical Lab") "Biological Lab" (ability :name "Biological Lab") "Geological Lab" (ability :name "Geological Lab") "Physics Lab" (ability :name "Physics Lab") "Sick Bay" (ability :name "Sick Bay"))) "Life Support" (power :name "Life Support" :abilitymap (abilitymap "Acceleration Dampening" (ability :name "Acceleration Dampening") "Air Filtration" (ability :name "Air Filtration") "Artificial Gravity" (ability :name "Artificial Gravity") "Ejection Systems" (ability :name "Ejection Systems") "Food Production" (ability :name "Food Production") "Low Pressure Resistance" (ability :name "Low Pressure Resistance") "High Pressure Resistance" (ability :name "High Pressure Resistance") "Radiation Shielding" (ability :name "Radiation Shielding") "Heat Resistance" (ability :name "Heat Resistance") "Cold Resistance" (ability :name "Cold Resistance") "Storm Cellar" (ability :name "Storm Cellar" :summary "* The crew will occupy the cellar when the sun kicks up a solar storm of radiation. As these can last for days, one had better include a few crew-days worth of food, water, and tranquilizers. If you are relying upon algae for your oxygen, it deserves space in the storm cellar as well. This probably also applies to stored food too. Particle radiation can destroy a lot of the vitamins in food. Alas, computers and other digital electronics are also vulnerable to radiation. If there is a critical failure outside, thenit is time to start drawing straws to decide who gets to heroically commit suicide by saving the ship.") "Water Filtration" (ability :name "Water Filtration") :Watertight (ability :name "Watertight"))) "Vehicle Abilities" (power :name "Vehicle Abilities" :abilitymap (abilitymap "Airlift Ready" (ability :name "Airlift Ready" :summary "* Ability to be quickly picked up and dropped by [Airlift] vehicles without them landing.") "Alarm System" (ability :name "Alarm System" :summary "* When armed, this defensive system will raise a warning whenever a person gets too close.") "Anti-Personnel Charges" (ability :name "Anti-Personnel Charges" :summary "* When armed, this defensive system will automatically detonate whenever a person gets too close.") "Artificial Intelligence" (ability :name "Artificial Intelligence") "Automated Combat System" (ability :name "Automated Combat System") :Autopilot (ability :name "Autopilot") "Camouflage Net" (ability :name "Camouflage Net") "Catapult Hook" (ability :name "Catapult Hook" :summary "* Can take off and land from carriers and gain the initial speed benefit of carrier catapults.") :Cloaking (ability :name "Cloaking") "Crane Arm" (ability :name "Crane Arm") "Ejection System" (ability :name "Ejection System") "High Mobility" (ability :name "High Mobility" :summary "* Vehicles with this ability sacrifice overall speed for rapid turning. Movement systems are divided across the entire vehicle to maximize mobility, but this greatly reduces maximum speed. * -2 Speed, Unit may use Infantry movement rules.") "Humanoid Form" (ability :name "Humanoid Form") "Long Range Package" (ability :name "Long Range Package") "Luxury Package" (ability :name "Luxury Package") "Off-Road Package" (ability :name "Off-Road Package") "Remote Controlled" (ability :name "Remote Controlled") "Sport Package" (ability :name "Sport Package") "Stealth Technology" (ability :name "Stealth Technology" :summary "* Reduces detection by radar, heat and other similar vehicle detection systems.") "Transformation System" (ability :name "Transformation System" :summary "* Transformation allows a unit to switch into a different form. Each form must be designnated at creation time, and each form may have any or all of the units abilities. This is particularly useful for abilities that have penalties (e.g. High Mobility).") "Vector Movement" (ability :name "Vector Movement" :summary "* Movement in frictionless environments follow Newton's first law, a object in motion tends to stay in motion. * Units will continue at their current speed. * [Speed] can used to increase or decrease current speed. * [Speed] can also be used to sideslip left or right by 1 space. * Facing can be changed by one side each space moved, but this does not change speed or direction.") "Active Camoflage" (ability :name "Active Camoflage") "Camo Netting" (ability :name "Camo Netting") "Cold Protection" (ability :name "Cold Protection") "Desert Protection" (ability :name "Desert Protection") "Escape Pods" (ability :name "Escape Pods") "Grapple Launcher" (ability :name "Grapple Launcher") "Manipulator Arm" (ability :name "Manipulator Arm") "Landing Gear" (ability :name "Landing Gear") "Ram Plate" (ability :name "Ram Plate") :Streamlining (ability :name "Streamlining") "Stealth System" (ability :name "Stealth System") "Tool Arm" (ability :name "Tool Arm")))) :sectionmap (sectionmap "Weapon Bay" (section :name "Weapon Bay" :summary "* Main Turrets * Point Defense ** Antiaircraft * Grenade Launcher * Laser * Mass Driver * Missiles ** Micro-missiles ** Mini-missiles ** Heavy missiles * Particle Beam * Plasma Lance * Spinfuser * Taser * Payloads ** Acid ** Antimatter ** Bioweaponry ** Chemical ** Explosive ** Fusion ** Incendiary ** Nuclear ** Nuclear Waste * Missile Bay * Torpedo Bay ** Nuclear ** Fusion ** Antimatter ** Planet Buster"))))))
nx/tactics/books/powers / chapter_strength_and_weaknesses
Description:
Function Name:
  • chapter_strength_and_weaknesses
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_strength_and_weaknesses : base/chapter (chapter :name "Strength and Weaknesses" :sectionmap (sectionmap "Special Skills" (section :name "Special Skills" :powermap (powermap "Special Ability" (power :name "Special Ability" :abilitymap (abilitymap :Cannibal (ability :name "Cannibal" :summary "* [Requires]: Close Combat * [Attack]: Each [Critical Hit] may remove a [Damage Token] from this unit.") :Chaotic (ability :name "Chaotic") :Corrupted (ability :name "Corrupted") :Ethereal (ability :name "Ethereal") "Feeding Frenzy" (ability :name "Feeding Frenzy") :Giant (ability :name "Giant") :Huge (ability :name "Huge") "Lernaean Poison" (ability :name "Lernaean Poison") :Mindless (ability :name "Mindless" :summary "* 0 [Mind] * Cannot use any Mind Abilities * Immune to Abilities that target [Mind].") :Monstrous (ability :name "Monstrous") "Nemean Invulnerability" (ability :name "Nemean Invulnerability") "Rapid Metabolism" (ability :name "Rapid Metabolism") :Savage (ability :name "Savage" :summary "* Must Attack if able. * Ignores Fear, Despair, and Morale") :Skeletal (ability :name "Skeletal" :summary "* +1 Body * Ignores [Bleeding], [Poison], and [Disease]") :Soulless (ability :name "Soulless" :summary "* A soulless unit is not truly alive. It may not use or gain Spirit skills.") :Tainted (ability :name "Tainted"))))) :Weaknesses (section :name "Weaknesses" :powermap (powermap "Physical Weakness" (power :name "Physical Weakness" :summary "A being that has a great deal of power becomes increasingly inhuman as power increases. Physical powers become harder to conceal growing increasingly monstrous and mentality leans more toward megalomania, messiah complex, or detached alien." :titles "Aberrations, Inhumanity, The Price of Power, Taint" :abilitymap (abilitymap :Allergy (ability :name "Allergy" :summary "Affected by substances or energies that have little or no effect on normal people.") :Asthma (ability :name "Asthma") :Atrophy (ability :name "Atrophy" :summary "* One or more limbs has limited mobility") :Blind (ability :name "Blind") :Brittle (ability :name "Brittle") :Child (ability :name "Child" :summary "* You are still a child and have difficulty getting others to take you seriously. This is usually taken with [Short].") "Cold Blooded" (ability :name "Cold Blooded") "Color Blindness" (ability :name "Color Blindness") :Contagious (ability :name "Contagious" :summary "Spreads disease.") :Clumsy (ability :name "Clumsy") :Deaf (ability :name "Deaf") :Deformity (ability :name "Deformity" :summary "* Reduces Social Skills and some Physical Skills.") :Disfigured (ability :name "Disfigured" :summary "* Reduces Social Skills dramatically.") "Extra Body Parts" (ability :name "Extra Body Parts") "Hard of Hearing" (ability :name "Hard of Hearing") :Lame (ability :name "Lame" :summary "* Reduces Speed") :Leprosy (ability :name "Leprosy") "Missing Body Parts" (ability :name "Missing Body Parts") :Mute (ability :name "Mute") :Obvious (ability :name "Obvious" :summary "* Easy to detect and target" :titles "Large Profile") "Obvious Signature" (ability :name "Obvious Signature" :summary "* Easy to identify and track" :titles "Energy Signature, Heat Signature") :Numb (ability :name "Numb") :Old (ability :name "Old") :Paralyzed (ability :name "Paralyzed") "Parasitic Infection" (ability :name "Parasitic Infection") "Peeling Skin" (ability :name "Peeling Skin") "Poor Vision" (ability :name "Poor Vision") :Short (ability :name "Short" :summary "* This minor weakness reduces vision over objects and movement speed. * It can, however, provide benefits to [Stealth].") :Sterile (ability :name "Sterile" :summary "* May not produce offspring") :Tasteless (ability :name "Tasteless") "Temperature Control Problem" (ability :name "Temperature Control Problem" :summary "* Cannot regulate temperature correctly") "Terminal Condition" (ability :name "Terminal Condition") "Unusual Appearance" (ability :name "Unusual Appearance") "Unusual Diet" (ability :name "Unusual Diet" :summary "* Minor: Eat wood, garbage, hair, etc. * Major: Eat metal, energy * Extreme: Eat blood, human flesh, plutonium") "Unusual Eyes" (ability :name "Unusual Eyes" :summary "* Minor: Strange colored * Major: Animal-like, or glowing eyes * Extreme: Bug-eyes, or no eyes") "Unusual Limbs" (ability :name "Unusual Limbs" :summary "Gnarled, segmented, snake-like, eloganted or other bizarre looking limbs") "Unusual Musculature" (ability :name "Unusual Musculature" :summary "Bulging muscles or wasted looking") "Unusual Skin" (ability :name "Unusual Skin" :summary "* Minor: Strange colored * Major: Furry, Striped, Glowing * Extreme: Translucent, Reptilian, Rock-like, Exoskeleton, Oozing") "Unusual Vulnerability" (ability :name "Unusual Vulnerability" :reference "Kryptonite, Severe Allergies" :summary "* Take damage from things that are not dangerous to ordinary people.") :Vulnerability (ability :name "Vulnerability" :summary "* Take additional damage from certain effects") "Vulnerable to Bleeding" (ability :name "Vulnerable to Bleeding") "Vulnerable to Electricity" (ability :name "Vulnerable to Electricity") "Vulnerable to Fire" (ability :name "Vulnerable to Fire") "Vulnerable to Heat" (ability :name "Vulnerable to Heat") "Vulnerable to Impact" (ability :name "Vulnerable to Impact") "Vulnerable to Piercing" (ability :name "Vulnerable to Piercing") "Vulnerable to Radiation" (ability :name "Vulnerable to Radiation") "Vulnerable to Slashing" (ability :name "Vulnerable to Slashing") :Wasting (ability :name "Wasting"))) "Social Weakness" (power :name "Social Weakness" :abilitymap (abilitymap :Awkward (ability :name "Awkward") :Hideous (ability :name "Hideous") :Hunted (ability :name "Hunted") :Naive (ability :name "Naive") :Nemesis (ability :name "Nemesis") :Noble (ability :name "Noble") :Notorious (ability :name "Notorious") "Speech Impediment" (ability :name "Speech Impediment") :Strangeness (ability :name "Strangeness") :Terrifying (ability :name "Terrifying") :Timid (ability :name "Timid") :Ugly (ability :name "Ugly") "Unnatural Presense" (ability :name "Unnatural Presense" :summary "* Subtly disturbing, homely, or too perfect and inspires negative attention from others.") :Ward (ability :name "Ward" :summary "* You are devoted to taking care of another (who happens to get into trouble a lot)."))) "Supernatural Weakness" (power :name "Supernatural Weakness" :abilitymap (abilitymap :Cursed (ability :name "Cursed") "Dark Fate" (ability :name "Dark Fate") :Haunted (ability :name "Haunted"))))))))
nx/tactics/books/powers / chapter_mental_powers_and_weaknesses
Description:
Function Name:
  • chapter_mental_powers_and_weaknesses
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_mental_powers_and_weaknesses : base/chapter (chapter :name "Mental Powers and Weaknesses" :sectionmap (sectionmap "Mental Powers" (section :name "Mental Powers" :powermap (powermap :Domination (power :name "Domination" :reference "* We don't need no education. We don't need no thought control. - Pink Floyd, The Wall * He accepted everything. The past was alterable. The past had never been altered. Oceania was at war with Eastasia. Oceania had always been at war with Eastasia. Jones, Aaronson, and Rutherford were guilty of the crimes they were charged with. He had never seen the photograph that disproved their guilt. It had never existed; he had invented it. He remembered remembering contradictory things, but those were false memories, products of self deception. How easy it all was! - 1984 * Every move you make, every vow you break, every smile you fake, every claim you stake, I'll be watching you. Every single day... - Every Breath You Take, The Police * Your face will turn to alabaster. When you find your servant is your master. You'll be wrapped around my finger. - Wrapped around your Finger, The Police * I know this steak doesn't exist. I know that when I put it in my mouth, the Matrix is telling my brain that it is juicy and delicious. After nine years, you know what I realize? Ignorance is bliss. - Cypher, The Matrix" :titles "Dominator, Master, Puppet Master, Puppeteer" :abilitymap (abilitymap :Brainwashing (ability :name "Brainwashing") :Conditioning (ability :name "Conditioning" :reference "Manchurian Candidate" :summary "* Low level success creates a confused zombie. * High level success creates fanatical loyalty.") "Edit Memories" (ability :name "Edit Memories") :Indoctrination (ability :name "Indoctrination" :summary "Slowly convert a subject into a willing servant.") "Induce Delusions" (ability :name "Induce Delusions" :summary "Create paranoid delusions in the target.") "Past Life Regression" (ability :name "Past Life Regression") "Private World" (ability :name "Private World" :summary "Create a specific dream world that the subject believes is real.") "Retrive Memories" (ability :name "Retrive Memories") "Subconscious Trigger" (ability :name "Subconscious Trigger") :Subjugation (ability :name "Subjugation") "Subliminal Messaging" (ability :name "Subliminal Messaging") :Suggestion (ability :name "Suggestion" :summary "Change")) :specialtymap (specialtymap :Hypnotism (specialty :name "Hypnotism" :summary "* [Past Life Regression] * [Retrive Memories] * [Subconscious Trigger]"))) :Empathy (power :name "Empathy" :summary "The ability to feel the joys and pains of others" :titles "Empath" :stat "Spirit" :abilitymap (abilitymap "Change of Heart" (ability :name "Change of Heart") :Compulsion (ability :name "Compulsion") "Cure Insanity" (ability :name "Cure Insanity") :Demoralize (ability :name "Demoralize") :Depression (ability :name "Depression") :Despair (ability :name "Despair") "Ego Crush" (ability :name "Ego Crush" :summary "* Reduce the [Spirit] of the target to make them more ... pliable.") "Empathic Bond" (ability :name "Empathic Bond" :summary "* Create a permanent empathic connection with a single target with an already established deep connection (typically lovers or longtime friends). Each senses the other's strong feelings over any distance. No effort is required to maintain the bond, but only one such bond can be maintained at a time.") "Empathic Healing" (ability :name "Empathic Healing" :reference "* The Empath - Star Trek" :summary "* Feel the pain the target is experiencing. Slowly duplicate all the damage from a target onto yourself and then begin healing. * Continuous. Each turn, duplicate 1 damage or negative condition from the target onto yourself. Once all have been duplicated, instead remove a damage or condition from the target.") "Empathic Link" (ability :name "Empathic Link" :summary "* Create an empathic connection with a target. Each senses the other's honest feelings. This ability creates trust if the parties are being honest, or mistrust if the parties are false." :titles "Telesthesia") "Empathic Sense" (ability :name "Empathic Sense" :summary "* Sense nearby sentient creatures by their emotions. A general sense of the emotions can be determined as well.") :Enrage (ability :name "Enrage") :Enrapture (ability :name "Enrapture" :titles "Rapture") :Enthrall (ability :name "Enthrall") "Fear Eater" (ability :name "Fear Eater" :summary "* Remove a [Fear] from the target and gain [Spirit].") :Guilt (ability :name "Guilt") "Heal Mental Trauma" (ability :name "Heal Mental Trauma") "Lie Detector" (ability :name "Lie Detector") :Nostalgia (ability :name "Nostalgia") :Obsession (ability :name "Obsession") "Project Pain" (ability :name "Project Pain" :summary "* Relive a past (or current) trauma and project those feelings on a target. If you have more than 1 damage you may move 1 to the target. If you have more than 1 negative condition, you may move 1 negative condition to the target." :titles "Pain Shared is a Pain Doubled") "Share Pain" (ability :name "Share Pain" :reference "* Your pain runs deep. ... Share your pain with me... and gain strength from the sharing. - Sybok, Star Trek V: The Final Frontier" :summary "* Feel the pain the target is experiencing and create trust through the shared experience." :titles "Pain Shared is Pain Halved") :Sympathy (ability :name "Sympathy") :Terrify (ability :name "Terrify"))) :Illusion (power :name "Illusion" :reference "* Fantasy... can only survive with an underlying reality. Reality... is the stillness buried deep beneath the illusion. This is eternity. - Raiden Shogun, Genshin Impact" :summary "* Illusion is the art of fooling the target into believing in something that is not really there. Illusion is Limited by [Art]. * Illusions ** Alter the perceptions to see and hear things that do not exist. ** Skill roll determines the difficulty to detect the illusion, but even those who detect the illusion cannot see through the illusion including the caster. ** Illusions may be enormous, altering terrain and populating it with any number of creatures. ** Illusions may cover real things, but cannot make them disappear. ** Illusions may not do damage or take damage since they are not really there. ** Note: unliving creatures cannot detect or be influenced by illusions. * Phantasms ** Phantasmal objects appear real, but are only partially real and are destroyed with a single [Damage Token]. ** All [Phantasm]s are moved independently each time the unit Moves. All [Phantasm]s perform the same actions as the unit but no effect. When [Phantasm]s are attacked they take effects normally but are uneffected by effects except [Damage] which immediately destroys them." :titles "Illusionist" :abilitymap (abilitymap "Conjure Effigy" (ability :name "Conjure Effigy" :summary "* Create a phantasmal copy of an object touched. The Effigy appears real in most ways, but does not function as the original and will shatter to dust if force is applied to it.") "Conjure Phantasmal Force" (ability :name "Conjure Phantasmal Force" :summary "Conjures a phantasmal minion.") "Conjure Phantom Monster" (ability :name "Conjure Phantom Monster") "Conjure Simulacrum" (ability :name "Conjure Simulacrum") "Dazzling Beauty" (ability :name "Dazzling Beauty" :summary "Raises the appearance of the caster.") "Disembodied Voice" (ability :name "Disembodied Voice") :Forgetfulness (ability :name "Forgetfulness" :summary "* Roll vs. Spirit. Target forgets a specific fact or time period.") :Foxfire (ability :name "Foxfire") "Hidden Thing" (ability :name "Hidden Thing" :summary "* A Phantasm may be placed on other objects making them partially or completely invisible.") "Hypnotic Eyes" (ability :name "Hypnotic Eyes" :summary "Criticals: [Fascination]") "Illusion Shattered" (ability :name "Illusion Shattered" :reference "* Raiden Shogun, Genshin Impact") "Illusionary Meal" (ability :name "Illusionary Meal" :summary "* Creates a tasty meal out of other less appetizing things. The meal appears and tastes anyway the user wishes. The meal serves level squared human sized persons. The original ingredients may be unpleasant but cannot be harmful.") "Illusionary Wall" (ability :name "Illusionary Wall" :summary "* Appears to be a real wall of any sort including magical ones, but has no real effect except to obscure or block line of sight.") "Mental Block" (ability :name "Mental Block" :summary "* Roll vs. Spirit. Target becomes confused and forgets how to a chosen power for Hits Turns.") :Mirage (ability :name "Mirage" :summary "Also known as Illusionary Terrain.") "Mirror of the Soul" (ability :name "Mirror of the Soul" :summary "* A person's true nature can be ascertained by looking in his or her eyes.") "Mirror Image" (ability :name "Mirror Image" :summary "* [Mind]: Replace the unit with a [Phantasm] and place 1+Criticals additional [Phantasm]s 1 space from the unit. Secretly mark one of these [Phantasm]s as the unit. When all other Mirror Images are destroyed, replace the final [Phantasm] with the unit.") "Mistaken Identity" (ability :name "Mistaken Identity" :summary "* [Action]: Choose a willing unit of roughly equal size and switch places with that unit. * Range: [Mind]") "Phantom Pain" (ability :name "Phantom Pain") "Phantom Smell" (ability :name "Phantom Smell") "Phantom Sound" (ability :name "Phantom Sound") "Phantom Weapon" (ability :name "Phantom Weapon") "Shattered Image" (ability :name "Shattered Image" :summary "* [Mind]: Destroy any number of [Illusion]s to cause [Stun] and [Confusion] to targets in the area." :titles "Broken Mirror") :Shimmer (ability :name "Shimmer") :Simulacrum (ability :name "Simulacrum") "Sleight of Mind" (ability :name "Sleight of Mind" :summary "* [Slow] [Even] [Mind]: +1 [Stress]. Create a distraction.") "Smoke and Mirrors" (ability :name "Smoke and Mirrors") "Taste of Ambrosia" (ability :name "Taste of Ambrosia") "Taste of Ashes" (ability :name "Taste of Ashes") :Vertigo (ability :name "Vertigo"))) :Intuition (power :name "Intuition" :abilitymap (abilitymap "Danger Sense" (ability :name "Danger Sense" :summary "* [Event]: Chance to detect a surprise attack.") "Deja Vu" (ability :name "Deja Vu" :summary "* [Event]: Chance to recognize a series of events as if they had happened before. This gives insight into how these events might play out.") :Insight (ability :name "Insight" :summary "* [Action]: Synergy with a [Mind] ability.") "Instinctive Defense" (ability :name "Instinctive Defense" :summary "* [Passive]: Synergy with Defense Rolls.") "Paranormal Memory" (ability :name "Paranormal Memory" :summary "* [Action]: Attempt to remember events that happened in an alternate timeline or universe.") :Psychometry (ability :name "Psychometry" :summary "Obtain information about an individual by making physical contact with an object that belongs to them. * [Action]: Attempt to remember events associated with an object."))) :Mastermind (power :name "Mastermind" :summary "* Attempts to confuse by introducing misleading, paradoxical, or spurious logic into a discussion." :titles "Mind Games" :abilitymap (abilitymap "Circular Logic" (ability :name "Circular Logic" :reference "* If such actions were not illegal, then they would not be prohibited by the law." :summary "* A seemingly reasonable argument that is in fact based upon dependent information. * Such arguments are logically valid. That is, the conclusion does in fact follow from the premise, since it is already contained in the premise. They do not, however, aid in the proof of the statement or the premise.") :Compartmentalize (ability :name "Compartmentalize" :summary "* Separate a hidden thought process away from the normal mind.") :Cryptography (ability :name "Cryptography") :Doublethink (ability :name "Doublethink" :reference "* To tell deliberate lies while genuinely believing in them, to forget any fact that has become inconvenient, and then, when it becomes necessary again, to draw it back from oblivion for just so long as it is needed. - 1984 George Orwell" :summary "* Doublethink is the act of simultaneously holding two mutually contradictory beliefs while fervently fooling oneself into believing both.") "Master Plan" (ability :name "Master Plan") "Maze of the Mind" (ability :name "Maze of the Mind" :summary "* Confuses the target's senses so it cannot accurately choose its direction. This can be extremely hazardous to fast moving units. * [Move]: Whenever the unit moves, its direction is randomized from among its normal movement options (including diving and climbing for air units).") "Maze Mastery" (ability :name "Maze Mastery" :summary "* The user knows thousands of mazes and can choose an optimal course through any maze with minimal trial and error.") "Mind Blank" (ability :name "Mind Blank" :summary "* Hide ones true thoughts. * Makes an excellent poker face. * Full defense against any attempt to detect the unit's mind. * Full defense against any attempt to detect lies.") :Misinformation (ability :name "Misinformation" :summary "* Spock: Logic is a little tweeting bird chirping in a meadow. Logic is a wreath of pretty flowers which smell BAD. Are you sure your circuits are functioning correctly? Your ears are green. - I, Mudd, Star Trek") :Puzzles (ability :name "Puzzles") :Rationalize (ability :name "Rationalize" :summary "* Increases resistance to all forms of mental attack by reinterpreting and rationalizing commands to render them meaningless.") "Simplify, Simplify, Simplify" (ability :name "Simplify, Simplify, Simplify" :summary "* Progressively breakdown a problem into simpler problems which can each be resolved separately.") "Unsolvable Problem" (ability :name "Unsolvable Problem" :reference "* Kirk: Everything Harry says is a lie. Remember that, Norman. *Everything* he says is a lie. * Mudd: Now I want you to listen to me very carefully, Norman. I'm... lying. * Norman: You say you are lying, but if everything you say is a lie, then you are telling the truth, but you cannot tell the truth because you always lie... illogical! Illogical - I, Mudd, Star Trek" :summary "* Fool the target into trying to resolve a problem with no easy solution."))) :Madness (power :name "Madness" :titles "Lunatic, Madman, Manic" :abilitymap (abilitymap :Delirium (ability :name "Delirium") :Delusions (ability :name "Delusions") :Dementia (ability :name "Dementia") "False Memories" (ability :name "False Memories" :summary "* Alter the memories of the target.") :Hyteria (ability :name "Hyteria") "Induce Paranoia" (ability :name "Induce Paranoia") "Mind Twist" (ability :name "Mind Twist") "Through the Looking Glass" (ability :name "Through the Looking Glass" :reference "* I'm sorry to tell you this, but you've suffered a schizoid embolism. We can't snap you out of your fantasy... and I've been sent in to try to talk you down. - Total Recall") :Tripping (ability :name "Tripping") "Twisted Words" (ability :name "Twisted Words" :summary "* This subtle power is a sort of malicious therapy, and it requires nothing more than casual conversation. Its influence is hidden by inflections and suggestions. The victim finds themselves increasing agitated as their inner demons bubble to the surface. This can lead to confusion, a panic attack, nervous breakdown or even a psychotic break.") "Warped Image" (ability :name "Warped Image" :summary "* Share your own derangements with the target. This also rouses the Shadow.") "Wave of Madness" (ability :name "Wave of Madness"))) "Mental Fortitude" (power :name "Mental Fortitude" :stat "Mind, Spirit" :abilitymap (abilitymap :Gestalt (ability :name "Gestalt" :reference "The whole is greater than the sum of its parts - Gestalt Psychology" :summary "* This ability allows a unit to share knowledge with another unit that also has [Gestalt]. They may give information or loan an ability to the target." :titles "Hive Mind") "Intellect Fortress" (ability :name "Intellect Fortress" :summary "Ward") :Concentration (ability :name "Concentration" :summary "* [Buff Self]: Place X Concentration Tokens on the user, and place 1 negative token under each Concentration token. Covered tokens are treated as if they do not exist while covered.") "Mirror Mind" (ability :name "Mirror Mind" :summary "Mental defense that creates Feedback.") "Peace of Mind" (ability :name "Peace of Mind" :summary "Find the Quiet Place in your mind") "Tower of Iron Will" (ability :name "Tower of Iron Will" :summary "Ward"))) "Mind Over Matter" (power :name "Mind Over Matter" :titles "Telekinesis, Psychokinesis" :stat "Mind" :abilitymap (abilitymap "Invisible Hand" (ability :name "Invisible Hand" :summary "* Lift items from a distance.") :Levitate (ability :name "Levitate" :summary "* Lift oneself off the ground.") "Mind Crush" (ability :name "Mind Crush" :summary "* Hold an object in place and crush it.") "Telekinetic Manipulation" (ability :name "Telekinetic Manipulation" :summary "* Perform delicate manipulation on items from a distance. An example would be to perform lock picking over distance.") "Telekinetic Projectile" (ability :name "Telekinetic Projectile" :summary "* Throw a small object at high speed.") "Telekinetic Push" (ability :name "Telekinetic Push" :summary "* Push items from a distance.") "Telekinetic Shield" (ability :name "Telekinetic Shield") "Telekinetic Strike" (ability :name "Telekinetic Strike" :summary "* Attack unit from a distance.") "Telekinetic Touch" (ability :name "Telekinetic Touch" :summary "* Feel items from a distance."))) "Mental Combat" (power :name "Mental Combat" :titles "Psionic, Scanner" :stat "Mind" :abilitymap (abilitymap "Brain Drain" (ability :name "Brain Drain") "Brain Freeze" (ability :name "Brain Freeze") "Brain Storm" (ability :name "Brain Storm") "Ego Whip" (ability :name "Ego Whip" :summary "* Attack with [Mind] vs. [Spirit].") :Feeblemind (ability :name "Feeblemind") "Feedback Loop" (ability :name "Feedback Loop") :Lobotomy (ability :name "Lobotomy") "Mental Blast" (ability :name "Mental Blast" :summary "Attacks Mind. All tokens are stun.") "Mental Prison" (ability :name "Mental Prison" :summary "* Trap a person's personality in a prison within their own mind." :titles "Mind Prison, Prison of the Mind") "Summon Id Monster" (ability :name "Summon Id Monster" :summary "[Call] [Id Monster]") "Tabula Rasa" (ability :name "Tabula Rasa"))) "Mental Connection" (power :name "Mental Connection" :reference "Scanners" :titles "Esper, Mentalist, Psionic, Scanner, Telepath" :stat "Mind" :abilitymap (abilitymap "Cloud Senses" (ability :name "Cloud Senses" :reference "These aren't the droids you're looking for... - Obi-Wan Kenobi, Star Wars" :summary "Reduce chance that target will notice things.") :Confusion (ability :name "Confusion") :Lingua-Franca (ability :name "Lingua-Franca" :summary "Synergy with [Linguistics]") "Memory Lapse" (ability :name "Memory Lapse") "Memory Restoration" (ability :name "Memory Restoration" :summary "* Retrieve lost memories from a subject.") "Mental Bond" (ability :name "Mental Bond") "Mental Cloak" (ability :name "Mental Cloak" :summary "All living units must roll Mind vs Mental Cloak to target this unit. Another target may not be chosen.") "Mental Probe" (ability :name "Mental Probe" :summary "Delve deeper into targets memories each turn." :titles "Mind Probe") "Mental Projection" (ability :name "Mental Projection") "Mind Reading" (ability :name "Mind Reading" :summary "Owner of target unit must announce the next Hits movements and actions that unit will perform. That unit must perform those actions if it is able.") "Mind's Eye" (ability :name "Mind's Eye" :summary "* Eye - The caster can close his eyes and see into the astral world instead of the real world.") "Store Consciousness" (ability :name "Store Consciousness" :summary "* [Action]: At the moment of another unit's death, capture its spirit within one's own mind. * [Action]: If the dead unit's body can somehow be restored (or a perfect duplicate can be found), transfer the captured spirit back into the body.") :Telepathy (ability :name "Telepathy" :summary "Unit owner may have up to a Hits minute secret conversation with anyone (Player or not, strategy or not). Clock starts once roll is made.") "Transfer Consciousness" (ability :name "Transfer Consciousness" :reference "* Change Now! - Captain Jinyu, Dragonball Z" :titles "Body Swap"))) "Mental Weakness" (power :name "Mental Weakness" :summary "* Note: Mental Weaknesses may be physical in nature, but they are grouped here because they effect mental function." :abilitymap (abilitymap "Addle Minded" (ability :name "Addle Minded" :summary "* Tendency to forget to do things or misplace things. The missed things may be trival, important, or critical." :titles "Absent Minded, Addle Minded, Airhead") :Addiction (ability :name "Addiction") "Alien Thoughts" (ability :name "Alien Thoughts") :Amnesia (ability :name "Amnesia" :reference "* Memento" :summary "* Unit has strange lapses of memory. It may forget generally known facts, friends, family, or own identity.") :Anxious (ability :name "Anxious") :Bipolar (ability :name "Bipolar" :summary "* Prone to fits of erratic up moods and severe depression. May be moody, lie around and mope, risk life and limb, or even suicidal." :titles "Manic Depressive") :Bloodthirsty (ability :name "Bloodthirsty" :summary "* Must attack Bleeding Enemies first. May attack Bleeding Allies if a Spirit roll fails.") :Brainwashed (ability :name "Brainwashed") :Catatonia (ability :name "Catatonia") "Compulsive Liar" (ability :name "Compulsive Liar") :Cleptomania (ability :name "Cleptomania") :Cyberpsychosis (ability :name "Cyberpsychosis" :reference "* Something happens when you start to add metal and plastic to people. They start to change. And it isn't pretty - Cyberpunk RPG" :summary "* A psychotic aberration suffered by excessive users of cyberware. It begins as a sense of loss for the portions of the body replaced with unfeeling machinery. Later it manifests as a Overconfidence and detachment from other people (sometimes in favor of machines). Extreme cases lead to more serious derangements such as: Martyr Syndrome, Megalomania, Delusions of Grandear, Inferiority Complex, and Messiah Complex.") :Delusional (ability :name "Delusional" :reference "* The walls of reality will come crashing down. One minute you'll be the savior of the rebel cause. The next thing you know you'll be Cohagen's busom buddy. You'll even have fantasies of alien civilizations, as you requested, but in the end, back on Earth, you'll be lobotomized! - Dr. Edgemar, Total Recall" :summary "* Believe things that are not real. May hear voices or see things." :titles "Free-form Delusion, Schizoid Embelism") :Flashbacks (ability :name "Flashbacks") :Frightened (ability :name "Frightened" :summary "* Lacks nerve, especially in combat. May freeze or flee." :titles "Cowardly") :Hallucinations (ability :name "Hallucinations") :Homicidal (ability :name "Homicidal") "Inferiority Complex" (ability :name "Inferiority Complex") :Intolerant (ability :name "Intolerant") :Manic (ability :name "Manic") "Martyr Syndrome" (ability :name "Martyr Syndrome") :Masochism (ability :name "Masochism" :summary "* Dislikes self. Will go out of way to injure oneself. May seek verbal, physical, psychological, or sexual abuse. May seek life threatening abuse.") :Megalomania (ability :name "Megalomania" :summary "* A specific form of delusion that you are more important than you are. May believe you are destined for greatness, a Messiah, or even God." :titles "Delusions of Grandeur, Messiah Complex") "Mental Decay" (ability :name "Mental Decay" :titles "Alzheimers") "Multiple Personalities" (ability :name "Multiple Personalities" :reference "Sybil" :summary "* More than one distinct personality. Personalities may change under stress or randomly. Personalities may like, dislike, or be oblivious to each other. Some may be dangerous to self or others.") :Narssicist (ability :name "Narssicist") :Nightmares (ability :name "Nightmares") :Obsessed (ability :name "Obsessed" :summary "* Focused on a single person or object and will talk about it all the time. May risk embarrassment, financial loss, or bodily harm to pursue it.") "Obsessive Compulsive" (ability :name "Obsessive Compulsive" :summary "* Compulsively performs trivial activities." :titles "OCD") :Overcompensating (ability :name "Overcompensating" :summary "* Constantly attempt to draw attention away from preceived flaw.") :Overconfidence (ability :name "Overconfidence") :Paranoia (ability :name "Paranoia" :reference "Just because you're paranoid doesn't mean they aren't after you. - Catch 22" :summary "* Belief that enemies are everywhere. May rant endlessly about the conspiracy, compulsively work on defenses, risk everything to stop them.") :Phobia (ability :name "Phobia" :summary "* Unreasoning fear of some common thing. Fear of dogs, heights, sounds, or colors. May feel discomfort, paralyzing fear, beserk fear, or catatonia.") "Post Traumatic Stress Disorder" (ability :name "Post Traumatic Stress Disorder") :Pyromania (ability :name "Pyromania") :Robophobia (ability :name "Robophobia" :reference "* Uncanny Valley - The theory that as a robot is made more humanlike in its appearance and motion, the emotional response from a human being to the robot will become increasingly positive, until a point is reached beyond which the response quickly becomes that of strong revulsion. However, as the appearance and motion continue to become less distinguishable from a human being, the emotional response becomes positive once more. * This area of repulsive response aroused by a robot with appearance and motion between a 'barely human' and 'fully human' entity is called the uncanny valley. The name captures the idea that a robot which is 'almost human' will seem overly strange and corpselike. * Not robots...walking dead. They pretend we control them...but really... - Doctor Who, The Robots of Death * The name 'Grimwade's Syndrome' was an in-joke reference to production assistant Peter Grimwade who had bemoaned the fact that the stories on which he was assigned to work almost always involved robots. - Doctor Who, The Robots of Death" :summary "* Fear of Robots" :titles "Grimwade's Syndrome, Uncanny Valley") "Refuses to Kill" (ability :name "Refuses to Kill") :Sadistic (ability :name "Sadistic") "Sex Crazed" (ability :name "Sex Crazed" :titles "Cassonova, Heartbreaker, Lady Killer, Libertine, Lothario, Romeo, Sex Addict") :Shy (ability :name "Shy" :summary "* Hate dealing with others. Avoid interactions with new people. May need to retreat from others.") :Sociopath (ability :name "Sociopath") :Stubborn (ability :name "Stubborn" :summary "* Will not give in or compromise. May risk embarrassment, financial loss, or injury to prove you're right.") :Tempermental (ability :name "Tempermental" :reference "* What do we have? Sea Bass. Riiiight? They are mutated Sea Bass. Really. Are they ill-tempered. Absolutely. Well that's a start. - Dr. Evil and Number 2 - Austin Powers" :summary "* Constantly irritable. When temper flares will risk embarrassment, financial loss, incarceration, or life and limb." :titles "Bad Tempered, Hot Tempered") "Unreasoning Hatred" (ability :name "Unreasoning Hatred") :Vengeful (ability :name "Vengeful"))))))))
nx/tactics/books/powers / chapter_movement_powers
Description:
Function Name:
  • chapter_movement_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_movement_powers : base/chapter (chapter :name "Movement Powers" :sectionmap (sectionmap :Travel (section :name "Travel" :powermap (powermap :Flight (power :name "Flight" :image "Rules/Images/MoveFlight.png" :abilitymap (abilitymap :Afterburner (ability :name "Afterburner") "Air Droppable" (ability :name "Air Droppable") :Airlift (ability :name "Airlift" :summary "* Ability to pick up and drop cargo or [Airlift Ready] vehicles without landing.") :Atmospheric (ability :name "Atmospheric") "Diving Attack" (ability :name "Diving Attack") :Glide (ability :name "Glide" :titles "Glider, Parachute") :Levitate (ability :name "Levitate" :summary "* Levitate is a slow form of movement with a maximum speed of just half a normal Move. Levitating is very stable, silent, can move in any direction, and requires no concentration. Levitating causes no noise or movement related penalties and can avoid most terrain penalties as well.") "Lighter Than Air" (ability :name "Lighter Than Air") "Nape of Earth Flight" (ability :name "Nape of Earth Flight") :Orbital (ability :name "Orbital") "Reentry System" (ability :name "Reentry System" :summary "* A heat shield (either inflatable or built in) for atmospheric reentry." :titles "Ballute") "Rocket Engine" (ability :name "Rocket Engine") "Stratospheric Flight" (ability :name "Stratospheric Flight") "Supersonic Flight" (ability :name "Supersonic Flight") "Trans-atmospheric Flight" (ability :name "Trans-atmospheric Flight") :VTOL (ability :name "VTOL" :summary "* Hovering units may [Move] backwards. * Hovering units may use [Vector Movement] rule."))) "Ground Movement" (power :name "Ground Movement" :abilitymap (abilitymap :2-Legged (ability :name "2-Legged") :3-Legged (ability :name "3-Legged") :4-Legged (ability :name "4-Legged") :6-Legged (ability :name "6-Legged") :8-Legged (ability :name "8-Legged") :Hover (ability :name "Hover" :summary "* Hovering allows full movement speed over any flat terrain without actually touching the surface. Ground, Water, Sand, Ice, generally cause no penalty, but turning is difficult and imprecise especially at high speeds. * Hovering units may [Move] backwards. * Hovering units may use [Vector Movement] rule.") "Jump Jets" (ability :name "Jump Jets") "Off Roading" (ability :name "Off Roading") :Snowcraft (ability :name "Snowcraft" :summary "* Off Snow +1 Terrain Penalty.") :Tracked (ability :name "Tracked") :Tunnelling (ability :name "Tunnelling") "Turbo Booster" (ability :name "Turbo Booster" :titles "Boost, Nitro, Turbo, Turbo Charger") :Wheeled (ability :name "Wheeled"))) "Water Movement" (power :name "Water Movement" :abilitymap (abilitymap :Hydrofoil (ability :name "Hydrofoil") :Sailed (ability :name "Sailed" :image "Maps/Windsock.png" :reference "Estimated 18ft Skiff speeds at 20mph winds: 0 (180deg), 16mph (150deg), 26mph (120deg), 31mph (90deg), 32mph (60deg), 27mph (30deg), 19mph (0deg) Estimated ice yacht speeds at 30mph winds: 0 (180deg), 95mph (150deg), 144mph (120deg), 165mph (90deg), 155mph (60deg), 115mph (30deg), 30mph (0deg)" :summary "* Wind direction has an effect on all vehicles but it is most pronounced on sailing vessels. * [Setup] - Point Windsock in direction of the wind. If wind direction is not already determined, roll a die to randomize the wind direction. * [Move] - [-1 Speed] when starting the turn against the wind at an angle. * [Move] - [-2 Speed] when starting the turn directly against the wind. * Sailing speed is based on Wind speed, direction, angle of motion and vesselsize. * Same direction as wind (Running Downwind): Max Speed = Wind Speed * 30 degrees off direction (Broad Reach): Max Speed = Wind Speed * 1.3 (* 4 on ice) * 60 degrees off direction (Broad Reach): Max Speed = Wind Speed * 1.5 (* 5 on ice) * 90 degrees off direction (Beam Reach): Max Speed = Wind Speed * 1.4 (* 5.5 on ice) * 120 degrees off direction (Close Reach): Max Speed = Wind Speed * 1.2 (* 4.8 on ice) * 150 degrees off direction (Close Hauled): Max Speed = Wind Speed * .7 (* 4 on ice) * 180 degrees (Head To Wind or In Irons): Max Speed = 0 * Over distance, sailboats average speed over distance is further limited by their length at waterline: * This is estimated to be about 1.34 x the square root of the waterline length. * For a 144 ft sailboat at the waterline, the square root is 12, and the boat will probably not exceed 12 x 1.34, or about 16 knots/18mph/30kph. * A 100 footer should do 13.4 knots/15mph/25kph. * A 30 footer should do 7.34 knots/8mph/13kph. * A 16 footer should do 5.36 knots/6mph/10kph.") :Submersible (ability :name "Submersible"))) "Space Movement" (power :name "Space Movement" :abilitymap (abilitymap "Chemical Rockets" (ability :name "Chemical Rockets") "Impulse Drive" (ability :name "Impulse Drive" :summary "* The Impulse Drive is a drive system based upon the concept that repeated energy releases at the same harmonic frequency will cause small ripples in the fabric of space. * By rhythmic repetition, the Drive can cause an action/reaction effect against the fabric of space itself, therefore no longer needing reaction mass to travel large distances. * Further, the ripples in space cause space itself to slightly change orientation on each wave. Anything crossing a wave will suffer minor disruption. Light, lasers, radio waves, radiation, and relativistic particles are increasingly scattered as they strike each wave effectively dispersing them. * This spatial effect has a number of implications on space travel: * High energy radiation becomes unfocused effectively creating radiation shielding proportionate to the distance from the source. * Energy weapons, relativistic particle weapons, and railguns become unfocused and scattered effectively increasing the armor of the vessel proportionate to the distance of the weapon. * At long distances, the energy detected by radar and other detection devices (even telescopes) become diffused. This effectively provides the vessel with increased stealth proportionate to the distance of the detector. * At closer distances, microcircuitry becomes prone to failure and damage. This makes computer chips, the foundation of modern computer science, next to useless. Therefore, computer systems must be turned off when the wave drive is active. Piloting, weaponry, and navigation must therefore be performed manually with limited automation." :titles "Impulse, Ripple Drive, Wave Drive") "Ion Drive" (ability :name "Ion Drive") "Nuclear Rockets" (ability :name "Nuclear Rockets") "Reaction Mass" (ability :name "Reaction Mass") "Subspace Drive" (ability :name "Subspace Drive" :reference "* Comet Empire Subspace Attack Submarine" :summary "* By creating a minor fold in space, a unit may drop almost completely out of normal space while maintaining a small window through which it may still interact with normal space.") "Torch Drive" (ability :name "Torch Drive" :summary "* This drive creates a tight gravity well around the ship dropping it partially out of normal space. Because the ship is no longer in normal space, it does not actually move. What does move is the interface between normal space and the ship. Speed and direction are adjusted by controlling the depth and shape of the field. * There are a number of distinct advantages to this drive system. Because the ship in not moving, it is not subject to inertia or problems incurred at relativistic speeds. * Combat with the Torch drive is unique for several reasons. The occupants are not subject to the enormous stress of maneuvering at relativistic speeds. Conventional weapons have greatly reduced effect because only damage that crosses the interface has any effect on the ship. * Weaknesses - The Torch drive must also maintain a protective gravity bubble to defend against its own gravity well. Weapons designed to disrupt the Torch drive have a strong effect by making the ship more vulnerable to damage, by reducing its speed, by subjecting it to increased stress from travelling at relativistic speeds, and by exposing it to its own gravity well." :titles "TISA, Trans-Gravitic, Interphased, Sub-Light Anamoly Drive") "Rocket Booster" (ability :name "Rocket Booster" :titles "Boost, Turbo Booster") "Vernier Thruster" (ability :name "Vernier Thruster" :titles "Apogee Motor"))) "Interstellar Movement" (power :name "Interstellar Movement" :abilitymap (abilitymap :Hyperdrive (ability :name "Hyperdrive" :image "Units/SpaceAndTime/Hyperspace.jpg" :summary "* Faster than light travel can be accomplished by warping space into a Wormhole/Black hole, dropping out of normal space and travelling through the parallel universe called Hyperspace/Tachyon Space where physical laws are not bound by the relationship between mass and the speed of light, and finally returning to normal space by creating another space warp. * Hyperspace/Tachyon Space - Tachyon Space, like other dimensions is at right angles to our existing 3 dimension. In Hyperspace, time and distance have different meanings, all particles are tachyons, and the speed of light is an absolute minimum speed instead of a maximum. Travelling through Hyperspace is exceptionally hazardous. In fact, any deviation from the calculated route cause the corridor to collapse leaving one stranded in Hyperpace forever with no way to calculate a return. * Calculating a Route - Once a destination is chosen, complex calculations must be performed to calculate a direct route from the current location to the destination through the shifting reality of Hyperspace. A successful route will be a 'straight' line through Hyperspace. Proximity to a gravity well makes these calculations next to impossible. Typically, all ship computer resources are required for this calculation and the larger the ship fewer the available routes and therefore the greater the complexity. Ships may only enter and exit hyperspace at the edge of a solar system and must use conventional sub light drives within the system. A day or more at sub-light speed is therefore required to reach or leave a planet in an inner solar system. Route calculation time is roughly light years x tons / 10secs e.g. 4 light years x 100 tons / 10 = 40sec. * Hyperspace Corridor - Once calculated, the ship must meet the speed defined by the calculation while modulating the Hyperdrive energy signature to match the bridge to Hyperspace. If all goes well, the vast energies in Tachyon Space will form a corridor directly to the destination. Errors in any of the steps usually involve intense gravitional shearing forces that will at best cause damage to the Hyperdrive and leave the traveller stranded in deep space, or worse, Hyperspace. * Travel in Hyperspace - Hyperspace travel is typically a boring affair. The Hyperspace corridor carries the ship to its destination, so no manuevering is needed. The time spent in Hyperspace varies, but is usually proportional to the distance. Transit time is roughly 2 hours per light year travelled (e.g. 4 light years x 2 = 8hours) * Tachyon Doppler Effect - When the Hyperspace Corridor is created, both ends of the corridor will start leaking Tachyons which can be detected by sensitive instruments. The amount of Tachyons increases with the size of the ship, the distance travelled and the closer the time of arrival. * Tachyon Relay Network - Satellites at the edge of stellar systems use Hyperspace Corridors to beam tranmissions through Hyperspace to their opposites in other systesm. Since these communications have negligible mass, the calculations are nearly instantaneous though the same transit times apply. * History - Imaginary Space, I-Space - While studying fusion plant efficiency using various algorithms, a surprising discovery was made: very rarely and seemingly at random, the plant would produce a tiny tachyon burst. After decades of study, a pattern began to emerge along with a shocking discovery: only algorithms using imaginary numbers could trigger a burst and a small amount of particles were actually disappearing during the event. Where the particles were going became the primary focus of astrophysics from then on. Eventually a hypothesis gathered momentum. The particles were leaving real space and traveling along trajectories plotted through so called imaginary space. This implied that the destination of the particles could be predicted. After much trial and error another breakthrough: a second tachyon burst moments after the first and many kilometers away. The particles had returned. Faster than light travel was possible. The implications for communications were immediately obvious, but could something larger make the trip? Research was slow because increased mass meant increased complexity. The power and computational needs were high but not unachievable. Only a decade later the first successful test craft made the trip. A decade later commercial hyperdrives became available. A decade later they were affordable on even modest starships." :titles "FTL Drive, Gravity Drive, Gravity Lens, Subspace Drive, T-Drive, Tachyon Drive, Warp Drive"))) "Jump Drive" (power :name "Jump Drive" :image "Units/SpaceAndTime/Wormhole.jpg" :reference "* I created the Event Horizon to reach the stars, but she's gone much, much farther than that. She tore a hole in our universe, a gateway to another dimension. A dimension of pure chaos. Pure... evil. When she crossed over, she was just a ship. But when she came back... she was alive! - Dr. Weir, Event Horizon" :summary "* Jump Drives generate energy pulses in the ship's drive to create ripples in the fabric of space. Each pulse must be precisely timed to the apex of each ripple to create an increasing harmonic wave (the 'Wave Motion' effect). Eventually, the energy of the occillation becomes too great, a tear in space is produced, and the starship falls in." :titles "Gate Drive, Stargate, Wave Motion Engine, Wormhole" :abilitymap (abilitymap "Strategic Warp Jump" (ability :name "Strategic Warp Jump" :summary "* A ship with a Warp Engine may perform a strategic warp jump and instantly remove itself from combat, returning to the strategic map. * A unit already on the strategic map may move [Skill] spaces on the strategic map. * [Requires]: The unit must cease maneuvering and must perform this ability for 3 consecutive turns. * [Action]: On the second consecutive action, the unit immediately removes all Vector tokens and moves the unit to any other space on the map.") "Tactical Warp Jump" (ability :name "Tactical Warp Jump" :summary "* A ship with a Warp Engine may perform a tactical warp jump and instantly transport from any space on the map to any other. * [Requires]: The unit must cease maneuvering and must perform this ability for 2 consecutive turns. * [Action]: On the second consecutive action, the unit immediately removes all Vector tokens and moves the unit to any other space on the map."))) :Teleportation (power :name "Teleportation" :titles "Instant Transmission, Teleporter, Transporter" :abilitymap (abilitymap "Teleport Away" (ability :name "Teleport Away" :summary "* Teleport an object/objects to a precisely known location. * Level determines size of object/objects and distance. * Tricks: Teleporting mines, bombs, fighters, drill missiles." :titles "Smite") "Teleport Self" (ability :name "Teleport Self") "Teleport Toward" (ability :name "Teleport Toward" :reference "Beam me up Scotty" :summary "* Teleport an object/objects that you know the exact location of to your location. * Level determines size of object/objects and distance."))) "Dimensional Travel" (power :name "Dimensional Travel" :reference "* I reject your reality and substitute my own. - Adam Savage, Mythbusters" :abilitymap (abilitymap "Dimension Drop" (ability :name "Dimension Drop" :summary "* Send a small object through a dimensional portal and immediately close it again. This is most practical for sending messages or explosives.") "Dimensional Interference" (ability :name "Dimensional Interference" :summary "* Create an area that is more difficult to use dimensional or teleporting abilities.") "Dimensional Portal" (ability :name "Dimensional Portal" :titles "Gate") "Dimensional Teleport" (ability :name "Dimensional Teleport" :summary "* Move rapidly from one location to another by creating a wormhole between the locations.") "Dimension Trace" (ability :name "Dimension Trace" :summary "* Detect the origin of a Teleporter, Dimensional Portal, or an [Outsider].") "Dimension Track" (ability :name "Dimension Track" :summary "* Track the destination of someone who recently travelled using Teleport or Dimensional Travel. Also can be used to track an [Outsider] as if the user had [Tracking].") "Dimensional Trap" (ability :name "Dimensional Trap" :summary "* Open a Dimensional Portal that opens when a target enters the area, draws them through, and then closes behind.") "Dimensional Walk" (ability :name "Dimensional Walk" :summary "* Move rapidly over terrain by quickly phasing in and out of the current space."))) "Time Travel" (power :name "Time Travel" :image "Units/SpaceAndTime/Vortex.jpg" :summary "* The Vortex is a point of null space-time. It is a tunnel through which one can escape the bounds of space-time. * Here time and distance have no meaning. Travelers through the Vortex have no sense of their own body, but have a strong sense that they have been in the Vortex forever. Some suggest that this may actually be true. * Entering the Vortex is like dying. Leaving is like being born. Some suggest that this birth and death cycle is the reason why only living things may be brought through the Vortex." :titles "Chronos, Eye of Harmony, Yog-Sothoth" :abilitymap (abilitymap "Freeze Time" (ability :name "Freeze Time") "Reverse Time" (ability :name "Reverse Time" :summary "* Rewind recent events within the surrounding area and possibly choose a different [Action].") :Rewind (ability :name "Rewind") "Slow Time" (ability :name "Slow Time") "Time Shift" (ability :name "Time Shift"))))))))
nx/tactics/books/powers / chapter_physical_powers_and_weaknesses
Description:
Function Name:
  • chapter_physical_powers_and_weaknesses
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_physical_powers_and_weaknesses : base/chapter (chapter :name "Physical Powers and Weaknesses" :sectionmap (sectionmap "Physical Powers" (section :name "Physical Powers" :powermap (powermap :Agility (power :name "Agility" :stat "Body") :Appearance (power :name "Appearance" :abilitymap (abilitymap "Alter Appearance" (ability :name "Alter Appearance") "Another Face in the Crowd" (ability :name "Another Face in the Crowd") "Chameleon Skin" (ability :name "Chameleon Skin") :Doppleganger (ability :name "Doppleganger" :summary "Take on the appearance of someone else.") "Enhanced Beauty" (ability :name "Enhanced Beauty") "Eye of the Beholder" (ability :name "Eye of the Beholder" :summary "* Appear differently to different viewers.") "Face of Terror" (ability :name "Face of Terror"))) :Armored (power :name "Armored" :summary "* Armor normally alters appearance and may be a permanent alteration or a suit that may be donned. * [+1 Value] for Armor that can appear on demand. * [+2 Value] for Armor that cannot be detected. Body Armor may be permanent or temporary. If permanent, no time is needed to activate it, but is must either be donned and carried or it permanently alters appearance." :abilitymap (abilitymap "Auto Med System" (ability :name "Auto Med System" :summary "* Detects severe damage to the wearer and automatically takes action to reduce shock and maintain suit integrity (sealing leaks or amputating if necessary).") "Ablative Armor" (ability :name "Ablative Armor" :summary "* Armor that vaporizes when hit decreasing damage but also damaging the armor. * Ignore the first point of [Damage] and reduce [Armor] (on that facing) instead.") "Hardened vs. Energy" (ability :name "Hardened vs. Energy" :summary "* [Damage]: [+2 Armor] if attack is an [Energy Weapon] * Only 1 Hardened vs. ability may be taken") "Body Flares" (ability :name "Body Flares" :summary "* Detects and distracts heat seaking missiles, * [Passive] - +1 Defense vs. Heat-Seaking Missiles (3 uses)") "Corrosion Resistance" (ability :name "Corrosion Resistance" :summary "* [Passive] - +1 Armor vs. Corrosive Agents") "Cyro Sleep System" (ability :name "Cyro Sleep System" :summary "* Can freeze the wearer into cryo-sleep and armor runs on minimal power to preserve the wearer from hostile environments or critical wounds for up to a month before power gives out.") "Electrical Resistance" (ability :name "Electrical Resistance" :summary "* [Passive] - +1 Armor vs. Electricity") "Environmental Containment" (ability :name "Environmental Containment" :summary "* Suit is sealed against chemical and biological weapons except corrosive ones. It is also water-proof.") "Environmental Independence" (ability :name "Environmental Independence" :summary "* Suit is sealed against most hostile environments including space. Does not include corrosive environments. * Requires - [Enviromental Containment]") "Floation Device" (ability :name "Floation Device" :summary "* An emergency floatation device.") "Grappling Hoist" (ability :name "Grappling Hoist" :summary "* A grappling dart that is fired into stone or hooked onto any uneven surface. The attached winch can then pull the wearer to the target or vis versa depending on relative weight. This can be used for climbing or towing. The darts can be recovered and reused, but they are often not recoverable. 2 replacement darts are included.") "Hardened vs. Fire" (ability :name "Hardened vs. Fire" :summary "* [Damage]: [+2 Armor] if attack produces [Fire] tokens * Only 1 Hardened vs. ability may be taken") "Hardened vs. Projectiles" (ability :name "Hardened vs. Projectiles" :summary "* [Damage]: [+2 Armor] if attack is a [Projectile] * Only 1 Hardened vs. ability may be taken") "Infrared Dampener" (ability :name "Infrared Dampener" :summary "* By activating this system, the armor reduces all heat signatures. Use of any system (even passive ones) will negate the stealth. * [Continuous Action] - Stealth vs. Infrared Sensors") "Magnetic Resistance" (ability :name "Magnetic Resistance" :summary "* Reduces the chance that a magnetic attachment can hold on the armor (assuming it is metallic). * [Passive] - +1 Armor vs. Magnetism") "Missile Mount" (ability :name "Missile Mount" :summary "* A special mount to add a missile pack on the back of the armor.") "Plasma Resistance" (ability :name "Plasma Resistance" :summary "* Detects and disrupts the magnetic bottle surrounding plasma rounds causing them to detonate too early. * [Passive] - +1 Armor vs. Plasma") "Pressure Resistance" (ability :name "Pressure Resistance" :summary "* [Passive] - +1 Armor vs. Pressure and Impact") "Radar Dampener" (ability :name "Radar Dampener" :summary "* By activating this system, the armor reduces all radar signatures. Use of any system (even passive ones) will negate the stealth. * [Continuous Action] - Stealth vs. Radar") "Radar Jammer" (ability :name "Radar Jammer" :summary "* By activating this system, the armor emits powerful radar white noise. * [Continuous Action] - [-Range] Radar sensors detection to any target within range.") "Radiation Resistance" (ability :name "Radiation Resistance" :summary "* [Passive] - +1 Armor vs. Radiation") "Reactive Armor" (ability :name "Reactive Armor" :summary "* Exterior layer of armor explodes on impact reducing damage of the first hit but reduces armor rating for all subsequent hits. * [Passive] - +2 Armor vs. the first hit. -1 Armor for each subsequent hit.") "Turret Mount" (ability :name "Turret Mount" :summary "* A special mount to add a turreted weapon on the back of the armor.") "Ultraviolet Jammer" (ability :name "Ultraviolet Jammer" :summary "* By activating this system, the armor emits a powerful blinding strobe in the ultraviolet band. * [Continuous Action] - [-Range] Ultraviolet sensors detection to any target within range.") "Underwater Operation" (ability :name "Underwater Operation" :summary "* Sealed against water and can operate underwater. Small thrusters allow slow movement underwater. Oxygen scrubbers allow extended underwater operation."))) :Fortitude (power :name "Fortitude" :titles "Resistence, Toughness" :stat "Body" :abilitymap (abilitymap :Resilience (ability :name "Resilience") "Resist Acid" (ability :name "Resist Acid") "Resist Cold" (ability :name "Resist Cold") "Resist Disease" (ability :name "Resist Disease") "Resist Electricity" (ability :name "Resist Electricity") "Resist Exposure" (ability :name "Resist Exposure") "Resist Fire" (ability :name "Resist Fire") "Resist Gravity" (ability :name "Resist Gravity") "Resist Hunger" (ability :name "Resist Hunger") "Resist Poison" (ability :name "Resist Poison") "Resist Pressure" (ability :name "Resist Pressure") "Resist Radiation" (ability :name "Resist Radiation") "Resist Space" (ability :name "Resist Space") "Resist Thirst" (ability :name "Resist Thirst") "Resist Vacuum" (ability :name "Resist Vacuum") "Resist Water" (ability :name "Resist Water") "Suspended Animation" (ability :name "Suspended Animation"))) :Healing (power :name "Healing" :abilitymap (abilitymap "Lernaean Regeneration" (ability :name "Lernaean Regeneration" :summary "* [Activate]: If unit is Damaged, Remove a Damage Token and add a White Close Combat Token.") :Recover (ability :name "Recover" :summary "* May roll extra dice when resisting [Disease] or [Poison].") :Regeneration (ability :name "Regeneration" :summary "* [Passive] * [Bleeding] and [Damage] Tokens are considered Yellow Tokens.") :Regrowth (ability :name "Regrowth"))) :Movement (power :name "Movement" :abilitymap (abilitymap "Wall Crawling" (ability :name "Wall Crawling") "Wall Running" (ability :name "Wall Running" :summary "* Requires: [Wall Crawling]") "Water Walking" (ability :name "Water Walking") "Water Running" (ability :name "Water Running" :summary "* Requires: [Water Walking]"))) "Natural Weaponry" (power :name "Natural Weaponry" :abilitymap (abilitymap :Bite (ability :name "Bite" :summary "* The fighter savagely bites his opponent. * Criticals - [Piercing]") "Bull Rush" (ability :name "Bull Rush" :titles "Charge") :Burrowing (ability :name "Burrowing") :Claw (ability :name "Claw" :summary "* The fighter attacks with both claws. * Criticals - [Bleeding]") "Claw Rake" (ability :name "Claw Rake" :summary "* A quick raking claw attack with one set of claws. * +2 Initiative * -1 Accuracy * +1 Move * Criticals - [Bleeding]") :Constrict (ability :name "Constrict" :titles "Bear Hug") "Death Roll" (ability :name "Death Roll") "Feather Blades" (ability :name "Feather Blades" :summary "* Feathers become as hard as steel and may be used as swords.") "Feather Knives" (ability :name "Feather Knives" :summary "* Feathers become as hard as steel and may be thrown like knives.") :Horns (ability :name "Horns" :summary "* Usually they are worn as antlers, but may sprout form anywhere on the body.") "Jaw Lock" (ability :name "Jaw Lock" :summary "* The fighter locks his powerful jaws onto the opponent to immobilize. * Damage - [Slow] * Criticals - [Piercing]") "Jaws of Death" (ability :name "Jaws of Death" :summary "* Fericiously attack with huge bites.") "Neck Bite" (ability :name "Neck Bite" :summary "* After grabbing an opponent, the fighter bites the neck/shoulders of the opponents doing damage each turn. * Requires: [Hold], [Continuous Hold] * +1 Initiative * +1 Accuracy * Critcals - [Bleeding]") :Overwhelm (ability :name "Overwhelm") :Pounce (ability :name "Pounce" :summary "* The fighter drops into a crouch and then explodes into a mighty leap at his prey attempting to knock down the opponent. * [Aerial] * +1 Accuracy * +1 Move * Criticals - [Knockdown]") "Quill Attack" (ability :name "Quill Attack") "Ripping Bite" (ability :name "Ripping Bite" :summary "* The fighter strikes a limb with the intention to disable his opponent. * -1 Initiative * -1 Damage * +1 Critical - [Bleeding] or [Weakness]" :titles "Jaws of Death") "Savage Genitalia" (ability :name "Savage Genitalia" :summary "* Male variations include excessive length, hardness, spines, and thorns. * Female variations include teeth, ripping suction, crushers, and grinders. * [Hidden Weapon] * -2 Initiative * -1 Accuracy * +1 Critical") :Spines (ability :name "Spines") :Sting (ability :name "Sting") "Swallow Whole" (ability :name "Swallow Whole") "Tail Sweep" (ability :name "Tail Sweep") "Tongue Lash" (ability :name "Tongue Lash") :Tusk (ability :name "Tusk") :Trample (ability :name "Trample"))) :Quickness (power :name "Quickness" :titles "Celerity, Hyperspeed, Quickening, Speed" :abilitymap (abilitymap "After Image" (ability :name "After Image" :reference "* Dragon Ball * Phantom Miria - Claymore" :summary "* Evade: Instantly make a Move without triggering Opportunity Attacks.") "Fast Actions" (ability :name "Fast Actions" :summary "* Time to complete time consuming actions is dramatically reduced.") "Hyper Punch" (ability :name "Hyper Punch" :summary "* Action: Perform a basic [Attack] on a single target. If the attack succeeds, roll additional damage dice up to level.") "Hyper Running" (ability :name "Hyper Running") "Hyper Swimming" (ability :name "Hyper Swimming") "Hyper Storm" (ability :name "Hyper Storm" :summary "Action: Use a Move and perform a basic [Attack] up to 1 target per level on each target along your path. If the attack succeeds, roll additional damage dice up to level."))) :Senses (power :name "Senses" :abilitymap (abilitymap "360 Vision" (ability :name "360 Vision") "Blood Scent" (ability :name "Blood Scent") "Cosmic Awareness" (ability :name "Cosmic Awareness" :reference "Captain Marvel, Gundam New Types") "Death Sense" (ability :name "Death Sense") "Electromagnetic Vision" (ability :name "Electromagnetic Vision" :summary "See into radio and radiation band of electromagnetic spectrum") "Enhanced Hearing" (ability :name "Enhanced Hearing") "Enhanced Smell" (ability :name "Enhanced Smell") "Enhanced Taste" (ability :name "Enhanced Taste") "Enhanced Touch" (ability :name "Enhanced Touch") "Microscopic Vision" (ability :name "Microscopic Vision") "Motion Detection" (ability :name "Motion Detection") "Night Vision" (ability :name "Night Vision" :titles "Light Intensifying") "Radar Sense" (ability :name "Radar Sense") "Radio Sense" (ability :name "Radio Sense" :summary "* May hear radio, television, shortwave, and even cellular telephone communications when concentrating.") :Sonar (ability :name "Sonar" :titles "Echo Location") "Telescopic Hearing" (ability :name "Telescopic Hearing") "Telescopic Vision" (ability :name "Telescopic Vision") "Thermal Vision" (ability :name "Thermal Vision") "Tracking Sense" (ability :name "Tracking Sense") "Ultrasonic/Subsonic Hearing" (ability :name "Ultrasonic/Subsonic Hearing" :summary "* Hear ultra high or low pitched sounds. Subsonic sounds can travel extreme distances and are some of the communication systems used by whales and elephants.") "Ultraviolet Vision" (ability :name "Ultraviolet Vision") "X-Ray Vision" (ability :name "X-Ray Vision" :reference "* Superman: Bruce Wayne? Batman: You peeked. - Superman and Batman, Superman: The Animated Series" :summary "* See through solid objects. The higher the density the blurrier the vision."))) :Shielding (power :name "Shielding" :abilitymap (abilitymap "Shield Modulation" (ability :name "Shield Modulation"))) :Strength (power :name "Strength" :reference "* Technique is for lightweights. - Sett, Runeterra" :stat "Body" :abilitymap (abilitymap "Power Leap" (ability :name "Power Leap") "Power Lift" (ability :name "Power Lift" :summary "* Lift additional kg equal to Power Rating.") "Power Strike" (ability :name "Power Strike" :summary "* Add Power Rating to weapon damage using Melee, or Close Combat.") "Power Throw" (ability :name "Power Throw" :summary "* Add Power Rating to weapon damage when throwing any object or weapon.") :Shockwave (ability :name "Shockwave") :Thunderclap (ability :name "Thunderclap"))))))))
nx/tactics/books/powers / chapter_body_powers
Description:
Function Name:
  • chapter_body_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_body_powers : base/chapter (chapter :name "Body Powers" :sectionmap (sectionmap "Alteration Powers" (section :name "Alteration Powers" :powermap (powermap :Adaptation (power :name "Adaptation" :summary "Ability to survive in hostile environments. Higher power levels ignore the effects of increasingly hostile environments." :abilitymap (abilitymap "Adapt to Cold" (ability :name "Adapt to Cold") "Adapt to Desert" (ability :name "Adapt to Desert") "Adapt to Electricity" (ability :name "Adapt to Electricity") "Adapt to Fire" (ability :name "Adapt to Fire") "Adapt to Fresh Water" (ability :name "Adapt to Fresh Water") "Adapt to Heat" (ability :name "Adapt to Heat") "Adapt to High Altitude" (ability :name "Adapt to High Altitude") "Adapt to High Gravity" (ability :name "Adapt to High Gravity") "Adapt to High Pressure" (ability :name "Adapt to High Pressure") "Adapt to Low Gravity" (ability :name "Adapt to Low Gravity") "Adapt to Low Pressure" (ability :name "Adapt to Low Pressure") "Adapt to Micro Impact" (ability :name "Adapt to Micro Impact" :summary "* Can endure the impact of very small, high velocity particles like micro meterorites and small caliber bullets.") "Adapt to Radiation" (ability :name "Adapt to Radiation") "Adapt to Salt Water" (ability :name "Adapt to Salt Water") "Adapt to Vacuum" (ability :name "Adapt to Vacuum") "Adapt to Zero Gravity" (ability :name "Adapt to Zero Gravity") "Adapt to Zero Pressure" (ability :name "Adapt to Zero Pressure"))) :Acidic (power :name "Acidic" :abilitymap (abilitymap "Acid Bite" (ability :name "Acid Bite") "Acid Blood" (ability :name "Acid Blood" :reference "Gestates in a human host and has concentrated acid for blood - Aliens") "Acid Spray" (ability :name "Acid Spray") "Acid Spit" (ability :name "Acid Spit") "Acid Sting" (ability :name "Acid Sting"))) "Altered Skin" (power :name "Altered Skin" :abilitymap (abilitymap "Slippery Skin" (ability :name "Slippery Skin") "Tar Baby" (ability :name "Tar Baby"))) :Animalism (power :name "Animalism" :reference "Beast Boy, Teen Titans" :titles "Shapeshifter" :abilitymap (abilitymap "Adhesive Grip" (ability :name "Adhesive Grip") "Aspect of Wolf" (ability :name "Aspect of Wolf" :reference "Everquest") "Bat Sight" (ability :name "Bat Sight") "Bear Form" (ability :name "Bear Form") "Bear Strength" (ability :name "Bear Strength") "Cat Feet" (ability :name "Cat Feet" :summary "* Reduce damage from falls") "Chameleon Skin" (ability :name "Chameleon Skin") "Extra Limbs" (ability :name "Extra Limbs") "Fish Eye" (ability :name "Fish Eye") "Fish Form" (ability :name "Fish Form") :Gills (ability :name "Gills") "Hawk Eye" (ability :name "Hawk Eye" :titles "Eagle Eye") "Hawk Form" (ability :name "Hawk Form") "Rat Form" (ability :name "Rat Form") "Snake Bite" (ability :name "Snake Bite") "Snake Form" (ability :name "Snake Form") "Spider Climb" (ability :name "Spider Climb") :Spines (ability :name "Spines") :Tendrils (ability :name "Tendrils") :Wings (ability :name "Wings") "Wolf Form" (ability :name "Wolf Form") "Wolf Scent" (ability :name "Wolf Scent"))) "Demonic Power" (power :name "Demonic Power" :summary "* Yoki - 妖気, or 'demon essence' (the first character means demon, and second character is the same as the Chinese word commonly known as chi)." :titles "Demon, Yoki, Yoma") :Diseases (power :name "Diseases" :abilitymap (abilitymap "Fungal Growth" (ability :name "Fungal Growth") "Intestinal Parasite" (ability :name "Intestinal Parasite") :Rabid (ability :name "Rabid"))) :Explosive (power :name "Explosive" :abilitymap (abilitymap "Bombardier Spray" (ability :name "Bombardier Spray"))) :Flexible (power :name "Flexible" :abilitymap (abilitymap "Animated Hair" (ability :name "Animated Hair") "Arm Stretch" (ability :name "Arm Stretch" :summary "* [Action]: May perform known [Punch] ability at range.") "Body Stretch" (ability :name "Body Stretch" :reference "* You need to be more ... flexible. - Elastigirl, The Incredibles") "Bouncing Ball" (ability :name "Bouncing Ball") :Engulf (ability :name "Engulf") "Hair Whip" (ability :name "Hair Whip") "Leg Stretch" (ability :name "Leg Stretch" :summary "* [Action]: May perform known [Kick] ability at range.") :Tentacles (ability :name "Tentacles") "Tentacle Hammer" (ability :name "Tentacle Hammer") "Tentacle Spear" (ability :name "Tentacle Spear") "Tentacle Whip" (ability :name "Tentacle Whip"))) :Intangibility (power :name "Intangibility" :abilitymap (abilitymap :Dematerialize (ability :name "Dematerialize") "Dematerialize Other" (ability :name "Dematerialize Other"))) :Invisibility (power :name "Invisibility" :abilitymap (abilitymap :Invisible (ability :name "Invisible") :Transparency (ability :name "Transparency") :Vanish (ability :name "Vanish"))) :Longevity (power :name "Longevity" :abilitymap (abilitymap "Eternal Youth" (ability :name "Eternal Youth" :titles "Ageless") "Long Life" (ability :name "Long Life") :Reincarnation (ability :name "Reincarnation" :reference "* Doctor Who") "Reincarnation - Transference" (ability :name "Reincarnation - Transference") "True Immortality" (ability :name "True Immortality"))) :Lycanthropy (power :name "Lycanthropy" :summary "* Lycanthropy is an inherited trait that normally lies dormant. It seems to be triggered by near death experiences with other Lycanthropes. !Traits * Permanent - Lycanthropy is an inherited trait and cannot be 'cured'. * Rage - Lycanthropes are easily angered and are subject to berserk rages. ** [Anytime]: When taunted or after taking 2 or more damage, the unit must roll Lycanthropy vs. Spirit, gaining [Berserk] Tokens for each Hit. If the unit has any [Berserk] Tokens it immediately takes a non human Lycanthropy form on its next [Action]. ** [Daily]: On the first nights of the waxing and waning Moons or on any night under a Full Moon, the unit must check for going berserk as if taunted. * [Tooth and Claw] ** Requires: Must be in a non human form. ** Passive ** +1 Melee or Close Combat for each [Rage] Token." :stat "Beast" :abilitymap (abilitymap "Animal Form" (ability :name "Animal Form" :summary "* Action: Change to specific animal unit. ** +1 Move, -2 Mind, +1 Spirit. ** Clothes and Armor are destroyed or dropped. All Equipment is dropped. ** Gain [Natural Weaponry] and [Regeneration] Abilities. ** Duration: Until sunrise.") "Primal Animal Form" (ability :name "Primal Animal Form" :reference "American Werewolf in London") "Beastman Form" (ability :name "Beastman Form" :reference "Wolfman or Mr. Hyde." :summary "* Action: Change to bestial humanoid unit. ** +1 Body, -1 Mind. ** Shirt and Armor is destroyed or dropped. ** Gain [Regeneration] Ability. ** Duration: Until sunrise.") "Crinos Form" (ability :name "Crinos Form" :reference "The Howling" :summary "* Requires: [Animal Form], [Beastman Form] * Action: Change to specific Crinos unit. ** +2 Body, -2 Mind, +1 Spirit. ** Clothes and Armor are destroyed or dropped. ** All Equipment not in hands is dropped. ** Gain [Natural Weaponry], [Armor], and [Regeneration] Abilities. ** Each [[Bleeding]] or [[Damage]] Token taken grants a [[Rage]] Token. ** Each [[Bleeding]] Token inflicted grants a [[Rage]] Token. ** Each adjacent Ally or Foe slain grants a [[Rage]] Token. ** Remove a [[Rage]] Token instead of gaining a [[Hold]], [[Control]], [[Morale]], [[Despair]] or [[Fear]] Token. ** If [[Rage]] Tokens exceed Spirit, then roll [[Rage]] vs [[Spirit]] or gain a [[Berserk]] Token. ** Duration: Until sunrise.") "Human Form" (ability :name "Human Form" :summary "* Action: Change back to human unit from other Lycanthropy form. * Duration: Indefinite") "Mark Territory" (ability :name "Mark Territory" :summary "* By scenting an area, animals and supernatural beings will recognize the scent as a warning to stay away. Aggressive beings may be drawn to it.") "Mirror Walk" (ability :name "Mirror Walk" :summary "* Action: As a creature of spirit, Lycanthropes may enter the [Spirit Realm] merely by looking at their reflection in any surface.") "Spirit Claw" (ability :name "Spirit Claw" :summary "* Allows unit to attack targets across the [Veil]."))) :Phasing (power :name "Phasing" :abilitymap (abilitymap "Phase Jump" (ability :name "Phase Jump" :summary "* The ability to move without travelling through the intervening space. * [Action]: Instantly move to any empty space up to 1/3 speed away without passing through any intervening spaces.") "Phase Walk" (ability :name "Phase Walk" :summary "* The ability to move through solid matter. * [Action]: Move at half speed ignoring terrain penalties or other objects. While Phase Walking, the user takes no physical damage (unless it is magical). If the move ends in a solid object, the user is still considered to be Phase Walking unitl it no longer ends it turn on a solid object. No attacks can be made this turn."))) "Reality Warping" (power :name "Reality Warping" :reference "* Franklin Richards" :summary "* Perhaps equal to Time Travel as the most powerful of all abilities. By altering reality, seemingly nothing is beyond possibility." :abilitymap (abilitymap "Closed Universe" (ability :name "Closed Universe" :reference "* M.C. Escher, Relativity * Land of the Lost" :summary "* Exits from a location loop back upon themselves to leave a person back where they started."))) "Shape Change" (power :name "Shape Change" :titles "Shapeshifter" :abilitymap (abilitymap "Physical Imitation" (ability :name "Physical Imitation" :reference "* So, how do we know who's human? If I was an imitation, a perfect imitation, how would you know it was really me? - Childs, The Thing"))) "Size Control" (power :name "Size Control" :abilitymap (abilitymap :Growth (ability :name "Growth") :Shrinking (ability :name "Shrinking"))) :Spawning (power :name "Spawning" :abilitymap (abilitymap "Copy Other" (ability :name "Copy Other" :summary "Split target into 2 copies, each with -1 on all abilities.") "Copy Self" (ability :name "Copy Self" :summary "Split yourself into 2 copies, each with -1 on all abilities.") "Detach Body Parts" (ability :name "Detach Body Parts") :Offspring (ability :name "Offspring" :reference "* A Cell gets out, and it will IMITATE EVERYTHING on the face of the EARTH! AND NOTHING CAN STOP IT! - Blair, The Thing"))) :Toxins (power :name "Toxins" :reference "* Say 'ah'. Some poisons can kill people in the thousands with that amount. Like botulinum toxin. It inhibits acetylcholine release, causing loss of muscle tone, lethary, .. dizziness .., visual impairment.., heavy eyelids, intense thirst, loss of speech, vomiting, diarrhea, stomach distention, breathing difficulty.. then.. respiratory failure. - A.K.I, Street Fighter 6" :titles "Poisonous, Venomous" :abilitymap (abilitymap "Blinding Spit" (ability :name "Blinding Spit") "Blinding Toxin" (ability :name "Blinding Toxin") "Irritating Toxin" (ability :name "Irritating Toxin") "Paralyzing Bite" (ability :name "Paralyzing Bite") "Paralyzing Spit" (ability :name "Paralyzing Spit") "Paralyzing Spray" (ability :name "Paralyzing Spray") "Paralyzing Sting" (ability :name "Paralyzing Sting") "Poison Bite" (ability :name "Poison Bite") "Poison Blood" (ability :name "Poison Blood") "Poison Spit" (ability :name "Poison Spit") "Poison Spray" (ability :name "Poison Spray") "Poison Sting" (ability :name "Poison Sting") "Poison Touch" (ability :name "Poison Touch") "Poisonous Flesh" (ability :name "Poisonous Flesh" :summary "* Poisonous if bitten") "Poisonous Skin" (ability :name "Poisonous Skin" :summary "* Poisonous to the touch"))) :Transformation (power :name "Transformation" :reference "* Let me change into something a little more... Comfortable. - Elise, Runeterra" :abilitymap (abilitymap "Change Clothing" (ability :name "Change Clothing") :Combination (ability :name "Combination" :reference "* Form feet and legs; form arms and body; and I'll form the head! - Keith, Voltron" :summary "* [Action]: Unit may combine with another unit with this ability to form a new unit with their combined value of Transformation skills or less.") "Gaseous Form" (ability :name "Gaseous Form") "Liquid Form" (ability :name "Liquid Form") "Matter Chameleon" (ability :name "Matter Chameleon" :reference "Kevin from Ben 10" :summary "* Transform body into any material touched") "Metal Form" (ability :name "Metal Form" :reference "* Colossus - X-men * I'm bulletproof, nothing to lose...fire away, fire away...richochet, you take your aim... fire away, fire away...you shoot me down, but I won't fall...I am titanium - David Guetta, Titanium" :summary "* Transform body into any material touched") "Plant Form" (ability :name "Plant Form" :reference "* Swamp Thing, Man-Thing") "Quick Change" (ability :name "Quick Change") :Transform (ability :name "Transform" :reference "More Than Meets the Eye - Transformers" :summary "* [Action]: Change into a new unit with skill points equal to Transform."))) :Vampirism (power :name "Vampirism" :summary "* Any unit with Vampirism is by definition a [Vampire]. * [Deploy]: Start with [Vampire Blood] Tokens equal to Vampirisim. * Generations - When a Vampire is created, it automatically gains the Vampire Generation ability one less than the one who created them. A Vampire can only gain a lower Generation by [Diablerie]. * Vitae - The blood * Hunger - Vampires are always hungry, unless they have recently killed." :stat "Beast" :abilitymap (abilitymap "Vampire: 15th Generation" (ability :name "Vampire: 15th Generation" :titles "Stray") "Vampire: 14th Generation" (ability :name "Vampire: 14th Generation" :summary "* The last generation is known as thin-blooded vampires and start with only basic Vampiric powers. During the Dark Ages the Thirteenth Generation was believed to be the last, but in the Final Nights this is comprised of the 14th and 15th Generations." :titles "Thin Blood") "Vampire: 13th Generation" (ability :name "Vampire: 13th Generation") "Vampire: 12th Generation" (ability :name "Vampire: 12th Generation" :summary "* Although they lack the powers of the lower generations, the vampires of the 12th and 13th generations stand above men, capable of besting the strongest mortal knight in battle and wielding influence over barons, merchants and courts.") "Vampire: 11th Generation" (ability :name "Vampire: 11th Generation") "Vampire: 10th Generation" (ability :name "Vampire: 10th Generation" :summary "* While they are comparatively young, most vampires created within the last few centuries belong to the tenth and eleventh generation.") "Vampire: 9th Generation" (ability :name "Vampire: 9th Generation") "Vampire: 8th Generation" (ability :name "Vampire: 8th Generation" :summary "* Achieving a delicate balance between age and generation, these vampires are the most visible ones of the 14th century. They are nowhere near as old as most Cainites of lower generation, which places them in a delicate position. Most Cainites of eighth and ninth generation overcome this disadvantage by siring large covens of childer.") "Vampire: 7th Generation" (ability :name "Vampire: 7th Generation") "Vampire: 6th Generation" (ability :name "Vampire: 6th Generation" :summary "* Many of the vampires of the sixth and seventh generation are the self-styled lords of Cainite society. Although they are not as powerful as the Methuselahs, these Cainites are still formidable opponents, who gladly sacrifice mystical and spiritual power for temporal influence. These Cainites rule over vast kingdoms, donning the crown of monarchs and commanding armies of younger Cainites and mortal thralls.") "Vampire: 5th Generation" (ability :name "Vampire: 5th Generation" :titles "Methuselah") "Vampire: 4th Generation" (ability :name "Vampire: 4th Generation" :summary "* Methsuselahs are the most powerful modern Vampires that have been encountered. They are terrifyingly alien and powerful. It is hard to imagine the power of the lower Generations, given the strenght of the 4th Generation." :titles "Methuselah") "Vampire: 3rd Generation" (ability :name "Vampire: 3rd Generation" :summary "* Thirteen ancient Vampires were thought to have survived past the great flood and to have started the existing clans. Presumably the Antediluvians are of such age and potency of blood that they possess nearly god-like power, and in fact some of them may be deities. Most believe these god-like beings to be either in torpor, manipulating the Jyhad, or dead. While some clans regard their progenitor favorably, as a whole the Antediluvians are often portrayed as boogeymen that will one day rise and devour their descendants in at time called Gehenna." :titles "Antedeluvlain") "Vampire: 2nd Generation" (ability :name "Vampire: 2nd Generation" :summary "* It is said that there were three second generation Vampires: Enoch, the Wise (Caine's advisor), Irad, the Strong (Caine's general) and Zillah, the Beautiful (Caine's wife). They lived in the first city and presumably created the Antedeluvians, but nothing is known of them after their childer rose up against them in the final nights of the First City. Perhaps the Second Generation perished in the Deluge, or at the hands of their childer.") "Vampire: 1st Generation" (ability :name "Vampire: 1st Generation" :summary "* Only Cain, the original Vampire, is 1st generation. After all this time, his abilities would be beyond imagination.") "Blood Bond" (ability :name "Blood Bond") "Blood Sight" (ability :name "Blood Sight" :summary "* See blood through the skin. * With close observation, subtle blood characteristics can be detected including blood diseases, poisoning, or Diablerie") "Consume Flesh" (ability :name "Consume Flesh" :summary "* Consume the flesh of a grabbed unit. Gain a [Vampire Blood] token and target gains a [Damage] and a [Spirit Damage]. * You may not gain more [Vampire Blood] than target has [Spirit], though you gain one more [Vampire Blood] if the target is slain by drinking its blood. * You may not have more [Vampire Blood] than [Vampirism]. * You may not drink from the dead.") "Drink Blood" (ability :name "Drink Blood" :summary "* Drink blood from a grabbed unit. Gain a [Vampire Blood] token and target gains a [Damage] and a [Spirit Damage]. * You may not gain more [Vampire Blood] than target has [Spirit], though you gain one more [Vampire Blood] if the target is slain by drinking its blood. * You may not have more [Vampire Blood] than [Vampirism]. * You may not drink from the dead." :titles "The Kiss") :Embrace (ability :name "Embrace" :reference "* It was magical. The surrender. The exquisite suicide of giving in ... words cannot encompass that experience ... I asked him ... 'What gives you the right?' ... My question had struck no chord of mercy ... Rather, I believe he wanted me to become as he was and see for myself what gave him the right - what gives all of our kind the right." :summary "* Sire - When a Vampire creates a another the creator is called its Sire.") :Torpor (ability :name "Torpor" :summary "* If slain, but the body is not burned or the head severed, the vampire will not die but instead enter a deep sleep while his body slowly recovers. * It is said that very old Vampires may be sleeping for centuries in Torpor.")) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/power :tag "weakness") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/power :tag "weakness") :severity 2)))))))) :Cybernetics (section :name "Cybernetics" :reference "* Metal is perfection. - Viktor, Runeterra" :summary "* Faux Flesh (Faux Skin) - The great breakthrough in cybernetics was not in machinery but in synthetic flesh. Faux Flesh is a foam that hardens into soft, realistic flesh that will not be rejected by user's immune system. Faux Flesh can be injected between machine parts and is used at all interface points between living tissue and cyberware. It seals wounds like chalking and is a staple of medical kits." :powermap (powermap "Cybernetic Arm" (power :name "Cybernetic Arm" :summary "* All abilities assume both arms are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap "Cybernetic Blade" (ability :name "Cybernetic Blade") "Cybernetic Claws" (ability :name "Cybernetic Claws" :reference "* I'm the best at what I do - Wolverine") "Cybernetic Electrifier" (ability :name "Cybernetic Electrifier" :summary "* Discharge a massive electric charge through the palms of the hands.") "Cybernetic Fingernails" (ability :name "Cybernetic Fingernails") "Cybernetic Hammer" (ability :name "Cybernetic Hammer") "Cybernetic Knife" (ability :name "Cybernetic Knife" :titles "Punch Blade") "Cybernetic Knuckles" (ability :name "Cybernetic Knuckles") "Cybernetic Saw" (ability :name "Cybernetic Saw") "Cybernetic Shredder" (ability :name "Cybernetic Shredder") "Cybernetic Spike" (ability :name "Cybernetic Spike") "Cybernetic Strength" (ability :name "Cybernetic Strength") "Cybernetic Weapon Arm" (ability :name "Cybernetic Weapon Arm" :summary "* Nonconsealable. * One or both arms may be replaced with heavy weapons from rifles, grenade launchers, micromissile launchers, up to miniguns.") "Cybernetic Weapon Hand" (ability :name "Cybernetic Weapon Hand" :summary "* A regular pistol or SMG of any sort may be modified to fit into a cybernetic arm. This ability may be purchased for each arm.") "Cybernetic Whip" (ability :name "Cybernetic Whip") "Extension Hand" (ability :name "Extension Hand") "Extra Cybernetic Arm" (ability :name "Extra Cybernetic Arm") "False Fingerprints" (ability :name "False Fingerprints") "False Palmprint" (ability :name "False Palmprint") "Grapple Hand" (ability :name "Grapple Hand") "Monofilament Whip" (ability :name "Monofilament Whip") "Smartgun Link" (ability :name "Smartgun Link") "Sonic Filter" (ability :name "Sonic Filter" :summary "* Reduces sonic damage") "Tactile Enhancer" (ability :name "Tactile Enhancer") "Tool Hand" (ability :name "Tool Hand"))) "Cybernetic Hearing" (power :name "Cybernetic Hearing" :summary "* All abilities assume both ears are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap :Antideafening (ability :name "Antideafening") "Bug Detector" (ability :name "Bug Detector") "Enhanced Hearing Range" (ability :name "Enhanced Hearing Range" :summary "* Can hear supersonic and subsonic sounds.") "Noise Filter" (ability :name "Noise Filter") "Parabolic Hearing" (ability :name "Parabolic Hearing") "Radar Sensor" (ability :name "Radar Sensor") "Sonar Sensor" (ability :name "Sonar Sensor") "Stethoscope Hearing" (ability :name "Stethoscope Hearing") "Voice Stress Analyzer" (ability :name "Voice Stress Analyzer" :summary "* Detects stress in the target's voice. Often this means lying."))) "Cybernetic Implants" (power :name "Cybernetic Implants" :stat "Shadow" :abilitymap (abilitymap "Animated Tatoo" (ability :name "Animated Tatoo") "Artificial Gills" (ability :name "Artificial Gills") "Biomesh Skin" (ability :name "Biomesh Skin") "Breast Enhancement" (ability :name "Breast Enhancement" :summary "* Size and shape may be changed at will") "Body Plating" (ability :name "Body Plating") "Contraceptive Implant" (ability :name "Contraceptive Implant") :Cybersnake (ability :name "Cybersnake" :summary "* A visious close combat weapon that is implanted in mouth, stomach, or genitals! When in Close Combat range, the Cybersnake may lash out with surprise and land a potentially fatal blow.") :Cyberteeth (ability :name "Cyberteeth" :reference "* Jaws - Moonraker" :titles "Cyberfangs") "Cybernetic Rebreather" (ability :name "Cybernetic Rebreather" :summary "* May survive without fresh air for 10 minutes per level.") "Cybernetic Tail" (ability :name "Cybernetic Tail" :summary "* Adds a tail") "Disease Filter" (ability :name "Disease Filter") "Drug Filter" (ability :name "Drug Filter") "False DNA" (ability :name "False DNA") "Gas Filter" (ability :name "Gas Filter" :summary "* Filters harmful gases from the particles from the air, so they never reach the lungs.") "Hair Colorizing" (ability :name "Hair Colorizing") "Hair Styleshifting" (ability :name "Hair Styleshifting") "Jamming Transmitter" (ability :name "Jamming Transmitter") "Medical Injection System" (ability :name "Medical Injection System") "Motion Sensor" (ability :name "Motion Sensor") "Nasal Filter" (ability :name "Nasal Filter" :summary "* Removes particles from the air including sand, dust, pollen, and other large particles.") "Olfactory Enhancer" (ability :name "Olfactory Enhancer") "Poison Sniffer" (ability :name "Poison Sniffer") "Poisonous Cyberteeth" (ability :name "Poisonous Cyberteeth") "Reflex Enhancer" (ability :name "Reflex Enhancer") "Reinforced Bones" (ability :name "Reinforced Bones") "Sexual Implant" (ability :name "Sexual Implant") "Skin Colorizing" (ability :name "Skin Colorizing") "Stimulant Injectors" (ability :name "Stimulant Injectors") "Subdermal Holster" (ability :name "Subdermal Holster") "Subdermal Pouch" (ability :name "Subdermal Pouch") "Subdermal Transponder" (ability :name "Subdermal Transponder") "Toxin Filter" (ability :name "Toxin Filter") "Voice Amplifier" (ability :name "Voice Amplifier") "Voice Descrambler" (ability :name "Voice Descrambler" :summary "* May understand encrypted audio information if you know the key.") "Voice Scrambler" (ability :name "Voice Scrambler" :summary "* May speak in encrypted phrases that only a descrambler with the key can understand.") "Voice Synthesizer" (ability :name "Voice Synthesizer"))) "Cybernetic Interface" (power :name "Cybernetic Interface" :summary "* Cybernetic Interface include mostly software-based sensors and systems." :titles "Neuralware" :stat "Shadow" :abilitymap (abilitymap :Co-processor (ability :name "Co-processor") "Cybernetic Countermeasures" (ability :name "Cybernetic Countermeasures" :summary "* Hardens cybernetic computer components against attempts to hack or scramble it systems.") "Cybernetic Datapad" (ability :name "Cybernetic Datapad") "Cybernetic Recorders" (ability :name "Cybernetic Recorders" :summary "* Can record or playback audio and video") "Direct Comm Link" (ability :name "Direct Comm Link" :summary "* Listen to your music collection or radio stations, watch television, surf the web, or make phone calls. * Because these are neural links, they do not actually require cybernetic eyes or ears.") "Direct Neural Link" (ability :name "Direct Neural Link" :reference "* Do you think that's air your breathing?") "Medical Scanner" (ability :name "Medical Scanner") "Memory Chip Interface" (ability :name "Memory Chip Interface") "Pain Suppressor" (ability :name "Pain Suppressor") "Security Scanner" (ability :name "Security Scanner") "Skill Chip Interface" (ability :name "Skill Chip Interface" :reference "* I know Kung Fu * Do you know how to fly that thing? Not yet. - The Matrix") "Translation Software" (ability :name "Translation Software") "Vehicle Link" (ability :name "Vehicle Link"))) "Cybernetic Legs" (power :name "Cybernetic Legs" :summary "* All abilities assume both legs are cybernetic. If only one is used all abilities are at -1." :stat "Shadow" :abilitymap (abilitymap "Cybernetic Kick" (ability :name "Cybernetic Kick") "Cybernetic Leap" (ability :name "Cybernetic Leap") "Cybernetic Rocket Launcher" (ability :name "Cybernetic Rocket Launcher") "Cybernetic Running" (ability :name "Cybernetic Running") "Cybernetic Tractor" (ability :name "Cybernetic Tractor" :summary "* Nonconsealable. * Replace both legs with wheels or treads.") "Extra Cybernetic Leg" (ability :name "Extra Cybernetic Leg") "Prehensile Foot" (ability :name "Prehensile Foot") "Spike Foot" (ability :name "Spike Foot") "Talon Foot" (ability :name "Talon Foot") "Webbed Foot" (ability :name "Webbed Foot" :summary "* Enhanced swimming"))) "Cybernetic Vision" (power :name "Cybernetic Vision" :stat "Shadow" :abilitymap (abilitymap "Colorizing Eyes" (ability :name "Colorizing Eyes") "Cybernetic Antidazzle" (ability :name "Cybernetic Antidazzle") "Cybernetic Camera" (ability :name "Cybernetic Camera") "Cybernetic Eye Laser" (ability :name "Cybernetic Eye Laser") "Cybernetic Heat Vision" (ability :name "Cybernetic Heat Vision") "Cybernetic Image Enhancement" (ability :name "Cybernetic Image Enhancement") "Cybernetic Laser Pointer" (ability :name "Cybernetic Laser Pointer") "Cybernetic Microscopic Vision" (ability :name "Cybernetic Microscopic Vision") "Cybernetic Night Vision" (ability :name "Cybernetic Night Vision") "Cybernetic Rangefinder" (ability :name "Cybernetic Rangefinder") "Cybernetic Targeting System" (ability :name "Cybernetic Targeting System") "Cybernetic Telescopic Vision" (ability :name "Cybernetic Telescopic Vision") "False Retina" (ability :name "False Retina"))) :Netrunning (power :name "Netrunning" :reference "* Do not try and bend the spoon. That's impossible. Instead, only try to realize the truth. What truth? There is no spoon. There is no spoon? Then you will see that it is not the spoon that bends. It is only yourself. - The Matrix * You must let it all go... Fear... Doubt... Disbelief. Free Your Mind. - Morpheus, The Matrix" :summary "* By directly connecting the brain to a computer program, the user can greatly increase his reaction time and resourcefulness while travelling in cyberspace. * Netrunners - Outlaw computer jocks or hackers. * SysOps - Corporate or government computer system defenders. * ICE - Intrusion Countermeasures Electronics. Guardian software designed to thwart hackers and intrusion programs. * Black ICE - ICE programs designed to trap and harm the hackers or software it is defending against. This can range from induced system failures, data loss, or dangerous electric feedback. Numerous safeguards exist against such dangerous software, but Black ICE attempts to lure the user into believing that by lowering these safeguards that he will have the opportunity to steal information. Often to make this lure credible, actual information must be put at risk. * ICE Breker - Software designed to counter ICE. * Avatar - The digital representation of those in the NET." :abilitymap (abilitymap "Code Breaker Program" (ability :name "Code Breaker Program" :summary "* Attempts to fool a [Gateway Program] that you are a legitimate user.") "Crash Program" (ability :name "Crash Program") "Denial Of Service Program" (ability :name "Denial Of Service Program" :summary "* Attempts to overwhelm the target program with millions of requests, thereby preventing legitimate users from accessing it until it can catch up with all of the requests." :titles "DOS") "Feedback Program" (ability :name "Feedback Program") "Flatline Program" (ability :name "Flatline Program") "Freeze Program" (ability :name "Freeze Program" :summary "* Attempts to alter the target program's internal clock, thereby slowing it or causing it to become non-responsive for a short about of time.") "Jackhammer Program" (ability :name "Jackhammer Program" :summary "* Attempts to damage a [Firewall Program]. Such blatant attempts immediately raise alarms and are often a tool of last resort.") "Phishing Program" (ability :name "Phishing Program" :titles "Password Research Program") "Speedtrap Program" (ability :name "Speedtrap Program") "Stealth Program" (ability :name "Stealth Program") "Succubus Program" (ability :name "Succubus Program") "Task Killer Program" (ability :name "Task Killer Program") "Tracer Program" (ability :name "Tracer Program" :titles "Bloodhound") "Trojan Horse Program" (ability :name "Trojan Horse Program") "Worm Program" (ability :name "Worm Program") "Camera Control Program" (ability :name "Camera Control Program") "Communications Uplink Program" (ability :name "Communications Uplink Program") "Elevator Control Program" (ability :name "Elevator Control Program") "Engine Control Program" (ability :name "Engine Control Program") "Factory Control Program" (ability :name "Factory Control Program") "Lock Control Program" (ability :name "Lock Control Program") "Navigation Control Program" (ability :name "Navigation Control Program") "Printer Control Program" (ability :name "Printer Control Program") "Telecom Control Program" (ability :name "Telecom Control Program") "Vehicle Control Program" (ability :name "Vehicle Control Program") :Firewall (ability :name "Firewall") "Gateway Program" (ability :name "Gateway Program" :titles "Login Screen, Padlock") "Guardian Program" (ability :name "Guardian Program" :titles "Doberman") "Intrusion Detection System" (ability :name "Intrusion Detection System" :titles "Alarm, Watchdog") "Worm Consumer Program" (ability :name "Worm Consumer Program" :titles "Aardvark, Robin") "Daemon Program" (ability :name "Daemon Program") "Database Search Program" (ability :name "Database Search Program") "Decryption Program" (ability :name "Decryption Program") "Encryption Program" (ability :name "Encryption Program") "Filelocker Program" (ability :name "Filelocker Program") "Unerase Program" (ability :name "Unerase Program") "Adware Program" (ability :name "Adware Program") "Eraser Program" (ability :name "Eraser Program") "Malware Program" (ability :name "Malware Program") "Memory Cosumer Program" (ability :name "Memory Cosumer Program") "Metamorphic Virus" (ability :name "Metamorphic Virus") "Polymorphic Virus" (ability :name "Polymorphic Virus") "Spyware Program" (ability :name "Spyware Program") "Zombie Program" (ability :name "Zombie Program")) :specialtymap (specialtymap "Attack Programs" (specialty :name "Attack Programs") "Control Programs" (specialty :name "Control Programs") "Protection Programs" (specialty :name "Protection Programs" :titles "ICE") :Utilities (specialty :name "Utilities") :Viruses (specialty :name "Viruses"))))))))
nx/tactics/books/powers / chapter_energy_and_forces
Description:
Function Name:
  • chapter_energy_and_forces
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_energy_and_forces : base/chapter (chapter :name "Energy and Forces" :sectionmap (sectionmap :Elements (section :name "Elements" :powermap (powermap :Air (power :name "Air" :reference "* But still the clever north wind was not satisfied. It spoke to Vianne of towns yet to be visited, friends in need yet to be discovered, battles yet to be fought... - Chocolat * You're really going to trust me ... My mind is like the wind on the waves. It could change in an instant. - Kazuha, Genshin Impact" :summary "* Air is the element of freedom. Air elementalists remain distant from worldly concerns. They are always in continous motion, moving from place to place and never putting down roots. * Symbol - White Swirling Wind * Personality - Airy, Flighty, Emphemeral, Ethereal, Gossamer" :titles "Aeromancer. Storm Lord, Storm Shaman, Weather Witch, Wind Rider, Wind Walker" :abilitymap (abilitymap "Acid Cloud" (ability :name "Acid Cloud") "Acid Rain" (ability :name "Acid Rain" :summary "* Calls acid rain from an existing cloud.") "Air Breathing" (ability :name "Air Breathing" :summary "* Can breath in any kind of air without ill effect including poison gases.") "Alter Temperature" (ability :name "Alter Temperature") "Alter Weather" (ability :name "Alter Weather") "Call Storm" (ability :name "Call Storm" :summary "* Calls a storm cloud.") "Carried on the Wind" (ability :name "Carried on the Wind" :summary "* By focusing, the user can detect small things carried on the wind. Smoke, pollen, poison, unusual smells, ash, dust, faint sounds, etc. may be detected with uncanny ability. Higher levels detect more distanct and faint things.") "Control Storm" (ability :name "Control Storm") "Clean Air" (ability :name "Clean Air") "Choking Cloud" (ability :name "Choking Cloud") "Control Winds" (ability :name "Control Winds" :summary "* Effect: Raise or lower Wind strength.") :Downdraft (ability :name "Downdraft") "Eye of the Storm" (ability :name "Eye of the Storm" :summary "* [Action]: Create an eye in the storm that reduces [Wind Intensity] in 1 space radius for each Hit. * [Continue]: Reroll wind reduction and radius increases by 2 up to Level radius. * [Discontinue]: Wind returns to normal at same rate it was reduced.") "Fan the Flames" (ability :name "Fan the Flames") "Fog Bank" (ability :name "Fog Bank") :Hailstorm (ability :name "Hailstorm") :Hurricane (ability :name "Hurricane" :summary "* Buildup" :titles "Divine Wind") "Lightning Charge" (ability :name "Lightning Charge" :summary "* Imbue an item with electric charge that is discharged on contact.") :Smother (ability :name "Smother") :Spindrift (ability :name "Spindrift" :summary "* Wind generates a thick mist above any body of water.") :Suffocate (ability :name "Suffocate") "Summon Cloud" (ability :name "Summon Cloud" :summary "* Summons a large living cloud in moisture rich air. This can obscure vision.") "Summon Djinn" (ability :name "Summon Djinn") "Summon Gust" (ability :name "Summon Gust" :summary "* Summons a small living wind on items that may be blown in the breeze. Air elementals love nothing more than pushing things around.") "Summon Slyph" (ability :name "Summon Slyph") :Swirl (ability :name "Swirl") "Temperature Control" (ability :name "Temperature Control" :summary "* Effect: Raise or lower Temperature, Humidity.") :Tempest (ability :name "Tempest") "Tempest in a Teapot" (ability :name "Tempest in a Teapot" :summary "* Hits have no effect. Criticals change Weather Intensity.") :Thunderstorm (ability :name "Thunderstorm") "Voices Carry" (ability :name "Voices Carry" :summary "Listen to conversation within line of sight.") "Weather Sight" (ability :name "Weather Sight" :summary "* Analyze and predict weather") "Wind Lash" (ability :name "Wind Lash" :titles "Wind Whip") :Whirlwind (ability :name "Whirlwind" :titles "Cyclone, Tornado") "Whispering Winds" (ability :name "Whispering Winds" :summary "Speak to others (one way) over long distances.") "Wind Blade" (ability :name "Wind Blade" :summary "* Create an ephemeral Sword created from thin air. It acts as a normal sword except that it does [Knockback] instead of [Bleeding].") "Wind Blast" (ability :name "Wind Blast" :reference "* Where the two winds meet, there I will see the Wind Scar - Inuyasha") "Wind Form" (ability :name "Wind Form" :summary "* [Requires]: Stand in a breeze. * [Action]: Gain attributes of Wind as well as [Wind Walk] for the turn. * [Continue]: May make [Strike] and [Grab] Wind Close Combat attacks at Level.") "Wind Slash" (ability :name "Wind Slash") "Wind Walk" (ability :name "Wind Walk") "Wind Wall" (ability :name "Wind Wall" :summary "* Wall that deflects missles and strikes aerial units.") :Updraft (ability :name "Updraft" :summary "* [Action]: Apply [Wind] in a radius around user, lift enemies off the ground with Level weight, and hurl them down, if they strike a surface they take Level damage .")) :specialtymap (specialtymap :Aeromancy (specialty :name "Aeromancy" :summary "* Aero is the magical version of Air. * Aero effects can be sustained without a source, but they can also be canceled by counter-magic. * Aero reacts with Pyro to produce the [Wildfire] effect. * Aero reacts with Cryo to produce the [Chill] effect. * Aero reacts with Hydro to produce the [Fog] effect. * Aero reacts with Electro to produce the [Ionized] effect. * Aero reacts with Geo to produce the [Weightess] effect."))) :Cold (power :name "Cold" :reference "Cold Miser, Frozen" :summary "* Cold abilities slow the movement of particles in the target. This slowing causes heat to leave the target. Therefore, cold powers also trigger a rush of hot air to rise from the target swirling wind all around. * Symbol - Bluish White Snowflake * Personality: Cold Elementalist personalities are influenced by their link to Cold. ** Examples: Cold, Icy, Chilly, Severe, Harsh, Brutal, Reserved" :titles "Frost Lord, Ice Breaker, Ice Queen, Snow Queen, Ice Princess" :abilitymap (abilitymap :Avalanche (ability :name "Avalanche") :Blizzard (ability :name "Blizzard") "Call Cold" (ability :name "Call Cold" :titles "Coldsnap") :Chill (ability :name "Chill" :summary "* Damage are Slow") :Comet (ability :name "Comet" :summary "* A massive ball of cold falls from the sky.") "Control Cold" (ability :name "Control Cold" :summary "* [Reaction]: Redirect a cold effect to another target.") "Frost Whip" (ability :name "Frost Whip" :titles "Frost Lash") "Frost Weapon" (ability :name "Frost Weapon" :summary "* Add cold damage to normal attack." :titles "Freezing Strike") "Glacial Wall" (ability :name "Glacial Wall") "Ice Armor" (ability :name "Ice Armor" :titles "Frozen Man, Ice Form, Ice Man Cometh") "Ice Blast" (ability :name "Ice Blast" :titles "Frost Bite") "Ice Bridge" (ability :name "Ice Bridge") "Ice Castle" (ability :name "Ice Castle" :reference "* The cold never bothered me anyway. - Elsa, Frozen" :titles "Snow Fort") "Ice Flow" (ability :name "Ice Flow" :summary "* A floating block of ice suitable for a raft rises to the water's surface. * [Requires]: May only be cast near water.") "Ice Riding" (ability :name "Ice Riding" :summary "* Provides [Skating] ability without the requirement of Skates." :titles "Ice Walk") "Ice Sculpture" (ability :name "Ice Sculpture") "Ice Slide" (ability :name "Ice Slide") "Ice Storm" (ability :name "Ice Storm" :titles "Hail Storm") "Icy Prison" (ability :name "Icy Prison") :Snowblind (ability :name "Snowblind")) :specialtymap (specialtymap :Cryomancy (specialty :name "Cryomancy" :summary "* Cryo is the magical version of Cold. * Cryo effects can be sustained without a source, but they can also be canceled by counter-magic. * Cryo reacts with Pyro to produce the [Melt] effect. * Cryo reacts with Geo to produce the [Brittle] effect. * Cryo reacts with Hydro to produce the [Freeze] effect. * Cryo reacts with Electro to produce the [Superconduct] effect. * Cryo reacts with Aero to produce the [Chill] effect."))))) :Forces (section :name "Forces" :powermap (powermap :Earth (power :name "Earth" :summary "* Earth is the element of substance. Earth Elementalists must be persistent, stoic, strong and enduring. They must be subbornly immobile in mind and spirit. * Symbol - Brown Mountain" :titles "Earth Lord, Earth Master, Geomancer" :abilitymap (abilitymap "Buried Alive" (ability :name "Buried Alive" :reference "* I've done far worse than kill you. I've hurt you. And I wish to go on hurting you. I shall leave you as you left me, as you left her; marooned for all eternity in the center of a dead planet... buried alive! Buried alive...! - Khan, Star Trek II: The Wrath of Khan" :summary "* Collapse earth to close an opening.") "Call Rockslide" (ability :name "Call Rockslide") "Control Earth" (ability :name "Control Earth" :summary "* [Reaction]: Redirect an earth effect to another target.") :Earthbind (ability :name "Earthbind" :summary "* Gravity increases for target flying unit. [-1 Altitude] for each success. No effect on units that are not flying." :titles "Grip of Earth") "Earth Move" (ability :name "Earth Move" :summary "* Pushes a mound of earth like a bulldozer.") "Earth Sight" (ability :name "Earth Sight" :summary "* By touching the ground with bare skin, detect any object directly touching the ground in sight range regardless of intervening obstacle. This ability is particularly useful underground, for seeing through walls, and for indirect fire." :titles "Earthsense") "Earth Till" (ability :name "Earth Till" :summary "* Softens earth. Also can prepare earth for planting crops in a large area.") "Earth Walk" (ability :name "Earth Walk" :summary "* Ignore movement penalties while travelling over natural earth or stone.") "Earth Wall" (ability :name "Earth Wall") :Earthquake (ability :name "Earthquake") :Landslide (ability :name "Landslide" :summary "* Causes a weak section of earth or rock to collapse.") "Mountain out of a Molehill" (ability :name "Mountain out of a Molehill" :summary "* Grow a small pile of earth bigger and bigger.") "Pass Through Earth" (ability :name "Pass Through Earth" :summary "* Allows the user to move through earth as if it were water.") :Quagmire (ability :name "Quagmire" :summary "* Any unit in the area is must spend double movement when moving." :titles "Mudslide, Quicksand") :Sandstorm (ability :name "Sandstorm") :Shatter (ability :name "Shatter" :summary "* [Attack] - Does no damage to the target, but instead damages its [Armor]." :titles "Armor Break") :Sinkhole (ability :name "Sinkhole" :summary "* A prone character on bare earth begins to sink." :titles "Dirt Nap") :Solidify (ability :name "Solidify" :summary "* Any liquified solid become solid again.") "Stone Form" (ability :name "Stone Form" :summary "* [Requires]: Cover body in dust, dirt, or mud. * [Action]: Gain attributes of [Earth] as well as [Earth Walk] for the turn. * [Continue]: May make [Strike] and [Grab] [Earth] [Close Combat] attacks at Level.") "Treacherous Ground" (ability :name "Treacherous Ground" :summary "* Creates a patch of broken earth or rock that will trip anything moving across it at more than a slow walk.") :Tremor (ability :name "Tremor" :summary "* Summons a small living earthquake in broken earth or rock. Earth elementals love nothing more than knocking things over.") "Volcanic Eruption" (ability :name "Volcanic Eruption")) :specialtymap (specialtymap :Geomancy (specialty :name "Geomancy" :summary "* Geo is the magical version of Earth. * Geo effects can be sustained without a source, but they can also be canceled by counter-magic. * Geo reacts with Pyro to produce the [Overheat] effect. * Geo reacts with Cryo to produce the [Brittle] effect. * Geo reacts with Hydro to produce the [Quagmire] effect. * Geo reacts with Electro to produce the [Grounded] effect. * Geo reacts with Aero to produce the [Weightess] effect."))) :Electricity (power :name "Electricity" :reference "* Lightning is eternal, the world is but shadow. - Raiden Shogun, the Electro Archon, Genshin Impact" :summary "* Electric Elementalist personalities are influenced by their link to Electricity. * Energetic, Explosive, Dynamic, Animated, Spark of Life, High Strung * Symbol - Yellow Lightning" :titles "Electro, Lightning" :abilitymap (abilitymap "Arc Lightning" (ability :name "Arc Lightning" :summary "* Lightning leaps from the target to others in range.") "Body Electric" (ability :name "Body Electric" :titles "Electricity Form") "Absorb Electricity" (ability :name "Absorb Electricity") "Ball Lightning" (ability :name "Ball Lightning") "Call Lightning" (ability :name "Call Lightning" :summary "* Calls a lightning strike from an existing storm cloud.") "Control Lightning" (ability :name "Control Lightning" :summary "* [Reaction]: Redirect a lightning effect to another target.") "Electromagnetic Pulse" (ability :name "Electromagnetic Pulse") "Lightning Lash" (ability :name "Lightning Lash" :titles "Arc Lash, Lightning Whip") "Lightning Warp" (ability :name "Lightning Warp" :summary "* Near instantaneous travel in a flash of lightning. * Level determines distance travelled.") "Resist Electricity" (ability :name "Resist Electricity")) :specialtymap (specialtymap :Electromancy (specialty :name "Electromancy" :summary "* Electro is the magical version of Electricity. * Electro effects can be sustained without a source, but they can also be canceled by counter-magic. * Electro reacts with Pyro to produce the [Overload] effect. * Electro reacts with Cryo to produce the [Superconduct] effect. * Electro reacts with Hydro to produce the [Electrocharged] effect. * Electro reacts with Geo to produce the [Grounded] effect. * Electro reacts with Aero to produce the [Ionized] effect."))) :Fire (power :name "Fire" :reference "* Fire. It's a living thing, Brian. It breathes, it eats, and it hates. The only way to beat it is to think like it. To know that this flame will spread this way across the door and up across the ceiling, not because of the physics of flammable liquids, but because it wants to. Some guys on this job, the fire owns them, makes 'em fight it on it's level, but the only way to truly kill it is to love it a little. - Donald Rimgate, Backdraft * Dry is good and wind is better. Count the years you always knew it. Strike a match go on and do it...Oh light the sky and hold on tight, the world is burning down. - Shawn Colvin, Sunny Came Home" :summary "* Fire is the element of power. Fire Elementalists must have desire, passion, and the energy and drive to achieve it. * Symbol - Red Flame * Passionate, Fiery, Explosive, Incendiary, Violent" :titles "Arsonist, Fire Lord, Firebomber, Firestarter, Firewalker, Pyrokinetic, Pyromancer, Pyromaniac, Volcanist" :abilitymap (abilitymap "Burning Eyes" (ability :name "Burning Eyes" :summary "* Flaming eyes may see heat." :titles "Fire Eyes") "Control Fire" (ability :name "Control Fire" :reference "* Pyro - X-Force" :summary "* [Action]: Change the shape of fire. * [Reaction]: Redirect a fire effect to another target.") "Cinder Cloud" (ability :name "Cinder Cloud") "Cleansing Fire" (ability :name "Cleansing Fire") :Combustion (ability :name "Combustion" :summary "* Summons a small living flame on combustible material. Fire elementals love nothing more than creating fires.") "Eternal Flame" (ability :name "Eternal Flame" :summary "* Creates a flame that burns without fuel for as long as desired (only one at a time).") "Fan the Flames" (ability :name "Fan the Flames") "Fire Break" (ability :name "Fire Break" :summary "* Create an area where fire is smothered (does not effect existing heat).") "Fire Breathing" (ability :name "Fire Breathing") "Fire Form" (ability :name "Fire Form" :summary "* Body becomes living flame. * [Action]: Gain attributes of [Fire] as well as [Fire Breathing] and [Fire Walk] for the turn. * [Continue]: May make [Strike] and [Grab] [Fire] [Close Combat] attacks at Level.") "Fire Lore" (ability :name "Fire Lore") "Fire Storm" (ability :name "Fire Storm" :titles "Rain of Fire") "Fire Walk" (ability :name "Fire Walk" :reference "* I touch the fire and freezes me. I look into it and its black. Why can't I feel? My skin should crack and peel. I want the fire back. Now through the smoke, she calls to me, to make my way across the flame. To save the day or maybe melt away. I guess it's all the same. So I will walk through the fire, cause whereelse can I turn. I will walk through the fire and let it... The torch I bear is scorthing me, and Buffy's laughing I've no doubt. I hope she fries. I'm free if that bitch dies. I'd better help her out. Cause she is drawn to the fire. Some people never learn, and she will walk through the fire and let it... These endless days are finally ending in a blaze. And we are caught in the fire. The point of no return. So we will walk through the fire and let it burn. - Buffy the Vampire Slayer, Once More with Feeling" :summary "* Walk through flames. Gain [Armor] vs. Fire and ignore [Burning] effects.") "Fire Ward" (ability :name "Fire Ward") :Fireworks (ability :name "Fireworks") "Flame Cage" (ability :name "Flame Cage") "Flame Whip" (ability :name "Flame Whip" :titles "Fire Lash") "Flame Skin" (ability :name "Flame Skin" :summary "* Immolate body in Fire * [Action]: Gain attributes of [Fire]. * [Continue]: May make [Strike] and [Grab] [Fire] [Close Combat] attacks at Level." :titles "Burning Man, Fire Armor, Immolate") "Flaming Weapon" (ability :name "Flaming Weapon" :summary "* Add the [Fire] trait to a weapon or to unarmed attacks." :titles "Fire Fist, Flame Tongue, Flamebrand, Flaming Arrow, Flaming Sword") :Inferno (ability :name "Inferno" :titles "Pyroclasm") "Living Flame" (ability :name "Living Flame") "Pyroclastic Flow" (ability :name "Pyroclastic Flow" :reference "* A fast-moving current of volcanic hot gas and rock, which reaches speeds up to 700 km/h (450 mph). The gas can reach temperatures of about 1,000 °C (1,830 °F). Pyroclastic flows normally hug the ground and travel downhill, or spread laterally under gravity." :titles "Pyrolclastic Cloud, Pyronado") "Ring of Fire" (ability :name "Ring of Fire") :Smother (ability :name "Smother") "Summon Efreet" (ability :name "Summon Efreet") "Summon Salamander" (ability :name "Summon Salamander") "Wall of Fire" (ability :name "Wall of Fire" :summary "* Forms a continuous [Wall] of [Fire]. * [Requires]: A flammable fuel must exist for the whole length of the wall.") :Wildfire (ability :name "Wildfire" :summary "* Air in the area becomes bone dry and overheated. +1 [Fire] or [Air] abilities.")) :specialtymap (specialtymap :Pyromancy (specialty :name "Pyromancy" :summary "* Pyro is the magical version of Earth. * Pyro effects can be sustained without a source, but they can also be canceled by counter-magic. * Pyro reacts with Geo to produce the [Overheat] effect. * Pyro reacts with Cryo to produce the [Melt] effect. * Pyro reacts with Hydro to produce the [Vaporize] effect. * Pyro reacts with Electro to produce the [Overload] effect. * Pyro reacts with Aero to produce the [Wildfire] ability."))) :Water (power :name "Water" :reference "* Davy Jones Locker * The power of water is its ability to change shape. - Genshin Impact" :summary "* Adaptable, Adjustable, Easy-going, Empathic, Flexible, Fluid, Patient, Serene, Versatile, Wrathful * Water is the element of change. Water elementalists must be adaptable, fluid, and flexible in their attitude (though not arbitrary). They are generally patient and empathetic, but they are also known for the intensity of their wrath. Their flexiblitity is often reflected in their sexuality. * Symbol - Blue Teardop * Water is the source of life and after Air it is the thing that we need most urgently to survive. Pure, unspoiled water can bestow many amazing benefits and has been the rise and fall of many empires. Of course, water can also be the source of a quick death. * Though Water washes away impurities, it does so by taking them unto itself and Water always remembers." :titles "Aquamancer, Hydromancer, Wave Rider" :abilitymap (abilitymap "Air Bubble" (ability :name "Air Bubble") "Call Water" (ability :name "Call Water" :titles "Flashflood") "Control Water" (ability :name "Control Water" :summary "* [Reaction]: Redirect a water effect to another target.") :Extinguish (ability :name "Extinguish") "Fountain of Youth" (ability :name "Fountain of Youth") :Liquify (ability :name "Liquify" :summary "* Any solid becomes a liquid.") "Part Water" (ability :name "Part Water") "Purify Water" (ability :name "Purify Water") "Ride the Wave" (ability :name "Ride the Wave" :summary "* Slide on water") "Scrying Pool" (ability :name "Scrying Pool" :summary "* Look at your reflection in any pool of water, drop something in, and when the ripples recede you may see the current reflection from any other body of water that you have seen your reflection in.") "Summon Current" (ability :name "Summon Current" :summary "* Summons a small living water flow in moving water. Water elementals love nothing more than pushing things around.") "Summon Undine" (ability :name "Summon Undine") :Tides (ability :name "Tides" :summary "* Raise or lower water level.") :Tsunami (ability :name "Tsunami") :Undertow (ability :name "Undertow" :summary "* Creates a strong downward current that can suck things downward.") "Wall of Water" (ability :name "Wall of Water" :summary "* [Effect]: [Wall] of Water * [Requires]: May only be cast in water. * [Anytime]: Turbulence strikes any surface or underwater unit that crosses it.") "Water Breathing" (ability :name "Water Breathing") "Water Form" (ability :name "Water Form" :summary "* [Requires]: Douse body in at least a bucket of water. * [Continuous]: May make [Strike] and [Grab] Water Close Combat attacks at Level. Gain attributes of Water as well as [Water Breathing] and [Walk on Water]. [Pierce Resistance], [Slash Resisteance], [Fire Resistance], [Impact Vulnerable], [Heat Vulnerable], [Electric Vulnerable]." :titles "Liquifiy") "Water Spout" (ability :name "Water Spout") "Water Walk" (ability :name "Water Walk" :summary "* Move on or under water as if it were solid ground of any desired slope.") "Waters of Life" (ability :name "Waters of Life") "Watery Grave" (ability :name "Watery Grave") :Wave (ability :name "Wave" :summary "Intensifies existing waves or creates new waves.") "Wave Ride" (ability :name "Wave Ride") :Whirlpool (ability :name "Whirlpool") "Wishing Well" (ability :name "Wishing Well")) :specialtymap (specialtymap :Hydromancy (specialty :name "Hydromancy" :summary "* Hydro is the magical version of Water. * Hydro effects can be sustained without a source, but they can also be canceled by counter-magic. * Hydro reacts with Pyro to produce the [Vaporize] effect. * Hydro reacts with Cryo to produce the [Freeze] effect. * Hydro reacts with Geo to produce the [Quagmire] effect. * Hydro reacts with Electro to produce the [Electrocharged] effect. * Hydro reacts with Aero to produce the [Fog] effect."))))) "Energy and Forces" (section :name "Energy and Forces" :powermap (powermap "Energy Manipulation" (power :name "Energy Manipulation" :abilitymap (abilitymap "Control Energy" (ability :name "Control Energy" :summary "* [Reaction]: Redirect an energy effect to another target.") "Energy Absorption" (ability :name "Energy Absorption") "Energy Drain" (ability :name "Energy Drain") "Energy Vampire" (ability :name "Energy Vampire"))) :Dimensional (power :name "Dimensional" :abilitymap (abilitymap "Faster than Light" (ability :name "Faster than Light") :Gate (ability :name "Gate") "Identify Dimension" (ability :name "Identify Dimension" :summary "* Ability to gain knowledge of the current dimension or the home dimension of an object or being from another dimension.") :Teleport (ability :name "Teleport" :titles "Teleportation, Translocation") :Warp (ability :name "Warp") :Waypoint (ability :name "Waypoint"))) :Explosive (power :name "Explosive") :Forces (power :name "Forces" :abilitymap (abilitymap "Control Force" (ability :name "Control Force" :summary "* [Reaction]: Redirect a force effect to another target.") "Bands of Force" (ability :name "Bands of Force" :titles "Crimson Bands of Cyttorak") "Force Blast" (ability :name "Force Blast") "Force Break" (ability :name "Force Break") "Force Wall" (ability :name "Force Wall"))) :Gravity (power :name "Gravity" :abilitymap (abilitymap "Call Anti-Gravity" (ability :name "Call Anti-Gravity") "Call Gravity" (ability :name "Call Gravity") "Control Gravity" (ability :name "Control Gravity" :summary "* [Reaction]: Redirect a gravity effect to another target.") "Gravity Field" (ability :name "Gravity Field") "Gravity Well" (ability :name "Gravity Well"))) :Heat (power :name "Heat" :reference "Heat Miser" :abilitymap (abilitymap "Heat Mirage" (ability :name "Heat Mirage" :summary "* Create vague illusions in heated areas. The scale of the illusion is only limited by the size of the heated area.") "Heat Vision" (ability :name "Heat Vision" :summary "* May see heat." :titles "Thermal Vision") :Heatwave (ability :name "Heatwave"))) :Inertia (power :name "Inertia" :abilitymap (abilitymap "Impact Absorption" (ability :name "Impact Absorption") "Inertial Dampening" (ability :name "Inertial Dampening") :Unstoppable (ability :name "Unstoppable"))) :Light (power :name "Light" :abilitymap (abilitymap "Blinding Light" (ability :name "Blinding Light") "Call Light" (ability :name "Call Light") "Control Light" (ability :name "Control Light" :summary "* [Reaction]: Redirect a light effect to another target.") :Flash (ability :name "Flash") :Glow (ability :name "Glow") :Laser (ability :name "Laser") "Light Form" (ability :name "Light Form") "Project Image" (ability :name "Project Image") "Shine Down" (ability :name "Shine Down" :reference "* Raiden Shogun, Genshin Impact") "Solar Beam" (ability :name "Solar Beam"))) :Magnetism (power :name "Magnetism" :abilitymap (abilitymap "Control Magnetism" (ability :name "Control Magnetism" :summary "* [Reaction]: Redirect a magnetic effect to another target.") "Magnetic Field" (ability :name "Magnetic Field") "Magnetic Pull" (ability :name "Magnetic Pull") :Magnetize (ability :name "Magnetize") "Magnetic Storm" (ability :name "Magnetic Storm"))) :Radiation (power :name "Radiation" :abilitymap (abilitymap :Fallout (ability :name "Fallout") "Radiation Beam" (ability :name "Radiation Beam") "Radiation Blast" (ability :name "Radiation Blast"))) :Sound (power :name "Sound" :summary "* Sonic attacks are a form of vibration/explosive attack that generaly does [Concussive Damage]. They also can cause temporary or permanent deafness." :titles "Sonic" :abilitymap (abilitymap :Mimicry (ability :name "Mimicry" :summary "* Exactly duplicate sounds you have just heard or committed to memory. At high levels, even modem communication can be duplicated.") "Sonic Wave" (ability :name "Sonic Wave") "Sound Carries" (ability :name "Sound Carries"))) :Temporal (power :name "Temporal" :abilitymap (abilitymap "Age Alteration" (ability :name "Age Alteration") "Control Time" (ability :name "Control Time" :summary "* [Reaction]: Redirect a time effect to another target.") :Postcognition (ability :name "Postcognition") :Precognition (ability :name "Precognition") "Temporal Tracking" (ability :name "Temporal Tracking" :summary "* Ability to track a time traveler to his/her destination.") "Time Lapse" (ability :name "Time Lapse") "Time Loop" (ability :name "Time Loop") "Time Slow" (ability :name "Time Slow") "Time Stop" (ability :name "Time Stop" :summary "* Ability to briefly exit the normal timestream. This effectively freezes time for a few seconds. The user is can move freely, but nothing but air can be moved or harmed. Note that doors cannot be opened and air is thick to move through or breathe." :titles "Freeze Time, Time Slip"))) :Vibration (power :name "Vibration" :titles "Tremors"))))))
nx/tactics/books/powers / chapter_enhancement_powers
Description:
Function Name:
  • chapter_enhancement_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_enhancement_powers : base/chapter (chapter :name "Enhancement Powers" :sectionmap (sectionmap "Physical Enhancement" (section :name "Physical Enhancement") "Mental Enhancement" (section :name "Mental Enhancement" :powermap (powermap :Genius (power :name "Genius" :titles "Genius, Prodigy, Savant, Super Genius" :stat "Mind" :abilitymap (abilitymap "Analyze Weakness" (ability :name "Analyze Weakness") "Calculator Mind" (ability :name "Calculator Mind") "Engineering Genius" (ability :name "Engineering Genius") "Financial Genius" (ability :name "Financial Genius") "Investigative Genius" (ability :name "Investigative Genius") "Linguistic Genius" (ability :name "Linguistic Genius") "Mathematical Genius" (ability :name "Mathematical Genius") :Multitasking (ability :name "Multitasking") "Photographic Memory" (ability :name "Photographic Memory") "Scientific Genius" (ability :name "Scientific Genius") "Speed Reading" (ability :name "Speed Reading") "Tactical Genius" (ability :name "Tactical Genius"))))) "Psychic Enhancement" (section :name "Psychic Enhancement" :powermap (powermap :Charm (power :name "Charm" :abilitymap (abilitymap "Commanding Presense" (ability :name "Commanding Presense"))))))))
nx/tactics/books/powers / chapter_alteration_powers
Description:
Function Name:
  • chapter_alteration_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_alteration_powers : base/chapter (chapter :name "Alteration Powers" :sectionmap (sectionmap "Material Control" (section :name "Material Control" :powermap (powermap "Atomic Control" (power :name "Atomic Control" :abilitymap (abilitymap :Disintegrate (ability :name "Disintegrate" :summary "* Causes wounds that are difficult to heal * A victim that takes Disintegrate Tokens equal to Body are completely destroyed.") :Destruction (ability :name "Destruction" :summary "* Effects only unliving objects * A target that takes Destruction Tokens equal to Body are completely destroyed."))) "Density Control" (power :name "Density Control") :Transfiguration (power :name "Transfiguration" :summary "* The ability to transform others." :titles "Fleshcrafting, Vissisitude" :abilitymap (abilitymap :Blinding (ability :name "Blinding") "Body Morph" (ability :name "Body Morph") :Deafening (ability :name "Deafening") :Malleate (ability :name "Malleate" :summary "* Make target soft and malleable.") :Petrification (ability :name "Petrification" :summary "* [Focus]: vs. Spirit and place [Petrification] counters on the target body location. * Any body location with a [Petrification] is encased in stone. It requires an [Action] to remove a [Petrification]. Any area that suffers 3 [Petrification] turns completely to stone. If any other area is so petrified, then complete petrification immediately spreads across the entire body and then the body and all its gear immediately converts to a stone statue. * Additioan Effects: A petrified arm cannot move. A petrified leg reduces Move by half. A petrified head is unable to see or hear. Other petrifed areas have no additional effect. Petrified Arms or legs can break off like a clean amputation without blood loss. * This ability can also be used to restore a petrified target back to its original form if the skill is at least equal to the original. Lost limbs may also be restored by reattaching the limb before restoration. * This ability can also be used on any sort of earth to harden the earth to equivalent stone.") :Polymorph (ability :name "Polymorph" :summary "* [Action]: Roll vs. Spirit and place Black [Shapeshift] Tokens on target. * A unit with 0 Spirit due to polymorph changes into any creature desired of equal Body. When the last Shapeshift Token is removed, a polymorphed unit returns to normal.") "Sensory Deprivation" (ability :name "Sensory Deprivation") "Sensory Overload" (ability :name "Sensory Overload"))) :Transmutation (power :name "Transmutation" :summary "* The ability to transform non-living matter." :titles "Reality Warper, Shaper, Transmuter" :stat "Mind" :abilitymap (abilitymap "Molecular Alteration" (ability :name "Molecular Alteration"))))) "Power Manipulation" (section :name "Power Manipulation" :powermap (powermap "Power Copy" (power :name "Power Copy") "Power Disruption" (power :name "Power Disruption") "Power Drain" (power :name "Power Drain") "Power Feedback" (power :name "Power Feedback") "Power Fluctuation" (power :name "Power Fluctuation") "Power Reflection" (power :name "Power Reflection") "Power Theft" (power :name "Power Theft") "Power Vampire" (power :name "Power Vampire"))))))
nx/tactics/books/powers / chapter_godlike_powers
Description:
Function Name:
  • chapter_godlike_powers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_godlike_powers : base/chapter (chapter :name "Godlike Powers" :sectionmap (sectionmap "Primal Powers" (section :name "Primal Powers" :titles "Primal Order" :powermap (powermap "Primal Force" (power :name "Primal Force" :summary "* Primal energy is the most fundamental energy in existence. It is, at once, physical, mental, and spiritual. As the fundamental energy of the cosmos, those that wield it have a special connection to reality and can gain control over certain aspects of reality. * Though Primal is not innately more powerful than other forces, it makes other abilities a great deal more effective." :titles "Arch Demon, Arch Fiend, Celestials, Deity, Demigod, Divine Power, Galactus, Godling, Godly, Godlike, Greater Deity, Lesser Deity, Planeswalker, Power Cosmic, Supreme Deity" :abilitymap (abilitymap "Channel Worship" (ability :name "Channel Worship" :reference "A god cannot survive as a memory. - Apollo, Star Trek - Who Mourns for Adonais?" :summary "* With this ability, the user may use the worship directed toward him, to recover [Primal].") "Create Artifact" (ability :name "Create Artifact" :summary "* [Requires]: Spend a [Primal] * [Action]: Create [Skill] worth of artifacts of any sort desired. These are free to maintain on any Plane the user created. They require an additional [Primal] per day when up to [Skill] Artifacts are on any other Plane.") "Create Servitors" (ability :name "Create Servitors" :summary "* [Requires]: Spend a [Primal] * [Action]: Create [Skill] worth of creatures of any sort desired. These are free to maintain on any Plane the user created. They require an additional [Primal] per day when up to [Skill] Servitors are on any other Plane. Such Servitors are usually fanatically loyal, though some users do not inspire loyalty.") :Planescaping (ability :name "Planescaping" :summary "* [Requires]: Spend a [Primal] * [Action]: Create a small Plane (pocket dimension) in the [Etherial Realm] that lasts up to [Level] days. This Plane has a radius of [Skill] x 100 miles. * [Action]: Sustain a previously created Plane for an additional [Level] days. * [Action]: Make a single alteration to a previously create Plane. This alteration may be anything that the user chooses, has a radius of [Skill] miles, and is permanent.") "Primal Accuracy" (ability :name "Primal Accuracy" :summary "* [Requires]: Spend a [Primal] * [Free]: The current [Attack] ignores target [Defense]. It may also be targetted to affect only one type of material.") "Primal Armor" (ability :name "Primal Armor" :summary "* [Requires]: Spend a [Primal] * [Free]: For this turn, gain [Armor] equal to [Skill] vs. any type of attack including [Primal Strike].") "Primal Avatar" (ability :name "Primal Avatar") "Primal Awe" (ability :name "Primal Awe") "Primal Defense" (ability :name "Primal Defense" :summary "* [Requires]: Spend a [Primal] * [Free]: For this turn, gain [Defense] equal to [Skill] vs. any type of attack including [Primal Accuracy].") "Primal Embodiment" (ability :name "Primal Embodiment" :summary "* [Requires]: Spend a [Primal] * [Action]: For the next [Skill] turns, the user may use any ability through any willing target.") "Primal Immortality" (ability :name "Primal Immortality" :summary "* [Passive]: User does not age, does not require food, water or air. User is immune to disease, gases, non-acidic poisons.") "Primal Immunity" (ability :name "Primal Immunity" :summary "* [Requires]: Spend a [Primal] * [Free]: Enable survival in any environment for the next [Skill] days.") "Primal Reach" (ability :name "Primal Reach" :summary "* [Requires]: Spend a [Primal] * [Free]: Another ability has unlimited [Range] with no penalty for distance. This can even apply to [Melee] and [Close Combat].") "Primal Regeneration" (ability :name "Primal Regeneration" :summary "* [Requires]: Spend a [Primal] * [Action]: Immediately remove [Skill] damage tokens of any kind.") "Primal Reincarnation" (ability :name "Primal Reincarnation" :summary "* [Requires]: Spend a [Primal] * [Action]: Return from the dead in a new form.") "Primal Resurrection" (ability :name "Primal Resurrection" :reference "* Hmm, my heroic last stands never seem to stick. - Jax, Runeterra" :summary "* [Requires]: Spend all [Primal] * [Action]: Return from the dead.") "Primal Sense" (ability :name "Primal Sense" :summary "* [Action]: Detect any being with [Primal] or [Primal] used within the area within the last [Skill] days.") "Primal Strength" (ability :name "Primal Strength" :summary "* [Requires]: Spend a [Primal] * [Free]: Perform any feat of strength.") "Primal Strike" (ability :name "Primal Strike" :summary "* [Requires]: Spend a [Primal] * [Free]: The current [Attack] ignores target [Armor].") "Primal Transfer" (ability :name "Primal Transfer" :summary "* [Requires]: Spend a [Primal] * [Action]: Target gains a [Primal].") "Primal Vision" (ability :name "Primal Vision" :summary "* [Requires]: Spend a [Primal] * [Action]: View any area that is known or the area that a known person occupies.") "Soul Binding" (ability :name "Soul Binding" :summary "* Capture a soul that has become separated from its body. This soul can be willing or unwilling. It can then be bound to a body or other form on a Plane created by the user.") "Sphere of Control" (ability :name "Sphere of Control" :summary "* Sphere of control is an idea, activity, or philosophy with which the user is strongly associated. * Developing a Sphere of Control is difficult, but allows the user to have far reaching powers whenever the Sphere is present. This benefits both the user and his followers."))))) :Projectiles (section :name "Projectiles" :powermap (powermap :Ropes (power :name "Ropes" :abilitymap (abilitymap :Entanglement (ability :name "Entanglement" :summary "Reduces Movement" :titles "Tanglers") "Line Swinging" (ability :name "Line Swinging" :titles "Web Swinging"))))) :Miscellaneous (section :name "Miscellaneous" :powermap (powermap "Computer Control" (power :name "Computer Control" :summary "Gives ability to control computers like Computer Science."))))))
nx/tactics/books/prehistory
Description:
Package Name:
  • nx/tactics/books/prehistory
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_prehistory_overview, chapter_prehistoric_creatures
Source Code:
  • (package nx/tactics/books/prehistory :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Prehistory" :chaptermap (base/chaptermap "Prehistory Overview" (chapter_prehistory_overview) "Prehistoric Creatures" (chapter_prehistoric_creatures) ))) (func chapter_prehistory_overview : base/chapter (chapter :name "Prehistory Overview" :sectionmap (sectionmap "Why Tactics: Prehistory?" (section :name "Why Tactics: Prehistory?")))) (func chapter_prehistoric_creatures : base/chapter (chapter :name "Prehistoric Creatures" :sectionmap (sectionmap :Dinosaurs (section :name "Dinosaurs" :unitmap (unitmap :Allosaurus (unit :name "Allosaurus") :Ankylosaur (unit :name "Ankylosaur") "Brontosaur (Apatosaurus)" (unit :name "Brontosaur (Apatosaurus)") :Protoceratops (unit :name "Protoceratops") :Stegosaurus (unit :name "Stegosaurus") :Triceratops (unit :name "Triceratops") :Velociraptor (unit :name "Velociraptor" :summary "Turkey sized carnivore" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))))) "Tyrannosaurus Rex" (unit :name "Tyrannosaurus Rex" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death") "Swallow Whole" (unitability :name "Swallow Whole"))))))) "Prehistoric Avian Creatures" (section :name "Prehistoric Avian Creatures" :unitmap (unitmap :Pterodactyl (unit :name "Pterodactyl"))) "Prehistoric Insects" (section :name "Prehistoric Insects" :unitmap (unitmap "Giant Dragonfly" (unit :name "Giant Dragonfly") "Giant Mosquito" (unit :name "Giant Mosquito"))) "Prehistoric Marine Creatures" (section :name "Prehistoric Marine Creatures" :unitmap (unitmap "Giant Gar" (unit :name "Giant Gar") "Giant Turtle" (unit :name "Giant Turtle") :Megaladon (unit :name "Megaladon" :summary "70 ft shark. Highly developed killing machine kills with no remorse, no pity, no feeling of satisfaction. Their only apparent emotion is [[Bloodlust]]." :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death") "Swallow Whole" (unitability :name "Swallow Whole"))))) :Plesiosaur (unit :name "Plesiosaur"))) "Prehistoric Mammals" (section :name "Prehistoric Mammals" :unitmap (unitmap :Megatherium (unit :name "Megatherium" :summary "Elephant-sized ground sloth") :Sabrelion (unit :name "Sabrelion") "Sabretooth Tiger" (unit :name "Sabretooth Tiger") "Woolly Mammoth" (unit :name "Woolly Mammoth"))) "Primitive Man" (section :name "Primitive Man" :unitmap (unitmap :Hunter/Gatherer (unit :name "Hunter/Gatherer"))))))
nx/tactics/books/prehistory / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Prehistory" :chaptermap (base/chaptermap "Prehistory Overview" (chapter_prehistory_overview) "Prehistoric Creatures" (chapter_prehistoric_creatures) )))
nx/tactics/books/prehistory / chapter_prehistory_overview
Description:
Function Name:
  • chapter_prehistory_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_prehistory_overview : base/chapter (chapter :name "Prehistory Overview" :sectionmap (sectionmap "Why Tactics: Prehistory?" (section :name "Why Tactics: Prehistory?"))))
nx/tactics/books/prehistory / chapter_prehistoric_creatures
Description:
Function Name:
  • chapter_prehistoric_creatures
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_prehistoric_creatures : base/chapter (chapter :name "Prehistoric Creatures" :sectionmap (sectionmap :Dinosaurs (section :name "Dinosaurs" :unitmap (unitmap :Allosaurus (unit :name "Allosaurus") :Ankylosaur (unit :name "Ankylosaur") "Brontosaur (Apatosaurus)" (unit :name "Brontosaur (Apatosaurus)") :Protoceratops (unit :name "Protoceratops") :Stegosaurus (unit :name "Stegosaurus") :Triceratops (unit :name "Triceratops") :Velociraptor (unit :name "Velociraptor" :summary "Turkey sized carnivore" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death"))))) "Tyrannosaurus Rex" (unit :name "Tyrannosaurus Rex" :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death") "Swallow Whole" (unitability :name "Swallow Whole"))))))) "Prehistoric Avian Creatures" (section :name "Prehistoric Avian Creatures" :unitmap (unitmap :Pterodactyl (unit :name "Pterodactyl"))) "Prehistoric Insects" (section :name "Prehistoric Insects" :unitmap (unitmap "Giant Dragonfly" (unit :name "Giant Dragonfly") "Giant Mosquito" (unit :name "Giant Mosquito"))) "Prehistoric Marine Creatures" (section :name "Prehistoric Marine Creatures" :unitmap (unitmap "Giant Gar" (unit :name "Giant Gar") "Giant Turtle" (unit :name "Giant Turtle") :Megaladon (unit :name "Megaladon" :summary "70 ft shark. Highly developed killing machine kills with no remorse, no pity, no feeling of satisfaction. Their only apparent emotion is [[Bloodlust]]." :unitskillmap (unitskillmap "Natural Weaponry" (unitskill :name "Natural Weaponry" :unitabilitymap (unitabilitymap "Jaws of Death" (unitability :name "Jaws of Death") "Swallow Whole" (unitability :name "Swallow Whole"))))) :Plesiosaur (unit :name "Plesiosaur"))) "Prehistoric Mammals" (section :name "Prehistoric Mammals" :unitmap (unitmap :Megatherium (unit :name "Megatherium" :summary "Elephant-sized ground sloth") :Sabrelion (unit :name "Sabrelion") "Sabretooth Tiger" (unit :name "Sabretooth Tiger") "Woolly Mammoth" (unit :name "Woolly Mammoth"))) "Primitive Man" (section :name "Primitive Man" :unitmap (unitmap :Hunter/Gatherer (unit :name "Hunter/Gatherer"))))))
nx/tactics/books/pulp_fiction
Description:
Package Name:
  • nx/tactics/books/pulp_fiction
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_pulp_fiction_overview, chapter_action_adventure, chapter_flash_gordon, chapter_hardboiled_detective, chapter_john_carter_on_mars, chapter_land_of_the_lost, chapter_lost_continent, chapter_true_grit___crime, chapter_war_of_the_worlds
Source Code:
  • (package nx/tactics/books/pulp_fiction :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Pulp Fiction" :chaptermap (base/chaptermap "Pulp Fiction Overview" (chapter_pulp_fiction_overview) "Action/Adventure" (chapter_action_adventure) "Flash Gordon" (chapter_flash_gordon) "Hardboiled Detective" (chapter_hardboiled_detective) "John Carter on Mars" (chapter_john_carter_on_mars) "Land of the Lost" (chapter_land_of_the_lost) "Lost Continent" (chapter_lost_continent) "True Grit / Crime" (chapter_true_grit___crime) "War of the Worlds" (chapter_war_of_the_worlds) ))) (func chapter_pulp_fiction_overview : base/chapter (chapter :name "Pulp Fiction Overview" :sectionmap (sectionmap "Why Tactics: Pulp Fiction?" (section :name "Why Tactics: Pulp Fiction?")))) (func chapter_action_adventure : base/chapter (chapter :name "Action/Adventure" :sectionmap (sectionmap "Government Units" (section :name "Government Units" :unitmap (unitmap "Government Agent" (unit :name "Government Agent" :summary "We have top men working on it now. Who? Top... men. - Raiders of the Lost Ark"))) "Treasure Hunters" (section :name "Treasure Hunters" :unitmap (unitmap "Indiana Jones" (unit :name "Indiana Jones" :image "PulpFiction/IndianaJones.png" :unitskillmap (unitskillmap :Knowledge (unitskill :name "Knowledge" :unitabilitymap (unitabilitymap :Antiquities (unitability :name "Antiquities") :Archeology (unitability :name "Archeology") "Ancient History" (unitability :name "Ancient History") "Religious Studies" (unitability :name "Religious Studies"))))) "Lara Croft" (unit :name "Lara Croft" :image "PulpFiction/LaraCroft.png" :unitskillmap (unitskillmap :Influence (unitskill :name "Influence")))))))) (func chapter_flash_gordon : base/chapter (chapter :name "Flash Gordon")) (func chapter_hardboiled_detective : base/chapter (chapter :name "Hardboiled Detective")) (func chapter_john_carter_on_mars : base/chapter (chapter :name "John Carter on Mars")) (func chapter_land_of_the_lost : base/chapter (chapter :name "Land of the Lost" :sectionmap (sectionmap "Land of the Lost Units" (section :name "Land of the Lost Units" :unitmap (unitmap :Pylon (unit :name "Pylon") :Skylon (unit :name "Skylon") :Enik (unit :name "Enik") :Pakuni (unit :name "Pakuni") :Sleestak (unit :name "Sleestak")))))) (func chapter_lost_continent : base/chapter (chapter :name "Lost Continent")) (func chapter_true_grit___crime : base/chapter (chapter :name "True Grit / Crime")) (func chapter_war_of_the_worlds : base/chapter (chapter :name "War of the Worlds"))
nx/tactics/books/pulp_fiction / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Pulp Fiction" :chaptermap (base/chaptermap "Pulp Fiction Overview" (chapter_pulp_fiction_overview) "Action/Adventure" (chapter_action_adventure) "Flash Gordon" (chapter_flash_gordon) "Hardboiled Detective" (chapter_hardboiled_detective) "John Carter on Mars" (chapter_john_carter_on_mars) "Land of the Lost" (chapter_land_of_the_lost) "Lost Continent" (chapter_lost_continent) "True Grit / Crime" (chapter_true_grit___crime) "War of the Worlds" (chapter_war_of_the_worlds) )))
nx/tactics/books/pulp_fiction / chapter_pulp_fiction_overview
Description:
Function Name:
  • chapter_pulp_fiction_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_pulp_fiction_overview : base/chapter (chapter :name "Pulp Fiction Overview" :sectionmap (sectionmap "Why Tactics: Pulp Fiction?" (section :name "Why Tactics: Pulp Fiction?"))))
nx/tactics/books/pulp_fiction / chapter_action_adventure
Description:
Function Name:
  • chapter_action_adventure
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_action_adventure : base/chapter (chapter :name "Action/Adventure" :sectionmap (sectionmap "Government Units" (section :name "Government Units" :unitmap (unitmap "Government Agent" (unit :name "Government Agent" :summary "We have top men working on it now. Who? Top... men. - Raiders of the Lost Ark"))) "Treasure Hunters" (section :name "Treasure Hunters" :unitmap (unitmap "Indiana Jones" (unit :name "Indiana Jones" :image "PulpFiction/IndianaJones.png" :unitskillmap (unitskillmap :Knowledge (unitskill :name "Knowledge" :unitabilitymap (unitabilitymap :Antiquities (unitability :name "Antiquities") :Archeology (unitability :name "Archeology") "Ancient History" (unitability :name "Ancient History") "Religious Studies" (unitability :name "Religious Studies"))))) "Lara Croft" (unit :name "Lara Croft" :image "PulpFiction/LaraCroft.png" :unitskillmap (unitskillmap :Influence (unitskill :name "Influence"))))))))
nx/tactics/books/pulp_fiction / chapter_flash_gordon
Description:
Function Name:
  • chapter_flash_gordon
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_flash_gordon : base/chapter (chapter :name "Flash Gordon"))
nx/tactics/books/pulp_fiction / chapter_hardboiled_detective
Description:
Function Name:
  • chapter_hardboiled_detective
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_hardboiled_detective : base/chapter (chapter :name "Hardboiled Detective"))
nx/tactics/books/pulp_fiction / chapter_john_carter_on_mars
Description:
Function Name:
  • chapter_john_carter_on_mars
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_john_carter_on_mars : base/chapter (chapter :name "John Carter on Mars"))
nx/tactics/books/pulp_fiction / chapter_land_of_the_lost
Description:
Function Name:
  • chapter_land_of_the_lost
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_land_of_the_lost : base/chapter (chapter :name "Land of the Lost" :sectionmap (sectionmap "Land of the Lost Units" (section :name "Land of the Lost Units" :unitmap (unitmap :Pylon (unit :name "Pylon") :Skylon (unit :name "Skylon") :Enik (unit :name "Enik") :Pakuni (unit :name "Pakuni") :Sleestak (unit :name "Sleestak"))))))
nx/tactics/books/pulp_fiction / chapter_lost_continent
Description:
Function Name:
  • chapter_lost_continent
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_lost_continent : base/chapter (chapter :name "Lost Continent"))
nx/tactics/books/pulp_fiction / chapter_true_grit___crime
Description:
Function Name:
  • chapter_true_grit___crime
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_true_grit___crime : base/chapter (chapter :name "True Grit / Crime"))
nx/tactics/books/pulp_fiction / chapter_war_of_the_worlds
Description:
Function Name:
  • chapter_war_of_the_worlds
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_war_of_the_worlds : base/chapter (chapter :name "War of the Worlds"))
nx/tactics/books/science_fiction
Description:
Package Name:
  • nx/tactics/books/science_fiction
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_science_fiction_overview, chapter_archetypes, chapter_alternate_realties, chapter_alien___predator, chapter_battlestar_galactica, chapter_doctor_who, chapter_robotech, chapter_space_cruiser_yamato, chapter_space_opera, chapter_star_trek, chapter_star_wars, chapter_time_travellers, chapter_unique_aliens
Source Code:
  • (package nx/tactics/books/science_fiction :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Science Fiction" :image "Future.jpg" :chaptermap (base/chaptermap "Science Fiction Overview" (chapter_science_fiction_overview) "Archetypes" (chapter_archetypes) "Alternate Realties" (chapter_alternate_realties) "Alien / Predator" (chapter_alien___predator) "Battlestar Galactica" (chapter_battlestar_galactica) "Doctor Who" (chapter_doctor_who) "Robotech" (chapter_robotech) "Space Cruiser Yamato" (chapter_space_cruiser_yamato) "Space Opera" (chapter_space_opera) "Star Trek" (chapter_star_trek) "Star Wars" (chapter_star_wars) "Time Travellers" (chapter_time_travellers) "Unique Aliens" (chapter_unique_aliens) ))) (func chapter_science_fiction_overview : base/chapter (chapter :name "Science Fiction Overview" :reference "http://www.merzo.net/index.html" :sectionmap (sectionmap "Distant Future Land Warfare" (section :name "Distant Future Land Warfare" :summary "* Infantry * Transporters * Time Travel * Beam Weapons * Lightning Guns * Disruptors * Disintegrators * Railguns * Hovercraft * Hovertanks * Walkers * Mobile Suits * Mobile Armor * Artillery * Nuclear Weapons") "Distant Future Space Warfare" (section :name "Distant Future Space Warfare" :summary "* Shields * Ion Cannons * Disruptors * Disintegrators * Transporters * Hyperdrive * Jumpdrive * Railguns * Boarding Parties * Starfighters * Starbombers * Mobile Suits * Mobile Armor * Large Starships * Small Starships * Nuclear Weapons * Starbases")))) (func chapter_archetypes : base/chapter (chapter :name "Archetypes" :summary "* Psionic ** Preferred Skills: [Telepathy], [Mind Over Matter], [Divination]")) (func chapter_alternate_realties : base/chapter (chapter :name "Alternate Realties" :sectionmap (sectionmap "Big Brother" (section :name "Big Brother" :summary "* A near future Earth where all activity is monitored by cameras and microphones placed everywhere including bedrooms, bathrooms, and sewers. They cover multiple angles and are nearly impossible to avoid. Computers monitor the feeds and immediately report any criminal activity to police. The police arrest the criminal, conviction is swift, and the criminal is psychologically or chemically 'reconditioned' against further crimes and returned to society. Crime is basically non-existent, and no one remembers a time before the monitoring was established. Police are friendly and do not appear in uniform unless a crime has been committed. Police only carry non-lethal weapons unless they are known to be facing armed resistance. * Any outsiders entering this world will have a hard time avoiding criminal activity. Fortunately, the computers are unconcerned with suspicious activity and only notice actual crimes. However, attempts to disable cameras are crimes themselves. * Interrogations and reconditioning are all computer controlled. Using sophiticated lie detectors, drugs, and aversion therapy, the patient can usually be reconditioned and returned to society in a matter of weeks. * A small resistance exists, but there is little they can achieve without outside help. The question is: should they be helped?") "Time in a Bottle" (section :name "Time in a Bottle" :reference "* If I could save time in a bottle, the first that I'd like to do, is to save every day 'til eternity passes away, just to spend them with you. - Time in a bottle, Jim Croce" :summary "* A temporal paradox has trapped the entire Earth in a time loop. For about a month, the people of the planet relive the same week over and over. They remember each loop but the longer they stay in the loop the more likely they are to be compelled to repeat the same events each time. Those who suffer or die during the period know they will repeat their actions but are largely powerless to stop themselves. The experience would eventually drive them insane if their minds could change that much. * Time travelers who arrive are immediately recognized by everyone as being different from the previous events. The locals are tremendously thankful that they can react differently since the travelers weren't in the previous time loops. This will be short lived, however, because once the loop resets the time travelers will be part of the loop, and each time the loop resets it will become harder for everyone to act differently again. If the travelers don't sort out this problem, they will be trapped here forever.")))) (func chapter_alien___predator : base/chapter (chapter :name "Alien / Predator" :image "AlienPredator/AlienPredator.jpg" :sectionmap (sectionmap "Alien Equipment" (section :name "Alien Equipment" :itemmap (itemmap "Alien Egg" (item :name "Alien Egg" :image "AlienPredator/Alien_Egg.png" :reference "Who's laying these eggs? I'm not sure. It must be something we haven't seen yet. Ripley and Bishop, Aliens")) :unitmap (unitmap "Alien Starship" (unit :name "Alien Starship" :image "AlienPredator/AlienShip.png" :height "43m" :length "174m" :width "117m"))) :Aliens (section :name "Aliens" :reference "* It'll be dark soon, and they mostly come at night... mostly. - Newt, Aliens * My mommy always said there were no monsters - no real ones - but there are. * Its structural perfection is matched only by its hostility. You admire it. I admire its purity. A survivor... unclouded by conscience, remorse, or delusions of morality. - Ash and Lambert, Alien" :titles "Xenomorph XX121" :unitmap (unitmap "Alien Chest Burster" (unit :name "Alien Chest Burster" :image "AlienPredator/Alien_ChestBurster.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien (Dog)" (unit :name "Alien (Dog)" :image "AlienPredator/Alien_Dog.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Face Hugger" (unit :name "Alien Face Hugger" :image "AlienPredator/AlienFaceHugger.png" :reference "* I haven't seen anything like that except, uh, molecular acid. It must be using it for blood. It's got a wonderful defense mechanism. You don't dare kill it. - Parker and Brett, Alien" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Queen" (unit :name "Alien Queen" :image "AlienPredator/Alien_Queen.png" :reference "Get away from her, you BITCH! - Ripley, Aliens" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Warrior" (unit :name "Alien Warrior" :image "AlienPredator/Alien_Warrior.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) :Predalien (unit :name "Predalien" :image "AlienPredator/Predalien.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))))) "Predator Equipment" (section :name "Predator Equipment" :itemmap (itemmap "Plasma Caster" (item :name "Plasma Caster" :image "AlienPredator/PredatorPlasmaCaster.jpg") "Predator Claws" (item :name "Predator Claws" :image "AlienPredator/PredatorClaws.jpg") "Predator Disc" (item :name "Predator Disc" :image "AlienPredator/PredatorDisc.gif") "Predator Smartgun" (item :name "Predator Smartgun" :image "AlienPredator/PredatorSmartgun.jpg") "Predator Stealthsuit" (item :name "Predator Stealthsuit" :image "AlienPredator/PredatorStealth.jpg") "Predator Vision" (item :name "Predator Vision" :image "AlienPredator/PredatorVision.jpg")) :unitmap (unitmap "Predator Scout Ship" (unit :name "Predator Scout Ship") "Predator Hunting Ship" (unit :name "Predator Hunting Ship"))) :Predators (section :name "Predators" :summary "* The Yautja do not maintain a unified society, but instead live in tribal groups that rarely interbreed. Over time, the different tribes have developed distinct physical differences. * Yautja society reveres honor and physical prowess which can only be proven in personal combat during dangerous hunts. * The Yautja stalk and kill their prey using a combination of highly advanced technology, such as active camouflage and energy weapons, combined with comparatively primitive traditional weapons, such as blades, spears and nets. The Predators often ritualistically mutilate their prey and usually claim a trophy from their kills. Capable of interstellar travel in star ships, the Predators have hunted on Earth for centuries and have also had prior contact with the Engineers. * Aside from their repeated conflicts with humans, the Predators have notably been associated with Xenomorph XX121, known to them as kiande amedha ('hard meat'), whom they revere as perhaps the most worthy of all prey. They have been known to deliberately breed the creatures from captive Queens in order to hunt them, often as part of initiation rituals for young Predators." :titles "Yautja" :unitmap (unitmap "Un-blooded Predator" (unit :name "Un-blooded Predator" :summary "* The lowest level of Yautja warriors. These are warriors in training. Many die during this brutal training regiment designed to cull the weak.") "Young Blood Predator" (unit :name "Young Blood Predator" :summary "* A Yautja warrior who has completed their training. These warriors await their final test, killing a Xenomorph close range primitive weapons.") "Blooded Predator" (unit :name "Blooded Predator" :image "AlienPredator/Predator.png" :summary "* After killing a Xenomorph, the Predator a full citizen of Yautja society and is allowed access to the Plasma Cannon and other advanced weaponry and spacecraft. A Blooded Predator may join hunts with others or go off on their own to bring back stories, honor, treasure, and trophies.") "Elite Predator" (unit :name "Elite Predator" :image "AlienPredator/Predator_Veteran.png" :summary "* A Yautja warrior who has survived many dangerous hunts is raised to elite status. These Yautja have vast fighting skills and can fight many enemies single-handed.") "Elder Predator" (unit :name "Elder Predator" :summary "* Older Elite Predators can be given the honorific of Elder. Elder Predators form the political and administrative caste of Yautja society.") "Clan Leader Predator" (unit :name "Clan Leader Predator" :summary "* Clan Leaders direct all Predator business and travel on Predator Flagships. Elder Predators may challenge the Clan Leader to take their position.") "Bad Blood Predator" (unit :name "Bad Blood Predator" :summary "* Bad Bloods are Predators who severely violated their code of honor and were either banished or escaped from their clan. Sometimes the Bad Bloods become the target of a hunt to make an example of them."))) "Human Equipment" (section :name "Human Equipment" :itemmap (itemmap "Combat Armor" (item :name "Combat Armor" :image "ColonialMarines/CombatArmor.jpg") "VP70Mk9 Pistol" (item :name "VP70Mk9 Pistol" :image "ColonialMarines/HK_VP70.jpg" :summary "18 round 9mm pistol.") "M41A Pulse Rifle" (item :name "M41A Pulse Rifle" :image "ColonialMarines/M41a01.jpg" :reference "That's the grenade launcher. I don't think you want to mess with that. - Hicks, Aliens") "Ithaca Model 37 Shotgun" (item :name "Ithaca Model 37 Shotgun" :image "ColonialMarines/Ithaca37Stakeout.jpg" :reference "Triva: The one used by Corporal Hicks was passed from father to son all the way back to marines in the Vietnam War." :summary "4 round 12-gauge sporting shotgun produced from 1937. Aka Stakeout.") "M240 Flamethrower" (item :name "M240 Flamethrower" :image "ColonialMarines/M240Flamethrower.jpg") "M56 Smartgun MG" (item :name "M56 Smartgun MG" :image "ColonialMarines/M56Smartgun.jpg") "CN-20 Nervergas" (item :name "CN-20 Nervergas" :image "ColonialMarines/CN-20Nervegas.jpg") "Motion Tracker" (item :name "Motion Tracker" :image "ColonialMarines/MotionTracker.jpg" :reference "There's somethin' movin' and it ain't us! Tracker's off scale, man. They're all around us! - Hudson, Aliens") "Electronics Pack" (item :name "Electronics Pack" :reference "Hudson, run a bypass. - Apone, Aliens") :Welder (item :name "Welder" :image "ColonialMarines/Welder.jpg"))) "Human Vehciles" (section :name "Human Vehciles" :unitmap (unitmap "UD-4L Cheyenne Dropship" (unit :name "UD-4L Cheyenne Dropship" :image "ColonialMarines/Dropship.png" :height "6m" :length "25m" :width "13m") "M577 Armored Personnel Carrier" (unit :name "M577 Armored Personnel Carrier" :image "ColonialMarines/APC.png" :height "3m" :length "9m" :width "3m") "Conestoga Class Starship" (unit :name "Conestoga Class Starship" :image "ColonialMarines/Sulaco.png" :summary "Speed: .5G cruising 4G Max FTL: 1.762 light years/day 2 Dropships http://www.kitsune.addr.com/SF-Conversions/Rifts-Other-Vehicles/USS_Sulaco.htm" :titles "USS Sulaco" :mass "85ktons" :height "105m" :length "385m" :width "77m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "* The Conestogas skin consists of a laminated layer of insulators, alloy micro meteor shielding, composite armors, and aerogel layers. This provides only limited protection against Kinetic weapons (the best defense against those is high-mass armor, untenable on a starship), but it does provide excellent protection against directed energy weapons. * Overlying all of this are layers of Radar Absorbent Material, and a dark grey paint, in order to keep both the ships radar and optical signature as low as possible. In addition to this the ship has a radar jamming system for ECM, and the computer systems are designed with double hardened systems to prevent either jamming or EMP from damaging the ships system or any systems of equipment inside the ship.") :Hanger (unitpower :name "Hanger" :summary "20ktons Cargo")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Its main anti-ship weapons are eight Long Lance missiles, providing it with a good long range punch. These missiles are almost small starships in their capabilities and sensor systems, and are currently the main anti-ship system of both the Colonial Marine Corps and the Navy. Backing up these weapons are two Neutral Particle Beam cannons. These large weapons are mounted along the main hull, and can only fire in a forward arc. Although they do not provide the ship with a Hard Kill capability, they can be used to disrupt a enemies electronics at huge ranges. For close range weapons there are two laser cannons located on either side of the ship. These cannons provide close in defense against missiles, mines, and the odd fighter. For some additional close in Hard Kill capabilities there are two rail guns on the ship, one on top, and the other on the bottom of the main hull. Firing a combination of both kinetic penetrators (essentially tungsten darts) which can punch holes through almost any armor, and kinetic penetrator incendiary (tungsten tipped darts designed to vaporize AFTER impact), these weapons have a reasonable rate of fire, and can do quite a lot of damage to other ships. * The ship is also capable of laying mines, with sixty mines available in a ventral dispenser. Although not as large a threat to enemy ships as the ships missiles, they are still quite effective for interdiction and for cutting off civilian shipping. * For orbital bombardment the ship has a ventral launcher filled with eighty re-entry vehicles. These can carry a variety of warheads, including nuclear payloads. Such ordnance can only be used when the ship receives the orders to do so from its Captain, or from a Marine Major or personnel higher in rank than that."))) :Nostromo (unit :name "Nostromo" :image "ColonialMarines/Nostromo.png" :reference "This a commercial ship, not a rescue ship. - Parker, Alien" :summary "Commercial Towing Vehicle Speed: .12 light years/day 2 shuttlecraft" :height "72m" :length "244m" :width "165m") "Refinery Ship" (unit :name "Refinery Ship" :image "ColonialMarines/Refinery.png" :height "881m" :length "1500m" :width "979m") "Lockmart Starcub Shuttlecraft" (unit :name "Lockmart Starcub Shuttlecraft" :image "ColonialMarines/Shuttlecraft.png" :titles "Narcisssus" :height "8m" :length "16m" :width "20m"))) :Humans (section :name "Humans" :unitmap (unitmap "Company Man" (unit :name "Company Man" :reference "* I work for the company. But don't let that fool you, I'm really an okay guy. - Burke, Aliens * This installation has a substantial dollar value attached to it. They can bill me. - Burke and Ripley, Aliens * If I went and made a major security situation out of it, everybody steps in; Administration steps in, and there's no exclusive rights for anybody, nobody wins! So I made a decision, and it was... wrong. It was a bad call, Ripley. It was a bad call. - Burke, Aliens") :Civilian (unit :name "Civilian") "Marine Grunt" (unit :name "Marine Grunt" :image "ColonialMarines/Marine.png" :reference "* These people are here to protect you. They're soldiers. It won't make any difference. - Ripley and Newt, Aliens * Is this gonna be a standup fight, sir, or another bughunt? - Hudson, Aliens * He can't make that kind of decision, he's just a grunt! Ah, no offense. None taken. - Burke and Hicks, Aliens" :summary "* Pulse Rifle * Shotgun") "Marine Heavy Weapons" (unit :name "Marine Heavy Weapons" :reference "* Look, man. I only need to know one thing: where they are. - Vasquez, Aliens") "Marine Lieutenant" (unit :name "Marine Lieutenant" :reference "* How many drops is this for you, Lieutenant? Thirty eight... simulated. How many *combat* drops? Uh, two. Including this one. - Vasquez and Gorman, Aliens") "Marine Pilot" (unit :name "Marine Pilot" :reference "* We're in the pipe, five by five. - Ferro, Aliens") "Marine Sergeant" (unit :name "Marine Sergeant" :reference "* Another glorious day in the Corps! A day in the Corps is like a day on the farm. Every meal's a banquet! Every paycheck a fortune! Every formation a parade! I LOVE the Corps! - Apone, Aliens") "Marine Tech" (unit :name "Marine Tech" :summary "* Motion Detector * Electronics Pack") "Power Loader" (unit :name "Power Loader" :image "ColonialMarines/PowerLoader.png") "Sentry Turret" (unit :name "Sentry Turret" :image "ColonialMarines/SentryTurret.png") :Synthetic (unit :name "Synthetic" :image "ColonialMarines/Android.png" :reference "* Bring back life form. Priority One. All other priorities rescinded. The damn company. What about our lives, you son of a bitch? I repeat, all other priorities are rescinded. - Ash and Parker, Alien * I admire its purity. A survivor... unclouded by conscience, remorse, or delusions of morality. - Ash, Alien * I prefer the term 'Artificial Person' myself. - Bishop, Aliens * Not bad for a human. - Bishop, Aliens * Ripley's last trip out, the syn- the artificial person malfunctioned. Malfuctioned? There were problems and a-a few deaths were involved. - Burke and Bishop, Aliens" :titles "Syn (derogatory)")))))) (func chapter_battlestar_galactica : base/chapter (chapter :name "Battlestar Galactica" :sectionmap (sectionmap "Battlestar Colonials" (section :name "Battlestar Colonials" :unitmap (unitmap "Colonial Raptor" (unit :name "Colonial Raptor" :image "BattlestarGalactica/Colonial_Raptor.png") "Colonial Viper" (unit :name "Colonial Viper" :image "BattlestarGalactica/Colonial_Viper.png") "Colonial Battlestar" (unit :name "Colonial Battlestar" :image "BattlestarGalactica/Colonial_Battlestar.png"))) :Cylons (section :name "Cylons" :unitmap (unitmap "Cylon 6" (unit :name "Cylon 6" :image "BattlestarGalactica/Cylon_6.png") "Cylon Centurion" (unit :name "Cylon Centurion" :image "BattlestarGalactica/Cylon_Centurion.png") "Cylon Raider" (unit :name "Cylon Raider" :image "BattlestarGalactica/Cylon_Raider.png") "Cylon Base Star" (unit :name "Cylon Base Star" :image "BattlestarGalactica/Cylon_BaseStar.png")))))) (func chapter_doctor_who : base/chapter (chapter :name "Doctor Who" :sectionmap (sectionmap "Doctor Who Equipment" (section :name "Doctor Who Equipment" :itemmap (itemmap "Psychic Paper" (item :name "Psychic Paper" :image "DrWho/PsychicPaper.jpg") "Sonic Screwdriver" (item :name "Sonic Screwdriver" :image "DrWho/SonicScrewdriver.jpg") :TARDIS (item :name "TARDIS" :image "DrWho/Tardis.jpg" :reference "* Leela: Explain to me how this... Tardis, is larger on the inside than the out. ... Doctor: It's because insides and outsides are not in the same dimension. Which box is larget? Leela: That one. Doctor: Now which is larger? Leela: That one. Doctor: But it looks smaller. Leela: That's because it's further away. Doctor: Exactly. If you could keep that exactly that distance away and have it here, the large one would fit inside the small one. Leela: That's silly. Doctor: That's transdimensional engineering... - Doctor and Leela, The Robots of Death * Leela: Do you mean you can't control it? Doctor: Of course I can control it!.. 9 times out of 10, well 7 times out of 10, 5 times... nevermind... You won't need that. Leela: How do you know? Doctor: I never carry weapons. If people see you mean them no harm, they never hurt you... 9 out of 10 times. - Doctor and Leela, The Robots of Death * Tardis: There's a sign on my front door and you've been passing it for 700 years. What does it say? ... Doctor: Pull to open. Tardis: Yes, and what do you do? Doctor: I push. Tardis: Every single time. 700 years. Police boxes doors open out the way. ... Doctor: You know, YOU, have never been very reliable. ... You didn't always take me where I wanted to go. Tardis: No, but I always took you where you needed to go. - Tardis and Doctor, The Doctor's Wife"))) "Doctor Who Units" (section :name "Doctor Who Units" :unitmap (unitmap "Amy Pond" (unit :name "Amy Pond") "Captain Jack Harkness" (unit :name "Captain Jack Harkness" :image "DrWho/CaptainJackHarkness.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth") "True Immortality" (unitability :name "True Immortality"))))) "Clara Oswald" (unit :name "Clara Oswald" :reference "* Clara: Have we just watched the entire life cycle of Earth, birth to death. Doctor: Yes. Clara: And you're okay with that? Doctor: ... Yes. Clara: How can you be? ... To you, I haven't been born yet, and to you I've been dead a hundred billion years. Is my body out there somewhere, in the ground? Doctor: ... Yes... I suppose it is. Clara: But hear we are talking, so I am a ghost. To you, I'm a ghost. We're all ghost to you. We must be nothing. Doctor: No, no. You're not that. Never that. Clara: They what are we? What can we possible be? Doctor: You are the only mystery, worth solving.") :Cyberman (unit :name "Cyberman" :image "DrWho/Cyberman.png" :reference "We have 5 million Cybermen. How many are you? Four! You would destroy the Cybermen with 4 Daleks? We would destroy the Cybermen with 1 Dalek! You are superior to us in only one respect. You are better at dying! - Cybermen and Daleks") :Dalek (unit :name "Dalek" :image "DrWho/Dalek.png" :reference "Imagine you were dying. Imagine you were afraid and a long way from home and in terrible pain. And just when you thought it couldn't get worse, you looked up and saw the face of the devil himself. Hello Dalek - The Doctor" :summary "The Daleks odd form may be explained by their personal shielding. Weapons and sensors are placed on stalks so that they may protrude from the shield. This prevents their shield from interfering with their equipment, but it also leaves these devices vulnerable." :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding"))) :Davros (unit :name "Davros" :image "DrWho/Davros.png" :reference "* To hold in my hand a capsule that contained such power...To know that the tiny pressure of my thumb, enough to break the glass would end...everything...Yes...I WOULD do it. Such power would put me above the Gods! - Davros * Across the entire universe, never stopping, never faltering, never fading. People, planets, and stars will become dust, and the dust will become atoms, and the atoms will become...nothing. Into every dimension, every parallel, every single corner of creation. This is my ultimate victory, Doctor: the destruction of reality... itself! - Davros * The man who abhors violence, never carrying a gun. But this is the truth Doctor, you take ordinary people and fashion them into weapons...How many more? Just think how many have died in your name...The Doctor, the man who keeps running, never looking back because he dare not out of shame. This is my final victory, Doctor. I have shown you...yourself. - Davros") "Doctor, The" (unit :name "Doctor, The" :image "DrWho/TheDoctor.png" :reference "* Who are you? ... The ground beneath our feet spinning at a 1000 miles an hour, and the entire planet is hurtling around the sun at 67,000 miles an hour, and I can feel it. We're falling through space, you and me, clinging to the skin of this tiny little world, and if we let go ... That's who I am. Now forget me. - Rose and The Doctor * Oh, I'll think of something. You're just making this up as you go along. Yup...but I do it brilliantly - The Doctor * I've seen him. He's like fire and ice and rage. He's like the night and the storm and the heart of the sun. He's ancient and forever. He burns at the center of time and he can see the turn of the universe. * Is this world protected? You're not the first lot to have come here. Oh, there have been so many. And what you've got to ask is...what happened to them? Hello, I'm the Doctor. Basically...run. - The Doctor * Everyone's got memories of a holiday they couldn't have be to, or a party they never went to, or met someone for the first time and felt like they've know them all their lives. Time is being rewritten all around us, everyday. People think their memories are bad, but their memories are fine. The past is really like that. - The Doctor * There are laws of time and once upon a time, there were people in charge of those laws, but died. They all died. They all died. And you know who that leaves. Me! It has taken me all these years to realize, the laws of time are mine. And they will obey me! ... The whole of history could change...the future of the human race. No one should have that much power. Tough. ... For a long time I thought I was just a survivor, but I'm not. I'm the winner. That's who I am. The Time Lord Victorious. And there is no one to stop you. No. This is wrong, Doctor. I don't care who you are. The Time Lord Victorious is wrong! That's for me to decide. ... Is there nothing you can't do? Not anymore. - Captain Aldelede and The Doctor * Silence will fall when the question is asked...The first question, the question that must never be answered, hidden in plain sight, the question you've been running from all your life...Doctor WHO? * If I run away today. Good people will die. If I stand and fight, some of them might live. Maybe not many. Maybe not for long. Hey, maybe there's no point in any of this at all, but its the best I can do. So, I'm going to do it, and I will stand here doing it until it kills em. You're going to die too. Someday. What would that be? Have you thought of that? Would you die for? Who I am is where I stand. Where I stand... is where I fall. Stand with me. - Doctor and Masters. * People always get it wrong with Time Lords. We take forever to die. Even if we are too injured to regenerate, every cell in our bodies keeps trying. Dying properly can take days. That's why we like to die among our own kind. They know not to bury us early. I think... In my current condition, it'll take me about... a day and a half to reach the top of the tower. I think, if I'm lucky, I have a day and a half. - Heaven Sent") :K-9 (unit :name "K-9" :image "DrWho/K9.png" :reference "The Doctor likes traveling with an entourage. Sometimes they're human, sometimes they're aliens and sometimes they're tin dogs. What about you? Where do you fit in the picture? Me? I'm their man in Havana. I'm their technical support. I'm... Oh my god. I'm the tin dog! - Sarah Jane Smith and Mickey Smith") "Martha Jones" (unit :name "Martha Jones" :image "DrWho/MarthaJones.png" :reference "She completely adored him ... Is this going anywhere? Yes. Cause he never looked at her twice ... and she wasted years of her life ... and I told her time and time again. Get out. So this is me getting out. - Martha Jones and the Doctor") "Master, The" (unit :name "Master, The" :image "DrWho/TheMaster.png" :reference "* We stand there... 8 years old... staring at the raw power of time and space, just a child. Some would be inspired... Some would run away ... and some would go mad. What about you? Oh, the one who ran away. I never stopped. - The Doctor and Martha * And so it came to pass, that the human race fell and the Earth was no more. And I looked out on my new Dominion as master of all and I thought it good.") "Rose Tyler" (unit :name "Rose Tyler" :image "DrWho/RoseTyler.png" :reference "This is really seeing the future - you just leave us behind! ... Sarah Jane - you were that close to her once, and now ... you never even mention her. ... I don't age. I regenerate. But humans decay. You wither and you die. Imagine watching that happen to someone you ... You can spend the rest of your life with me. But I can't spend the rest of mine with you. I have to live on, alone. That's the curse of the Timelords. - Rose and the Doctor, Doctor Who") "Sarah Jane Smith" (unit :name "Sarah Jane Smith" :image "DrWho/SarahJaneSmith.png" :reference "The universe has to move forward. Pain and loss, they define us as much as happiness or love. Whether it's a world, or a relationship ... Everything has its time. And everything ends. - Sarah Jane Smith") :Rutan (unit :name "Rutan" :image "DrWho/Rutan.png") :Sontaran (unit :name "Sontaran" :image "DrWho/Sontaran.png") "Sontaran Scout Ship" (unit :name "Sontaran Scout Ship" :image "DrWho/SontaranScoutShip.png") :Sutekh (unit :name "Sutekh" :reference "* You would use your powers for evil. Evil? Your evil is my good. I am Sutehk the Destroyer. Where I tread, I leave nothing but dust and darkness. I find that good. - The Doctor and Sutekh" :titles "Sutekh the Destroyer") "Weeping Angel" (unit :name "Weeping Angel")))))) (func chapter_robotech : base/chapter (chapter :name "Robotech" :sectionmap (sectionmap :Invid (section :name "Invid") :Masters (section :name "Masters") :Zentradi (section :name "Zentradi")))) (func chapter_space_cruiser_yamato : base/chapter (chapter :name "Space Cruiser Yamato" :summary "Aka Starblazers" :sectionmap (sectionmap :Weapons (section :name "Weapons" :itemmap (itemmap "Shock Cannon" (item :name "Shock Cannon") "Pulse Laser" (item :name "Pulse Laser") :Missile (item :name "Missile") "Smite Projector" (item :name "Smite Projector") "Wave Motion Gun" (item :name "Wave Motion Gun" :range "400Mm") "Magna Flame Gun" (item :name "Magna Flame Gun" :range "800Mm"))) "Earth Forces" (section :name "Earth Forces" :unitmap (unitmap "Yamato Space Battleship" (unit :name "Yamato Space Battleship" :image "SpaceBattleshipYamato/Yamato.png" :titles "Argo" :mass "62ktons" :length "263m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Shock Cannon" (unititem :name "Shock Cannon") "Pulse Laser" (unititem :name "Pulse Laser") :Missile (unititem :name "Missile") "Wave Motion Gun" (unititem :name "Wave Motion Gun"))))) "Andromeda Space Battleship" (unit :name "Andromeda Space Battleship" :image "SpaceBattleshipYamato/Andromeda.png") "UDF Battle Satellite" (unit :name "UDF Battle Satellite") "UDF Space Destroyer" (unit :name "UDF Space Destroyer" :image "SpaceBattleshipYamato/Destroyer.png") "Cosmo Tiger II" (unit :name "Cosmo Tiger II" :image "SpaceBattleshipYamato/CosmoTiger.png") "Cosmo Zero" (unit :name "Cosmo Zero" :image "SpaceBattleshipYamato/CosmoZero.png"))) "Gamelon Empire" (section :name "Gamelon Empire" :unitmap (unitmap "Leader Desslok" (unit :name "Leader Desslok" :image "SpaceBattleshipYamato/LeaderDesslok.png") "Desslok's Command Carrier" (unit :name "Desslok's Command Carrier" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :unititemmap (unititemmap "Smite Projector" (unititem :name "Smite Projector"))))) "Gamelon Destroyer" (unit :name "Gamelon Destroyer") :Tri-Carrier (unit :name "Tri-Carrier") "Smite Ship" (unit :name "Smite Ship" :image "SpaceBattleshipYamato/Gamelon_Smiteship.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :unititemmap (unititemmap "Smite Projector" (unititem :name "Smite Projector"))))) "Drill Missile" (unit :name "Drill Missile") "Reflex Gun" (unit :name "Reflex Gun" :summary "* Argo is on the opposite side of Pluto. The opposite side? Oh, no Star Force, you're not getting away. My Reflex Gun can shoot around corners. - Colonel Ganz"))) "Comet Empire" (section :name "Comet Empire" :unitmap (unitmap "Prince Zordar" (unit :name "Prince Zordar" :image "SpaceBattleshipYamato/PrinceZordar.png" :summary "I hold the whole universe in the palm of my hand. I just close my hand and planet crumble, the stars shatter! What chance does your planet Earth have? It's a cosmic joke. - Prince Zordar") "Comet Empire" (unit :name "Comet Empire" :image "SpaceBattleshipYamato/CometEmpire.png") :Medaruhse (unit :name "Medaruhse" :summary "Its principal weapon is a large plasma cannon which fires directly into a SMITE field which teleports the energy to a considerable distance. This gives the weapon a tremendous firing range more than twice that of a Wave Motion Gun." :titles "Magna Flame Gun" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Magna Flame Gun" (unititem :name "Magna Flame Gun")))))))))) (func chapter_space_opera : base/chapter (chapter :name "Space Opera" :sectionmap (sectionmap "Space Opera Phenomenon" (section :name "Space Opera Phenomenon" :locationmap (locationmap "Motaran Rift" (location :name "Motaran Rift" :summary "* Beyond the Alliance Frontier is the ionic Pendulask storm stretching 100 light years across. In the center of the storm is a spacial disturbance that has ripped the fabric of time itself - The Motaran Rift. * There has been documented evidence of horrific beings who appear alive, but then not alive, which have escaped from the Rift to wreak havoc on nearby worlds. Scientists theorize that there must be a time corridor that links some netherworld to the third dimension. Others believe it is a conduit that links another part if the universe to itself. Religious groups call it Hell."))) "Terran Union" (section :name "Terran Union") "Galactic Alliance" (section :name "Galactic Alliance" :summary "* Alliance Defense Service - A Service chartered with the defense and policing of star systems including air, sea, and land policing and defense. They hold authority over all civilian facilities including cities, space stations, and satellites. ** Alliance Police ** Alliance Bureau of Investigation * Alliance Military Service ** Alliance Naval Division - A division managing large combat ships of all types including capital ships, military space stations, and military satellites. ** Alliance Starfighter Division - A division managing small combat ships including interceptors, close support, and bombers. ** Alliance Commando Corp - Elite teams focused on performing surgical military operations deep within hostile territory. ** Alliance Marine Corp - A dedicated combat group focused on spearheading battles and rapid response. * Alliance Contact Service - A Service dedicated to exploration, diplomacy, trade negotiations, foreign intelligence, and the projection of soft power. ** Alliance Diplomatic Corp ** Alliance Intelligence Corp * Alliance Research Service" :titles "Federation, Feddys (derogatory), Starfleet" :itemmap (itemmap :PAX (item :name "PAX" :summary "* PAX is a chemical compound designed to be added to air processors in order to pacify a populace. An Alliance research team on Miranda discovered that the Pax was effective with 99.9% of people. Unfortunately, it was such an effective means of pacifying that the people stopped doing anything, they simply waited for death. The remaining tenth of a percent (0.1%) of the population had the opposite reaction. They became highly aggressive, committing unspeakable acts including cannibalism, rape, and self-mutilation. These people would come to be known as Reavers." :titles "G-23 Paxilon Hydrochlorate, PAX (Latin for Peace)")) :locationmap (locationmap "Alliance Spaceport" (location :name "Alliance Spaceport" :summary "* Spaceports on Alliance worlds service all incoming and outgoing space traffic. It is strictly illegal to attempt to land on a planet anywhere except a spaceport. * Spaceports manage customs, quarantines, weapons checks, temporary lodging, resupply, trade, entertainment, etc. * Spaceports are always located far away from major cities. They are also heavily armed with troops, fighters, and destroyers available at short notice. * For safety reasons, landing pads and drydocks are located 10km away from any inhabited area. The spaceport proper is reached by shuttles. * Orbital and land-based spaceports are essentially the same except for modes of travel.")) :unitmap (unitmap "Alliance Armsman" (unit :name "Alliance Armsman") "Alliance Commander" (unit :name "Alliance Commander") "Alliance Commando" (unit :name "Alliance Commando") "Alliance Emmissary" (unit :name "Alliance Emmissary" :summary "* Serves on First Contact and other diplomatic missions. Emmissaries must determine the best course of action to develop long-term relations with other species. As such, they have sweeping powers to determine policy that military personnel must implement including blockades and quarantines." :titles "Diplomat") "Alliance Heavy Marine" (unit :name "Alliance Heavy Marine") "Alliance Intelligence Agent" (unit :name "Alliance Intelligence Agent" :titles "Brint") "Alliance Marine Tech" (unit :name "Alliance Marine Tech") "Alliance Mobile Cavalry" (unit :name "Alliance Mobile Cavalry") "Alliance Mobile Infantry" (unit :name "Alliance Mobile Infantry") "Alliance Pilot" (unit :name "Alliance Pilot") "Alliance Police Detective" (unit :name "Alliance Police Detective") "Alliance Police Officer" (unit :name "Alliance Police Officer") "Alliance Scientist" (unit :name "Alliance Scientist") "Alliance Scout" (unit :name "Alliance Scout" :summary "* Alliance Scouts operate somewhat differently from the other divisions of the Alliance. Since Scouts must opearte on the edge of civilized space, the Scout Service values independence and resourcefulness. Its people are highly independent (some would say insubordinate) and are accustomed to doing a lot with a little. Scouts do not wear normally uniforms, even onboard ships and easily blend in with the frontier fringers. They operate with little funding or support and are experts at survival and mechancal engineering. * Reputation - Among the other divisions, the Scouts are seen as unprofessional cowboys, madmen, or criminals depending on who you talk to. The Scouts themselves admit to cases of all of these, and they proudly maintain that it takes a certain type to be a successful Scout. * Intelligence - Given the Scouts' deployment at the fringes of civilization, they often gain intelligence that the Intelligence Bureau would find difficult to obtain on their own. Officially, the Scout service shares all intelligence gathered with the Bureau. Unofficially, the Scouts do not like the way the Intelligence Bureau operates and rarely volunteers information. This hesitency, of course, makes the Bureau suspiscious. * Wartime - During war, the Scouts are called upon to perform skirmish and sabotage missions using their fast, light craft.") "Alliance Technician" (unit :name "Alliance Technician") "Alliance Trooper" (unit :name "Alliance Trooper") "Alliance Defense Pilot" (unit :name "Alliance Defense Pilot" :summary "* Planet-based spacefighter pilot. These fighters can only attain low-orbit, but they are relatively cheap to manufacture and easy to fly so they can be fielded in large numbers.") "Alliance Defense Trooper" (unit :name "Alliance Defense Trooper" :summary "* Planet-based military force. These warriors are trained to use the local terrain and defensive positions to repel invaders. Since defense forces are rarely needed, it is usually a cushy job. Therefore, they have a somewhate deserved reputation for being lazy and unprepared.") "Inquiry Light Recon ATV" (unit :name "Inquiry Light Recon ATV" :summary "* Wheeled * Open topped ATV with HMG and MRLx2." :speed "170kph" :crew "3" :mass "4tons") "Sepoy APC" (unit :name "Sepoy APC" :summary "* Wheeled" :speed "300kph" :crew "1+11" :mass "38tons") "Hunter AC Tank" (unit :name "Hunter AC Tank" :summary "* Air Cushioned * Pulse Laser * Gauss MG * MRL" :speed "45kph" :crew "6" :mass "210tons") "Siega Strider" (unit :name "Siega Strider" :summary "* Legged" :speed "200kph" :crew "1" :mass "60tons") "Striker Grav Tank" (unit :name "Striker Grav Tank" :summary "* 50MW Pulse Laser" :speed "480kph" :crew "3" :mass "522tons") "Tarsan Grav APC" (unit :name "Tarsan Grav APC" :speed "300kph" :crew "2+10" :mass "51tons") "Essor Recon Drone" (unit :name "Essor Recon Drone" :summary "* No Weapons" :speed "1000kph" :crew "0" :mass "4.3tons") "Princely Lord Attack Speeder" (unit :name "Princely Lord Attack Speeder" :summary "* Grav Flyer * Pulse Laser" :speed "960kph" :crew "2" :mass "171tons") "Alliance Exploration Ship" (unit :name "Alliance Exploration Ship" :summary "* SS Copernicus - Floating adrift in open space, the Copernicus is a ghost ship in more ways than one.") "Hellbore Missile" (unit :name "Hellbore Missile" :summary "* A giant missile designed to drill into a planet and detonate deep in the magma setting off massive volcanic eruptions across the world with the intention to make the world uninhabitable."))) "Azuriach Empire" (section :name "Azuriach Empire" :summary "History: * Exodus - After the first Exodus to space, the over-industrialized, pollution ridden Earth fell into a deep recession. The remaining population of Earth began to feel that their fellow humans had abandoned them to their fate and grew to resent their spacefaring kin. * Eugenics War - After the Eugenics War, Earth banned all genetic engineering including cloning and artificial life while the Colonials embraced these technologies for their very survival. Earth began to see the Colonials as a twisted offshoot of mankind that chose a sterile life in space surrounded by runaway technology instead of a wholesome life with earth, sky, and sea. * Azure Party - After the Eugenics War, the Earth moved toward a 'Pure Earth' platform combining a resurgence of religion with a return to a more natural, peaceful way of life, on Earth. A particularly militaristic wing of the the 'Pure Earth' movement became known as the Azure party due to the round blue patches they wore symbolizing the Earth. The Azures were experts at propaganda and found an easy scapecoat in the Colonials. As the global recession continued, the Azures influence over Earth politics increased. * United Earth Alliance (UEA) - After millenia of conflict, Earth united under a single banner, the United Earth Alliance (UEA). Its political platform was the 'Pure Earth' platform, without genetic engineering, without cloning, and with the UEA in control of the Solar System. The Colonials saw this for the power grab that it was and mocked this position as the 'Groundhog Movement'. * Solar Cold War - The UEA and the Colonials, especially the Jovians, fought a cold war for decades trying to gain the upper hand. The development of Exo-suits by the Jovian Confederation led to a new arms race between the Jovians and Earth. In the end, the strain on the Earth economy was too great, and the UEA became desparate. In order to maintain control, they declared martial law and began a military build up. This ultimately, forced the other Colonials to rally toward the Jovians or lose their sovereignty. * The Rock War - Earth's military might far exceeded the colonies, but their reach was limited to Earth's orbit. The Colonials had far more spaceships, but the vast majority of these were civilian ships. Ultimately, however, it was the UEA's unpopularity that was its downfall. Before the final battle, sabotage and poor maintenance had incapacitated half of the Earth fleet. When the final battle was fought, the Colonials used their superior numbers to engage the Earth fleet in high Earth orbit where Earth's gravity well restricted the UEA fleet's movements. Then the Colonials covertly captured the industrial Mass Drivers on the Moon and began railing rocks into the Earth fleet and unto Earth itself. After horrific loses on both sides, the Earth military staged a coup on Earth and immediately negotiated a cease fire. The UEA was disbanded and their leaders (largely Azures) were put on trial. * Terran Union - After the fall of the UEG, the Colonials created a new representative goverment with each colony, including Earth and Luna, as a state. Earth began rebuilding, but the scars of the war would take centuries to heal. * Colony Ships - After 50 years of peace, the colonization of the Solar System was moving along smoothly, so the Terrans began to look outward to the stars. New discoveries in propulsion made long-range probes and colony ships feasible, though their journeys were still measured in decades, so they would still be one-way missions. * First Contact - The Terrans had been searching the stars for extra-terrestrial life for hundreds of years, but they were not prepared to find it in their own backyard. A survey of Pluto uncovered an abandoned alien outpost. This was the Terrans' first proof of alien life, and it was decidedly malevolent. This refocused space exploration on the construction of military warships. 30 years later, a human colony vessel had its first face-to-face encounter with a space-faring, alien race, the Thranx. * Alliance - The Thranx were much more advanced than the Terrans, but fortunately they were also much more peaceful. The Thranx were part of a loose trade Alliance of races including the Blarads, Caitians, Saurians, and Vargr. The Terrans entered the Alliance and were able to purchase the secrets to FTL drives. With FTL, colonization of the stars began in earnest. Like the early American settlers, there were many willing to risk death for a chance at a new life. Large colony ships began radiating outward to nearby planets. Among these were a number of disgruntled Azures who were horrified at the sight of humans reduced to a third rate state in an alien dominated Alliance. Over the next decades, the Azures began settling in one region of stars distant from any alien races. * Azuriach Imperium - Over time, the Azures consolidated power in their sector of space. They secretly built a large military fleet, and by the time the Terran Union discovered them, the Azures were powerful enough to declare themselves the Azuriach Imperium. Officially, the larger Alliance considers the Azuriachs a human internal problem. Unofficially, the Alliance is concerned with the distinctly human-centric views of the Azuriachs and are not interested in the Azuriachs gaining power over the human worlds." :titles "Earth Empire" :unitmap (unitmap "Azure Imperial Legionnaire" (unit :name "Azure Imperial Legionnaire") "Azure Imperial Marine" (unit :name "Azure Imperial Marine") "Azure Imperial Pilot" (unit :name "Azure Imperial Pilot") "Azure Imperial Security Agent" (unit :name "Azure Imperial Security Agent") "Azure Imperial Security Officer" (unit :name "Azure Imperial Security Officer") "Trepida Light Grav Tank" (unit :name "Trepida Light Grav Tank" :summary "* Fusion Cannon" :speed "1000kph" :crew "2" :mass "110tons") "Invader Grav Tank" (unit :name "Invader Grav Tank" :summary "* Fusion Cannon" :speed "3640kph" :crew "4" :mass "152tons") "Vortex Land Carrier" (unit :name "Vortex Land Carrier" :summary "* These enormous vehicles are equivalent to a naval battleship/aircraft carrier but hovers over the ground using intense magnetic repulsion and massive hoverfans. * The area directly below the hull is exposed to lethal magnetic energy. * Fusion Cannon"))) "Galactic Trade Union" (section :name "Galactic Trade Union" :summary "* A powerful group of loosely affiliated mega-corporations that acts as the largest lobbying group in the Alliance. The Union has wields tremendous influence over the Alliance government and is essentially a shadow government itself. Though it wields tremendous power, there is intense disagreement how that power should be used with one group or another benefiting the most from every action taken. Conflict within the Union is subversive and bloody with many outside pawns being used including mercenaries and the Star Syndicate. * The Trade Union has no actual employees. Instead, the individual corporations act on its behalf either directly or through contractors. * Most smaller companies believe the Trade Union acts as a mafia by extorting money from its members for protection while leaning trade deals toward the core members and stifling the very competition they profess to uphold.") "Star Syndicate" (section :name "Star Syndicate" :summary "* The Syndicate is a loosely held criminal empire spread throughout the Alliance. It is a convenient tool of the mega corps and governments, so the Alliance never seems to make much progress against it." :unitmap (unitmap "Syndicate Black Marketeer" (unit :name "Syndicate Black Marketeer") "Syndiate Raider" (unit :name "Syndiate Raider" :summary "* Given the high value of starships and their goods, piracy is extremely profitable. The Alliance maintains a 'No-Tolerance/Shoot to Kill' policy for piracy, yet pirate ships and pirate outposts are frighteningly common. The [Azuriach Empire]'s totalitarian state has far fewer incidents of piracy, largely because the stolen goods are harder to sell."))) "Independent Terrans" (section :name "Independent Terrans" :unitmap (unitmap "Terran Bounty Hunter" (unit :name "Terran Bounty Hunter") "Terran Merchant Marine" (unit :name "Terran Merchant Marine") "Terran Mercenary" (unit :name "Terran Mercenary") "Terran Miner" (unit :name "Terran Miner") "Terran Physician" (unit :name "Terran Physician") "Terran Scientist" (unit :name "Terran Scientist") "Terran Technician" (unit :name "Terran Technician") "Corsair Motorcycle" (unit :name "Corsair Motorcycle" :summary "* Wheeled * Civilian Motorcycle" :speed "120kph" :crew "1" :mass "350kg") "Letra Ground Car" (unit :name "Letra Ground Car" :summary "* Wheeled * Civilian Automobile" :speed "80kph" :crew "1+4" :mass "4tons") "Shackleton Snow ATV" (unit :name "Shackleton Snow ATV" :summary "* Tracked * Easy to maintain snow ATV" :speed "70kph" :crew "1+3" :mass "8tons") "Rheena Passenger ACV" (unit :name "Rheena Passenger ACV" :summary "* Air Cushioned * Passenger Hovercraft" :speed "60kph" :crew "1+15" :mass "8tons") "Or-E-Cull ATV" (unit :name "Or-E-Cull ATV" :summary "* Tracked * High Speed ATV" :speed "175kph" :crew "1+5" :mass "10tons") "Surveyor Hover-Buggy" (unit :name "Surveyor Hover-Buggy" :summary "* Air Cushion * 1 Fixed LMG." :speed "45kph" :crew "1" :mass "13.7tons") "AVI Cargo ACV" (unit :name "AVI Cargo ACV" :summary "* Air Cushioned * Cargo Hovercraft" :speed "60kph" :crew "1+3" :mass "18tons") "Hugheston Wheeled Transport" (unit :name "Hugheston Wheeled Transport" :summary "* Wheeled * Cargo Transporter" :titles "Semi Truck" :speed "100kph" :crew "1+2" :mass "21tons") "Arctica Grav Transport" (unit :name "Arctica Grav Transport" :summary "* Grav * Self loading cargo transporter" :titles "Semi Truck" :speed "120kph" :crew "1+2" :mass "25tons") "Bundan Wheeled ATV" (unit :name "Bundan Wheeled ATV" :summary "* Wheeled * ATV" :speed "100kph" :crew "1+16" :mass "28tons") "Permax Tracked ATV" (unit :name "Permax Tracked ATV" :summary "* Tracked * ATV" :speed "80kph" :crew "1+16" :mass "47tons") "Cinto Construction Vehicle" (unit :name "Cinto Construction Vehicle" :summary "* Tracked * Bulldozer/Backhoe" :speed "75kph" :crew "1" :mass "48tons") "Tavee-Gho Hoveryacht" (unit :name "Tavee-Gho Hoveryacht" :summary "* Air Cushioned * Hovercraft" :speed "105kph" :crew "1+3" :mass "82tons") "Cetacean Dolphin Cycle" (unit :name "Cetacean Dolphin Cycle" :summary "* Underwater, Propelled by moving Fluke * Intended for fun in the sea. It can glide with the dolphins and communicate with them using recorded dolphin speech." :speed "50kph" :crew "1" :mass "75kg") "Hass Grav Minisub" (unit :name "Hass Grav Minisub" :summary "* Underwater" :speed "25kph" :crew "1+1" :mass "1tons") "Dashi Hydrofoil" (unit :name "Dashi Hydrofoil" :summary "* Hydrofoil, Underwater * Submerged: 25kph * Beam Laser" :speed "125kph" :crew "2" :mass "2tons") "Vieus Hydrofoil" (unit :name "Vieus Hydrofoil" :summary "* Hydrofoil * Pulse Laser" :speed "110kph" :crew "2" :mass "22tons") "Gasheda Undersea ATV" (unit :name "Gasheda Undersea ATV" :summary "* Tracked, Underwater" :speed "110kph" :crew "6" :mass "184tons") "Aquanaut Restaurant" (unit :name "Aquanaut Restaurant" :summary "* Tracked, Underwater * Undersea Restaurant" :speed "110kph" :crew "15+85" :mass "251tons") "Tiamat Mining Crawler" (unit :name "Tiamat Mining Crawler" :summary "* Tracked, Underwater * Self-contained undersea mining colony for 50. * Can stay 10km underwater for 3 to 6 months at a time." :speed "70kph" :crew "14+50" :mass "1000tons") "Timla Personal Floating Chair" (unit :name "Timla Personal Floating Chair" :summary "* Grav * Used for the luxury, the elderly or disabled, or for aliens with poor ground locomotion. * The floating chair normally just hovers over the ground, but it can slowly ascend if needed." :speed "30kph" :crew "1" :mass "100kg") "Peter Pan Child's Grav Chair" (unit :name "Peter Pan Child's Grav Chair" :summary "* Grav * Young passengers automatically are taken to their programmed destination anywhere in the world. * Computer will not allow reprogramming unless authorized by the parent." :speed "600kph" :crew "1" :mass "400kg") "Zeus Luxury Grav Chair" (unit :name "Zeus Luxury Grav Chair" :summary "* Grav * The ultimate in individual luxury transport. The autopilot allows the passengers to work, talk, or relax with a drink." :speed "300kph" :crew "1+1" :mass "480kg") "Swallow Flycycle" (unit :name "Swallow Flycycle" :summary "* Grav * Autopilot" :speed "300kph" :crew "1+1" :mass "1tons") "Venery Police Speeder" (unit :name "Venery Police Speeder" :summary "* Grav * Gauss MG" :speed "1080kph" :crew "1" :mass "1.2tons") "Strike It Rich Prospector Grav Bubble" (unit :name "Strike It Rich Prospector Grav Bubble" :summary "* Grav * Can manuever close to analyze samples with its robotic arm. The bubble is to be used near a base. A team usually drops off one crewman to dig while the other prospects for new sites." :speed "1600kph" :crew "1+1" :mass "1.5tons") "Planet Hopper Grav Car" (unit :name "Planet Hopper Grav Car" :summary "* Grav * Flying family-sized car can travel anywhere on a planet in under a day." :speed "1000kph" :crew "1+3" :mass "2.6tons") "Quest Air-Raft" (unit :name "Quest Air-Raft" :summary "* Grav" :speed "540kph" :crew "1+5" :mass "8.3tons") "Demeter Grav Farm Wagon" (unit :name "Demeter Grav Farm Wagon" :summary "* Grav * Grav farming equipment that does not disturb crops. * Robotic arms plant and harvest." :speed "100kph" :crew "3" :mass "11tons") "Lifesaver Grav Emergency Responder" (unit :name "Lifesaver Grav Emergency Responder" :summary "* Grav * Includes variety of sensors for detecting radiation leaks, trapped survivors, etc. * Fire retardant foam cannon" :speed "600kph" :crew "2+8" :mass "13tons") "Duone Rapid Speeder" (unit :name "Duone Rapid Speeder" :summary "* Grav * Extremely high-speed grav flyer." :speed "3840kph" :crew "1+3" :mass "14tons") "Wanderer Grav Airbus" (unit :name "Wanderer Grav Airbus" :summary "* Grav * Flying mass transit or tour bus can reach any location on the planet in under a day." :speed "1400kph" :crew "1+10" :mass "15tons") "Traveller Shuttle" (unit :name "Traveller Shuttle" :summary "* Grav, Suborbital" :speed "180kph" :crew "1+8" :mass "17tons") "Cloud Nine Grav Houseboat" (unit :name "Cloud Nine Grav Houseboat" :summary "* Grav * 3 Bedroom, 2 Bath, 1 Kitchen, 1 Living/Dining Room, 2 Office * Take a vacation or live in the sky. The Cloud Nine has fuel and supplies for a year without landing." :speed "300kph" :crew "1+10" :mass "20tons") "Athene Grav Lounge" (unit :name "Athene Grav Lounge" :summary "* Grav * Mobile lounge popular with private clubs, business executives, and negotiators." :speed "720kph" :crew "6+30" :mass "30tons") "Motherlode Grav Miner" (unit :name "Motherlode Grav Miner" :summary "* Grav * Mining Utility Vehicle" :speed "540kph" :crew "2+2" :mass "49tons") "Tachcel Grav Hyperliner" (unit :name "Tachcel Grav Hyperliner" :summary "* Grav, Suborbital * Speed: 6G * At maximum speed, can reach any location on a typical planet in under an hour." :speed "4200kph" :crew "2+72" :mass "50tons") "Jacques Grav Miner" (unit :name "Jacques Grav Miner" :summary "* Grav * Mining vehicle designed to locate, mine, and transport ore from a variety of environments. * Mining Laser" :speed "120kph" :crew "2+2" :mass "67tons") "Windrider Grav Weather Lab" (unit :name "Windrider Grav Weather Lab" :summary "* Grav * Floating meteorological laboratory" :speed "60kph" :crew "2+10" :mass "88tons") "Thorian Kur Repair Shop" (unit :name "Thorian Kur Repair Shop" :summary "* Grav * Flying repair platform" :speed "330kph" :crew "1+3" :mass "127tons") "Sans Souci Grav Yacht" (unit :name "Sans Souci Grav Yacht" :summary "* Grav * The ultimate millionaire's portable mansion. The interior has 14 staterooms and is custom designed to the owner's tastes. Some models include a swimming pool. * High tech armor and sensors." :speed "960kph" :crew "1+30" :mass "342tons") "Zeff Grav Cargo Transport" (unit :name "Zeff Grav Cargo Transport" :summary "* Grav * Heavy Cargo Transporter" :speed "720kph" :crew "1+1" :mass "500tons"))) :Aeodronian (section :name "Aeodronian" :summary "* The Aeodronians are a race of bipedal salamander-like humanoids. The salamanders are quite cunning and intelligent. The race as a whole is opposed to the Alliance. * The Aeodronian home world is a tropical paradise, lush and humid, possessing a variety of flora and fauna that covers 20% of the planet's surface area. The salamanders live in costal cities made of coral outcroppings (reefs) and carry on all industry in environmentally safe factories and other facilities. All food is taken from the natural bounty of the sea. For most materials, such as metals, alloys, and high-technology items, they trade with other races and worlds, rather than rape the bosom of their own planet. That which they cannot trade for, they take. * The Aeodronians have become scavengers and pillagers of the galaxy. They abhor the Alliance's method of colonial exploitation, and the salamanders are bitter enemies of its military. There is some hypocrisy in this statement, because salamander's are known to pillage and plunder Alliance worlds. Aeodronian raiding fleets harry convoys and supply routes, and attack worlds that the Aeodronidans see as being raped of their natural order." :titles "Salamanders") "Blarad Starkingdom" (section :name "Blarad Starkingdom" :titles "Bears, Ursoids") :Cizerack (section :name "Cizerack" :summary "* Description - A race of large, brown/blue/black cat/bear creatures. They are extremely fast and can able to achieve speeds of 40mph for short periods of time. Despite their size, they are strong climbers and swimmers. When necessary, they can walk erect, but they are clumsy on two feet. They possess excellent hearing and vision especially at night. They possess prehensile paws, with retractable fingers but have limited manual dexitery. They are stealthy stalkers and are adept at scouting, hunting, and ambushing. * Combat - Their melee prowess is legendary, but their paws make ranged weapons awkward, so instead they tend to mount smart weapons on their backs. They are also sometimes willing to allow small creatures (like Mazians) to ride on their backs. Cizerack culturally prefer close combat to cowardly ranged weapons, but they are gradually overcoming this predjudice. * History - The Cizerack evolved on a world with a few continents dominated by grassy plains and scrubland. Winters are harsh, and most animals including the Cizerack burrow into the ground and hibernate during the winter. There is a polar variant of the Cizerack that is adapted to the cold weather and does not usually hibernate. The Cizerack have long been at the top of the food chain, and have a long cultural history. They only recently developed technology in an effort to solve their over-population problem." :titles "Caitian, Felines" :unitmap (unitmap "Cizerack Warrior" (unit :name "Cizerack Warrior"))) :Chatilian (section :name "Chatilian" :reference "* I rather like the way his head exploded." :summary "* Description - The Chatilians are from the planet Chatil in the Fomalhaut star system. They are frail, delicate looking, greenish blue plant beings with thin bodies and large, bullet-shaped heads. Chatilians are herbivores. They have no real mouth, rather they possess facial slits through which they strain their food intake. Their arms and legs are like branches and roots which must be pruned to grow into useful limbs. When angered, Chatilians whine loudly, bug out their eyes, and drool yellow spit from their facial slits. This would be somewhat comical, except this is a sign that they are generating and then people start dying. * Telepathy - They can speak aloud with great difficulty, though they do not normally need to because their skulls are crowned with sensory nodes which allows them communicate telepathically among themselves. With focus, an empath also may read an unprotected mind in close proximity. * Psykokinesis - Although Empaths are innocuous looking, they are actually among the more dangerous and formidable opponents in the galaxy. Through the evolutionary process, they have developed psycho-kinetic power which allows them to harness and transmit psychic energy. This unusual ability is called Generating. Empaths employ psychic and illusionary attack forms. Advanced Chatilians can actually crush the minds of their enemies. * Personality - They are generally considered rude, peculiar, and annoying by other races. They are not overly fond of other races either. They intensely dislike any inconvenience including bad weather. A large part of their scientific development has been toward atmospheric control and terraforming. Chatilians like water but hate any kind of physical exertion. They are sensitive to everything, so noise, bright lights, gaudy art, hot weather, cold weather, dumb people, etc, etc. all irriate the sedate intellectuals to no end. * Colonies - Chatilian buildings are strange tiered affairs with rooms and floors of different sizes, terraces and skylights everywhere, and stark blank surfaces. The architecture is similar to adobe cities and Mediterraean beach communities. Chatilian cities are sprawling low-lying residential areas with all industry and commerical operations underground. Trees and plants are allowed to grow naturally throughout the cities. The underground is a maze of indirect passages and oddly shaped rooms. Tourist often get lost which the Chatilians attribute to their limited mental capacity. * History - The Chatilians homeworld is closer to its star than Earth. It is hot and humid year round, and its 4 moons reflect much light even at night. In this world, mobile plant life evolved instead of animal life. Though all Chatilians speak telepathically, the ability to generate only occurs in 1% of the populace. The ability or inability to generate has created 2 classes and numerous, bloody civil wars with one side or the other taking control. The current royal family can generate and their power is buffered by a representative parliament. This arrangement has lasted for 500 years, but there always remains a risk of civil war." :titles "Asparagus Men" :unitmap (unitmap "Chatilian Empath" (unit :name "Chatilian Empath"))) "Cybernetically Enhanced" (section :name "Cybernetically Enhanced" :titles "Cyber, Cyborg, Cyman, Simon (derogatory)") :Eridani (section :name "Eridani" :summary "* The ultimate warrior race. The methane breathing Eridani are the epitome of a combat tacticians. They possesses supreme agility, exceptional willpower, and are quite cunning. * Physiology - Eridani are tri-sexual creatures with males and females fertilizing and a fat creature called a Nog that carries young to term in a pouch similar to a kangaroo. Males and females have few gender-based role differences while the Nogs are largely helpless and fiercely protected. * History - The Eridani have a long history of conflict and conquest among themselves before uniting to bring their conquests to the stars. They are not interested in statecraft, so conquered worlds were largely left to their own devices besides helping pay for the eternal war effort. Eventually, they encountered a trecherous enemy in the Phentari squids. This enemy was able to lure the Eridani fleet into an all out attack while launching a covert attack against the Eridani homeworld reducing it to rubble. The Eridani empire was shattered and they can never live down the humiliating defeat. They now maintain a blood feud with all Phentari." :unitmap (unitmap "Eridani Swordsaint" (unit :name "Eridani Swordsaint" :summary "* Certain Eridani warriors are chosen at birth to fulfill the honorable status of Mokaba Datu, (Wisdom Warrior). Under the tutelage of the Buddon Priest, the young Mokaba Datu learns the basic tactics of honorable survival. * A swordsaint warrior must be willing to sacrifice emotion for the superior consciousness of objective thought. Even in a berserk status, an Swordsaint retains complete control and suffers no berserk penalties." :titles "Mokaba Datu, Wisdom Warrior") "Eridani Warrior" (unit :name "Eridani Warrior" :summary "* This supreme warrior race specializes in combat skills, most notably archaic hand weapons. Every warrior is allowed to carry an ornamental archaic hand weapon of his choice wherever he goes within Alliance territory. * Eridani warriors study Kaush-mukal (The study of the Inner Self). He is taught the fundamentals of archaic hand weapons combat, drilling every day for hours, until he passes a fundamental competence test in his chosen weapon. Once he has mastered the fundamentals, he begins the arduous task of finding Inner Self. * A warrior has a duty, unselfish and detached. It is to wage battle for the honor of the race, and in the heartfelt throes of battle come to understand the tentative existence of the self. Those unworthy of combat will inevitably be disposed of. Such is the fundamental construct of the evolution process. Eventually one must find the door to everlasting peace. But the path to tranquility starts in the chaos of the battlefield."))) :Mazian (section :name "Mazian" :summary "* The Mazian is an amorphous being, able to change shape to resemble other objects. It is normally a gel-like amorphous being, each cell existing as a separate entity and yet working in a harmonious symbiotic relation with the other cells around it. The Mazian has no central nervous system, rather the outer layer of skin is covered with small nodes that allow the Mazian to sense ground vibrations. The nodes also make Mazians vulnerable to loud noises and sonics. It is an asexual being that reproduces through budding every ten years. It eats by absorbing liquids into its body and the Mazian can absorb small objects for temporary storage. * Personality - Mazians are very friendly creatures with no sense of personal space. They hang around in huge piles and are only truly happy when touching something or someone. As a colony creature, Mazians lack a sense of individuality. They do not understand personal property or war as they believe in sharing everything. Many other races find this perspective to be naive. The tactile nature of the Mazians combined with their selfless nature make them very popular companions and lovers. They have formed a close bond with the Cizerak despite the fact that their races have only recently encountered one another. Cizeraks have been known to carry Mazian companions on their backs. * Movement - Mazians normally travel low to the ground, sliding rapidly over surfaces. They are also fully amphibious and move gracefully like an eel or a squid. Mazians can also burrow through loose earth and can slide through narrow tunnels and pipes with no feeling of claustrophobia. * Communication - Mazians normally communicate by touch but may also make coded thumping noises through the ground or grunting noises in the water. To speak with other races, they use voice synthesizers. * Senses - Mazians cannot see, but have evolved a complex form of sonar which allows them to distinguish shapes. They have a fantastic sense of smell, able to detect residual odors better than a bloodhound. Their sense of taste is so good that they can use it to distinguish the dyes used in different colors and can use this ability to read by touch. Mazians have developed an ocular device that they can use to see as other creatures do. * Replication - The Mazian's ability to change it's form makes it the ultimate espionage/infiltration specialist. As the Mazian learns to control the cell metamorphoses, its chance to accurately duplicate something increases. At high levels, a Mazian can replicate a humanoid form. When attempting to replicate, the Mazian flows over an object, internally records the physical matrix, then copies it. Mazians often pay handsome amounts of money for internal skeletons to aid them in replicating bipedal and quadrapedal forms. * Weaknesses - Mazians jelly-like form is sensitive to sonics and dessicants. They are vulnerable to the drying effects of heat and cold, but their predominatly liquid form does not catch fire easily." :titles "Blob") :Mutazchan (section :name "Mutazchan" :summary "* The Mutzachan Energy Controller is one of the most powerful of all the known races. They can manipulate energy through their body to generate tremendous, destructive power. Mutzachan love the power of raw energy. They feel that energy must fill its potential and dislike the storage of energy. * Description - Mutzachans are indigenous to the planet Trishmag of the Cygni-A star system. They are small, bipedal humanoids, with large heads and large pale green eyes. They are by far the most intellectually advanced race in the known galaxies. Their brains have almost twice the convoluted surface area of human brains. * Physiology - Their high intellect and technology have left them with a distain for physical labor and consequently their physiological has suffered leaving them physically weak and easily tired. Their constitution is also weak leaving them unusally vulnerable to disease and infection. The entire Mutzachan population is less than 400 million and their culture has almost been eradicated twice, due to plague. Mutzachan have a very low fertility rate, with the females bearing young only once every 100 years. The average life expectancy for a Mutzachan is about 2,000 years. * Psychology - Mutzachan pride themselves on making decisions rationally instead of emotionally. This is not to say that the Mutachan are not emotional, but they are ususally able to overcome their emotions. Mutachan are highly ego driven and are very fond of titles and have little patience for insults. Though they are generally consistent and fair to others, they are also famous for being coldhearted and ruthless when the need arises. * History - The Mutzachan are an old race, with a history spanning 40,000 years. They have observed the development of the other races without interfering (much). Their sun is old and has been slowly, expelling more radiation over the last million years. Life on their world evolved to not only become resistant to the radiation but to feed on it in a process similar to photosynthesis. A 1000 years ago, the Mutzachans determined that their sun would go nova, destroying their home world. Since then, they have pursued 'The Great Purpose' which is to prevent or mitigate this catastrophe. The Great Purpose has also spawned dangerous nilhilist cults that believe that the Mutzachans do not deserve to continue and should embrace their final destruction in the ultimate nuclear cataclysm. * Politics - Their keen intellects and strategic thinking have risen many of their kind to high political office. Most of the high ranking members of the Alliance are either Replicants or Mutzachan. No one really trust the Mutzachan, but then again no one really trusts anybody and the Mutachan are probably better than most." :titles "Melon Head, Grays, IRSOL") :Phentari (section :name "Phentari" :summary "* The Phentari are a warlike race of bipedal, squid-like beings. Because of their callous and trecherous natures, they are the most mistrusted, and disliked of all the known, intelligent races. Phentari have a notorious reputation as skilled bounty hunters and assassins. * Physiology - Phentari are indigenous to the methane planet Phena in the Tau Ceti star system. They have four sinuous arms, each of which is capable of independent action. This allows the squid to target and fire multiple weapons, or perform multiple independent actions simultaneously. When using edged weapons, the squid attacks like a chain saw. Their tentacles also allow the Phentari to climb quite well. Phentari possess stump like legs which offer little balance. They have long since adopted prosthetic gear to facilitate running. Phena has a 20% methane atmosphere and like the Eridani, the Phentari must wear an atmospheric processor when operating outside of a methane environment. * Procreation - Phentari mate every 4 years. After mating, the female attempts to hunt and kill the male. Males who are not resourceful enough to escape have fulfilled their mating potential and are no longer worthy of further mating. The female carries the fertilized eggs for 3 months and then lays a clutch of 3-4 eggs. After egg laying, the female buries the eggs in the ground and then abandons them. Phentari young must fend for themselves after birth, often feeding off of their siblings. Until they mature, Phentari young hide in the shadows and develop their survival and hunting skills. It is not unknown for a group of young to ambush and slay an adult. Of course, when this happens, other Phentari accept that the foolish adult deserved his fate. * Personality - Phentari are heartless, selfish creatures who hold all weaker beings in contempt. They use coercion and threats instead of persuation. Phentari are very proud of their kills and will wear jewelry that displays their kill count. They are also fond of decorating their abodes with the skulls of their victims. * Skills - Phentari values weapons of all sorts including weapons that other races look down upon such as poisons, diseases, and acids. * Government - The Phentari have only had military governments ruled by a council of generals with no individual given absolute power. * History - The Phentari have a long, bloody history of civil wars. Since their disasterous war with the Eridani, they have managed to join together against a common foe. They maintain a mutual hatred of the Eridani who seem to want to kill Phentari on sight." :titles "Cold Death, Demon Spawn, Grim Reaper, Soul Sucker") :Pythos (section :name "Pythos" :summary "* The Pythons are a pair of powerful, lizard races indigenous to the planets Pythos in the Floridian star system. * Python Lizards - Python Lizards are aquatic beings, dwelling in the great swamp-like inland seas that cover much of the surface of their home planet. They don't hear sounds as humans do, but rather sense vibrations through their skin. The lizards can dive to depths of 200m and are capable of holding their breath for up to 10 minutes. The drawback is that Python Lizards are sensitive to dry environments and susceptible to cold. When the temperature drops below zero degrees celsius, Pythons usually crawl in some comfortable place and fall asleep. Python Lizards can sense heat sources out to 100m. The lizards are generally less intelligent than their galactic counterparts and have none of their own technology to speak of. They are, however, much more intelligent than their land-based cousins the Rams. * Ram Pythons - Unlike their aquatic cousins, Ram Pythons live on land. They are massively powerful and overwhelm even the Python Lizards in combat. However, their intelligence is extremely limited, and they are barely able to be taught how to use modern weaponry. * Combat - These great reptiles are the backbone of assault units in the Alliance Marines, proud and defiant warriors whose lifelong ambition is to fight the ultimate battle. The Python is a veritable fighting machine. Unarmed, it attacks with both claws, a vicious bite, and its long prehensile tail. They have a thick, scaly hide that acts as natural leather armor. * Personality - These prehistoric dinosaurs are overtly aggressive. The vast majority of Pythons follow a strict code of honor and adamantly adhere to the precepts of law and order. * History - The Lizards and Rams are tribal creatures who have fought tribal conflicts for tens of thousands of years. Thir technology was limited to spears and stone axes until the Cizerak sent a diplomatic envoy to the Python Lizards. The Lizards suspected trickery and killed the envoy sparking a punitive attack from the Cizerak. The Lizards and Rams were forced into a humiliating surrender after devastating losses from the Cizerak's cowardly orbital bombardment. The Pythos have not forgiven the Cizerak and will never trust them. Since then, the Alliance has established peaceful relations with the Pythos and have recruited many into Alliance police and military forces." :titles "Lizards" :unitmap (unitmap "Python Lizard" (unit :name "Python Lizard") "Ram Python" (unit :name "Ram Python"))) :Reavers (section :name "Reavers" :reference "* If they take the ship, they'll rape us to death, eat our flesh, and sew our skins into their clothing. And, if we're very, very lucky, they'll do it in that order. - Zoë Alleyne Washburne, Firefly" :summary "* Showing no care for life, they are driven by an insane, homicidal and xenophobic aggression that manifests in the cannibalism, rape, and torture that they visit upon any unfortunate enough to come across them. * Appearance - They deliberately gash and cut their own flesh. Barbaric piercings and random bits of metal shoved into their flesh are common, giving them a ghastly and corpse-like air. * Abilities - They seem no physically stronger or tougher than normal humans merely inured to pain to the point where they care nothing for their injuries or indeed their own lives, and more willing to push their bodies to the extreme because of their madness. * Intelligence - Exactly how sentient individual Reavers are remains an open question. Although they clearly must have some retention of any original knowledge prior to their madness (as evidenced by their command of starships and weapons) Reavers are as without fear as they are without mercy, * Reavers are believed by most to be men that went insane at the edge of space and became savage. They stared into the void beyond and became what they saw: nothing. * Reavers originated from the planet Miranda. The Alliance had been testing behavioral modification on this planet through the chemical G-23 Paxilon Hydrochlorate ([PAX]), administered through the air recycling systems. The chemical was designed to weed out aggression and anger. The ultimate result was that 99.9% of the population stopped going to work, talking to each other, and eventually stopped moving, eating or breeding, and therefore died. However, the remaining tenth of a percent of the population had the opposite reaction, with their aggression and primal instincts boosted beyond simple madness into murderous rage, sadism and xenophobia." :itemmap (itemmap :Reaver (item :name "Reaver"))) :Replicant (section :name "Replicant" :reference "* We are merely synthetic products, nothing more than elegant looking robots. - Unknown Replicant philosopher" :summary "* Replicants are genetically engineered from scratch to be mentally and physically superior to ordinary humans even genetically enhanced onces. However, they remain physically inferior to full [Android]s, so some consider their production irrelevant. * Legal status - They are genetically predisposed to be obedient, and their legal status varies from system to system. The Azures consider them abominations that must be destroyed. In the Alliance, Replicants are generally considered to be more trustworthy than real people, so they have risen to the top levels of government including the current Alliance President. * All Replicants are branded with a production number on their scalp at birth. * Psychology - Many Replicants are jealous of their fellow Humans, for they don't have an ancestry or heritage. In many ways they are less than orphans, for Replicants are grown in accelerated biochemical environment tanks. Hence, many Replicants suffer from psychological disorders. * Weaknesses - The danger of a Replicant revolution has always created controversy among ordinary people. The solution was to limit their lifespan to 10 years. They have also been created with a built-in weakness to a number of military chemicals, so that the military would always have a potent weapon against them." :titles "Genetic Human, Genman, Gen-human, Numan, Bioman, Bioroid, Gene (derogatory), Skin Job (derogatory), Newman (derogatory)") :Synthetics (section :name "Synthetics" :reference "* It would appear that the plasma pulse has destroyed a large portion of my lower body. Repairs will be necessary. - Battlelords * I can assist your employees. I can make your organization more efficient. I can carry out directives that my human counterparts might find ... distressing or unethical - David 8, Prometheus * David, what makes you sad? War. Poverty. Cruelty. Unecessary violence. I understand human emotions, although I do not feel them myself. - David 8, Prometheus" :summary "* Androids are robots designed to pass as living beings. Since specialized robots are best suited to most menial labor, Androids are generally assigned to duties where a specialized robot would not be appropriate. They are regularly assigned to starship crews, and some ships have only android crews. * Androids have many advantages over their living counterparts. They are extremely strong and fast, and have the lightning-quick processing abilities of a computer. They enjoy the best of both worlds where skills are concerned. They can be programmed with necessary skills as well as learn new skills as they are exposed to them in the outside world. Their synthetic skin is slightly tougher than a human's, and the android can take much more damage and still remain functional. Broken parts can simply be replaced, though the individual personality will be lost if the memory banks and backup are destroyed." :titles "Android, Artifical Person, Arty (derogatory), Andy/Andi (derogatory), Syn (derogatory), Synoman/Cinnoman (derogatory), Synthetic, Synthoid") "Thranx Collective" (section :name "Thranx Collective" :summary "* Description - Visually, the thranx are an insectoid race, about 1.5 meters long when on all six legs. They look roughly like very large praying mantises. Chitin color differs between males and females, being blue for the males and aquamarine for females, deepening to purple in old age. Thranx also possess vestigial double sets of wings, ritually removed after mating. The head is valentine-shaped, with large, compound golden eyes sometimes banded with red. They have four pairs of appendages; two truhands, four trulegs, and a set of intermediaries that can function as an additional pair of arms or legs. Like insects, they have no lungs and breathe through a series of openings at about waist level. * Communication - The species communicates with a complex language consisting of clicks and whistles. * Weaknesses - Thranx are unsuited to water and most fear it; they are not naturally buoyant and because they breathe out of their waists, any water that reaches to this level can drown them." :titles "Thraxis" :unitmap (unitmap "Thranx Navigator" (unit :name "Thranx Navigator"))) :Transhuman (section :name "Transhuman" :summary "* Genetically engineered superbeings." :titles "Trueman, Truman (derogatory)") "Vargr Mercantile League" (section :name "Vargr Mercantile League" :summary "* Description - Vargr are a bipedal, carnivorous race with strong canine/lupine characteristics. They are short by human standards and are not physically imposing. * The Vargr are cunning merchants. * Politics - The Vargr lack governmental structures. Mega-corporations operate entire cities and colonies, buy and selling them as a package. The corporation operating a location sub-contracts out all major services, and within small companies grow in symbiosis with the corporation. Vargr corporations believe in constant competition, so they are careful to make sure that their rivals remain healthy. This generosity to ones rivals is seen as peculiar to other races, but the Vargr have suffered through the devastating stagnation that monopolies produce and recoil at any tendency to recreate those dark days." :titles "Canines, Dogs" :unitmap (unitmap "Vargr Merchant" (unit :name "Vargr Merchant") "Vargr Buccaneer Grav Platform" (unit :name "Vargr Buccaneer Grav Platform" :summary "* High speed, open topped, gravity cycle shaped like a cylinder." :speed "1000kph" :crew "1" :mass "1.4tons"))) :Virtuals (section :name "Virtuals" :summary "* Beings that live partially or completely in the virtual world." :titles "Vrman, Verman, Vermin (derogatory)") "Zen Rigeln" (section :name "Zen Rigeln" :summary "* The Zen Rigeln are the most beloved race of the Galactic Alliance. They possess the power of healing and are much sought after as battlefield medical technicians and as domestic doctors. They hold life in the highest regard, abstaining from violence unless absolutely necessary. * Appearance - Zen have a striking appearance with a dark blue/black skull-like head and colorful, ornate robes. Zen healers always wear the colors of their current power on their clothing. * Politics - The Zen see the Alliance as far less noble than it claims. Most Zen feel that they must shepard the Alliance to be a better organization, while others see the Alliance as an evil empire and work for the Rebels in order to overthrow it. The Zen have no known enemies except their own Anarchs. * Healing - All Zen have amazing recuperative powers. Through intense training, some have gained the ability to share their healing with others." :titles "Skulls" :unitmap (unitmap "Zen Rigeln Anarch" (unit :name "Zen Rigeln Anarch" :summary "* Anarchs are a small sect of Zen that turned their back on the Zen philosophy of peace and moderation. Instead, they believe that the Zen must face the other races on their own terms: with strength. Anarchs are naturally seen as dangerous rebels and terrorists by the Zen government and populace. Captured Anarchs should expect life imprisonment. * Disruption - Through skin to skin contact, a Zen Anarch may link his/her own body with another person and disrupt the bodily functions of the target. Pain, nausea, and heart failure are only a few of the effects that a skilled Anarch can inflict.") "Zen Rigeln Healer" (unit :name "Zen Rigeln Healer" :summary "* Healing - Through skin to skin contact, a Zen Healer may link his/her own body with an injured person and share his/her healing ability. At high levels of proficiency, the Zen can perform incredible feats such as brain surgery."))) "Interstellar Vehicles" (section :name "Interstellar Vehicles" :unitmap (unitmap "Islander Star Sloop" (unit :name "Islander Star Sloop" :summary "* The Islander is the smallest class merchant starship commonly available. It can carry 30tons of cargo, 4 low passage passengers, and 10 coldsleep bays. * 1x Light Particle Cannon * 6x Light Startorpedoes * The Islander has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "125tons") "Deep Space Probe" (unit :name "Deep Space Probe") "Corsair Star Privateer" (unit :name "Corsair Star Privateer" :summary "* The Starfarer is a small merchant starship designed for dangerous courier duty. As such, it has reduced cargo capacity and increased armor, and weapons. Its high firepower makes it popular among smugglers and pirates, though its high price means that few of these are procured through normal channels. * 50tons of cargo * 6 crew * 10 low passage passengers * 10 coldsleep bays. * 4x Medium Particle Cannon * 6x Light Startorpedoes * The Banner has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "250tons") "Valkyrie Patrol Star Cruiser" (unit :name "Valkyrie Patrol Star Cruiser" :summary "* The Valkyrie is a long range cruiser designed for planetary defense. * The Valkyrie acts as a mothership for up to 4 Nike class frigates that it carries and services. * 600tons cargo * 80 Crew * 60 low passage passengers * 20 coldsleep bays. * 8x Heavy Particle Cannon * 12x Light Particle Cannon * 6x Heavy Startorpedoes" :mass "12500tons") "Nike Patrol Space Frigate" (unit :name "Nike Patrol Space Frigate" :summary "* The Nike is a short range frigate designed for planetary defense. As a planetary defense ship it is highly maneuverable and carries a heavy weapons load for a small ship. * The Nike is transported longer distances by the larger Nemesis class. * 30tons cargo * 4 Low Passage passengers * 10 coldsleep bays. * 2x Medium Particle Cannon * 6x Light Particle Cannon * 6x Medium Startorpedoes * 10x Heavy Startorpedoes" :mass "375tons") "Oliphant Luxury Starliner" (unit :name "Oliphant Luxury Starliner" :summary "* 600 High Passage Accommations * 1200 Medium Passage Accommations * 2400 Low Passage Accommations * 1000 Coldsleep berths" :mass "75000tons") "Space Cutter" (unit :name "Space Cutter" :summary "* Larger than the Pinnacle, the Cutter can travel back and forth from a planet to its moon." :mass "60tons") "Space Lander" (unit :name "Space Lander" :summary "* Larger than the Cutter, the Lander can travel back and forth from a planet to its moon and is used to haul heavy equipment or passengers. In combat, the Lander is the prefered method to deploy infantry and tanks after a marine orbital halo drop." :mass "200tons") "Space Pinnacle" (unit :name "Space Pinnacle" :summary "* Larger than the Shuttlecraft, the Pinnacle can travel from orbit to a planet's moon and return." :mass "30tons") "Space Shuttlecraft" (unit :name "Space Shuttlecraft" :summary "* The shuttlecraft is the smallest of the ship's boats. It is capable of orbital travel to shuttle small complements of crew and cargo planetside." :titles "Launch" :mass "10tons") "Star Colony Ship" (unit :name "Star Colony Ship") "Sub-light Sleeper Ship - Ark" (unit :name "Sub-light Sleeper Ship - Ark") "Zephyr Startransport" (unit :name "Zephyr Startransport" :summary "* The Zephyr is a small merchant starship designed for comfortable passenger duty along major trade routs. As such, it has reduced cargo capacity and increased armor, and weapons. Its high firepower makes it popular among smugglers and pirates, though its high price means that few of these are procured through normal channels. * 75tons cargo * 6 crew * 10 Medium Passage Accommations * 30 Low Passage Accommations * 20 Coldsleep berths * 2x Light Particle Cannon * 6x Light Startorpedoes * The Banner has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "300tons")))))) (func chapter_star_trek : base/chapter (chapter :name "Star Trek" :sectionmap (sectionmap "Sci-Fi Equipment" (section :name "Sci-Fi Equipment" :itemmap (itemmap :Communicator (item :name "Communicator") :Transporter (item :name "Transporter" :image "StarTrek/Transporter.jpg") :Tricorder (item :name "Tricorder" :image "StarTrek/Tricorder.jpg"))) "Sci-Fi Weapons" (section :name "Sci-Fi Weapons" :itemmap (itemmap "Anti-Proton Beam" (item :name "Anti-Proton Beam" :image "StarTrek/AntiProtonBeam.jpg" :reference "It was pure Anti-Proton...Absolutely pure! - Commodore Matt Decker, Star Trek") "Cloaking Device" (item :name "Cloaking Device" :image "StarTrek/CloakingDevice.jpg") "Disruptor Bank" (item :name "Disruptor Bank" :image "StarTrek/DisruptorBank.jpg") "Hand Phaser" (item :name "Hand Phaser" :image "StarTrek/HandPhaser.jpg" :summary "The hand phaser is actually a Phaser II with a Phaser I embedded inside. The Phaser I has the same abilities but suffers from reduced range and limited shots. * Stun - .3J * Kill * Heat * Disintegrate") "Phaser Array" (item :name "Phaser Array" :image "StarTrek/PhaserBank.jpg" :reference "http://www.ditl.org/index.php?daymain=/pagarticle.php?29" :energy "68PJ" :range "150Mm") "Photon Torpedo" (item :name "Photon Torpedo" :image "StarTrek/PhotonTorpedo.png" :reference "Photon Torpedo...Away! - Chekov, Star Trek The Motion Picture" :summary "Photon torpedos carry 1.5kg of anti-matter (64 megatons) at up to .9c using limited warp drives." :energy "100PJ"))) :Federation (section :name "Federation" :unitmap (unitmap "Federation Shuttlecraft" (unit :name "Federation Shuttlecraft") "USS Enterprise (Constitution Class)" (unit :name "USS Enterprise (Constitution Class)" :image "StarTrek/Federation_Enterprise.png" :titles "NCC-1701" :classification "Hvy. Spacecraft" :mass "200ktons" :length "304m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Phaser Array" (unititem :name "Phaser Array") "Photon Torpedo" (unititem :name "Photon Torpedo"))))) "USS Reliant (Avenger Class)" (unit :name "USS Reliant (Avenger Class)" :image "StarTrek/Federation_Reliant.png" :summary "A Frigate is a ship of similar firepower to a Heavy cruiser but has fewer research facilities, require less crew, and has more limited endurance." :classification "Hvy. Spacecraft" :mass "165ktons" :length "236m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Phaser Array" (unititem :name "Phaser Array") "Photon Torpedo" (unititem :name "Photon Torpedo" :facing "Fx2, Bx2"))))))) "Alien Races" (section :name "Alien Races" :unitmap (unitmap "Borg Cube" (unit :name "Borg Cube" :image "StarTrek/Borg_Cube.png" :reference "We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile. - The Borg, Star Trek First Contact" :crew "130000" :mass "90Mtons" :length "3km" :unitpowermap (unitpowermap :Shielding (unitpower :name "Shielding" :summary "Adaptive Shielding total capacity 5,850,900TJ")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Total output 7,500,000TW" :level "4"))) "Borg Drone" (unit :name "Borg Drone" :image "StarTrek/Borg_Drone.png" :reference "The Borg were possibly created by the alien probe V'Ger to seek 'all that is knowable' and return to its creator.") "Doomsday Machine" (unit :name "Doomsday Machine" :image "StarTrek/DoomsdayMachine.png" :reference "Believed to have originated as an ancient race's last resort weapon against the Borg. Its basic design - destroy planets already assimilated by the Borg for use as fuel - coupled with an indestructible neutronium hull and antiproton beam (against which there was little or no defense), made it an ideal weapon against the Borg." :summary "* Maximum Speed: Warp 4 * Tractor Beam * Dampening Field * Can consume a planet in a day" :titles "Planet Killer" :classification "Hvy. Spacecraft" :mass "4x10^23tons" :length "2.7km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "Solid Neutronium - Hyper Dense Neutron Star Material")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Anti-Proton Beam" (unititem :name "Anti-Proton Beam"))))) "Klingon Bird of Prey" (unit :name "Klingon Bird of Prey" :image "StarTrek/Klingon_BirdOfPrey.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding") :Weaponry (unitpower :name "Weaponry" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo"))) :Invisibility (unitpower :name "Invisibility" :unititemmap (unititemmap "Cloaking Device" (unititem :name "Cloaking Device")))) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "Klingon Cruiser" (unit :name "Klingon Cruiser" :image "StarTrek/Klingon_Cruiser.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding") :Weaponry (unitpower :name "Weaponry" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo")))) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5"))) "Klingon Warrior" (unit :name "Klingon Warrior" :image "StarTrek/Klingon_Warrior.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))) "Nomad Probe" (unit :name "Nomad Probe" :image "StarTrek/Nomad.png" :reference "* Error! Error!...Faulty! Faulty! Must sterilize imperfection! - STER-I-LIZE! - Nomad, Star Trek * Nomad - See the universe. Meet interesting people...and kill them. - Motivational Poster Parody") "Romulan Centurion" (unit :name "Romulan Centurion" :image "StarTrek/Romulan_Centurion.png") "Romulan Warbird" (unit :name "Romulan Warbird" :image "StarTrek/Romulan_Warbird.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo"))))) "Species 8472" (unit :name "Species 8472" :image "StarTrek/Species8472.png") :V'Ger (unit :name "V'Ger" :image "StarTrek/VoyagerVI.png" :reference "Voyager VI - Tell Nomad I'm going to kick his ass. - Motivational Poster Parody" :titles "Voyager VI" :length "98km")))))) (func chapter_star_wars : base/chapter (chapter :name "Star Wars" :sectionmap (sectionmap "Star Wars Equipment" (section :name "Star Wars Equipment" :reference "http://www.stardestroyer.net/tlc/Power/index.html" :itemmap (itemmap "Blaster Pistol" (item :name "Blaster Pistol" :image "StarWars/BlasterPistol.jpg" :reference "Hokey religions and ancient weapons are no match for a good blaster at your side, kid. - Han Solo, Star Wars") "Blaster Rifle" (item :name "Blaster Rifle" :image "StarWars/BlasterRifle.jpg") "Ion Blaster" (item :name "Ion Blaster" :image "StarWars/IonBlaster.jpg" :summary "* Ion blasters, or ionization blasters, were any handheld weapons that fired ion energy instead of blaster bolts. They were commonly used in response to droids and other technology on the battlefield. * [Hit]: [Stun] only. +1 [Shield Damage].") "Ion Cannon" (item :name "Ion Cannon") :Lightsaber (item :name "Lightsaber" :image "StarWars/Lightsaber.png" :reference "This is the weapon of a Jedi Knight. Not as clumsy or as random as a blaster. An elegant weapon for a more civilized age. - Ben Kenobi, Star Wars" :summary "It is a blade of pure plasma energy suspended in a force containment field that keeps individuals from feeling the plasma's heat. Other Electromagnetic energy fields and coherent energy are repelled by lightsabers' arcs. These include most force fields, blaster bolts, and other lightsaber blades.") :Turbolaser (item :name "Turbolaser" :summary "1kton TNT" :energy "4TJ") "Turbolaser Turret" (item :name "Turbolaser Turret" :image "StarWars/TurbolaserTurret.jpg" :energy "30TJ") "Heavy Turbolaser Turret" (item :name "Heavy Turbolaser Turret" :image "StarWars/PlanetaryTurbolaser.jpg" :energy "250TJ") "Heavy Ion Cannon" (item :name "Heavy Ion Cannon" :image "StarWars/PlanetaryIonCannon.jpg" :energy "250TJ") "Tractor Beam" (item :name "Tractor Beam") "Proton Torpedo" (item :name "Proton Torpedo" :image "StarWars/ProtonTorpedo.jpg" :summary "1 Kiloton to Teratons." :energy "40TJ") "Shield Generator" (item :name "Shield Generator" :image "StarWars/ShieldGenerator.jpg") :Superlaser (item :name "Superlaser" :image "StarWars/DeathStarSuperlaser.jpg" :reference "The most basic consideration pointing towards some kind of superphysics is the magnitude of the device's energy output. The minimum necessary magitude of the blast that shattered Alderaan is roughly ten thousand times what would be released if the entire mass of the battle station's machinery was annihilated with an equivalent amount of antimatter. - http://www.theforce.net/swtc/ds/index.html" :energy "1x10^32J"))) "Star Wars Droids" (section :name "Star Wars Droids" :unitmap (unitmap :C3PO (unit :name "C3PO") :R2-D2 (unit :name "R2-D2"))) "Star Wars Republic" (section :name "Star Wars Republic" :unitmap (unitmap "Ahsoka Tano" (unit :name "Ahsoka Tano" :image "StarWars/Republic_AhsokaTano.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Anakin Skywalker" (unit :name "Anakin Skywalker" :image "StarWars/Republic_AnakinSkywalker.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Clone Trooper" (unit :name "Clone Trooper" :image "StarWars/Republic_CloneTrooper.png") "Mace Windu" (unit :name "Mace Windu" :image "StarWars/Republic_MaceWindu.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Obi-Wan Kenobi" (unit :name "Obi-Wan Kenobi" :image "StarWars/Republic_ObiWanKenobi.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Padme Amidala" (unit :name "Padme Amidala" :image "StarWars/Republic_PadmeAmidala.png") "Qui Gon" (unit :name "Qui Gon" :image "StarWars/Republic_QuiGon.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))))) "Star Wars Seperatists" (section :name "Star Wars Seperatists" :unitmap (unitmap "Asajj Ventress" (unit :name "Asajj Ventress" :image "StarWars/Separatist_AsajjVentress.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Battle Droid" (unit :name "Battle Droid" :image "StarWars/Separatist_BattleDroid.png") "Chancillor Palpatine" (unit :name "Chancillor Palpatine" :image "StarWars/Separatist_ChancillorPalpatine.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Count Dooku" (unit :name "Count Dooku" :image "StarWars/Separatist_CountDooku.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "General Grievous" (unit :name "General Grievous" :image "StarWars/Separatist_GeneralGrievous.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))))) "Star Wars Imperial Vehicles" (section :name "Star Wars Imperial Vehicles" :unitmap (unitmap "Imperial Assault Gunboat" (unit :name "Imperial Assault Gunboat" :image "StarWars/Imperial_Assault Gunboat.png" :summary "* 2 Laser Cannons * 2 Concussion Missile Launchers (20 missiles each) * 100 Shields" :titles "Alpha Class Xg-1 Star Wing" :speed "1050kph" :crew "1" :height "7.2m" :length "10m" :width "15m") "Imperial Assault Transport" (unit :name "Imperial Assault Transport" :summary "* 2 Turbo Laser Turrets * 2 Ion Cannons * 2 Proton Torpedo Launchers (4 torpedos each) * 200 Shields * 40 Troops" :titles "Gamma Class ATR-6 Assault Transport" :crew "15" :height "20.5m" :length "45m" :width "30.4m") "Imperial Shuttle" (unit :name "Imperial Shuttle" :image "StarWars/Imperial_Shuttle.png" :titles "Lambda Class" :classification "Med. Spacecraft") "Imperial Walker" (unit :name "Imperial Walker" :image "StarWars/Imperial_Walker.png" :titles "AT-AT (All Terrain Armored Transport)" :speed "60kph" :crew "4" :length "20m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Advanced" (unit :name "Tie Advanced" :image "StarWars/Imperial_TieAdvanced.png" :titles "Tie Avenger" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Bomber" (unit :name "Tie Bomber" :image "StarWars/Imperial_TieBomber.png" :classification "Lt. Spacecraft") "Tie Defender" (unit :name "Tie Defender" :image "StarWars/Imperial_TieDefender.png" :classification "Lt. Spacecraft") "Tie Fighter" (unit :name "Tie Fighter" :image "StarWars/Imperial_TieFighter.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Interceptor" (unit :name "Tie Interceptor" :image "StarWars/Imperial_TieInterceptor.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx4"))))) "Imperator Star Destroyer" (unit :name "Imperator Star Destroyer" :image "StarWars/Imperial_StarDestroyer.png" :classification "Hvy. Spacecraft" :crew "34,285" :mass "25Mtons" :length "1600m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "26") :Shielding (unitpower :name "Shielding" :level "26") :Hanger (unitpower :name "Hanger" :summary "* 48 Standard Tie Fighters (4 Squadrons) * 12 Tie Interceptors (1 Squadron) * 12 Tie Bombers (1 Squadron) * 5 Assault gunboats * 8 Lambda-class shuttles * 15 Stormtrooper transports * 10 Gamma-class assault shuttles * 20 AT-AT Walkers * 30 AT-ST Walkers")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Mega Turbo-laser Cannon Mounts (6) Quadruple Heavy Turbo-laser Cannon Mounts (2) Defensive Turbolaser Turrets (9) Mega Ion Cannon Mounts (2) 60 mm Point Defense Laser Turrets (30) 80 mm Point Defense Ion Cannon Turrets (20) Capital Proton Torpedo Batteries (4) Tractor Beams" :level "4" :unititemmap (unititemmap "Turbolaser Turret" (unititem :name "Turbolaser Turret" :number "9") "Heavy Turbolaser Turret" (unititem :name "Heavy Turbolaser Turret" :number "8"))))) "Executor Star Destroyer" (unit :name "Executor Star Destroyer" :image "StarWars/Imperial_Executor.png" :classification "Hvy. Spacecraft" :length "17km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "29") :Shielding (unitpower :name "Shielding" :level "29") :Hanger (unitpower :name "Hanger" :summary "* 4 squadrons of TIE-fighters * 4 squadrons of TIE-interceptors * 4 squadrons of TIE-bombers * 38,000 troops * 25 AT-ATs * 50 AT-STs")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* 250 concussion missle tubes * 250 ion cannons * 40 tractor beams" :level "4" :unititemmap (unititemmap "Turbolaser Turret" (unititem :name "Turbolaser Turret" :number "250") "Heavy Turbolaser Turret" (unititem :name "Heavy Turbolaser Turret" :number "250"))))) "Death Star" (unit :name "Death Star" :image "StarWars/Imperial_DeathStar.png" :reference "* The regional governors now have direct control over their territories. Fear will keep the local systems in line. Fear of this battle station. - Grand Moff Tarkin, Star Wars" :classification "Hvy. Spacecraft" :crew "323k+400k Droids" :mass "2x10^12tons" :length "160km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "30") :Shielding (unitpower :name "Shielding" :level "30") :Hanger (unitpower :name "Hanger" :summary "* 7200 TIE Fighters (600 Squadrons) * 4 Cruisers * 3,600 Assault Shuttles * 1,860 Dropships * 13,000 Support Craft * 1,400 AT-AT * 1,400 AT-ST * 1,400 Repulsortanks * 1,400 Repulsorcraft * 355 Floating Fortesses"))))) "Star Wars Imperials" (section :name "Star Wars Imperials" :unitmap (unitmap "Darth Vader" (unit :name "Darth Vader" :image "StarWars/Imperial_DarthVader.png" :reference "* Apology accepted, Captain Needa - Darth Vader, The Empire Strikes Back" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "8"))) "Emperor Palpatine" (unit :name "Emperor Palpatine" :image "StarWars/Imperial_EmperorPalpatine.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "9" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Imperial Governor" (unit :name "Imperial Governor" :image "StarWars/Imperial_Governor.png" :reference "Governor Tarkin, I should have expected to find you holding Vader's leash. I recognized your foul stench when I was brought on board. - Princess Leia, Star Wars" :titles "Grand Moff Tarkin") "Imperial Stormtrooper" (unit :name "Imperial Stormtrooper" :image "StarWars/Imperial_Stormtrooper.png" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :unititemmap (unititemmap "Blaster Rifle" (unititem :name "Blaster Rifle"))))))) "Star Wars Independents" (section :name "Star Wars Independents" :unitmap (unitmap "Boba Fett" (unit :name "Boba Fett" :image "StarWars/Independent_BobaFett.png" :reference "* There will be a substantial reward for the one who finds the Millenium Falcon. You are free to use any methods necessary, but I want them alive. No disintegrations... As you wish. - Darth Vader and Boba Fett - Empire Strikes Back") "Jabba the Hutt" (unit :name "Jabba the Hutt" :image "StarWars/Independent_JabbaTheHutt.png") "Slave 1" (unit :name "Slave 1" :image "StarWars/Independent_Slave1.png" :titles "Firespray-31" :classification "Med. Spacecraft"))) "Star Wars Rebel Vehicles" (section :name "Star Wars Rebel Vehicles" :unitmap (unitmap "A-Wing Fighter" (unit :name "A-Wing Fighter" :image "StarWars/Rebel_AWing.png" :titles "RZ-1" :speed "1300kph" :classification "Lt. Spacecraft" :height "1.9m" :length "9.6m" :width "6.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Concussion Missles * 5100G acclerations * 50 Shields * 2 Laser Cannons * 2 Concussion Missile Launchers (6 missiles each)" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "B-Wing Fighter" (unit :name "B-Wing Fighter" :image "StarWars/Rebel_BWing.png" :classification "Lt. Spacecraft") "E-Wing Fighter" (unit :name "E-Wing Fighter" :summary "* The first fighter designed entirely under the support of the New Republic. * The E-wing was intended to match, or exceed, the performance of the preceding X-wing series in nearly every respect. However, the craft suffered from some significant problems when first deployed. As a result, many pilots continued to fly upgraded versions of the venerable X-wing. * 4200G acceleration * 3 Laser Cannons * 1 Proton Torpedo Launcher w/16 Torpedoes * 1 R7 Astromech" :speed "1300kph" :classification "Lt. Spacecraft" :length "11.2m") "X-Wing Fighter" (unit :name "X-Wing Fighter" :image "StarWars/Rebel_XWing.png" :summary "* 3700G acceleration * 50 Shields" :titles "T-65" :speed "1050kph" :classification "Lt. Spacecraft" :length "12.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx4") "Proton Torpedo" (unititem :name "Proton Torpedo" :facing "Fx2"))))) "Y-Wing Fighter" (unit :name "Y-Wing Fighter" :image "StarWars/Rebel_YWing.png" :summary "* 2700G acceleration * 75 Shields" :speed "1000kph" :classification "Lt. Spacecraft" :height "2.9m" :length "16m" :width "7.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2") "Ion Cannon" (unititem :name "Ion Cannon" :facing "Turretx2") "Proton Torpedo" (unititem :name "Proton Torpedo" :facing "Fx2"))))) :Landspeeder (unit :name "Landspeeder" :image "StarWars/Rebel_Landspeeder.png") "Millennium Falcon" (unit :name "Millennium Falcon" :image "StarWars/Rebel_MilleniumFalcon.png" :summary "* Speed: 1050kph Atmosphere, 80 Megalight?" :titles "YT-1300" :speed "1050kph" :classification "Med. Spacecraft" :crew "4+6" :height "8m" :length "35m" :width "26m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Turretx4, Turretx4"))))) "Corellian Corvette" (unit :name "Corellian Corvette" :image "StarWars/Rebel_CorellianCorvette.png") "Mon Calamari Cruiser" (unit :name "Mon Calamari Cruiser" :image "StarWars/Rebel_Cruiser.png") "Nebulon Frigate" (unit :name "Nebulon Frigate" :image "StarWars/Rebel_NebulonFrigate.png") "Rebel Transport" (unit :name "Rebel Transport" :image "StarWars/Rebel_Transport.png") :Snowspeeder (unit :name "Snowspeeder" :image "StarWars/Rebel_Snowspeeder.png") "T-16 Skyhopper" (unit :name "T-16 Skyhopper" :image "StarWars/Rebel_T16Skyhopper.png" :reference "* I used to bullseye womp rats in my T-16 back home. They're not much bigger than two meters. - Luke Skywalker, Star Wars"))) :Rebels (section :name "Rebels" :unitmap (unitmap :Chewbacca (unit :name "Chewbacca" :image "StarWars/Rebel_Chewbacca.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "5"))) "Han Solo" (unit :name "Han Solo" :image "StarWars/Rebel_HanSolo.png" :reference "I ain't in this for your revolution, and I'm not in it for you, Princess. I expect to be well paid. *I'm* in it for the money. - Han Solo, Star Wars" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "8"))) "Luke Skywalker" (unit :name "Luke Skywalker" :image "StarWars/Rebel_LukeSkywalker.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "6"))) "Ben Kenobi" (unit :name "Ben Kenobi" :image "StarWars/Rebel_BenKenobi.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "6"))) "Princess Leia Organa" (unit :name "Princess Leia Organa" :image "StarWars/Rebel_PrincessLeia.png" :reference "* Someone has to save our skins. Into the garbage chute, fly boy - Princess Leia, Star Wars" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "5" :unititemmap (unititemmap "Blaster Pistol" (unititem :name "Blaster Pistol"))))) :Yoda (unit :name "Yoda" :image "StarWars/Yoda.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "10" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber")))))))))) (func chapter_time_travellers : base/chapter (chapter :name "Time Travellers" :reference "* Doctor: People don't understand time. It's not what you think it is. Sally: Then what is it? Doctor: Complicated. Sally: Tell me. Doctor: Very complicated. ... Doctor: People assume that time is strict progression of cause of cause to effect, but actually from a non-linear, non-subjective viewpoint, its more like a big ball of wibbly-wobbly, timey-wimey stuff... Sally Sparrow, Doctor - Blink - Doctor Who" :sectionmap (sectionmap "Time Tricks" (section :name "Time Tricks" :rulemap (rulemap "Loop Trap Paradox" (rule :name "Loop Trap Paradox" :reference "* How many seconds in eternity? ... If I didn't know better, I'd say I've travelled Twelve thousand years into the future. ... How many seconds in eternity? The Shepards Boy - Six Hundred Thousand years into the future. ... How many seconds in eternity? The Shepards Boy says. ... Twelve Hundred Thousand years into the future. ... The shepards boy says. ... Two million years into the future. ... The Shepard Boy says... Twenty million years into the future. ... The Shepard Boy says! ... There's thus mountain of pure diamond! It takes an hour to climb it, and an hour to go around it! ... Fifty-two million years. ... Every hundred years, a little bird comes! ... And sharpens its beak on the diamond mountain! ... Nearly a Billion years. ... And when the entire mountain is chiseled away, the first second of eternity will have passed! ... Well over a Billion years. You musta think that's a helluva long time! ... Two Billion years. ... Personally, I think that's a helluva bird. - Doctor Who: Heaven Sent"))) :Temporals (section :name "Temporals" :reference "* In a Temporal conflict, victory or defeat can come in an instant. Among the vanquished, the lucky ones never know they have been conquered; the unlucky ones have never been. Both sides of this conflict have great resources for the struggle. Indeed, we hope for a long war, for we have no prospects of quick victory ourselves. Our offensive ability is too experimental to neutralize the Raydian threat. A short war can only mean our defeat." :summary "* The Temporals is a small group of specialists with the technology to travel through time and alter or protect the past. The Raydian Threat * The Raydians seem to have been content with the time stream as it was before the Temporals discovered time travel. They seem to be violently opposed to others having time travel ability and may be the cause of the disappearance of the original creators of the Time Rotor. * Motivation - The Raydians have a strong aversion to disorder. Though they seem to dislike altering history, they are willing to do so to eliminate time travel technology. When choosing historical changes, they tend to favor authoritarian rule and oppose chaotic organizations like democracies. * Multiple Incursions - Raydians will often make multiple time penetrations at once. The most pastward team will try to effect a change, and the futureward teams wait to see that the change has had the desired effect. If not, they go into action. Guide to Time Travel * Don'tt experiment with Time Travel. Many have disappeared and are presumed dead from experimentation. Predicting the outcome of Temporal mechanics is best left to the scientists. * Don't Alter History. Interfering with major incidents or people or displaying future technology can have disasterous ramifications on the time stream including the destruction of Temporals. * Avoid Paradoxes. Keep your time jumps to a minimum and carefully log all jumps. If you accidentally encounter a past self, you will trigger a Time Loop Paradox and will be trapped repeating the same series of events unless another time traveller saves you. * Beware of other Time Travellers. Other travellers outside the Corps exist. Some are friendly. Some are not. Always remember how powerful a weapon time travel is, and do not let it be used against you. * Keep your presense a secret. One of the most effective ways to dispose of rival time travellers is to identify them, go back in time and ambush them. If no one knows who you are, you will be much safer. * Time Currents - Time travel is difficult to precisely control. Sometime, travellers are drawn to a particular moment in time (often significant) and may find it hard to leave. * Law of Death - A person who has never travelled in time is called a Transient or an Ephemeral. That person can have their history rewritten any number of times including being brought back to life. Once a person travels through time, however, they are now called a Temporal and their history is no longer connected to their original timeline. When a Temporal dies, their history ends and nothing can prevent them from dying at that exact age regardless of their location or situation. After a mission is successfully completed, it is standard practice to try to revise the history of any Temporal casualties to inform them of their unavoidable deaths and allow them to live their last time as they choose. Time Tricks * False Leads - Opposition time travelers are always looking for information about past activity, so they can go back and ambush you. Creating false information can trick your opponents into creating an ambush that you can ambush instead. * Gather Allies - Every time period has powerful people. A simple trick is to go pastward and gain someone's trust at an early period and then use that influence later. * See You in a Minute - Opponent time travelers are always paranoid about being ambushed in the past. Jumping only a few minutes into the future of a conflict can be an unexpected suprise. * I've Been Here All the Time - A time traveler can hide his Temporal Rotor in an unexpected place, like a jail cell, and use it to travel and return only seconds later. In this way the traveler appears to have never left." :unitmap (unitmap "Magellus IX-g" (unit :name "Magellus IX-g" :reference "Krell, Forbidden Planet" :summary "* Magellus IX is a gas giant and 9th and last planet at the edge of the Magellus White Dwarf system. * Magellus IX-g is the 7th of Magellus' 11 moons. It is a barren rock except for the enormous complex hidden inside it. * The complex itself is fantasitcally large. Every room feels palacial. Rooms and doors are built for creatures easily 3 times human height and width with large amounts of open floor space. No furniture exists suggesting the forerunners never sat or lay down. Most of the floors are covered with a soft, spongy material that serves as carpeting and indicates that the forerunners had sensitive feet or undersides. There are no stairs, only ramps and lifts of unknown construction. Rooms are apparently self cleaning, while lights and displays appear spontaneously from featureless walls. * Spacedock - One of the many scientific labs has been retrofitted into a functional spacedock for smaller craft. * Power Plant - The power section appears to be a single giant corridor with minimal instrumentation ending in a huge vault door with a black orb suspended over it. * Eye of Harmony - Beyond the vault door lies a small black hole held in perfect balance by completely reflecting its own devastating gravitational force back upon itself. The technology to achieve this feat lies completely outside of our understanding. * History - A scientific team accidentally discovered that a seemingly non-descript moon was a technological marvel left by a long dead civilization. Within lay a massive complex and elegant advanced technology. But most remarkable of all, the moon was hollow and contained, at its core, a small black hole held in perfect symmetrical stasis by unfathomable forces. The scientists immediately knew that this technology was far too advanced to share with any political group. So they kept it a secret and studied it. Disturbingly, the race who built it left no record of their existence. No trace of language, personality, or even habitation of the station remained. It was as if they had never existed. Common conjecture claims that they were somehow erased from history. Years later, the scientists discoverd the purpose of the asteroid and the black hole it contained: to enable individuals to travel through the center of the black hole and travel back through time. The first few trips back were uneventful besides learning some important lessons about causality, but soon the travelers found that they had attracted the attention of another time traveling race, the [Radiance]. And thus began a strange battle of attrition between the the Radiance and what would become the Temporals with all of the Past, Present, and Future hanging in the balance." :titles "Babylon Complex" :length "400km") "Chronos Program" (unit :name "Chronos Program" :reference "* Chronos is online - Chronos * Chronos is everywhere - Chronos * I cannot answer that at this time. - Chronos" :summary "* Chronos is a computer program uploaded into the alien sensor network within the Babylon asteroid. It was designed to interpret the sensor data and relay information through the [Temporal Vortex] across Time. * Personality - The alien systems, however, have significantly changed Chronos, and although obedient, the program has definitely developed an independent personality with an unknown set of goals. * Time travelers depend heavily on Chronos for support, but have little trust for the evasive answers, omissions, and cryptic, nuanced messages it provides. * Engineers work tirelessly to gain control over Chronos, and Chronos does not hinder them in any way. However, every attempt to purge, patch, or restart Chronos have had no effect. Some theorize that Chronos exists through time now and could never be removed without creating a massive paradox. Others believe that the Babylon sensor network was already sentient and is masquerading as the Chronos program.") "Temporal Director" (unit :name "Temporal Director" :summary "* When a Temporal anamoly is detected, a Temporal Director is assigned the task of choosing a course of action and gathering a team of [Temporal Operative]s to execute the plan. Directors coordinate the missions from headquarters and act as liason for the team. Directors are given broad authority to requisition and deploy resources, though they will be held accountable for any mistakes after the mission is over.") "Temporal Engineer" (unit :name "Temporal Engineer" :summary "* An engineer specializing in [Engineering: Temporal].") "Temporal Event Guard" (unit :name "Temporal Event Guard" :summary "* A field agent in Temporal Intelligence. Event Guards are posted in important time periods and quietly observe events to make sure no changes occur compared to their normal historical events. Any deviation from normal history is a sign of a [Temporal Distortion Wave]. If a change is found, the guard immediately sends a message to headquarters and then jumps futureward to attempt to stop the wave. * Event Guards are under strict orders to maintain their cover and not alter history in any way, including not aiding other Temporal personel on other missions. * In order to closely observe, historical events, the Event Guards enter the time stream and get as close as possible to a major event. They then observe the event, comparing it against their research and then Loop Trap themselves in the time period, so they are observing the event over and over again. Eventually, they will be relieved by a replacement team. The replacement team will arrive moments after the original team arrived to send them home. To the Event Guards, they will arrive in the time period and be immediately discharged, though they may remember the events using [Paranormal Memory].") "Temporal Intelligence Agent" (unit :name "Temporal Intelligence Agent" :summary "* Temporal Intellegence Agents constantly review historical documentation looking for historical abnormalities that do not match their [Paranormal Memory]. Any deviations are flagged and a team is assigned to identify the source and extent of the deviation.") "Temporal Operative" (unit :name "Temporal Operative") "Temporal Physicist" (unit :name "Temporal Physicist" :summary "* A scientist specializing in [Physics: Temporal]") "Temporal Recruiter" (unit :name "Temporal Recruiter" :reference "Millenium Movie" :summary "* A psychiatrist/sociologist specializing in recruiting potential Temporal agents from across history. Ideal candidates are those with high skills but little impact on history. The perfect moment of extraction is right before their death to minimize the effect on history, but other methods are possible for people with few ties to others.") "Temporal Researcher" (unit :name "Temporal Researcher" :summary "* A scientist/historian who travels back in time to research historical events firsthand."))) "Temporal Aliens" (section :name "Temporal Aliens" :unitmap (unitmap :Chronans (unit :name "Chronans" :summary "* The beings that captured the Black Hole and built the Temporal Rotor remain a mystery. No record can be found of their cultures or their bodies, and the Temporal Rotor will not travel to any point in their history, presumably as a fail-safe against temporal manipulation. The fact that no trace of their race exists except the Temporal Rotor is disturbing and leads to speculation that they were somehow wiped out by their own device or another time travelling species. Some speculate that the Chronans were eliminated by the Radiance, and that their fate is what the Temporals can expect if the Radiance is victorious, perhaps leading to the erasure of the entire human race from history. * The vast, vaulted corridors and rooms of Chronos Station lead one to believe that these creatures were bulky masses about 10-15 feet (3-5m) tall. The lack of stairs implies that the creatures were legless, but that could just be a comfort or aesthetic choice.") :Radiance (unit :name "Radiance" :image "DistantFuture/Radiance.png" :reference "* The goal of the Radians remains a mystery, but they appear to want everyone throughout time to live as they do in a totally regimented, completely predictable society. This goal is obviously, hopelessly unattainable. To devote the entire resources and enegies of one's race and culture to an unattainable outcome must be called madness. Among humans, it is a common fantasy to 'rule the world', 'rule the galaxy', or 'rule the universe'. These pipedreams are almost always the stuff of fiction and fantasy, designed to entertain. Those who have taken them seriously are regarded as madmen. Now imagine even fantasizing about 'ruling every point in time in every dimension'. The very concept is laughable, yet the Radiance takes this seriously and are committed to acheiving it. Despite its insanity, their efforts pose a serious threat to everyone, everywhere, everywhen." :summary "* The Radiance is an enormous energy being of vast power originating from a time near the birth of the universe. It has been content to bask in the fantastic energies of the Big Bang until it perceived the use of time travel. The Radiance is completely committed to what it considers a peacefyl, orderly universe, and the ripples created by time travellers are something it cannot allow. * The Radiance can project parts of itself through time and space though it is loath to do so. These projections appear as columns of energy that wield vast destructive power. * As a being of pure Order, the Radiance appreciates order and despises chaos of any kind. It prefers authoritarian rule over democracies. It dislikes individual expression, but it does appreciate art and beauty. * The Temporals have assumed that the Radiance projections are an entire race of energy creatures instead of a single being and have misinterpreted its name as Raydians." :titles "Raydians"))) "Temporal Vehicles" (section :name "Temporal Vehicles" :unitmap (unitmap "Time Rotor" (unit :name "Time Rotor" :image "DistantFuture/TimeRotor.jpg" :reference "* Eternal Sunshine of the Spotless Mind * Flatliners * Vortex in Doctor Who credits * Time Stranger Anime * Time Travel in Terminator Series" :summary "* Description - The Temporal Rotor is an amazing device created by a vanished civilization. It is mostly a communication device that can reach into the Temporal Vortex and communicate with the central computer Chronos on the asteroid Babylon. Chronos harnesses the black hole hidden within Bablyon to move the Time Rotor and its operator through time and space. It is perhaps the most powerful device ever created. * Activating the Temporal Rotor - When the Temporal Rotor is activated, static electricity begins to build in the area. At full strength the static is dangerous, so travellers should not move to avoid discharge. A glowing field begins to form. Travellers heart rate begins to climb and they have a sudden feeling of intense, unnatural danger and imminent death. Hearts begin to fibrilate and flatline. * Entering the Vortex - The travellers blink and become aware that they are in the Vortex. Further, they recognize that they have always been in the Vortex. Every moment of their life remembered as if it just occurred. Only their future remains unseen. Time in the Vortex has no meaning, so travellers may leave immediately or stay for an eternity before moving on. * Leaving the Vortex - Leaving is just as traumatic as entering. As the Temporal Rotor slows, the travellers begin to forget all that they have just remembered. It is like losing one's mind bit by bit. They feel torn apart and incomplete. Soon they start losing coherent thought, their minds becoming simple and primal. Their senses and desires become simple: Food, Sex, Fear, Violence, Warmth ... Food, Fear, Violence, Warmth ... Food, Warmth ... Warmth. All is dark, wet, and warm as it has always been. Soft, pink bubbles surround and comfort you. You have no wants. You are complete. Suddenly a bright light blinds you, and happiness and security are torn from you. And there is pain, pain where there never was pain before. Waves of burning pain crush you, chew you up, and spit you out. You lie on the ground, cold and in shock. A new pressure builds in your chest, and without thinking you gasp and take in your first breath. Your eyes open to see the last lights on the Temporal Rotor wink out. You are coverered in a heavy, red jelly like congealed blood. The jelly quickly dries to dust and disappears. You rise and feel healthier than ever before. Old wounds and scars are gone as if they never were, and you are different: your skin, your teeth, your hair, your language all are as if you were born and lived your life in this time and place. Your equipment is gone and your clothes have been replaced with simple native garb: a gift from Chronos." :height "1.5m" :width ".2m") :Timefighter (unit :name "Timefighter")))))) (func chapter_unique_aliens : base/chapter (chapter :name "Unique Aliens" :sectionmap (sectionmap "Alien Life Forms" (section :name "Alien Life Forms" :unitmap (unitmap :Arachnid (unit :name "Arachnid" :reference "Starship Troopers" :titles "Bug") :Blob (unit :name "Blob") "Puppet Master" (unit :name "Puppet Master") "Thing from another World" (unit :name "Thing from another World"))))))
nx/tactics/books/science_fiction / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Science Fiction" :image "Future.jpg" :chaptermap (base/chaptermap "Science Fiction Overview" (chapter_science_fiction_overview) "Archetypes" (chapter_archetypes) "Alternate Realties" (chapter_alternate_realties) "Alien / Predator" (chapter_alien___predator) "Battlestar Galactica" (chapter_battlestar_galactica) "Doctor Who" (chapter_doctor_who) "Robotech" (chapter_robotech) "Space Cruiser Yamato" (chapter_space_cruiser_yamato) "Space Opera" (chapter_space_opera) "Star Trek" (chapter_star_trek) "Star Wars" (chapter_star_wars) "Time Travellers" (chapter_time_travellers) "Unique Aliens" (chapter_unique_aliens) )))
nx/tactics/books/science_fiction / chapter_science_fiction_overview
Description:
Function Name:
  • chapter_science_fiction_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_science_fiction_overview : base/chapter (chapter :name "Science Fiction Overview" :reference "http://www.merzo.net/index.html" :sectionmap (sectionmap "Distant Future Land Warfare" (section :name "Distant Future Land Warfare" :summary "* Infantry * Transporters * Time Travel * Beam Weapons * Lightning Guns * Disruptors * Disintegrators * Railguns * Hovercraft * Hovertanks * Walkers * Mobile Suits * Mobile Armor * Artillery * Nuclear Weapons") "Distant Future Space Warfare" (section :name "Distant Future Space Warfare" :summary "* Shields * Ion Cannons * Disruptors * Disintegrators * Transporters * Hyperdrive * Jumpdrive * Railguns * Boarding Parties * Starfighters * Starbombers * Mobile Suits * Mobile Armor * Large Starships * Small Starships * Nuclear Weapons * Starbases"))))
nx/tactics/books/science_fiction / chapter_archetypes
Description:
Function Name:
  • chapter_archetypes
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_archetypes : base/chapter (chapter :name "Archetypes" :summary "* Psionic ** Preferred Skills: [Telepathy], [Mind Over Matter], [Divination]"))
nx/tactics/books/science_fiction / chapter_alternate_realties
Description:
Function Name:
  • chapter_alternate_realties
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_alternate_realties : base/chapter (chapter :name "Alternate Realties" :sectionmap (sectionmap "Big Brother" (section :name "Big Brother" :summary "* A near future Earth where all activity is monitored by cameras and microphones placed everywhere including bedrooms, bathrooms, and sewers. They cover multiple angles and are nearly impossible to avoid. Computers monitor the feeds and immediately report any criminal activity to police. The police arrest the criminal, conviction is swift, and the criminal is psychologically or chemically 'reconditioned' against further crimes and returned to society. Crime is basically non-existent, and no one remembers a time before the monitoring was established. Police are friendly and do not appear in uniform unless a crime has been committed. Police only carry non-lethal weapons unless they are known to be facing armed resistance. * Any outsiders entering this world will have a hard time avoiding criminal activity. Fortunately, the computers are unconcerned with suspicious activity and only notice actual crimes. However, attempts to disable cameras are crimes themselves. * Interrogations and reconditioning are all computer controlled. Using sophiticated lie detectors, drugs, and aversion therapy, the patient can usually be reconditioned and returned to society in a matter of weeks. * A small resistance exists, but there is little they can achieve without outside help. The question is: should they be helped?") "Time in a Bottle" (section :name "Time in a Bottle" :reference "* If I could save time in a bottle, the first that I'd like to do, is to save every day 'til eternity passes away, just to spend them with you. - Time in a bottle, Jim Croce" :summary "* A temporal paradox has trapped the entire Earth in a time loop. For about a month, the people of the planet relive the same week over and over. They remember each loop but the longer they stay in the loop the more likely they are to be compelled to repeat the same events each time. Those who suffer or die during the period know they will repeat their actions but are largely powerless to stop themselves. The experience would eventually drive them insane if their minds could change that much. * Time travelers who arrive are immediately recognized by everyone as being different from the previous events. The locals are tremendously thankful that they can react differently since the travelers weren't in the previous time loops. This will be short lived, however, because once the loop resets the time travelers will be part of the loop, and each time the loop resets it will become harder for everyone to act differently again. If the travelers don't sort out this problem, they will be trapped here forever."))))
nx/tactics/books/science_fiction / chapter_alien___predator
Description:
Function Name:
  • chapter_alien___predator
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_alien___predator : base/chapter (chapter :name "Alien / Predator" :image "AlienPredator/AlienPredator.jpg" :sectionmap (sectionmap "Alien Equipment" (section :name "Alien Equipment" :itemmap (itemmap "Alien Egg" (item :name "Alien Egg" :image "AlienPredator/Alien_Egg.png" :reference "Who's laying these eggs? I'm not sure. It must be something we haven't seen yet. Ripley and Bishop, Aliens")) :unitmap (unitmap "Alien Starship" (unit :name "Alien Starship" :image "AlienPredator/AlienShip.png" :height "43m" :length "174m" :width "117m"))) :Aliens (section :name "Aliens" :reference "* It'll be dark soon, and they mostly come at night... mostly. - Newt, Aliens * My mommy always said there were no monsters - no real ones - but there are. * Its structural perfection is matched only by its hostility. You admire it. I admire its purity. A survivor... unclouded by conscience, remorse, or delusions of morality. - Ash and Lambert, Alien" :titles "Xenomorph XX121" :unitmap (unitmap "Alien Chest Burster" (unit :name "Alien Chest Burster" :image "AlienPredator/Alien_ChestBurster.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien (Dog)" (unit :name "Alien (Dog)" :image "AlienPredator/Alien_Dog.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Face Hugger" (unit :name "Alien Face Hugger" :image "AlienPredator/AlienFaceHugger.png" :reference "* I haven't seen anything like that except, uh, molecular acid. It must be using it for blood. It's got a wonderful defense mechanism. You don't dare kill it. - Parker and Brett, Alien" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Queen" (unit :name "Alien Queen" :image "AlienPredator/Alien_Queen.png" :reference "Get away from her, you BITCH! - Ripley, Aliens" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) "Alien Warrior" (unit :name "Alien Warrior" :image "AlienPredator/Alien_Warrior.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))) :Predalien (unit :name "Predalien" :image "AlienPredator/Predalien.png" :unitpowermap (unitpowermap :Acidic (unitpower :name "Acidic" :unitabilitymap (unitabilitymap "Acid Blood" (unitability :name "Acid Blood"))))))) "Predator Equipment" (section :name "Predator Equipment" :itemmap (itemmap "Plasma Caster" (item :name "Plasma Caster" :image "AlienPredator/PredatorPlasmaCaster.jpg") "Predator Claws" (item :name "Predator Claws" :image "AlienPredator/PredatorClaws.jpg") "Predator Disc" (item :name "Predator Disc" :image "AlienPredator/PredatorDisc.gif") "Predator Smartgun" (item :name "Predator Smartgun" :image "AlienPredator/PredatorSmartgun.jpg") "Predator Stealthsuit" (item :name "Predator Stealthsuit" :image "AlienPredator/PredatorStealth.jpg") "Predator Vision" (item :name "Predator Vision" :image "AlienPredator/PredatorVision.jpg")) :unitmap (unitmap "Predator Scout Ship" (unit :name "Predator Scout Ship") "Predator Hunting Ship" (unit :name "Predator Hunting Ship"))) :Predators (section :name "Predators" :summary "* The Yautja do not maintain a unified society, but instead live in tribal groups that rarely interbreed. Over time, the different tribes have developed distinct physical differences. * Yautja society reveres honor and physical prowess which can only be proven in personal combat during dangerous hunts. * The Yautja stalk and kill their prey using a combination of highly advanced technology, such as active camouflage and energy weapons, combined with comparatively primitive traditional weapons, such as blades, spears and nets. The Predators often ritualistically mutilate their prey and usually claim a trophy from their kills. Capable of interstellar travel in star ships, the Predators have hunted on Earth for centuries and have also had prior contact with the Engineers. * Aside from their repeated conflicts with humans, the Predators have notably been associated with Xenomorph XX121, known to them as kiande amedha ('hard meat'), whom they revere as perhaps the most worthy of all prey. They have been known to deliberately breed the creatures from captive Queens in order to hunt them, often as part of initiation rituals for young Predators." :titles "Yautja" :unitmap (unitmap "Un-blooded Predator" (unit :name "Un-blooded Predator" :summary "* The lowest level of Yautja warriors. These are warriors in training. Many die during this brutal training regiment designed to cull the weak.") "Young Blood Predator" (unit :name "Young Blood Predator" :summary "* A Yautja warrior who has completed their training. These warriors await their final test, killing a Xenomorph close range primitive weapons.") "Blooded Predator" (unit :name "Blooded Predator" :image "AlienPredator/Predator.png" :summary "* After killing a Xenomorph, the Predator a full citizen of Yautja society and is allowed access to the Plasma Cannon and other advanced weaponry and spacecraft. A Blooded Predator may join hunts with others or go off on their own to bring back stories, honor, treasure, and trophies.") "Elite Predator" (unit :name "Elite Predator" :image "AlienPredator/Predator_Veteran.png" :summary "* A Yautja warrior who has survived many dangerous hunts is raised to elite status. These Yautja have vast fighting skills and can fight many enemies single-handed.") "Elder Predator" (unit :name "Elder Predator" :summary "* Older Elite Predators can be given the honorific of Elder. Elder Predators form the political and administrative caste of Yautja society.") "Clan Leader Predator" (unit :name "Clan Leader Predator" :summary "* Clan Leaders direct all Predator business and travel on Predator Flagships. Elder Predators may challenge the Clan Leader to take their position.") "Bad Blood Predator" (unit :name "Bad Blood Predator" :summary "* Bad Bloods are Predators who severely violated their code of honor and were either banished or escaped from their clan. Sometimes the Bad Bloods become the target of a hunt to make an example of them."))) "Human Equipment" (section :name "Human Equipment" :itemmap (itemmap "Combat Armor" (item :name "Combat Armor" :image "ColonialMarines/CombatArmor.jpg") "VP70Mk9 Pistol" (item :name "VP70Mk9 Pistol" :image "ColonialMarines/HK_VP70.jpg" :summary "18 round 9mm pistol.") "M41A Pulse Rifle" (item :name "M41A Pulse Rifle" :image "ColonialMarines/M41a01.jpg" :reference "That's the grenade launcher. I don't think you want to mess with that. - Hicks, Aliens") "Ithaca Model 37 Shotgun" (item :name "Ithaca Model 37 Shotgun" :image "ColonialMarines/Ithaca37Stakeout.jpg" :reference "Triva: The one used by Corporal Hicks was passed from father to son all the way back to marines in the Vietnam War." :summary "4 round 12-gauge sporting shotgun produced from 1937. Aka Stakeout.") "M240 Flamethrower" (item :name "M240 Flamethrower" :image "ColonialMarines/M240Flamethrower.jpg") "M56 Smartgun MG" (item :name "M56 Smartgun MG" :image "ColonialMarines/M56Smartgun.jpg") "CN-20 Nervergas" (item :name "CN-20 Nervergas" :image "ColonialMarines/CN-20Nervegas.jpg") "Motion Tracker" (item :name "Motion Tracker" :image "ColonialMarines/MotionTracker.jpg" :reference "There's somethin' movin' and it ain't us! Tracker's off scale, man. They're all around us! - Hudson, Aliens") "Electronics Pack" (item :name "Electronics Pack" :reference "Hudson, run a bypass. - Apone, Aliens") :Welder (item :name "Welder" :image "ColonialMarines/Welder.jpg"))) "Human Vehciles" (section :name "Human Vehciles" :unitmap (unitmap "UD-4L Cheyenne Dropship" (unit :name "UD-4L Cheyenne Dropship" :image "ColonialMarines/Dropship.png" :height "6m" :length "25m" :width "13m") "M577 Armored Personnel Carrier" (unit :name "M577 Armored Personnel Carrier" :image "ColonialMarines/APC.png" :height "3m" :length "9m" :width "3m") "Conestoga Class Starship" (unit :name "Conestoga Class Starship" :image "ColonialMarines/Sulaco.png" :summary "Speed: .5G cruising 4G Max FTL: 1.762 light years/day 2 Dropships http://www.kitsune.addr.com/SF-Conversions/Rifts-Other-Vehicles/USS_Sulaco.htm" :titles "USS Sulaco" :mass "85ktons" :height "105m" :length "385m" :width "77m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "* The Conestogas skin consists of a laminated layer of insulators, alloy micro meteor shielding, composite armors, and aerogel layers. This provides only limited protection against Kinetic weapons (the best defense against those is high-mass armor, untenable on a starship), but it does provide excellent protection against directed energy weapons. * Overlying all of this are layers of Radar Absorbent Material, and a dark grey paint, in order to keep both the ships radar and optical signature as low as possible. In addition to this the ship has a radar jamming system for ECM, and the computer systems are designed with double hardened systems to prevent either jamming or EMP from damaging the ships system or any systems of equipment inside the ship.") :Hanger (unitpower :name "Hanger" :summary "20ktons Cargo")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Its main anti-ship weapons are eight Long Lance missiles, providing it with a good long range punch. These missiles are almost small starships in their capabilities and sensor systems, and are currently the main anti-ship system of both the Colonial Marine Corps and the Navy. Backing up these weapons are two Neutral Particle Beam cannons. These large weapons are mounted along the main hull, and can only fire in a forward arc. Although they do not provide the ship with a Hard Kill capability, they can be used to disrupt a enemies electronics at huge ranges. For close range weapons there are two laser cannons located on either side of the ship. These cannons provide close in defense against missiles, mines, and the odd fighter. For some additional close in Hard Kill capabilities there are two rail guns on the ship, one on top, and the other on the bottom of the main hull. Firing a combination of both kinetic penetrators (essentially tungsten darts) which can punch holes through almost any armor, and kinetic penetrator incendiary (tungsten tipped darts designed to vaporize AFTER impact), these weapons have a reasonable rate of fire, and can do quite a lot of damage to other ships. * The ship is also capable of laying mines, with sixty mines available in a ventral dispenser. Although not as large a threat to enemy ships as the ships missiles, they are still quite effective for interdiction and for cutting off civilian shipping. * For orbital bombardment the ship has a ventral launcher filled with eighty re-entry vehicles. These can carry a variety of warheads, including nuclear payloads. Such ordnance can only be used when the ship receives the orders to do so from its Captain, or from a Marine Major or personnel higher in rank than that."))) :Nostromo (unit :name "Nostromo" :image "ColonialMarines/Nostromo.png" :reference "This a commercial ship, not a rescue ship. - Parker, Alien" :summary "Commercial Towing Vehicle Speed: .12 light years/day 2 shuttlecraft" :height "72m" :length "244m" :width "165m") "Refinery Ship" (unit :name "Refinery Ship" :image "ColonialMarines/Refinery.png" :height "881m" :length "1500m" :width "979m") "Lockmart Starcub Shuttlecraft" (unit :name "Lockmart Starcub Shuttlecraft" :image "ColonialMarines/Shuttlecraft.png" :titles "Narcisssus" :height "8m" :length "16m" :width "20m"))) :Humans (section :name "Humans" :unitmap (unitmap "Company Man" (unit :name "Company Man" :reference "* I work for the company. But don't let that fool you, I'm really an okay guy. - Burke, Aliens * This installation has a substantial dollar value attached to it. They can bill me. - Burke and Ripley, Aliens * If I went and made a major security situation out of it, everybody steps in; Administration steps in, and there's no exclusive rights for anybody, nobody wins! So I made a decision, and it was... wrong. It was a bad call, Ripley. It was a bad call. - Burke, Aliens") :Civilian (unit :name "Civilian") "Marine Grunt" (unit :name "Marine Grunt" :image "ColonialMarines/Marine.png" :reference "* These people are here to protect you. They're soldiers. It won't make any difference. - Ripley and Newt, Aliens * Is this gonna be a standup fight, sir, or another bughunt? - Hudson, Aliens * He can't make that kind of decision, he's just a grunt! Ah, no offense. None taken. - Burke and Hicks, Aliens" :summary "* Pulse Rifle * Shotgun") "Marine Heavy Weapons" (unit :name "Marine Heavy Weapons" :reference "* Look, man. I only need to know one thing: where they are. - Vasquez, Aliens") "Marine Lieutenant" (unit :name "Marine Lieutenant" :reference "* How many drops is this for you, Lieutenant? Thirty eight... simulated. How many *combat* drops? Uh, two. Including this one. - Vasquez and Gorman, Aliens") "Marine Pilot" (unit :name "Marine Pilot" :reference "* We're in the pipe, five by five. - Ferro, Aliens") "Marine Sergeant" (unit :name "Marine Sergeant" :reference "* Another glorious day in the Corps! A day in the Corps is like a day on the farm. Every meal's a banquet! Every paycheck a fortune! Every formation a parade! I LOVE the Corps! - Apone, Aliens") "Marine Tech" (unit :name "Marine Tech" :summary "* Motion Detector * Electronics Pack") "Power Loader" (unit :name "Power Loader" :image "ColonialMarines/PowerLoader.png") "Sentry Turret" (unit :name "Sentry Turret" :image "ColonialMarines/SentryTurret.png") :Synthetic (unit :name "Synthetic" :image "ColonialMarines/Android.png" :reference "* Bring back life form. Priority One. All other priorities rescinded. The damn company. What about our lives, you son of a bitch? I repeat, all other priorities are rescinded. - Ash and Parker, Alien * I admire its purity. A survivor... unclouded by conscience, remorse, or delusions of morality. - Ash, Alien * I prefer the term 'Artificial Person' myself. - Bishop, Aliens * Not bad for a human. - Bishop, Aliens * Ripley's last trip out, the syn- the artificial person malfunctioned. Malfuctioned? There were problems and a-a few deaths were involved. - Burke and Bishop, Aliens" :titles "Syn (derogatory)"))))))
nx/tactics/books/science_fiction / chapter_battlestar_galactica
Description:
Function Name:
  • chapter_battlestar_galactica
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_battlestar_galactica : base/chapter (chapter :name "Battlestar Galactica" :sectionmap (sectionmap "Battlestar Colonials" (section :name "Battlestar Colonials" :unitmap (unitmap "Colonial Raptor" (unit :name "Colonial Raptor" :image "BattlestarGalactica/Colonial_Raptor.png") "Colonial Viper" (unit :name "Colonial Viper" :image "BattlestarGalactica/Colonial_Viper.png") "Colonial Battlestar" (unit :name "Colonial Battlestar" :image "BattlestarGalactica/Colonial_Battlestar.png"))) :Cylons (section :name "Cylons" :unitmap (unitmap "Cylon 6" (unit :name "Cylon 6" :image "BattlestarGalactica/Cylon_6.png") "Cylon Centurion" (unit :name "Cylon Centurion" :image "BattlestarGalactica/Cylon_Centurion.png") "Cylon Raider" (unit :name "Cylon Raider" :image "BattlestarGalactica/Cylon_Raider.png") "Cylon Base Star" (unit :name "Cylon Base Star" :image "BattlestarGalactica/Cylon_BaseStar.png"))))))
nx/tactics/books/science_fiction / chapter_doctor_who
Description:
Function Name:
  • chapter_doctor_who
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_doctor_who : base/chapter (chapter :name "Doctor Who" :sectionmap (sectionmap "Doctor Who Equipment" (section :name "Doctor Who Equipment" :itemmap (itemmap "Psychic Paper" (item :name "Psychic Paper" :image "DrWho/PsychicPaper.jpg") "Sonic Screwdriver" (item :name "Sonic Screwdriver" :image "DrWho/SonicScrewdriver.jpg") :TARDIS (item :name "TARDIS" :image "DrWho/Tardis.jpg" :reference "* Leela: Explain to me how this... Tardis, is larger on the inside than the out. ... Doctor: It's because insides and outsides are not in the same dimension. Which box is larget? Leela: That one. Doctor: Now which is larger? Leela: That one. Doctor: But it looks smaller. Leela: That's because it's further away. Doctor: Exactly. If you could keep that exactly that distance away and have it here, the large one would fit inside the small one. Leela: That's silly. Doctor: That's transdimensional engineering... - Doctor and Leela, The Robots of Death * Leela: Do you mean you can't control it? Doctor: Of course I can control it!.. 9 times out of 10, well 7 times out of 10, 5 times... nevermind... You won't need that. Leela: How do you know? Doctor: I never carry weapons. If people see you mean them no harm, they never hurt you... 9 out of 10 times. - Doctor and Leela, The Robots of Death * Tardis: There's a sign on my front door and you've been passing it for 700 years. What does it say? ... Doctor: Pull to open. Tardis: Yes, and what do you do? Doctor: I push. Tardis: Every single time. 700 years. Police boxes doors open out the way. ... Doctor: You know, YOU, have never been very reliable. ... You didn't always take me where I wanted to go. Tardis: No, but I always took you where you needed to go. - Tardis and Doctor, The Doctor's Wife"))) "Doctor Who Units" (section :name "Doctor Who Units" :unitmap (unitmap "Amy Pond" (unit :name "Amy Pond") "Captain Jack Harkness" (unit :name "Captain Jack Harkness" :image "DrWho/CaptainJackHarkness.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth") "True Immortality" (unitability :name "True Immortality"))))) "Clara Oswald" (unit :name "Clara Oswald" :reference "* Clara: Have we just watched the entire life cycle of Earth, birth to death. Doctor: Yes. Clara: And you're okay with that? Doctor: ... Yes. Clara: How can you be? ... To you, I haven't been born yet, and to you I've been dead a hundred billion years. Is my body out there somewhere, in the ground? Doctor: ... Yes... I suppose it is. Clara: But hear we are talking, so I am a ghost. To you, I'm a ghost. We're all ghost to you. We must be nothing. Doctor: No, no. You're not that. Never that. Clara: They what are we? What can we possible be? Doctor: You are the only mystery, worth solving.") :Cyberman (unit :name "Cyberman" :image "DrWho/Cyberman.png" :reference "We have 5 million Cybermen. How many are you? Four! You would destroy the Cybermen with 4 Daleks? We would destroy the Cybermen with 1 Dalek! You are superior to us in only one respect. You are better at dying! - Cybermen and Daleks") :Dalek (unit :name "Dalek" :image "DrWho/Dalek.png" :reference "Imagine you were dying. Imagine you were afraid and a long way from home and in terrible pain. And just when you thought it couldn't get worse, you looked up and saw the face of the devil himself. Hello Dalek - The Doctor" :summary "The Daleks odd form may be explained by their personal shielding. Weapons and sensors are placed on stalks so that they may protrude from the shield. This prevents their shield from interfering with their equipment, but it also leaves these devices vulnerable." :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding"))) :Davros (unit :name "Davros" :image "DrWho/Davros.png" :reference "* To hold in my hand a capsule that contained such power...To know that the tiny pressure of my thumb, enough to break the glass would end...everything...Yes...I WOULD do it. Such power would put me above the Gods! - Davros * Across the entire universe, never stopping, never faltering, never fading. People, planets, and stars will become dust, and the dust will become atoms, and the atoms will become...nothing. Into every dimension, every parallel, every single corner of creation. This is my ultimate victory, Doctor: the destruction of reality... itself! - Davros * The man who abhors violence, never carrying a gun. But this is the truth Doctor, you take ordinary people and fashion them into weapons...How many more? Just think how many have died in your name...The Doctor, the man who keeps running, never looking back because he dare not out of shame. This is my final victory, Doctor. I have shown you...yourself. - Davros") "Doctor, The" (unit :name "Doctor, The" :image "DrWho/TheDoctor.png" :reference "* Who are you? ... The ground beneath our feet spinning at a 1000 miles an hour, and the entire planet is hurtling around the sun at 67,000 miles an hour, and I can feel it. We're falling through space, you and me, clinging to the skin of this tiny little world, and if we let go ... That's who I am. Now forget me. - Rose and The Doctor * Oh, I'll think of something. You're just making this up as you go along. Yup...but I do it brilliantly - The Doctor * I've seen him. He's like fire and ice and rage. He's like the night and the storm and the heart of the sun. He's ancient and forever. He burns at the center of time and he can see the turn of the universe. * Is this world protected? You're not the first lot to have come here. Oh, there have been so many. And what you've got to ask is...what happened to them? Hello, I'm the Doctor. Basically...run. - The Doctor * Everyone's got memories of a holiday they couldn't have be to, or a party they never went to, or met someone for the first time and felt like they've know them all their lives. Time is being rewritten all around us, everyday. People think their memories are bad, but their memories are fine. The past is really like that. - The Doctor * There are laws of time and once upon a time, there were people in charge of those laws, but died. They all died. They all died. And you know who that leaves. Me! It has taken me all these years to realize, the laws of time are mine. And they will obey me! ... The whole of history could change...the future of the human race. No one should have that much power. Tough. ... For a long time I thought I was just a survivor, but I'm not. I'm the winner. That's who I am. The Time Lord Victorious. And there is no one to stop you. No. This is wrong, Doctor. I don't care who you are. The Time Lord Victorious is wrong! That's for me to decide. ... Is there nothing you can't do? Not anymore. - Captain Aldelede and The Doctor * Silence will fall when the question is asked...The first question, the question that must never be answered, hidden in plain sight, the question you've been running from all your life...Doctor WHO? * If I run away today. Good people will die. If I stand and fight, some of them might live. Maybe not many. Maybe not for long. Hey, maybe there's no point in any of this at all, but its the best I can do. So, I'm going to do it, and I will stand here doing it until it kills em. You're going to die too. Someday. What would that be? Have you thought of that? Would you die for? Who I am is where I stand. Where I stand... is where I fall. Stand with me. - Doctor and Masters. * People always get it wrong with Time Lords. We take forever to die. Even if we are too injured to regenerate, every cell in our bodies keeps trying. Dying properly can take days. That's why we like to die among our own kind. They know not to bury us early. I think... In my current condition, it'll take me about... a day and a half to reach the top of the tower. I think, if I'm lucky, I have a day and a half. - Heaven Sent") :K-9 (unit :name "K-9" :image "DrWho/K9.png" :reference "The Doctor likes traveling with an entourage. Sometimes they're human, sometimes they're aliens and sometimes they're tin dogs. What about you? Where do you fit in the picture? Me? I'm their man in Havana. I'm their technical support. I'm... Oh my god. I'm the tin dog! - Sarah Jane Smith and Mickey Smith") "Martha Jones" (unit :name "Martha Jones" :image "DrWho/MarthaJones.png" :reference "She completely adored him ... Is this going anywhere? Yes. Cause he never looked at her twice ... and she wasted years of her life ... and I told her time and time again. Get out. So this is me getting out. - Martha Jones and the Doctor") "Master, The" (unit :name "Master, The" :image "DrWho/TheMaster.png" :reference "* We stand there... 8 years old... staring at the raw power of time and space, just a child. Some would be inspired... Some would run away ... and some would go mad. What about you? Oh, the one who ran away. I never stopped. - The Doctor and Martha * And so it came to pass, that the human race fell and the Earth was no more. And I looked out on my new Dominion as master of all and I thought it good.") "Rose Tyler" (unit :name "Rose Tyler" :image "DrWho/RoseTyler.png" :reference "This is really seeing the future - you just leave us behind! ... Sarah Jane - you were that close to her once, and now ... you never even mention her. ... I don't age. I regenerate. But humans decay. You wither and you die. Imagine watching that happen to someone you ... You can spend the rest of your life with me. But I can't spend the rest of mine with you. I have to live on, alone. That's the curse of the Timelords. - Rose and the Doctor, Doctor Who") "Sarah Jane Smith" (unit :name "Sarah Jane Smith" :image "DrWho/SarahJaneSmith.png" :reference "The universe has to move forward. Pain and loss, they define us as much as happiness or love. Whether it's a world, or a relationship ... Everything has its time. And everything ends. - Sarah Jane Smith") :Rutan (unit :name "Rutan" :image "DrWho/Rutan.png") :Sontaran (unit :name "Sontaran" :image "DrWho/Sontaran.png") "Sontaran Scout Ship" (unit :name "Sontaran Scout Ship" :image "DrWho/SontaranScoutShip.png") :Sutekh (unit :name "Sutekh" :reference "* You would use your powers for evil. Evil? Your evil is my good. I am Sutehk the Destroyer. Where I tread, I leave nothing but dust and darkness. I find that good. - The Doctor and Sutekh" :titles "Sutekh the Destroyer") "Weeping Angel" (unit :name "Weeping Angel"))))))
nx/tactics/books/science_fiction / chapter_robotech
Description:
Function Name:
  • chapter_robotech
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_robotech : base/chapter (chapter :name "Robotech" :sectionmap (sectionmap :Invid (section :name "Invid") :Masters (section :name "Masters") :Zentradi (section :name "Zentradi"))))
nx/tactics/books/science_fiction / chapter_space_cruiser_yamato
Description:
Function Name:
  • chapter_space_cruiser_yamato
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space_cruiser_yamato : base/chapter (chapter :name "Space Cruiser Yamato" :summary "Aka Starblazers" :sectionmap (sectionmap :Weapons (section :name "Weapons" :itemmap (itemmap "Shock Cannon" (item :name "Shock Cannon") "Pulse Laser" (item :name "Pulse Laser") :Missile (item :name "Missile") "Smite Projector" (item :name "Smite Projector") "Wave Motion Gun" (item :name "Wave Motion Gun" :range "400Mm") "Magna Flame Gun" (item :name "Magna Flame Gun" :range "800Mm"))) "Earth Forces" (section :name "Earth Forces" :unitmap (unitmap "Yamato Space Battleship" (unit :name "Yamato Space Battleship" :image "SpaceBattleshipYamato/Yamato.png" :titles "Argo" :mass "62ktons" :length "263m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Shock Cannon" (unititem :name "Shock Cannon") "Pulse Laser" (unititem :name "Pulse Laser") :Missile (unititem :name "Missile") "Wave Motion Gun" (unititem :name "Wave Motion Gun"))))) "Andromeda Space Battleship" (unit :name "Andromeda Space Battleship" :image "SpaceBattleshipYamato/Andromeda.png") "UDF Battle Satellite" (unit :name "UDF Battle Satellite") "UDF Space Destroyer" (unit :name "UDF Space Destroyer" :image "SpaceBattleshipYamato/Destroyer.png") "Cosmo Tiger II" (unit :name "Cosmo Tiger II" :image "SpaceBattleshipYamato/CosmoTiger.png") "Cosmo Zero" (unit :name "Cosmo Zero" :image "SpaceBattleshipYamato/CosmoZero.png"))) "Gamelon Empire" (section :name "Gamelon Empire" :unitmap (unitmap "Leader Desslok" (unit :name "Leader Desslok" :image "SpaceBattleshipYamato/LeaderDesslok.png") "Desslok's Command Carrier" (unit :name "Desslok's Command Carrier" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :unititemmap (unititemmap "Smite Projector" (unititem :name "Smite Projector"))))) "Gamelon Destroyer" (unit :name "Gamelon Destroyer") :Tri-Carrier (unit :name "Tri-Carrier") "Smite Ship" (unit :name "Smite Ship" :image "SpaceBattleshipYamato/Gamelon_Smiteship.png" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :unititemmap (unititemmap "Smite Projector" (unititem :name "Smite Projector"))))) "Drill Missile" (unit :name "Drill Missile") "Reflex Gun" (unit :name "Reflex Gun" :summary "* Argo is on the opposite side of Pluto. The opposite side? Oh, no Star Force, you're not getting away. My Reflex Gun can shoot around corners. - Colonel Ganz"))) "Comet Empire" (section :name "Comet Empire" :unitmap (unitmap "Prince Zordar" (unit :name "Prince Zordar" :image "SpaceBattleshipYamato/PrinceZordar.png" :summary "I hold the whole universe in the palm of my hand. I just close my hand and planet crumble, the stars shatter! What chance does your planet Earth have? It's a cosmic joke. - Prince Zordar") "Comet Empire" (unit :name "Comet Empire" :image "SpaceBattleshipYamato/CometEmpire.png") :Medaruhse (unit :name "Medaruhse" :summary "Its principal weapon is a large plasma cannon which fires directly into a SMITE field which teleports the energy to a considerable distance. This gives the weapon a tremendous firing range more than twice that of a Wave Motion Gun." :titles "Magna Flame Gun" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Magna Flame Gun" (unititem :name "Magna Flame Gun"))))))))))
nx/tactics/books/science_fiction / chapter_space_opera
Description:
Function Name:
  • chapter_space_opera
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space_opera : base/chapter (chapter :name "Space Opera" :sectionmap (sectionmap "Space Opera Phenomenon" (section :name "Space Opera Phenomenon" :locationmap (locationmap "Motaran Rift" (location :name "Motaran Rift" :summary "* Beyond the Alliance Frontier is the ionic Pendulask storm stretching 100 light years across. In the center of the storm is a spacial disturbance that has ripped the fabric of time itself - The Motaran Rift. * There has been documented evidence of horrific beings who appear alive, but then not alive, which have escaped from the Rift to wreak havoc on nearby worlds. Scientists theorize that there must be a time corridor that links some netherworld to the third dimension. Others believe it is a conduit that links another part if the universe to itself. Religious groups call it Hell."))) "Terran Union" (section :name "Terran Union") "Galactic Alliance" (section :name "Galactic Alliance" :summary "* Alliance Defense Service - A Service chartered with the defense and policing of star systems including air, sea, and land policing and defense. They hold authority over all civilian facilities including cities, space stations, and satellites. ** Alliance Police ** Alliance Bureau of Investigation * Alliance Military Service ** Alliance Naval Division - A division managing large combat ships of all types including capital ships, military space stations, and military satellites. ** Alliance Starfighter Division - A division managing small combat ships including interceptors, close support, and bombers. ** Alliance Commando Corp - Elite teams focused on performing surgical military operations deep within hostile territory. ** Alliance Marine Corp - A dedicated combat group focused on spearheading battles and rapid response. * Alliance Contact Service - A Service dedicated to exploration, diplomacy, trade negotiations, foreign intelligence, and the projection of soft power. ** Alliance Diplomatic Corp ** Alliance Intelligence Corp * Alliance Research Service" :titles "Federation, Feddys (derogatory), Starfleet" :itemmap (itemmap :PAX (item :name "PAX" :summary "* PAX is a chemical compound designed to be added to air processors in order to pacify a populace. An Alliance research team on Miranda discovered that the Pax was effective with 99.9% of people. Unfortunately, it was such an effective means of pacifying that the people stopped doing anything, they simply waited for death. The remaining tenth of a percent (0.1%) of the population had the opposite reaction. They became highly aggressive, committing unspeakable acts including cannibalism, rape, and self-mutilation. These people would come to be known as Reavers." :titles "G-23 Paxilon Hydrochlorate, PAX (Latin for Peace)")) :locationmap (locationmap "Alliance Spaceport" (location :name "Alliance Spaceport" :summary "* Spaceports on Alliance worlds service all incoming and outgoing space traffic. It is strictly illegal to attempt to land on a planet anywhere except a spaceport. * Spaceports manage customs, quarantines, weapons checks, temporary lodging, resupply, trade, entertainment, etc. * Spaceports are always located far away from major cities. They are also heavily armed with troops, fighters, and destroyers available at short notice. * For safety reasons, landing pads and drydocks are located 10km away from any inhabited area. The spaceport proper is reached by shuttles. * Orbital and land-based spaceports are essentially the same except for modes of travel.")) :unitmap (unitmap "Alliance Armsman" (unit :name "Alliance Armsman") "Alliance Commander" (unit :name "Alliance Commander") "Alliance Commando" (unit :name "Alliance Commando") "Alliance Emmissary" (unit :name "Alliance Emmissary" :summary "* Serves on First Contact and other diplomatic missions. Emmissaries must determine the best course of action to develop long-term relations with other species. As such, they have sweeping powers to determine policy that military personnel must implement including blockades and quarantines." :titles "Diplomat") "Alliance Heavy Marine" (unit :name "Alliance Heavy Marine") "Alliance Intelligence Agent" (unit :name "Alliance Intelligence Agent" :titles "Brint") "Alliance Marine Tech" (unit :name "Alliance Marine Tech") "Alliance Mobile Cavalry" (unit :name "Alliance Mobile Cavalry") "Alliance Mobile Infantry" (unit :name "Alliance Mobile Infantry") "Alliance Pilot" (unit :name "Alliance Pilot") "Alliance Police Detective" (unit :name "Alliance Police Detective") "Alliance Police Officer" (unit :name "Alliance Police Officer") "Alliance Scientist" (unit :name "Alliance Scientist") "Alliance Scout" (unit :name "Alliance Scout" :summary "* Alliance Scouts operate somewhat differently from the other divisions of the Alliance. Since Scouts must opearte on the edge of civilized space, the Scout Service values independence and resourcefulness. Its people are highly independent (some would say insubordinate) and are accustomed to doing a lot with a little. Scouts do not wear normally uniforms, even onboard ships and easily blend in with the frontier fringers. They operate with little funding or support and are experts at survival and mechancal engineering. * Reputation - Among the other divisions, the Scouts are seen as unprofessional cowboys, madmen, or criminals depending on who you talk to. The Scouts themselves admit to cases of all of these, and they proudly maintain that it takes a certain type to be a successful Scout. * Intelligence - Given the Scouts' deployment at the fringes of civilization, they often gain intelligence that the Intelligence Bureau would find difficult to obtain on their own. Officially, the Scout service shares all intelligence gathered with the Bureau. Unofficially, the Scouts do not like the way the Intelligence Bureau operates and rarely volunteers information. This hesitency, of course, makes the Bureau suspiscious. * Wartime - During war, the Scouts are called upon to perform skirmish and sabotage missions using their fast, light craft.") "Alliance Technician" (unit :name "Alliance Technician") "Alliance Trooper" (unit :name "Alliance Trooper") "Alliance Defense Pilot" (unit :name "Alliance Defense Pilot" :summary "* Planet-based spacefighter pilot. These fighters can only attain low-orbit, but they are relatively cheap to manufacture and easy to fly so they can be fielded in large numbers.") "Alliance Defense Trooper" (unit :name "Alliance Defense Trooper" :summary "* Planet-based military force. These warriors are trained to use the local terrain and defensive positions to repel invaders. Since defense forces are rarely needed, it is usually a cushy job. Therefore, they have a somewhate deserved reputation for being lazy and unprepared.") "Inquiry Light Recon ATV" (unit :name "Inquiry Light Recon ATV" :summary "* Wheeled * Open topped ATV with HMG and MRLx2." :speed "170kph" :crew "3" :mass "4tons") "Sepoy APC" (unit :name "Sepoy APC" :summary "* Wheeled" :speed "300kph" :crew "1+11" :mass "38tons") "Hunter AC Tank" (unit :name "Hunter AC Tank" :summary "* Air Cushioned * Pulse Laser * Gauss MG * MRL" :speed "45kph" :crew "6" :mass "210tons") "Siega Strider" (unit :name "Siega Strider" :summary "* Legged" :speed "200kph" :crew "1" :mass "60tons") "Striker Grav Tank" (unit :name "Striker Grav Tank" :summary "* 50MW Pulse Laser" :speed "480kph" :crew "3" :mass "522tons") "Tarsan Grav APC" (unit :name "Tarsan Grav APC" :speed "300kph" :crew "2+10" :mass "51tons") "Essor Recon Drone" (unit :name "Essor Recon Drone" :summary "* No Weapons" :speed "1000kph" :crew "0" :mass "4.3tons") "Princely Lord Attack Speeder" (unit :name "Princely Lord Attack Speeder" :summary "* Grav Flyer * Pulse Laser" :speed "960kph" :crew "2" :mass "171tons") "Alliance Exploration Ship" (unit :name "Alliance Exploration Ship" :summary "* SS Copernicus - Floating adrift in open space, the Copernicus is a ghost ship in more ways than one.") "Hellbore Missile" (unit :name "Hellbore Missile" :summary "* A giant missile designed to drill into a planet and detonate deep in the magma setting off massive volcanic eruptions across the world with the intention to make the world uninhabitable."))) "Azuriach Empire" (section :name "Azuriach Empire" :summary "History: * Exodus - After the first Exodus to space, the over-industrialized, pollution ridden Earth fell into a deep recession. The remaining population of Earth began to feel that their fellow humans had abandoned them to their fate and grew to resent their spacefaring kin. * Eugenics War - After the Eugenics War, Earth banned all genetic engineering including cloning and artificial life while the Colonials embraced these technologies for their very survival. Earth began to see the Colonials as a twisted offshoot of mankind that chose a sterile life in space surrounded by runaway technology instead of a wholesome life with earth, sky, and sea. * Azure Party - After the Eugenics War, the Earth moved toward a 'Pure Earth' platform combining a resurgence of religion with a return to a more natural, peaceful way of life, on Earth. A particularly militaristic wing of the the 'Pure Earth' movement became known as the Azure party due to the round blue patches they wore symbolizing the Earth. The Azures were experts at propaganda and found an easy scapecoat in the Colonials. As the global recession continued, the Azures influence over Earth politics increased. * United Earth Alliance (UEA) - After millenia of conflict, Earth united under a single banner, the United Earth Alliance (UEA). Its political platform was the 'Pure Earth' platform, without genetic engineering, without cloning, and with the UEA in control of the Solar System. The Colonials saw this for the power grab that it was and mocked this position as the 'Groundhog Movement'. * Solar Cold War - The UEA and the Colonials, especially the Jovians, fought a cold war for decades trying to gain the upper hand. The development of Exo-suits by the Jovian Confederation led to a new arms race between the Jovians and Earth. In the end, the strain on the Earth economy was too great, and the UEA became desparate. In order to maintain control, they declared martial law and began a military build up. This ultimately, forced the other Colonials to rally toward the Jovians or lose their sovereignty. * The Rock War - Earth's military might far exceeded the colonies, but their reach was limited to Earth's orbit. The Colonials had far more spaceships, but the vast majority of these were civilian ships. Ultimately, however, it was the UEA's unpopularity that was its downfall. Before the final battle, sabotage and poor maintenance had incapacitated half of the Earth fleet. When the final battle was fought, the Colonials used their superior numbers to engage the Earth fleet in high Earth orbit where Earth's gravity well restricted the UEA fleet's movements. Then the Colonials covertly captured the industrial Mass Drivers on the Moon and began railing rocks into the Earth fleet and unto Earth itself. After horrific loses on both sides, the Earth military staged a coup on Earth and immediately negotiated a cease fire. The UEA was disbanded and their leaders (largely Azures) were put on trial. * Terran Union - After the fall of the UEG, the Colonials created a new representative goverment with each colony, including Earth and Luna, as a state. Earth began rebuilding, but the scars of the war would take centuries to heal. * Colony Ships - After 50 years of peace, the colonization of the Solar System was moving along smoothly, so the Terrans began to look outward to the stars. New discoveries in propulsion made long-range probes and colony ships feasible, though their journeys were still measured in decades, so they would still be one-way missions. * First Contact - The Terrans had been searching the stars for extra-terrestrial life for hundreds of years, but they were not prepared to find it in their own backyard. A survey of Pluto uncovered an abandoned alien outpost. This was the Terrans' first proof of alien life, and it was decidedly malevolent. This refocused space exploration on the construction of military warships. 30 years later, a human colony vessel had its first face-to-face encounter with a space-faring, alien race, the Thranx. * Alliance - The Thranx were much more advanced than the Terrans, but fortunately they were also much more peaceful. The Thranx were part of a loose trade Alliance of races including the Blarads, Caitians, Saurians, and Vargr. The Terrans entered the Alliance and were able to purchase the secrets to FTL drives. With FTL, colonization of the stars began in earnest. Like the early American settlers, there were many willing to risk death for a chance at a new life. Large colony ships began radiating outward to nearby planets. Among these were a number of disgruntled Azures who were horrified at the sight of humans reduced to a third rate state in an alien dominated Alliance. Over the next decades, the Azures began settling in one region of stars distant from any alien races. * Azuriach Imperium - Over time, the Azures consolidated power in their sector of space. They secretly built a large military fleet, and by the time the Terran Union discovered them, the Azures were powerful enough to declare themselves the Azuriach Imperium. Officially, the larger Alliance considers the Azuriachs a human internal problem. Unofficially, the Alliance is concerned with the distinctly human-centric views of the Azuriachs and are not interested in the Azuriachs gaining power over the human worlds." :titles "Earth Empire" :unitmap (unitmap "Azure Imperial Legionnaire" (unit :name "Azure Imperial Legionnaire") "Azure Imperial Marine" (unit :name "Azure Imperial Marine") "Azure Imperial Pilot" (unit :name "Azure Imperial Pilot") "Azure Imperial Security Agent" (unit :name "Azure Imperial Security Agent") "Azure Imperial Security Officer" (unit :name "Azure Imperial Security Officer") "Trepida Light Grav Tank" (unit :name "Trepida Light Grav Tank" :summary "* Fusion Cannon" :speed "1000kph" :crew "2" :mass "110tons") "Invader Grav Tank" (unit :name "Invader Grav Tank" :summary "* Fusion Cannon" :speed "3640kph" :crew "4" :mass "152tons") "Vortex Land Carrier" (unit :name "Vortex Land Carrier" :summary "* These enormous vehicles are equivalent to a naval battleship/aircraft carrier but hovers over the ground using intense magnetic repulsion and massive hoverfans. * The area directly below the hull is exposed to lethal magnetic energy. * Fusion Cannon"))) "Galactic Trade Union" (section :name "Galactic Trade Union" :summary "* A powerful group of loosely affiliated mega-corporations that acts as the largest lobbying group in the Alliance. The Union has wields tremendous influence over the Alliance government and is essentially a shadow government itself. Though it wields tremendous power, there is intense disagreement how that power should be used with one group or another benefiting the most from every action taken. Conflict within the Union is subversive and bloody with many outside pawns being used including mercenaries and the Star Syndicate. * The Trade Union has no actual employees. Instead, the individual corporations act on its behalf either directly or through contractors. * Most smaller companies believe the Trade Union acts as a mafia by extorting money from its members for protection while leaning trade deals toward the core members and stifling the very competition they profess to uphold.") "Star Syndicate" (section :name "Star Syndicate" :summary "* The Syndicate is a loosely held criminal empire spread throughout the Alliance. It is a convenient tool of the mega corps and governments, so the Alliance never seems to make much progress against it." :unitmap (unitmap "Syndicate Black Marketeer" (unit :name "Syndicate Black Marketeer") "Syndiate Raider" (unit :name "Syndiate Raider" :summary "* Given the high value of starships and their goods, piracy is extremely profitable. The Alliance maintains a 'No-Tolerance/Shoot to Kill' policy for piracy, yet pirate ships and pirate outposts are frighteningly common. The [Azuriach Empire]'s totalitarian state has far fewer incidents of piracy, largely because the stolen goods are harder to sell."))) "Independent Terrans" (section :name "Independent Terrans" :unitmap (unitmap "Terran Bounty Hunter" (unit :name "Terran Bounty Hunter") "Terran Merchant Marine" (unit :name "Terran Merchant Marine") "Terran Mercenary" (unit :name "Terran Mercenary") "Terran Miner" (unit :name "Terran Miner") "Terran Physician" (unit :name "Terran Physician") "Terran Scientist" (unit :name "Terran Scientist") "Terran Technician" (unit :name "Terran Technician") "Corsair Motorcycle" (unit :name "Corsair Motorcycle" :summary "* Wheeled * Civilian Motorcycle" :speed "120kph" :crew "1" :mass "350kg") "Letra Ground Car" (unit :name "Letra Ground Car" :summary "* Wheeled * Civilian Automobile" :speed "80kph" :crew "1+4" :mass "4tons") "Shackleton Snow ATV" (unit :name "Shackleton Snow ATV" :summary "* Tracked * Easy to maintain snow ATV" :speed "70kph" :crew "1+3" :mass "8tons") "Rheena Passenger ACV" (unit :name "Rheena Passenger ACV" :summary "* Air Cushioned * Passenger Hovercraft" :speed "60kph" :crew "1+15" :mass "8tons") "Or-E-Cull ATV" (unit :name "Or-E-Cull ATV" :summary "* Tracked * High Speed ATV" :speed "175kph" :crew "1+5" :mass "10tons") "Surveyor Hover-Buggy" (unit :name "Surveyor Hover-Buggy" :summary "* Air Cushion * 1 Fixed LMG." :speed "45kph" :crew "1" :mass "13.7tons") "AVI Cargo ACV" (unit :name "AVI Cargo ACV" :summary "* Air Cushioned * Cargo Hovercraft" :speed "60kph" :crew "1+3" :mass "18tons") "Hugheston Wheeled Transport" (unit :name "Hugheston Wheeled Transport" :summary "* Wheeled * Cargo Transporter" :titles "Semi Truck" :speed "100kph" :crew "1+2" :mass "21tons") "Arctica Grav Transport" (unit :name "Arctica Grav Transport" :summary "* Grav * Self loading cargo transporter" :titles "Semi Truck" :speed "120kph" :crew "1+2" :mass "25tons") "Bundan Wheeled ATV" (unit :name "Bundan Wheeled ATV" :summary "* Wheeled * ATV" :speed "100kph" :crew "1+16" :mass "28tons") "Permax Tracked ATV" (unit :name "Permax Tracked ATV" :summary "* Tracked * ATV" :speed "80kph" :crew "1+16" :mass "47tons") "Cinto Construction Vehicle" (unit :name "Cinto Construction Vehicle" :summary "* Tracked * Bulldozer/Backhoe" :speed "75kph" :crew "1" :mass "48tons") "Tavee-Gho Hoveryacht" (unit :name "Tavee-Gho Hoveryacht" :summary "* Air Cushioned * Hovercraft" :speed "105kph" :crew "1+3" :mass "82tons") "Cetacean Dolphin Cycle" (unit :name "Cetacean Dolphin Cycle" :summary "* Underwater, Propelled by moving Fluke * Intended for fun in the sea. It can glide with the dolphins and communicate with them using recorded dolphin speech." :speed "50kph" :crew "1" :mass "75kg") "Hass Grav Minisub" (unit :name "Hass Grav Minisub" :summary "* Underwater" :speed "25kph" :crew "1+1" :mass "1tons") "Dashi Hydrofoil" (unit :name "Dashi Hydrofoil" :summary "* Hydrofoil, Underwater * Submerged: 25kph * Beam Laser" :speed "125kph" :crew "2" :mass "2tons") "Vieus Hydrofoil" (unit :name "Vieus Hydrofoil" :summary "* Hydrofoil * Pulse Laser" :speed "110kph" :crew "2" :mass "22tons") "Gasheda Undersea ATV" (unit :name "Gasheda Undersea ATV" :summary "* Tracked, Underwater" :speed "110kph" :crew "6" :mass "184tons") "Aquanaut Restaurant" (unit :name "Aquanaut Restaurant" :summary "* Tracked, Underwater * Undersea Restaurant" :speed "110kph" :crew "15+85" :mass "251tons") "Tiamat Mining Crawler" (unit :name "Tiamat Mining Crawler" :summary "* Tracked, Underwater * Self-contained undersea mining colony for 50. * Can stay 10km underwater for 3 to 6 months at a time." :speed "70kph" :crew "14+50" :mass "1000tons") "Timla Personal Floating Chair" (unit :name "Timla Personal Floating Chair" :summary "* Grav * Used for the luxury, the elderly or disabled, or for aliens with poor ground locomotion. * The floating chair normally just hovers over the ground, but it can slowly ascend if needed." :speed "30kph" :crew "1" :mass "100kg") "Peter Pan Child's Grav Chair" (unit :name "Peter Pan Child's Grav Chair" :summary "* Grav * Young passengers automatically are taken to their programmed destination anywhere in the world. * Computer will not allow reprogramming unless authorized by the parent." :speed "600kph" :crew "1" :mass "400kg") "Zeus Luxury Grav Chair" (unit :name "Zeus Luxury Grav Chair" :summary "* Grav * The ultimate in individual luxury transport. The autopilot allows the passengers to work, talk, or relax with a drink." :speed "300kph" :crew "1+1" :mass "480kg") "Swallow Flycycle" (unit :name "Swallow Flycycle" :summary "* Grav * Autopilot" :speed "300kph" :crew "1+1" :mass "1tons") "Venery Police Speeder" (unit :name "Venery Police Speeder" :summary "* Grav * Gauss MG" :speed "1080kph" :crew "1" :mass "1.2tons") "Strike It Rich Prospector Grav Bubble" (unit :name "Strike It Rich Prospector Grav Bubble" :summary "* Grav * Can manuever close to analyze samples with its robotic arm. The bubble is to be used near a base. A team usually drops off one crewman to dig while the other prospects for new sites." :speed "1600kph" :crew "1+1" :mass "1.5tons") "Planet Hopper Grav Car" (unit :name "Planet Hopper Grav Car" :summary "* Grav * Flying family-sized car can travel anywhere on a planet in under a day." :speed "1000kph" :crew "1+3" :mass "2.6tons") "Quest Air-Raft" (unit :name "Quest Air-Raft" :summary "* Grav" :speed "540kph" :crew "1+5" :mass "8.3tons") "Demeter Grav Farm Wagon" (unit :name "Demeter Grav Farm Wagon" :summary "* Grav * Grav farming equipment that does not disturb crops. * Robotic arms plant and harvest." :speed "100kph" :crew "3" :mass "11tons") "Lifesaver Grav Emergency Responder" (unit :name "Lifesaver Grav Emergency Responder" :summary "* Grav * Includes variety of sensors for detecting radiation leaks, trapped survivors, etc. * Fire retardant foam cannon" :speed "600kph" :crew "2+8" :mass "13tons") "Duone Rapid Speeder" (unit :name "Duone Rapid Speeder" :summary "* Grav * Extremely high-speed grav flyer." :speed "3840kph" :crew "1+3" :mass "14tons") "Wanderer Grav Airbus" (unit :name "Wanderer Grav Airbus" :summary "* Grav * Flying mass transit or tour bus can reach any location on the planet in under a day." :speed "1400kph" :crew "1+10" :mass "15tons") "Traveller Shuttle" (unit :name "Traveller Shuttle" :summary "* Grav, Suborbital" :speed "180kph" :crew "1+8" :mass "17tons") "Cloud Nine Grav Houseboat" (unit :name "Cloud Nine Grav Houseboat" :summary "* Grav * 3 Bedroom, 2 Bath, 1 Kitchen, 1 Living/Dining Room, 2 Office * Take a vacation or live in the sky. The Cloud Nine has fuel and supplies for a year without landing." :speed "300kph" :crew "1+10" :mass "20tons") "Athene Grav Lounge" (unit :name "Athene Grav Lounge" :summary "* Grav * Mobile lounge popular with private clubs, business executives, and negotiators." :speed "720kph" :crew "6+30" :mass "30tons") "Motherlode Grav Miner" (unit :name "Motherlode Grav Miner" :summary "* Grav * Mining Utility Vehicle" :speed "540kph" :crew "2+2" :mass "49tons") "Tachcel Grav Hyperliner" (unit :name "Tachcel Grav Hyperliner" :summary "* Grav, Suborbital * Speed: 6G * At maximum speed, can reach any location on a typical planet in under an hour." :speed "4200kph" :crew "2+72" :mass "50tons") "Jacques Grav Miner" (unit :name "Jacques Grav Miner" :summary "* Grav * Mining vehicle designed to locate, mine, and transport ore from a variety of environments. * Mining Laser" :speed "120kph" :crew "2+2" :mass "67tons") "Windrider Grav Weather Lab" (unit :name "Windrider Grav Weather Lab" :summary "* Grav * Floating meteorological laboratory" :speed "60kph" :crew "2+10" :mass "88tons") "Thorian Kur Repair Shop" (unit :name "Thorian Kur Repair Shop" :summary "* Grav * Flying repair platform" :speed "330kph" :crew "1+3" :mass "127tons") "Sans Souci Grav Yacht" (unit :name "Sans Souci Grav Yacht" :summary "* Grav * The ultimate millionaire's portable mansion. The interior has 14 staterooms and is custom designed to the owner's tastes. Some models include a swimming pool. * High tech armor and sensors." :speed "960kph" :crew "1+30" :mass "342tons") "Zeff Grav Cargo Transport" (unit :name "Zeff Grav Cargo Transport" :summary "* Grav * Heavy Cargo Transporter" :speed "720kph" :crew "1+1" :mass "500tons"))) :Aeodronian (section :name "Aeodronian" :summary "* The Aeodronians are a race of bipedal salamander-like humanoids. The salamanders are quite cunning and intelligent. The race as a whole is opposed to the Alliance. * The Aeodronian home world is a tropical paradise, lush and humid, possessing a variety of flora and fauna that covers 20% of the planet's surface area. The salamanders live in costal cities made of coral outcroppings (reefs) and carry on all industry in environmentally safe factories and other facilities. All food is taken from the natural bounty of the sea. For most materials, such as metals, alloys, and high-technology items, they trade with other races and worlds, rather than rape the bosom of their own planet. That which they cannot trade for, they take. * The Aeodronians have become scavengers and pillagers of the galaxy. They abhor the Alliance's method of colonial exploitation, and the salamanders are bitter enemies of its military. There is some hypocrisy in this statement, because salamander's are known to pillage and plunder Alliance worlds. Aeodronian raiding fleets harry convoys and supply routes, and attack worlds that the Aeodronidans see as being raped of their natural order." :titles "Salamanders") "Blarad Starkingdom" (section :name "Blarad Starkingdom" :titles "Bears, Ursoids") :Cizerack (section :name "Cizerack" :summary "* Description - A race of large, brown/blue/black cat/bear creatures. They are extremely fast and can able to achieve speeds of 40mph for short periods of time. Despite their size, they are strong climbers and swimmers. When necessary, they can walk erect, but they are clumsy on two feet. They possess excellent hearing and vision especially at night. They possess prehensile paws, with retractable fingers but have limited manual dexitery. They are stealthy stalkers and are adept at scouting, hunting, and ambushing. * Combat - Their melee prowess is legendary, but their paws make ranged weapons awkward, so instead they tend to mount smart weapons on their backs. They are also sometimes willing to allow small creatures (like Mazians) to ride on their backs. Cizerack culturally prefer close combat to cowardly ranged weapons, but they are gradually overcoming this predjudice. * History - The Cizerack evolved on a world with a few continents dominated by grassy plains and scrubland. Winters are harsh, and most animals including the Cizerack burrow into the ground and hibernate during the winter. There is a polar variant of the Cizerack that is adapted to the cold weather and does not usually hibernate. The Cizerack have long been at the top of the food chain, and have a long cultural history. They only recently developed technology in an effort to solve their over-population problem." :titles "Caitian, Felines" :unitmap (unitmap "Cizerack Warrior" (unit :name "Cizerack Warrior"))) :Chatilian (section :name "Chatilian" :reference "* I rather like the way his head exploded." :summary "* Description - The Chatilians are from the planet Chatil in the Fomalhaut star system. They are frail, delicate looking, greenish blue plant beings with thin bodies and large, bullet-shaped heads. Chatilians are herbivores. They have no real mouth, rather they possess facial slits through which they strain their food intake. Their arms and legs are like branches and roots which must be pruned to grow into useful limbs. When angered, Chatilians whine loudly, bug out their eyes, and drool yellow spit from their facial slits. This would be somewhat comical, except this is a sign that they are generating and then people start dying. * Telepathy - They can speak aloud with great difficulty, though they do not normally need to because their skulls are crowned with sensory nodes which allows them communicate telepathically among themselves. With focus, an empath also may read an unprotected mind in close proximity. * Psykokinesis - Although Empaths are innocuous looking, they are actually among the more dangerous and formidable opponents in the galaxy. Through the evolutionary process, they have developed psycho-kinetic power which allows them to harness and transmit psychic energy. This unusual ability is called Generating. Empaths employ psychic and illusionary attack forms. Advanced Chatilians can actually crush the minds of their enemies. * Personality - They are generally considered rude, peculiar, and annoying by other races. They are not overly fond of other races either. They intensely dislike any inconvenience including bad weather. A large part of their scientific development has been toward atmospheric control and terraforming. Chatilians like water but hate any kind of physical exertion. They are sensitive to everything, so noise, bright lights, gaudy art, hot weather, cold weather, dumb people, etc, etc. all irriate the sedate intellectuals to no end. * Colonies - Chatilian buildings are strange tiered affairs with rooms and floors of different sizes, terraces and skylights everywhere, and stark blank surfaces. The architecture is similar to adobe cities and Mediterraean beach communities. Chatilian cities are sprawling low-lying residential areas with all industry and commerical operations underground. Trees and plants are allowed to grow naturally throughout the cities. The underground is a maze of indirect passages and oddly shaped rooms. Tourist often get lost which the Chatilians attribute to their limited mental capacity. * History - The Chatilians homeworld is closer to its star than Earth. It is hot and humid year round, and its 4 moons reflect much light even at night. In this world, mobile plant life evolved instead of animal life. Though all Chatilians speak telepathically, the ability to generate only occurs in 1% of the populace. The ability or inability to generate has created 2 classes and numerous, bloody civil wars with one side or the other taking control. The current royal family can generate and their power is buffered by a representative parliament. This arrangement has lasted for 500 years, but there always remains a risk of civil war." :titles "Asparagus Men" :unitmap (unitmap "Chatilian Empath" (unit :name "Chatilian Empath"))) "Cybernetically Enhanced" (section :name "Cybernetically Enhanced" :titles "Cyber, Cyborg, Cyman, Simon (derogatory)") :Eridani (section :name "Eridani" :summary "* The ultimate warrior race. The methane breathing Eridani are the epitome of a combat tacticians. They possesses supreme agility, exceptional willpower, and are quite cunning. * Physiology - Eridani are tri-sexual creatures with males and females fertilizing and a fat creature called a Nog that carries young to term in a pouch similar to a kangaroo. Males and females have few gender-based role differences while the Nogs are largely helpless and fiercely protected. * History - The Eridani have a long history of conflict and conquest among themselves before uniting to bring their conquests to the stars. They are not interested in statecraft, so conquered worlds were largely left to their own devices besides helping pay for the eternal war effort. Eventually, they encountered a trecherous enemy in the Phentari squids. This enemy was able to lure the Eridani fleet into an all out attack while launching a covert attack against the Eridani homeworld reducing it to rubble. The Eridani empire was shattered and they can never live down the humiliating defeat. They now maintain a blood feud with all Phentari." :unitmap (unitmap "Eridani Swordsaint" (unit :name "Eridani Swordsaint" :summary "* Certain Eridani warriors are chosen at birth to fulfill the honorable status of Mokaba Datu, (Wisdom Warrior). Under the tutelage of the Buddon Priest, the young Mokaba Datu learns the basic tactics of honorable survival. * A swordsaint warrior must be willing to sacrifice emotion for the superior consciousness of objective thought. Even in a berserk status, an Swordsaint retains complete control and suffers no berserk penalties." :titles "Mokaba Datu, Wisdom Warrior") "Eridani Warrior" (unit :name "Eridani Warrior" :summary "* This supreme warrior race specializes in combat skills, most notably archaic hand weapons. Every warrior is allowed to carry an ornamental archaic hand weapon of his choice wherever he goes within Alliance territory. * Eridani warriors study Kaush-mukal (The study of the Inner Self). He is taught the fundamentals of archaic hand weapons combat, drilling every day for hours, until he passes a fundamental competence test in his chosen weapon. Once he has mastered the fundamentals, he begins the arduous task of finding Inner Self. * A warrior has a duty, unselfish and detached. It is to wage battle for the honor of the race, and in the heartfelt throes of battle come to understand the tentative existence of the self. Those unworthy of combat will inevitably be disposed of. Such is the fundamental construct of the evolution process. Eventually one must find the door to everlasting peace. But the path to tranquility starts in the chaos of the battlefield."))) :Mazian (section :name "Mazian" :summary "* The Mazian is an amorphous being, able to change shape to resemble other objects. It is normally a gel-like amorphous being, each cell existing as a separate entity and yet working in a harmonious symbiotic relation with the other cells around it. The Mazian has no central nervous system, rather the outer layer of skin is covered with small nodes that allow the Mazian to sense ground vibrations. The nodes also make Mazians vulnerable to loud noises and sonics. It is an asexual being that reproduces through budding every ten years. It eats by absorbing liquids into its body and the Mazian can absorb small objects for temporary storage. * Personality - Mazians are very friendly creatures with no sense of personal space. They hang around in huge piles and are only truly happy when touching something or someone. As a colony creature, Mazians lack a sense of individuality. They do not understand personal property or war as they believe in sharing everything. Many other races find this perspective to be naive. The tactile nature of the Mazians combined with their selfless nature make them very popular companions and lovers. They have formed a close bond with the Cizerak despite the fact that their races have only recently encountered one another. Cizeraks have been known to carry Mazian companions on their backs. * Movement - Mazians normally travel low to the ground, sliding rapidly over surfaces. They are also fully amphibious and move gracefully like an eel or a squid. Mazians can also burrow through loose earth and can slide through narrow tunnels and pipes with no feeling of claustrophobia. * Communication - Mazians normally communicate by touch but may also make coded thumping noises through the ground or grunting noises in the water. To speak with other races, they use voice synthesizers. * Senses - Mazians cannot see, but have evolved a complex form of sonar which allows them to distinguish shapes. They have a fantastic sense of smell, able to detect residual odors better than a bloodhound. Their sense of taste is so good that they can use it to distinguish the dyes used in different colors and can use this ability to read by touch. Mazians have developed an ocular device that they can use to see as other creatures do. * Replication - The Mazian's ability to change it's form makes it the ultimate espionage/infiltration specialist. As the Mazian learns to control the cell metamorphoses, its chance to accurately duplicate something increases. At high levels, a Mazian can replicate a humanoid form. When attempting to replicate, the Mazian flows over an object, internally records the physical matrix, then copies it. Mazians often pay handsome amounts of money for internal skeletons to aid them in replicating bipedal and quadrapedal forms. * Weaknesses - Mazians jelly-like form is sensitive to sonics and dessicants. They are vulnerable to the drying effects of heat and cold, but their predominatly liquid form does not catch fire easily." :titles "Blob") :Mutazchan (section :name "Mutazchan" :summary "* The Mutzachan Energy Controller is one of the most powerful of all the known races. They can manipulate energy through their body to generate tremendous, destructive power. Mutzachan love the power of raw energy. They feel that energy must fill its potential and dislike the storage of energy. * Description - Mutzachans are indigenous to the planet Trishmag of the Cygni-A star system. They are small, bipedal humanoids, with large heads and large pale green eyes. They are by far the most intellectually advanced race in the known galaxies. Their brains have almost twice the convoluted surface area of human brains. * Physiology - Their high intellect and technology have left them with a distain for physical labor and consequently their physiological has suffered leaving them physically weak and easily tired. Their constitution is also weak leaving them unusally vulnerable to disease and infection. The entire Mutzachan population is less than 400 million and their culture has almost been eradicated twice, due to plague. Mutzachan have a very low fertility rate, with the females bearing young only once every 100 years. The average life expectancy for a Mutzachan is about 2,000 years. * Psychology - Mutzachan pride themselves on making decisions rationally instead of emotionally. This is not to say that the Mutachan are not emotional, but they are ususally able to overcome their emotions. Mutachan are highly ego driven and are very fond of titles and have little patience for insults. Though they are generally consistent and fair to others, they are also famous for being coldhearted and ruthless when the need arises. * History - The Mutzachan are an old race, with a history spanning 40,000 years. They have observed the development of the other races without interfering (much). Their sun is old and has been slowly, expelling more radiation over the last million years. Life on their world evolved to not only become resistant to the radiation but to feed on it in a process similar to photosynthesis. A 1000 years ago, the Mutzachans determined that their sun would go nova, destroying their home world. Since then, they have pursued 'The Great Purpose' which is to prevent or mitigate this catastrophe. The Great Purpose has also spawned dangerous nilhilist cults that believe that the Mutzachans do not deserve to continue and should embrace their final destruction in the ultimate nuclear cataclysm. * Politics - Their keen intellects and strategic thinking have risen many of their kind to high political office. Most of the high ranking members of the Alliance are either Replicants or Mutzachan. No one really trust the Mutzachan, but then again no one really trusts anybody and the Mutachan are probably better than most." :titles "Melon Head, Grays, IRSOL") :Phentari (section :name "Phentari" :summary "* The Phentari are a warlike race of bipedal, squid-like beings. Because of their callous and trecherous natures, they are the most mistrusted, and disliked of all the known, intelligent races. Phentari have a notorious reputation as skilled bounty hunters and assassins. * Physiology - Phentari are indigenous to the methane planet Phena in the Tau Ceti star system. They have four sinuous arms, each of which is capable of independent action. This allows the squid to target and fire multiple weapons, or perform multiple independent actions simultaneously. When using edged weapons, the squid attacks like a chain saw. Their tentacles also allow the Phentari to climb quite well. Phentari possess stump like legs which offer little balance. They have long since adopted prosthetic gear to facilitate running. Phena has a 20% methane atmosphere and like the Eridani, the Phentari must wear an atmospheric processor when operating outside of a methane environment. * Procreation - Phentari mate every 4 years. After mating, the female attempts to hunt and kill the male. Males who are not resourceful enough to escape have fulfilled their mating potential and are no longer worthy of further mating. The female carries the fertilized eggs for 3 months and then lays a clutch of 3-4 eggs. After egg laying, the female buries the eggs in the ground and then abandons them. Phentari young must fend for themselves after birth, often feeding off of their siblings. Until they mature, Phentari young hide in the shadows and develop their survival and hunting skills. It is not unknown for a group of young to ambush and slay an adult. Of course, when this happens, other Phentari accept that the foolish adult deserved his fate. * Personality - Phentari are heartless, selfish creatures who hold all weaker beings in contempt. They use coercion and threats instead of persuation. Phentari are very proud of their kills and will wear jewelry that displays their kill count. They are also fond of decorating their abodes with the skulls of their victims. * Skills - Phentari values weapons of all sorts including weapons that other races look down upon such as poisons, diseases, and acids. * Government - The Phentari have only had military governments ruled by a council of generals with no individual given absolute power. * History - The Phentari have a long, bloody history of civil wars. Since their disasterous war with the Eridani, they have managed to join together against a common foe. They maintain a mutual hatred of the Eridani who seem to want to kill Phentari on sight." :titles "Cold Death, Demon Spawn, Grim Reaper, Soul Sucker") :Pythos (section :name "Pythos" :summary "* The Pythons are a pair of powerful, lizard races indigenous to the planets Pythos in the Floridian star system. * Python Lizards - Python Lizards are aquatic beings, dwelling in the great swamp-like inland seas that cover much of the surface of their home planet. They don't hear sounds as humans do, but rather sense vibrations through their skin. The lizards can dive to depths of 200m and are capable of holding their breath for up to 10 minutes. The drawback is that Python Lizards are sensitive to dry environments and susceptible to cold. When the temperature drops below zero degrees celsius, Pythons usually crawl in some comfortable place and fall asleep. Python Lizards can sense heat sources out to 100m. The lizards are generally less intelligent than their galactic counterparts and have none of their own technology to speak of. They are, however, much more intelligent than their land-based cousins the Rams. * Ram Pythons - Unlike their aquatic cousins, Ram Pythons live on land. They are massively powerful and overwhelm even the Python Lizards in combat. However, their intelligence is extremely limited, and they are barely able to be taught how to use modern weaponry. * Combat - These great reptiles are the backbone of assault units in the Alliance Marines, proud and defiant warriors whose lifelong ambition is to fight the ultimate battle. The Python is a veritable fighting machine. Unarmed, it attacks with both claws, a vicious bite, and its long prehensile tail. They have a thick, scaly hide that acts as natural leather armor. * Personality - These prehistoric dinosaurs are overtly aggressive. The vast majority of Pythons follow a strict code of honor and adamantly adhere to the precepts of law and order. * History - The Lizards and Rams are tribal creatures who have fought tribal conflicts for tens of thousands of years. Thir technology was limited to spears and stone axes until the Cizerak sent a diplomatic envoy to the Python Lizards. The Lizards suspected trickery and killed the envoy sparking a punitive attack from the Cizerak. The Lizards and Rams were forced into a humiliating surrender after devastating losses from the Cizerak's cowardly orbital bombardment. The Pythos have not forgiven the Cizerak and will never trust them. Since then, the Alliance has established peaceful relations with the Pythos and have recruited many into Alliance police and military forces." :titles "Lizards" :unitmap (unitmap "Python Lizard" (unit :name "Python Lizard") "Ram Python" (unit :name "Ram Python"))) :Reavers (section :name "Reavers" :reference "* If they take the ship, they'll rape us to death, eat our flesh, and sew our skins into their clothing. And, if we're very, very lucky, they'll do it in that order. - Zoë Alleyne Washburne, Firefly" :summary "* Showing no care for life, they are driven by an insane, homicidal and xenophobic aggression that manifests in the cannibalism, rape, and torture that they visit upon any unfortunate enough to come across them. * Appearance - They deliberately gash and cut their own flesh. Barbaric piercings and random bits of metal shoved into their flesh are common, giving them a ghastly and corpse-like air. * Abilities - They seem no physically stronger or tougher than normal humans merely inured to pain to the point where they care nothing for their injuries or indeed their own lives, and more willing to push their bodies to the extreme because of their madness. * Intelligence - Exactly how sentient individual Reavers are remains an open question. Although they clearly must have some retention of any original knowledge prior to their madness (as evidenced by their command of starships and weapons) Reavers are as without fear as they are without mercy, * Reavers are believed by most to be men that went insane at the edge of space and became savage. They stared into the void beyond and became what they saw: nothing. * Reavers originated from the planet Miranda. The Alliance had been testing behavioral modification on this planet through the chemical G-23 Paxilon Hydrochlorate ([PAX]), administered through the air recycling systems. The chemical was designed to weed out aggression and anger. The ultimate result was that 99.9% of the population stopped going to work, talking to each other, and eventually stopped moving, eating or breeding, and therefore died. However, the remaining tenth of a percent of the population had the opposite reaction, with their aggression and primal instincts boosted beyond simple madness into murderous rage, sadism and xenophobia." :itemmap (itemmap :Reaver (item :name "Reaver"))) :Replicant (section :name "Replicant" :reference "* We are merely synthetic products, nothing more than elegant looking robots. - Unknown Replicant philosopher" :summary "* Replicants are genetically engineered from scratch to be mentally and physically superior to ordinary humans even genetically enhanced onces. However, they remain physically inferior to full [Android]s, so some consider their production irrelevant. * Legal status - They are genetically predisposed to be obedient, and their legal status varies from system to system. The Azures consider them abominations that must be destroyed. In the Alliance, Replicants are generally considered to be more trustworthy than real people, so they have risen to the top levels of government including the current Alliance President. * All Replicants are branded with a production number on their scalp at birth. * Psychology - Many Replicants are jealous of their fellow Humans, for they don't have an ancestry or heritage. In many ways they are less than orphans, for Replicants are grown in accelerated biochemical environment tanks. Hence, many Replicants suffer from psychological disorders. * Weaknesses - The danger of a Replicant revolution has always created controversy among ordinary people. The solution was to limit their lifespan to 10 years. They have also been created with a built-in weakness to a number of military chemicals, so that the military would always have a potent weapon against them." :titles "Genetic Human, Genman, Gen-human, Numan, Bioman, Bioroid, Gene (derogatory), Skin Job (derogatory), Newman (derogatory)") :Synthetics (section :name "Synthetics" :reference "* It would appear that the plasma pulse has destroyed a large portion of my lower body. Repairs will be necessary. - Battlelords * I can assist your employees. I can make your organization more efficient. I can carry out directives that my human counterparts might find ... distressing or unethical - David 8, Prometheus * David, what makes you sad? War. Poverty. Cruelty. Unecessary violence. I understand human emotions, although I do not feel them myself. - David 8, Prometheus" :summary "* Androids are robots designed to pass as living beings. Since specialized robots are best suited to most menial labor, Androids are generally assigned to duties where a specialized robot would not be appropriate. They are regularly assigned to starship crews, and some ships have only android crews. * Androids have many advantages over their living counterparts. They are extremely strong and fast, and have the lightning-quick processing abilities of a computer. They enjoy the best of both worlds where skills are concerned. They can be programmed with necessary skills as well as learn new skills as they are exposed to them in the outside world. Their synthetic skin is slightly tougher than a human's, and the android can take much more damage and still remain functional. Broken parts can simply be replaced, though the individual personality will be lost if the memory banks and backup are destroyed." :titles "Android, Artifical Person, Arty (derogatory), Andy/Andi (derogatory), Syn (derogatory), Synoman/Cinnoman (derogatory), Synthetic, Synthoid") "Thranx Collective" (section :name "Thranx Collective" :summary "* Description - Visually, the thranx are an insectoid race, about 1.5 meters long when on all six legs. They look roughly like very large praying mantises. Chitin color differs between males and females, being blue for the males and aquamarine for females, deepening to purple in old age. Thranx also possess vestigial double sets of wings, ritually removed after mating. The head is valentine-shaped, with large, compound golden eyes sometimes banded with red. They have four pairs of appendages; two truhands, four trulegs, and a set of intermediaries that can function as an additional pair of arms or legs. Like insects, they have no lungs and breathe through a series of openings at about waist level. * Communication - The species communicates with a complex language consisting of clicks and whistles. * Weaknesses - Thranx are unsuited to water and most fear it; they are not naturally buoyant and because they breathe out of their waists, any water that reaches to this level can drown them." :titles "Thraxis" :unitmap (unitmap "Thranx Navigator" (unit :name "Thranx Navigator"))) :Transhuman (section :name "Transhuman" :summary "* Genetically engineered superbeings." :titles "Trueman, Truman (derogatory)") "Vargr Mercantile League" (section :name "Vargr Mercantile League" :summary "* Description - Vargr are a bipedal, carnivorous race with strong canine/lupine characteristics. They are short by human standards and are not physically imposing. * The Vargr are cunning merchants. * Politics - The Vargr lack governmental structures. Mega-corporations operate entire cities and colonies, buy and selling them as a package. The corporation operating a location sub-contracts out all major services, and within small companies grow in symbiosis with the corporation. Vargr corporations believe in constant competition, so they are careful to make sure that their rivals remain healthy. This generosity to ones rivals is seen as peculiar to other races, but the Vargr have suffered through the devastating stagnation that monopolies produce and recoil at any tendency to recreate those dark days." :titles "Canines, Dogs" :unitmap (unitmap "Vargr Merchant" (unit :name "Vargr Merchant") "Vargr Buccaneer Grav Platform" (unit :name "Vargr Buccaneer Grav Platform" :summary "* High speed, open topped, gravity cycle shaped like a cylinder." :speed "1000kph" :crew "1" :mass "1.4tons"))) :Virtuals (section :name "Virtuals" :summary "* Beings that live partially or completely in the virtual world." :titles "Vrman, Verman, Vermin (derogatory)") "Zen Rigeln" (section :name "Zen Rigeln" :summary "* The Zen Rigeln are the most beloved race of the Galactic Alliance. They possess the power of healing and are much sought after as battlefield medical technicians and as domestic doctors. They hold life in the highest regard, abstaining from violence unless absolutely necessary. * Appearance - Zen have a striking appearance with a dark blue/black skull-like head and colorful, ornate robes. Zen healers always wear the colors of their current power on their clothing. * Politics - The Zen see the Alliance as far less noble than it claims. Most Zen feel that they must shepard the Alliance to be a better organization, while others see the Alliance as an evil empire and work for the Rebels in order to overthrow it. The Zen have no known enemies except their own Anarchs. * Healing - All Zen have amazing recuperative powers. Through intense training, some have gained the ability to share their healing with others." :titles "Skulls" :unitmap (unitmap "Zen Rigeln Anarch" (unit :name "Zen Rigeln Anarch" :summary "* Anarchs are a small sect of Zen that turned their back on the Zen philosophy of peace and moderation. Instead, they believe that the Zen must face the other races on their own terms: with strength. Anarchs are naturally seen as dangerous rebels and terrorists by the Zen government and populace. Captured Anarchs should expect life imprisonment. * Disruption - Through skin to skin contact, a Zen Anarch may link his/her own body with another person and disrupt the bodily functions of the target. Pain, nausea, and heart failure are only a few of the effects that a skilled Anarch can inflict.") "Zen Rigeln Healer" (unit :name "Zen Rigeln Healer" :summary "* Healing - Through skin to skin contact, a Zen Healer may link his/her own body with an injured person and share his/her healing ability. At high levels of proficiency, the Zen can perform incredible feats such as brain surgery."))) "Interstellar Vehicles" (section :name "Interstellar Vehicles" :unitmap (unitmap "Islander Star Sloop" (unit :name "Islander Star Sloop" :summary "* The Islander is the smallest class merchant starship commonly available. It can carry 30tons of cargo, 4 low passage passengers, and 10 coldsleep bays. * 1x Light Particle Cannon * 6x Light Startorpedoes * The Islander has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "125tons") "Deep Space Probe" (unit :name "Deep Space Probe") "Corsair Star Privateer" (unit :name "Corsair Star Privateer" :summary "* The Starfarer is a small merchant starship designed for dangerous courier duty. As such, it has reduced cargo capacity and increased armor, and weapons. Its high firepower makes it popular among smugglers and pirates, though its high price means that few of these are procured through normal channels. * 50tons of cargo * 6 crew * 10 low passage passengers * 10 coldsleep bays. * 4x Medium Particle Cannon * 6x Light Startorpedoes * The Banner has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "250tons") "Valkyrie Patrol Star Cruiser" (unit :name "Valkyrie Patrol Star Cruiser" :summary "* The Valkyrie is a long range cruiser designed for planetary defense. * The Valkyrie acts as a mothership for up to 4 Nike class frigates that it carries and services. * 600tons cargo * 80 Crew * 60 low passage passengers * 20 coldsleep bays. * 8x Heavy Particle Cannon * 12x Light Particle Cannon * 6x Heavy Startorpedoes" :mass "12500tons") "Nike Patrol Space Frigate" (unit :name "Nike Patrol Space Frigate" :summary "* The Nike is a short range frigate designed for planetary defense. As a planetary defense ship it is highly maneuverable and carries a heavy weapons load for a small ship. * The Nike is transported longer distances by the larger Nemesis class. * 30tons cargo * 4 Low Passage passengers * 10 coldsleep bays. * 2x Medium Particle Cannon * 6x Light Particle Cannon * 6x Medium Startorpedoes * 10x Heavy Startorpedoes" :mass "375tons") "Oliphant Luxury Starliner" (unit :name "Oliphant Luxury Starliner" :summary "* 600 High Passage Accommations * 1200 Medium Passage Accommations * 2400 Low Passage Accommations * 1000 Coldsleep berths" :mass "75000tons") "Space Cutter" (unit :name "Space Cutter" :summary "* Larger than the Pinnacle, the Cutter can travel back and forth from a planet to its moon." :mass "60tons") "Space Lander" (unit :name "Space Lander" :summary "* Larger than the Cutter, the Lander can travel back and forth from a planet to its moon and is used to haul heavy equipment or passengers. In combat, the Lander is the prefered method to deploy infantry and tanks after a marine orbital halo drop." :mass "200tons") "Space Pinnacle" (unit :name "Space Pinnacle" :summary "* Larger than the Shuttlecraft, the Pinnacle can travel from orbit to a planet's moon and return." :mass "30tons") "Space Shuttlecraft" (unit :name "Space Shuttlecraft" :summary "* The shuttlecraft is the smallest of the ship's boats. It is capable of orbital travel to shuttle small complements of crew and cargo planetside." :titles "Launch" :mass "10tons") "Star Colony Ship" (unit :name "Star Colony Ship") "Sub-light Sleeper Ship - Ark" (unit :name "Sub-light Sleeper Ship - Ark") "Zephyr Startransport" (unit :name "Zephyr Startransport" :summary "* The Zephyr is a small merchant starship designed for comfortable passenger duty along major trade routs. As such, it has reduced cargo capacity and increased armor, and weapons. Its high firepower makes it popular among smugglers and pirates, though its high price means that few of these are procured through normal channels. * 75tons cargo * 6 crew * 10 Medium Passage Accommations * 30 Low Passage Accommations * 20 Coldsleep berths * 2x Light Particle Cannon * 6x Light Startorpedoes * The Banner has seen many modifications including high speed drives for courier or smuggling as well as heavier armaments." :mass "300tons"))))))
nx/tactics/books/science_fiction / chapter_star_trek
Description:
Function Name:
  • chapter_star_trek
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_star_trek : base/chapter (chapter :name "Star Trek" :sectionmap (sectionmap "Sci-Fi Equipment" (section :name "Sci-Fi Equipment" :itemmap (itemmap :Communicator (item :name "Communicator") :Transporter (item :name "Transporter" :image "StarTrek/Transporter.jpg") :Tricorder (item :name "Tricorder" :image "StarTrek/Tricorder.jpg"))) "Sci-Fi Weapons" (section :name "Sci-Fi Weapons" :itemmap (itemmap "Anti-Proton Beam" (item :name "Anti-Proton Beam" :image "StarTrek/AntiProtonBeam.jpg" :reference "It was pure Anti-Proton...Absolutely pure! - Commodore Matt Decker, Star Trek") "Cloaking Device" (item :name "Cloaking Device" :image "StarTrek/CloakingDevice.jpg") "Disruptor Bank" (item :name "Disruptor Bank" :image "StarTrek/DisruptorBank.jpg") "Hand Phaser" (item :name "Hand Phaser" :image "StarTrek/HandPhaser.jpg" :summary "The hand phaser is actually a Phaser II with a Phaser I embedded inside. The Phaser I has the same abilities but suffers from reduced range and limited shots. * Stun - .3J * Kill * Heat * Disintegrate") "Phaser Array" (item :name "Phaser Array" :image "StarTrek/PhaserBank.jpg" :reference "http://www.ditl.org/index.php?daymain=/pagarticle.php?29" :energy "68PJ" :range "150Mm") "Photon Torpedo" (item :name "Photon Torpedo" :image "StarTrek/PhotonTorpedo.png" :reference "Photon Torpedo...Away! - Chekov, Star Trek The Motion Picture" :summary "Photon torpedos carry 1.5kg of anti-matter (64 megatons) at up to .9c using limited warp drives." :energy "100PJ"))) :Federation (section :name "Federation" :unitmap (unitmap "Federation Shuttlecraft" (unit :name "Federation Shuttlecraft") "USS Enterprise (Constitution Class)" (unit :name "USS Enterprise (Constitution Class)" :image "StarTrek/Federation_Enterprise.png" :titles "NCC-1701" :classification "Hvy. Spacecraft" :mass "200ktons" :length "304m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5" :unititemmap (unititemmap "Phaser Array" (unititem :name "Phaser Array") "Photon Torpedo" (unititem :name "Photon Torpedo"))))) "USS Reliant (Avenger Class)" (unit :name "USS Reliant (Avenger Class)" :image "StarTrek/Federation_Reliant.png" :summary "A Frigate is a ship of similar firepower to a Heavy cruiser but has fewer research facilities, require less crew, and has more limited endurance." :classification "Hvy. Spacecraft" :mass "165ktons" :length "236m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Phaser Array" (unititem :name "Phaser Array") "Photon Torpedo" (unititem :name "Photon Torpedo" :facing "Fx2, Bx2"))))))) "Alien Races" (section :name "Alien Races" :unitmap (unitmap "Borg Cube" (unit :name "Borg Cube" :image "StarTrek/Borg_Cube.png" :reference "We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile. - The Borg, Star Trek First Contact" :crew "130000" :mass "90Mtons" :length "3km" :unitpowermap (unitpowermap :Shielding (unitpower :name "Shielding" :summary "Adaptive Shielding total capacity 5,850,900TJ")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Total output 7,500,000TW" :level "4"))) "Borg Drone" (unit :name "Borg Drone" :image "StarTrek/Borg_Drone.png" :reference "The Borg were possibly created by the alien probe V'Ger to seek 'all that is knowable' and return to its creator.") "Doomsday Machine" (unit :name "Doomsday Machine" :image "StarTrek/DoomsdayMachine.png" :reference "Believed to have originated as an ancient race's last resort weapon against the Borg. Its basic design - destroy planets already assimilated by the Borg for use as fuel - coupled with an indestructible neutronium hull and antiproton beam (against which there was little or no defense), made it an ideal weapon against the Borg." :summary "* Maximum Speed: Warp 4 * Tractor Beam * Dampening Field * Can consume a planet in a day" :titles "Planet Killer" :classification "Hvy. Spacecraft" :mass "4x10^23tons" :length "2.7km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :summary "Solid Neutronium - Hyper Dense Neutron Star Material")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Anti-Proton Beam" (unititem :name "Anti-Proton Beam"))))) "Klingon Bird of Prey" (unit :name "Klingon Bird of Prey" :image "StarTrek/Klingon_BirdOfPrey.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding") :Weaponry (unitpower :name "Weaponry" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo"))) :Invisibility (unitpower :name "Invisibility" :unititemmap (unititemmap "Cloaking Device" (unititem :name "Cloaking Device")))) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4"))) "Klingon Cruiser" (unit :name "Klingon Cruiser" :image "StarTrek/Klingon_Cruiser.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding") :Weaponry (unitpower :name "Weaponry" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo")))) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "5"))) "Klingon Warrior" (unit :name "Klingon Warrior" :image "StarTrek/Klingon_Warrior.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))) "Nomad Probe" (unit :name "Nomad Probe" :image "StarTrek/Nomad.png" :reference "* Error! Error!...Faulty! Faulty! Must sterilize imperfection! - STER-I-LIZE! - Nomad, Star Trek * Nomad - See the universe. Meet interesting people...and kill them. - Motivational Poster Parody") "Romulan Centurion" (unit :name "Romulan Centurion" :image "StarTrek/Romulan_Centurion.png") "Romulan Warbird" (unit :name "Romulan Warbird" :image "StarTrek/Romulan_Warbird.png" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap "Disruptor Bank" (unititem :name "Disruptor Bank") "Photon Torpedo" (unititem :name "Photon Torpedo"))))) "Species 8472" (unit :name "Species 8472" :image "StarTrek/Species8472.png") :V'Ger (unit :name "V'Ger" :image "StarTrek/VoyagerVI.png" :reference "Voyager VI - Tell Nomad I'm going to kick his ass. - Motivational Poster Parody" :titles "Voyager VI" :length "98km"))))))
nx/tactics/books/science_fiction / chapter_star_wars
Description:
Function Name:
  • chapter_star_wars
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_star_wars : base/chapter (chapter :name "Star Wars" :sectionmap (sectionmap "Star Wars Equipment" (section :name "Star Wars Equipment" :reference "http://www.stardestroyer.net/tlc/Power/index.html" :itemmap (itemmap "Blaster Pistol" (item :name "Blaster Pistol" :image "StarWars/BlasterPistol.jpg" :reference "Hokey religions and ancient weapons are no match for a good blaster at your side, kid. - Han Solo, Star Wars") "Blaster Rifle" (item :name "Blaster Rifle" :image "StarWars/BlasterRifle.jpg") "Ion Blaster" (item :name "Ion Blaster" :image "StarWars/IonBlaster.jpg" :summary "* Ion blasters, or ionization blasters, were any handheld weapons that fired ion energy instead of blaster bolts. They were commonly used in response to droids and other technology on the battlefield. * [Hit]: [Stun] only. +1 [Shield Damage].") "Ion Cannon" (item :name "Ion Cannon") :Lightsaber (item :name "Lightsaber" :image "StarWars/Lightsaber.png" :reference "This is the weapon of a Jedi Knight. Not as clumsy or as random as a blaster. An elegant weapon for a more civilized age. - Ben Kenobi, Star Wars" :summary "It is a blade of pure plasma energy suspended in a force containment field that keeps individuals from feeling the plasma's heat. Other Electromagnetic energy fields and coherent energy are repelled by lightsabers' arcs. These include most force fields, blaster bolts, and other lightsaber blades.") :Turbolaser (item :name "Turbolaser" :summary "1kton TNT" :energy "4TJ") "Turbolaser Turret" (item :name "Turbolaser Turret" :image "StarWars/TurbolaserTurret.jpg" :energy "30TJ") "Heavy Turbolaser Turret" (item :name "Heavy Turbolaser Turret" :image "StarWars/PlanetaryTurbolaser.jpg" :energy "250TJ") "Heavy Ion Cannon" (item :name "Heavy Ion Cannon" :image "StarWars/PlanetaryIonCannon.jpg" :energy "250TJ") "Tractor Beam" (item :name "Tractor Beam") "Proton Torpedo" (item :name "Proton Torpedo" :image "StarWars/ProtonTorpedo.jpg" :summary "1 Kiloton to Teratons." :energy "40TJ") "Shield Generator" (item :name "Shield Generator" :image "StarWars/ShieldGenerator.jpg") :Superlaser (item :name "Superlaser" :image "StarWars/DeathStarSuperlaser.jpg" :reference "The most basic consideration pointing towards some kind of superphysics is the magnitude of the device's energy output. The minimum necessary magitude of the blast that shattered Alderaan is roughly ten thousand times what would be released if the entire mass of the battle station's machinery was annihilated with an equivalent amount of antimatter. - http://www.theforce.net/swtc/ds/index.html" :energy "1x10^32J"))) "Star Wars Droids" (section :name "Star Wars Droids" :unitmap (unitmap :C3PO (unit :name "C3PO") :R2-D2 (unit :name "R2-D2"))) "Star Wars Republic" (section :name "Star Wars Republic" :unitmap (unitmap "Ahsoka Tano" (unit :name "Ahsoka Tano" :image "StarWars/Republic_AhsokaTano.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Anakin Skywalker" (unit :name "Anakin Skywalker" :image "StarWars/Republic_AnakinSkywalker.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Clone Trooper" (unit :name "Clone Trooper" :image "StarWars/Republic_CloneTrooper.png") "Mace Windu" (unit :name "Mace Windu" :image "StarWars/Republic_MaceWindu.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Obi-Wan Kenobi" (unit :name "Obi-Wan Kenobi" :image "StarWars/Republic_ObiWanKenobi.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Padme Amidala" (unit :name "Padme Amidala" :image "StarWars/Republic_PadmeAmidala.png") "Qui Gon" (unit :name "Qui Gon" :image "StarWars/Republic_QuiGon.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))))) "Star Wars Seperatists" (section :name "Star Wars Seperatists" :unitmap (unitmap "Asajj Ventress" (unit :name "Asajj Ventress" :image "StarWars/Separatist_AsajjVentress.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Battle Droid" (unit :name "Battle Droid" :image "StarWars/Separatist_BattleDroid.png") "Chancillor Palpatine" (unit :name "Chancillor Palpatine" :image "StarWars/Separatist_ChancillorPalpatine.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Count Dooku" (unit :name "Count Dooku" :image "StarWars/Separatist_CountDooku.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "General Grievous" (unit :name "General Grievous" :image "StarWars/Separatist_GeneralGrievous.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))))) "Star Wars Imperial Vehicles" (section :name "Star Wars Imperial Vehicles" :unitmap (unitmap "Imperial Assault Gunboat" (unit :name "Imperial Assault Gunboat" :image "StarWars/Imperial_Assault Gunboat.png" :summary "* 2 Laser Cannons * 2 Concussion Missile Launchers (20 missiles each) * 100 Shields" :titles "Alpha Class Xg-1 Star Wing" :speed "1050kph" :crew "1" :height "7.2m" :length "10m" :width "15m") "Imperial Assault Transport" (unit :name "Imperial Assault Transport" :summary "* 2 Turbo Laser Turrets * 2 Ion Cannons * 2 Proton Torpedo Launchers (4 torpedos each) * 200 Shields * 40 Troops" :titles "Gamma Class ATR-6 Assault Transport" :crew "15" :height "20.5m" :length "45m" :width "30.4m") "Imperial Shuttle" (unit :name "Imperial Shuttle" :image "StarWars/Imperial_Shuttle.png" :titles "Lambda Class" :classification "Med. Spacecraft") "Imperial Walker" (unit :name "Imperial Walker" :image "StarWars/Imperial_Walker.png" :titles "AT-AT (All Terrain Armored Transport)" :speed "60kph" :crew "4" :length "20m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Advanced" (unit :name "Tie Advanced" :image "StarWars/Imperial_TieAdvanced.png" :titles "Tie Avenger" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Bomber" (unit :name "Tie Bomber" :image "StarWars/Imperial_TieBomber.png" :classification "Lt. Spacecraft") "Tie Defender" (unit :name "Tie Defender" :image "StarWars/Imperial_TieDefender.png" :classification "Lt. Spacecraft") "Tie Fighter" (unit :name "Tie Fighter" :image "StarWars/Imperial_TieFighter.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "Tie Interceptor" (unit :name "Tie Interceptor" :image "StarWars/Imperial_TieInterceptor.png" :classification "Lt. Spacecraft" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx4"))))) "Imperator Star Destroyer" (unit :name "Imperator Star Destroyer" :image "StarWars/Imperial_StarDestroyer.png" :classification "Hvy. Spacecraft" :crew "34,285" :mass "25Mtons" :length "1600m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "26") :Shielding (unitpower :name "Shielding" :level "26") :Hanger (unitpower :name "Hanger" :summary "* 48 Standard Tie Fighters (4 Squadrons) * 12 Tie Interceptors (1 Squadron) * 12 Tie Bombers (1 Squadron) * 5 Assault gunboats * 8 Lambda-class shuttles * 15 Stormtrooper transports * 10 Gamma-class assault shuttles * 20 AT-AT Walkers * 30 AT-ST Walkers")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "Mega Turbo-laser Cannon Mounts (6) Quadruple Heavy Turbo-laser Cannon Mounts (2) Defensive Turbolaser Turrets (9) Mega Ion Cannon Mounts (2) 60 mm Point Defense Laser Turrets (30) 80 mm Point Defense Ion Cannon Turrets (20) Capital Proton Torpedo Batteries (4) Tractor Beams" :level "4" :unititemmap (unititemmap "Turbolaser Turret" (unititem :name "Turbolaser Turret" :number "9") "Heavy Turbolaser Turret" (unititem :name "Heavy Turbolaser Turret" :number "8"))))) "Executor Star Destroyer" (unit :name "Executor Star Destroyer" :image "StarWars/Imperial_Executor.png" :classification "Hvy. Spacecraft" :length "17km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "29") :Shielding (unitpower :name "Shielding" :level "29") :Hanger (unitpower :name "Hanger" :summary "* 4 squadrons of TIE-fighters * 4 squadrons of TIE-interceptors * 4 squadrons of TIE-bombers * 38,000 troops * 25 AT-ATs * 50 AT-STs")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* 250 concussion missle tubes * 250 ion cannons * 40 tractor beams" :level "4" :unititemmap (unititemmap "Turbolaser Turret" (unititem :name "Turbolaser Turret" :number "250") "Heavy Turbolaser Turret" (unititem :name "Heavy Turbolaser Turret" :number "250"))))) "Death Star" (unit :name "Death Star" :image "StarWars/Imperial_DeathStar.png" :reference "* The regional governors now have direct control over their territories. Fear will keep the local systems in line. Fear of this battle station. - Grand Moff Tarkin, Star Wars" :classification "Hvy. Spacecraft" :crew "323k+400k Droids" :mass "2x10^12tons" :length "160km" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :level "30") :Shielding (unitpower :name "Shielding" :level "30") :Hanger (unitpower :name "Hanger" :summary "* 7200 TIE Fighters (600 Squadrons) * 4 Cruisers * 3,600 Assault Shuttles * 1,860 Dropships * 13,000 Support Craft * 1,400 AT-AT * 1,400 AT-ST * 1,400 Repulsortanks * 1,400 Repulsorcraft * 355 Floating Fortesses"))))) "Star Wars Imperials" (section :name "Star Wars Imperials" :unitmap (unitmap "Darth Vader" (unit :name "Darth Vader" :image "StarWars/Imperial_DarthVader.png" :reference "* Apology accepted, Captain Needa - Darth Vader, The Empire Strikes Back" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "8"))) "Emperor Palpatine" (unit :name "Emperor Palpatine" :image "StarWars/Imperial_EmperorPalpatine.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "9" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))) "Imperial Governor" (unit :name "Imperial Governor" :image "StarWars/Imperial_Governor.png" :reference "Governor Tarkin, I should have expected to find you holding Vader's leash. I recognized your foul stench when I was brought on board. - Princess Leia, Star Wars" :titles "Grand Moff Tarkin") "Imperial Stormtrooper" (unit :name "Imperial Stormtrooper" :image "StarWars/Imperial_Stormtrooper.png" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :unititemmap (unititemmap "Blaster Rifle" (unititem :name "Blaster Rifle"))))))) "Star Wars Independents" (section :name "Star Wars Independents" :unitmap (unitmap "Boba Fett" (unit :name "Boba Fett" :image "StarWars/Independent_BobaFett.png" :reference "* There will be a substantial reward for the one who finds the Millenium Falcon. You are free to use any methods necessary, but I want them alive. No disintegrations... As you wish. - Darth Vader and Boba Fett - Empire Strikes Back") "Jabba the Hutt" (unit :name "Jabba the Hutt" :image "StarWars/Independent_JabbaTheHutt.png") "Slave 1" (unit :name "Slave 1" :image "StarWars/Independent_Slave1.png" :titles "Firespray-31" :classification "Med. Spacecraft"))) "Star Wars Rebel Vehicles" (section :name "Star Wars Rebel Vehicles" :unitmap (unitmap "A-Wing Fighter" (unit :name "A-Wing Fighter" :image "StarWars/Rebel_AWing.png" :titles "RZ-1" :speed "1300kph" :classification "Lt. Spacecraft" :height "1.9m" :length "9.6m" :width "6.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :summary "* Concussion Missles * 5100G acclerations * 50 Shields * 2 Laser Cannons * 2 Concussion Missile Launchers (6 missiles each)" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2"))))) "B-Wing Fighter" (unit :name "B-Wing Fighter" :image "StarWars/Rebel_BWing.png" :classification "Lt. Spacecraft") "E-Wing Fighter" (unit :name "E-Wing Fighter" :summary "* The first fighter designed entirely under the support of the New Republic. * The E-wing was intended to match, or exceed, the performance of the preceding X-wing series in nearly every respect. However, the craft suffered from some significant problems when first deployed. As a result, many pilots continued to fly upgraded versions of the venerable X-wing. * 4200G acceleration * 3 Laser Cannons * 1 Proton Torpedo Launcher w/16 Torpedoes * 1 R7 Astromech" :speed "1300kph" :classification "Lt. Spacecraft" :length "11.2m") "X-Wing Fighter" (unit :name "X-Wing Fighter" :image "StarWars/Rebel_XWing.png" :summary "* 3700G acceleration * 50 Shields" :titles "T-65" :speed "1050kph" :classification "Lt. Spacecraft" :length "12.5m" :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx4") "Proton Torpedo" (unititem :name "Proton Torpedo" :facing "Fx2"))))) "Y-Wing Fighter" (unit :name "Y-Wing Fighter" :image "StarWars/Rebel_YWing.png" :summary "* 2700G acceleration * 75 Shields" :speed "1000kph" :classification "Lt. Spacecraft" :height "2.9m" :length "16m" :width "7.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Fx2") "Ion Cannon" (unititem :name "Ion Cannon" :facing "Turretx2") "Proton Torpedo" (unititem :name "Proton Torpedo" :facing "Fx2"))))) :Landspeeder (unit :name "Landspeeder" :image "StarWars/Rebel_Landspeeder.png") "Millennium Falcon" (unit :name "Millennium Falcon" :image "StarWars/Rebel_MilleniumFalcon.png" :summary "* Speed: 1050kph Atmosphere, 80 Megalight?" :titles "YT-1300" :speed "1050kph" :classification "Med. Spacecraft" :crew "4+6" :height "8m" :length "35m" :width "26m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor") :Shielding (unitpower :name "Shielding")) :unitskillmap (unitskillmap :Gunnery (unitskill :name "Gunnery" :level "4" :unititemmap (unititemmap :Turbolaser (unititem :name "Turbolaser" :facing "Turretx4, Turretx4"))))) "Corellian Corvette" (unit :name "Corellian Corvette" :image "StarWars/Rebel_CorellianCorvette.png") "Mon Calamari Cruiser" (unit :name "Mon Calamari Cruiser" :image "StarWars/Rebel_Cruiser.png") "Nebulon Frigate" (unit :name "Nebulon Frigate" :image "StarWars/Rebel_NebulonFrigate.png") "Rebel Transport" (unit :name "Rebel Transport" :image "StarWars/Rebel_Transport.png") :Snowspeeder (unit :name "Snowspeeder" :image "StarWars/Rebel_Snowspeeder.png") "T-16 Skyhopper" (unit :name "T-16 Skyhopper" :image "StarWars/Rebel_T16Skyhopper.png" :reference "* I used to bullseye womp rats in my T-16 back home. They're not much bigger than two meters. - Luke Skywalker, Star Wars"))) :Rebels (section :name "Rebels" :unitmap (unitmap :Chewbacca (unit :name "Chewbacca" :image "StarWars/Rebel_Chewbacca.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "5"))) "Han Solo" (unit :name "Han Solo" :image "StarWars/Rebel_HanSolo.png" :reference "I ain't in this for your revolution, and I'm not in it for you, Princess. I expect to be well paid. *I'm* in it for the money. - Han Solo, Star Wars" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "8"))) "Luke Skywalker" (unit :name "Luke Skywalker" :image "StarWars/Rebel_LukeSkywalker.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "6"))) "Ben Kenobi" (unit :name "Ben Kenobi" :image "StarWars/Rebel_BenKenobi.png" :unitskillmap (unitskillmap :Piloting (unitskill :name "Piloting" :level "6"))) "Princess Leia Organa" (unit :name "Princess Leia Organa" :image "StarWars/Rebel_PrincessLeia.png" :reference "* Someone has to save our skins. Into the garbage chute, fly boy - Princess Leia, Star Wars" :unitskillmap (unitskillmap :Firearms (unitskill :name "Firearms" :level "5" :unititemmap (unititemmap "Blaster Pistol" (unititem :name "Blaster Pistol"))))) :Yoda (unit :name "Yoda" :image "StarWars/Yoda.png" :unitskillmap (unitskillmap :Melee (unitskill :name "Melee" :level "10" :unititemmap (unititemmap :Lightsaber (unititem :name "Lightsaber"))))))))))
nx/tactics/books/science_fiction / chapter_time_travellers
Description:
Function Name:
  • chapter_time_travellers
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_time_travellers : base/chapter (chapter :name "Time Travellers" :reference "* Doctor: People don't understand time. It's not what you think it is. Sally: Then what is it? Doctor: Complicated. Sally: Tell me. Doctor: Very complicated. ... Doctor: People assume that time is strict progression of cause of cause to effect, but actually from a non-linear, non-subjective viewpoint, its more like a big ball of wibbly-wobbly, timey-wimey stuff... Sally Sparrow, Doctor - Blink - Doctor Who" :sectionmap (sectionmap "Time Tricks" (section :name "Time Tricks" :rulemap (rulemap "Loop Trap Paradox" (rule :name "Loop Trap Paradox" :reference "* How many seconds in eternity? ... If I didn't know better, I'd say I've travelled Twelve thousand years into the future. ... How many seconds in eternity? The Shepards Boy - Six Hundred Thousand years into the future. ... How many seconds in eternity? The Shepards Boy says. ... Twelve Hundred Thousand years into the future. ... The shepards boy says. ... Two million years into the future. ... The Shepard Boy says... Twenty million years into the future. ... The Shepard Boy says! ... There's thus mountain of pure diamond! It takes an hour to climb it, and an hour to go around it! ... Fifty-two million years. ... Every hundred years, a little bird comes! ... And sharpens its beak on the diamond mountain! ... Nearly a Billion years. ... And when the entire mountain is chiseled away, the first second of eternity will have passed! ... Well over a Billion years. You musta think that's a helluva long time! ... Two Billion years. ... Personally, I think that's a helluva bird. - Doctor Who: Heaven Sent"))) :Temporals (section :name "Temporals" :reference "* In a Temporal conflict, victory or defeat can come in an instant. Among the vanquished, the lucky ones never know they have been conquered; the unlucky ones have never been. Both sides of this conflict have great resources for the struggle. Indeed, we hope for a long war, for we have no prospects of quick victory ourselves. Our offensive ability is too experimental to neutralize the Raydian threat. A short war can only mean our defeat." :summary "* The Temporals is a small group of specialists with the technology to travel through time and alter or protect the past. The Raydian Threat * The Raydians seem to have been content with the time stream as it was before the Temporals discovered time travel. They seem to be violently opposed to others having time travel ability and may be the cause of the disappearance of the original creators of the Time Rotor. * Motivation - The Raydians have a strong aversion to disorder. Though they seem to dislike altering history, they are willing to do so to eliminate time travel technology. When choosing historical changes, they tend to favor authoritarian rule and oppose chaotic organizations like democracies. * Multiple Incursions - Raydians will often make multiple time penetrations at once. The most pastward team will try to effect a change, and the futureward teams wait to see that the change has had the desired effect. If not, they go into action. Guide to Time Travel * Don'tt experiment with Time Travel. Many have disappeared and are presumed dead from experimentation. Predicting the outcome of Temporal mechanics is best left to the scientists. * Don't Alter History. Interfering with major incidents or people or displaying future technology can have disasterous ramifications on the time stream including the destruction of Temporals. * Avoid Paradoxes. Keep your time jumps to a minimum and carefully log all jumps. If you accidentally encounter a past self, you will trigger a Time Loop Paradox and will be trapped repeating the same series of events unless another time traveller saves you. * Beware of other Time Travellers. Other travellers outside the Corps exist. Some are friendly. Some are not. Always remember how powerful a weapon time travel is, and do not let it be used against you. * Keep your presense a secret. One of the most effective ways to dispose of rival time travellers is to identify them, go back in time and ambush them. If no one knows who you are, you will be much safer. * Time Currents - Time travel is difficult to precisely control. Sometime, travellers are drawn to a particular moment in time (often significant) and may find it hard to leave. * Law of Death - A person who has never travelled in time is called a Transient or an Ephemeral. That person can have their history rewritten any number of times including being brought back to life. Once a person travels through time, however, they are now called a Temporal and their history is no longer connected to their original timeline. When a Temporal dies, their history ends and nothing can prevent them from dying at that exact age regardless of their location or situation. After a mission is successfully completed, it is standard practice to try to revise the history of any Temporal casualties to inform them of their unavoidable deaths and allow them to live their last time as they choose. Time Tricks * False Leads - Opposition time travelers are always looking for information about past activity, so they can go back and ambush you. Creating false information can trick your opponents into creating an ambush that you can ambush instead. * Gather Allies - Every time period has powerful people. A simple trick is to go pastward and gain someone's trust at an early period and then use that influence later. * See You in a Minute - Opponent time travelers are always paranoid about being ambushed in the past. Jumping only a few minutes into the future of a conflict can be an unexpected suprise. * I've Been Here All the Time - A time traveler can hide his Temporal Rotor in an unexpected place, like a jail cell, and use it to travel and return only seconds later. In this way the traveler appears to have never left." :unitmap (unitmap "Magellus IX-g" (unit :name "Magellus IX-g" :reference "Krell, Forbidden Planet" :summary "* Magellus IX is a gas giant and 9th and last planet at the edge of the Magellus White Dwarf system. * Magellus IX-g is the 7th of Magellus' 11 moons. It is a barren rock except for the enormous complex hidden inside it. * The complex itself is fantasitcally large. Every room feels palacial. Rooms and doors are built for creatures easily 3 times human height and width with large amounts of open floor space. No furniture exists suggesting the forerunners never sat or lay down. Most of the floors are covered with a soft, spongy material that serves as carpeting and indicates that the forerunners had sensitive feet or undersides. There are no stairs, only ramps and lifts of unknown construction. Rooms are apparently self cleaning, while lights and displays appear spontaneously from featureless walls. * Spacedock - One of the many scientific labs has been retrofitted into a functional spacedock for smaller craft. * Power Plant - The power section appears to be a single giant corridor with minimal instrumentation ending in a huge vault door with a black orb suspended over it. * Eye of Harmony - Beyond the vault door lies a small black hole held in perfect balance by completely reflecting its own devastating gravitational force back upon itself. The technology to achieve this feat lies completely outside of our understanding. * History - A scientific team accidentally discovered that a seemingly non-descript moon was a technological marvel left by a long dead civilization. Within lay a massive complex and elegant advanced technology. But most remarkable of all, the moon was hollow and contained, at its core, a small black hole held in perfect symmetrical stasis by unfathomable forces. The scientists immediately knew that this technology was far too advanced to share with any political group. So they kept it a secret and studied it. Disturbingly, the race who built it left no record of their existence. No trace of language, personality, or even habitation of the station remained. It was as if they had never existed. Common conjecture claims that they were somehow erased from history. Years later, the scientists discoverd the purpose of the asteroid and the black hole it contained: to enable individuals to travel through the center of the black hole and travel back through time. The first few trips back were uneventful besides learning some important lessons about causality, but soon the travelers found that they had attracted the attention of another time traveling race, the [Radiance]. And thus began a strange battle of attrition between the the Radiance and what would become the Temporals with all of the Past, Present, and Future hanging in the balance." :titles "Babylon Complex" :length "400km") "Chronos Program" (unit :name "Chronos Program" :reference "* Chronos is online - Chronos * Chronos is everywhere - Chronos * I cannot answer that at this time. - Chronos" :summary "* Chronos is a computer program uploaded into the alien sensor network within the Babylon asteroid. It was designed to interpret the sensor data and relay information through the [Temporal Vortex] across Time. * Personality - The alien systems, however, have significantly changed Chronos, and although obedient, the program has definitely developed an independent personality with an unknown set of goals. * Time travelers depend heavily on Chronos for support, but have little trust for the evasive answers, omissions, and cryptic, nuanced messages it provides. * Engineers work tirelessly to gain control over Chronos, and Chronos does not hinder them in any way. However, every attempt to purge, patch, or restart Chronos have had no effect. Some theorize that Chronos exists through time now and could never be removed without creating a massive paradox. Others believe that the Babylon sensor network was already sentient and is masquerading as the Chronos program.") "Temporal Director" (unit :name "Temporal Director" :summary "* When a Temporal anamoly is detected, a Temporal Director is assigned the task of choosing a course of action and gathering a team of [Temporal Operative]s to execute the plan. Directors coordinate the missions from headquarters and act as liason for the team. Directors are given broad authority to requisition and deploy resources, though they will be held accountable for any mistakes after the mission is over.") "Temporal Engineer" (unit :name "Temporal Engineer" :summary "* An engineer specializing in [Engineering: Temporal].") "Temporal Event Guard" (unit :name "Temporal Event Guard" :summary "* A field agent in Temporal Intelligence. Event Guards are posted in important time periods and quietly observe events to make sure no changes occur compared to their normal historical events. Any deviation from normal history is a sign of a [Temporal Distortion Wave]. If a change is found, the guard immediately sends a message to headquarters and then jumps futureward to attempt to stop the wave. * Event Guards are under strict orders to maintain their cover and not alter history in any way, including not aiding other Temporal personel on other missions. * In order to closely observe, historical events, the Event Guards enter the time stream and get as close as possible to a major event. They then observe the event, comparing it against their research and then Loop Trap themselves in the time period, so they are observing the event over and over again. Eventually, they will be relieved by a replacement team. The replacement team will arrive moments after the original team arrived to send them home. To the Event Guards, they will arrive in the time period and be immediately discharged, though they may remember the events using [Paranormal Memory].") "Temporal Intelligence Agent" (unit :name "Temporal Intelligence Agent" :summary "* Temporal Intellegence Agents constantly review historical documentation looking for historical abnormalities that do not match their [Paranormal Memory]. Any deviations are flagged and a team is assigned to identify the source and extent of the deviation.") "Temporal Operative" (unit :name "Temporal Operative") "Temporal Physicist" (unit :name "Temporal Physicist" :summary "* A scientist specializing in [Physics: Temporal]") "Temporal Recruiter" (unit :name "Temporal Recruiter" :reference "Millenium Movie" :summary "* A psychiatrist/sociologist specializing in recruiting potential Temporal agents from across history. Ideal candidates are those with high skills but little impact on history. The perfect moment of extraction is right before their death to minimize the effect on history, but other methods are possible for people with few ties to others.") "Temporal Researcher" (unit :name "Temporal Researcher" :summary "* A scientist/historian who travels back in time to research historical events firsthand."))) "Temporal Aliens" (section :name "Temporal Aliens" :unitmap (unitmap :Chronans (unit :name "Chronans" :summary "* The beings that captured the Black Hole and built the Temporal Rotor remain a mystery. No record can be found of their cultures or their bodies, and the Temporal Rotor will not travel to any point in their history, presumably as a fail-safe against temporal manipulation. The fact that no trace of their race exists except the Temporal Rotor is disturbing and leads to speculation that they were somehow wiped out by their own device or another time travelling species. Some speculate that the Chronans were eliminated by the Radiance, and that their fate is what the Temporals can expect if the Radiance is victorious, perhaps leading to the erasure of the entire human race from history. * The vast, vaulted corridors and rooms of Chronos Station lead one to believe that these creatures were bulky masses about 10-15 feet (3-5m) tall. The lack of stairs implies that the creatures were legless, but that could just be a comfort or aesthetic choice.") :Radiance (unit :name "Radiance" :image "DistantFuture/Radiance.png" :reference "* The goal of the Radians remains a mystery, but they appear to want everyone throughout time to live as they do in a totally regimented, completely predictable society. This goal is obviously, hopelessly unattainable. To devote the entire resources and enegies of one's race and culture to an unattainable outcome must be called madness. Among humans, it is a common fantasy to 'rule the world', 'rule the galaxy', or 'rule the universe'. These pipedreams are almost always the stuff of fiction and fantasy, designed to entertain. Those who have taken them seriously are regarded as madmen. Now imagine even fantasizing about 'ruling every point in time in every dimension'. The very concept is laughable, yet the Radiance takes this seriously and are committed to acheiving it. Despite its insanity, their efforts pose a serious threat to everyone, everywhere, everywhen." :summary "* The Radiance is an enormous energy being of vast power originating from a time near the birth of the universe. It has been content to bask in the fantastic energies of the Big Bang until it perceived the use of time travel. The Radiance is completely committed to what it considers a peacefyl, orderly universe, and the ripples created by time travellers are something it cannot allow. * The Radiance can project parts of itself through time and space though it is loath to do so. These projections appear as columns of energy that wield vast destructive power. * As a being of pure Order, the Radiance appreciates order and despises chaos of any kind. It prefers authoritarian rule over democracies. It dislikes individual expression, but it does appreciate art and beauty. * The Temporals have assumed that the Radiance projections are an entire race of energy creatures instead of a single being and have misinterpreted its name as Raydians." :titles "Raydians"))) "Temporal Vehicles" (section :name "Temporal Vehicles" :unitmap (unitmap "Time Rotor" (unit :name "Time Rotor" :image "DistantFuture/TimeRotor.jpg" :reference "* Eternal Sunshine of the Spotless Mind * Flatliners * Vortex in Doctor Who credits * Time Stranger Anime * Time Travel in Terminator Series" :summary "* Description - The Temporal Rotor is an amazing device created by a vanished civilization. It is mostly a communication device that can reach into the Temporal Vortex and communicate with the central computer Chronos on the asteroid Babylon. Chronos harnesses the black hole hidden within Bablyon to move the Time Rotor and its operator through time and space. It is perhaps the most powerful device ever created. * Activating the Temporal Rotor - When the Temporal Rotor is activated, static electricity begins to build in the area. At full strength the static is dangerous, so travellers should not move to avoid discharge. A glowing field begins to form. Travellers heart rate begins to climb and they have a sudden feeling of intense, unnatural danger and imminent death. Hearts begin to fibrilate and flatline. * Entering the Vortex - The travellers blink and become aware that they are in the Vortex. Further, they recognize that they have always been in the Vortex. Every moment of their life remembered as if it just occurred. Only their future remains unseen. Time in the Vortex has no meaning, so travellers may leave immediately or stay for an eternity before moving on. * Leaving the Vortex - Leaving is just as traumatic as entering. As the Temporal Rotor slows, the travellers begin to forget all that they have just remembered. It is like losing one's mind bit by bit. They feel torn apart and incomplete. Soon they start losing coherent thought, their minds becoming simple and primal. Their senses and desires become simple: Food, Sex, Fear, Violence, Warmth ... Food, Fear, Violence, Warmth ... Food, Warmth ... Warmth. All is dark, wet, and warm as it has always been. Soft, pink bubbles surround and comfort you. You have no wants. You are complete. Suddenly a bright light blinds you, and happiness and security are torn from you. And there is pain, pain where there never was pain before. Waves of burning pain crush you, chew you up, and spit you out. You lie on the ground, cold and in shock. A new pressure builds in your chest, and without thinking you gasp and take in your first breath. Your eyes open to see the last lights on the Temporal Rotor wink out. You are coverered in a heavy, red jelly like congealed blood. The jelly quickly dries to dust and disappears. You rise and feel healthier than ever before. Old wounds and scars are gone as if they never were, and you are different: your skin, your teeth, your hair, your language all are as if you were born and lived your life in this time and place. Your equipment is gone and your clothes have been replaced with simple native garb: a gift from Chronos." :height "1.5m" :width ".2m") :Timefighter (unit :name "Timefighter"))))))
nx/tactics/books/science_fiction / chapter_unique_aliens
Description:
Function Name:
  • chapter_unique_aliens
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_unique_aliens : base/chapter (chapter :name "Unique Aliens" :sectionmap (sectionmap "Alien Life Forms" (section :name "Alien Life Forms" :unitmap (unitmap :Arachnid (unit :name "Arachnid" :reference "Starship Troopers" :titles "Bug") :Blob (unit :name "Blob") "Puppet Master" (unit :name "Puppet Master") "Thing from another World" (unit :name "Thing from another World"))))))
nx/tactics/books/skills
Description:
Package Name:
  • nx/tactics/books/skills
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_skills_overview, chapter_skill_types
Source Code:
  • (package nx/tactics/books/skills :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Skills" :image "Skill.jpg" :chaptermap (base/chaptermap "Skills Overview" (chapter_skills_overview) "Skill Types" (chapter_skill_types) ))) (func chapter_skills_overview : base/chapter (chapter :name "Skills Overview" :sectionmap (sectionmap "Why Tactics: Skills?" (section :name "Why Tactics: Skills?" :sectionmap (sectionmap "Extraordinary Skills" (section :name "Extraordinary Skills" :reference "* What you call tao. It's a power everyone possesses innately, but mastering it allows one to achieve superhuman abilities... But you must be careful how you use it. Tao is life itself. Use too much, and you'll exhaust more than just your stamina... In the worst case, overuse likely leads to death. - Shion-dono , Hell's Paradise")))))) (func chapter_skill_types : base/chapter (chapter :name "Skill Types" :sectionmap (sectionmap "Physical Skills" (section :name "Physical Skills" :skillmap (skillmap "Animal Handling" (skill :name "Animal Handling" :summary "* Deploy: Deploy trained animals with total level equal to skill. * Each week, one animal may be trained one trick." :titles "Animal Trainer, Breeder, Driver, Herder, Horse Whisperer, Houndmaster, Shepherd, Zoologist" :abilitymap (abilitymap :Falconry (ability :name "Falconry") :Herding (ability :name "Herding" :titles "Cowboy, Pig Farmer, Rancher, Shepherd") :Husbandry (ability :name "Husbandry") "Stare Down" (ability :name "Stare Down") "Guard Training" (ability :name "Guard Training") :Retrieve (ability :name "Retrieve") "Seeing Eye Training" (ability :name "Seeing Eye Training") "Snake Charming" (ability :name "Snake Charming") "Train Dog" (ability :name "Train Dog") "Train Elephant" (ability :name "Train Elephant") "Train Horse" (ability :name "Train Horse") "War Training" (ability :name "War Training"))) :Assassination (skill :name "Assassination" :reference "Was it so easy? Was it so simple? You just pushed and death came? Nothing spiritual about it...They just stopped talking, stopped breathing, stopped moving, finally stopped twitching. - Kylar Stern, The Way of Shadows" :titles "Assassin, Blackguard, Ninja, Shinobi" :stat "Shadow" :abilitymap (abilitymap "Harvest Poison" (ability :name "Harvest Poison") "Kiss of Death" (ability :name "Kiss of Death") "Poisoned Arrow" (ability :name "Poisoned Arrow") "Poisoned Blade" (ability :name "Poisoned Blade") "Poisoned Dust" (ability :name "Poisoned Dust") :Poisoning (ability :name "Poisoning") "Poison Tolerance" (ability :name "Poison Tolerance" :reference "...it was your cup that was poisoned. They were both poisoned. I spent the last few years building up an immunity to iocane powder. - Princess Bride") "Prepare Acid" (ability :name "Prepare Acid") "Prepare Anti-Coagulant" (ability :name "Prepare Anti-Coagulant" :summary "* Create an Anti-Coagulant Poison. A target with Anti-Coagulant cannot easily stop [Bleeding].") "Prepare Antidote" (ability :name "Prepare Antidote" :summary "* Skilled in antidote creation. Can create an antidote for any Poison user can brew.") "Prepare Poison" (ability :name "Prepare Poison"))) :Athletics (skill :name "Athletics" :stat "Body" :abilitymap (abilitymap :Balance (ability :name "Balance" :summary "* User has extensive experience balancing under difficult circumstances. * [Action]: Roll vs. difficulty to maintain balance. If any [Hits] are rolled, balance is maintained. Movement is at half speed while balancing, but additional [Hits] or [Criticals] improve movement speed by 10% each up to full speed.") :Backflip (ability :name "Backflip" :summary "+1 Initiative +0 Speed (Can only move backward, ignores terrain movement penalties) * A showy move that allows the unit to move directly backward without turning.") "Body Building" (ability :name "Body Building" :summary "* Character is distinctly powerful looking. * [Passive]: Unit may reroll any failed attempt to lift, push, or pull an object.") :Breakfall (ability :name "Breakfall" :summary "* Reduces Critical Hits to Hits from impacts during Knockback, Knockdown, or Falling * [Reaction]") :Contortion (ability :name "Contortion") "Escape Artistry" (ability :name "Escape Artistry") "Freestyle Running" (ability :name "Freestyle Running" :summary "* [Action]: Ignore 1 [Hazard] from each space of [Forest], [Broken Ground], [Jungle], [Swamp], or [Obstacle].") :Gymnastics (ability :name "Gymnastics") "High Jump" (ability :name "High Jump") "Ice Climbing" (ability :name "Ice Climbing") :Kippup (ability :name "Kippup" :summary "* [Move]: Change from [Prone] to [Standing].") "Leap Attack" (ability :name "Leap Attack") "Long Jump" (ability :name "Long Jump") :Marathon (ability :name "Marathon") "Pole Vault" (ability :name "Pole Vault") :Rappelling (ability :name "Rappelling") "Rock Climbing" (ability :name "Rock Climbing") "SCUBA Diving" (ability :name "SCUBA Diving") :Skateboarding (ability :name "Skateboarding") :Skating (ability :name "Skating") :Skydiving (ability :name "Skydiving") :Sledding (ability :name "Sledding") :Slide (ability :name "Slide" :summary "* Move at full speed under low obstacles like tables or overhangs.") :Snorkeling (ability :name "Snorkeling") :Snowboarding (ability :name "Snowboarding") :Skiing (ability :name "Skiing") :Sports (ability :name "Sports") :Swimming (ability :name "Swimming") "Swimming, Cold Water" (ability :name "Swimming, Cold Water") "Swimming, Distance" (ability :name "Swimming, Distance") "Team Acrobatics" (ability :name "Team Acrobatics" :summary "* Allows a number of people with this ability to work together to form human pyramids, human ladders, etc.") :Tightrope (ability :name "Tightrope") :Throw (ability :name "Throw") "Tree Climbing" (ability :name "Tree Climbing" :summary "[Action]: Climb a tree. Hammocks and seats can be built with enough time and equipment.") :Tumbling (ability :name "Tumbling") :Vault (ability :name "Vault" :summary "* Move over a low obstacle with no reduction in speed. * [Action]: Move and ignore up to Level in movement penalties this turn from fences, barricades, and other low obstacles.") "Wall Climbing" (ability :name "Wall Climbing") "Wall Spring" (ability :name "Wall Spring") "Zero G" (ability :name "Zero G")) :specialtymap (specialtymap :Acrobatics (specialty :name "Acrobatics" :summary "* Balance * Breakfall * Contortion * Escape Artistry * Gymnastics * High Jump * Kippup * Long Jump * Tightrope * Throw * Tumbling * Wall Spring * Zero G" :titles "Acrobat, Contortionist, Escape Artist, Jester" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/specialty :tag "ability") :severity 2)))) :Climbing (specialty :name "Climbing" :summary "* Ice Climbing * Rappelling * Rock Climbing * Tree Climbing * Wall Climbing"))) :Hunting (skill :name "Hunting" :reference "* Royal Huntsman - Sleeping Beauty" :titles "Forward Observer, Gamekeeper, Hunter, Huntress, Huntsman, Huntmaster, Lookout, Mage Hunter, Master Huntsman, Master of the Hunt, Poacher, Ranger, Royal Huntsman, Scout, Sentinel, Stalker, Tracer, Tracker, Watchman" :abilitymap (abilitymap "Call of the Hunt" (ability :name "Call of the Hunt") "Cull the Herd" (ability :name "Cull the Herd") :Deadfall (ability :name "Deadfall") "Field Dressing" (ability :name "Field Dressing") :Fishing (ability :name "Fishing" :summary "* Catch enough fish to eat. Similar to Foraging." :titles "Fisherman") :Lure (ability :name "Lure" :reference "Everquest Pulling") :Scouting (ability :name "Scouting" :titles "Reconnaissance") :Snare (ability :name "Snare") "There is No Escape" (ability :name "There is No Escape" :reference "* Raiden Shogun, Genshin Impact") :Track (ability :name "Track")) :specialtymap (specialtymap "Bounty Hunter" (specialty :name "Bounty Hunter" :reference "* Certainly there is no hunting like the hunting of man and those who have hunted armed men long enough and liked it, never really care for anything else thereafter. - On the Blue Water, Ernest Hemmingway" :summary "* Bounty Hunting represents experience in stalking and capturing a target in an urban setting. This is traditionally done for money and can be quite profitable. * Bounties are placed on people for whom the law lacks the resources or inclination to pursue. * Bounties are placed by insurance companies, bail bondsmen, armies, the F.B.I., and individuals. * The reward can be paid for information, the capture of the target in a reasonably uninjured state, or even dead or alive. * The reward obviously needs to be commensurate with the difficulty or no one will take it. Capturing is harder than killing, so captures gain a bonus.") "Demon Hunter" (specialty :name "Demon Hunter") "Devil Hunter" (specialty :name "Devil Hunter") "Mage Hunter" (specialty :name "Mage Hunter") :Trapper (specialty :name "Trapper") "Treasure Hunter" (specialty :name "Treasure Hunter" :reference "* Indiana Jones * Lara Croft" :summary "* Treasure Hunting represents experience in the dangerous and profitable world of lost tombs and ancient relics. Rare relics hold high presitge and are usually sold (in the form of a finders fee) to museaums, governments or private collectors. Raiding tombs is a fairly lawless and perilous activity to start with, and such high value items tend to attract disreputable characters of all kinds. As a result, treasure hunters often end their careers in unfortunate accidents. * +1 while researching or navigating inside a crypt or tomb." :titles "Tomb Raider, Treasure Seeker") "Vampire Hunter" (specialty :name "Vampire Hunter") "Werewof Hunter" (specialty :name "Werewof Hunter") "Witch Hunter" (specialty :name "Witch Hunter"))) :Rage (skill :name "Rage" :titles "Berserker, Marauder, Wildman" :stat "Beast" :abilitymap (abilitymap :Berserker (ability :name "Berserker") :Frenzy (ability :name "Frenzy") :Fury (ability :name "Fury") :Hatred (ability :name "Hatred" :summary "* Attack: +1 Speed vs. Tribal or long-standing personal enemies.") :Howl (ability :name "Howl") :Taunt (ability :name "Taunt" :reference "* Kirk: We tried it once your way, Khan, are you game for a rematch? Khan, I'm laughing at the 'superior intellect.' Khan: Full impulse power! Joachim: No, sir! You have Genesis! You can have whatever... Khan: FULL POWER! DAMN YOU! - Star Trek II: The Wrath of Khan" :summary "* Dishonor opponent's mother. * Roll vs. Mind. If successful, opponent must attack you." :titles "Goad") :Vengeance (ability :name "Vengeance" :reference "* More names off the list, more names on it. - Pyke, Runeterra * She opened a book and a box of tools. Sunny came home with a mission... Sunny came home with a list of names. She didn't believe in transcendence. 'It's time for a few small repairs.' she said. Sunny came home with a Vengence. - Shawn Colvin, Sunny Came Home") :Warcry (ability :name "Warcry"))) :Survival (skill :name "Survival" :summary "Common Survival Abilities * [Anytime]: Survival Skill may be rolled against any appropriate terrain based hazard taking the better of defense or Survival roll. * [Daily]: Units missing appropriate supplies for the terrain must roll Days + # of missing supplies + Terrain Penalty versus Body + Survival or gain Black [Exhaustion] Tokens." :titles "Adventurer, Courier, Drifter, Explorer, Forager, Messenger, Pathfinder, Pioneer, Seeker, Sentry, Survivalist, Trailblazer, Traveller, Wanderer, Wayfarer" :stat "Defense" :abilitymap (abilitymap "Cold Weather Survival" (ability :name "Cold Weather Survival" :summary "* Hazards - Blizzard, Avalanche, Frostbite") "Dead Reckoning" (ability :name "Dead Reckoning" :summary "* Estimate current position and movement.") "Desert Survival" (ability :name "Desert Survival" :titles "Desert Bandit, Desert Dweller, Desert Fox, Desert Nomad, Dune Raider, Dune Rider") "Detect Hollow Rock" (ability :name "Detect Hollow Rock" :summary "* Detect trap doors, secret doors, and unstable rocks.") :Foraging (ability :name "Foraging" :summary "* [Action]: This ability can be used to forage for 1 man day of food and water for each [Hit]. Such food will typically be disgusting to those unaccustomed to the local cuisine, but it will sustain. Excess food only lasts for 1 additional day before going bad. Excess water can be transfered to containers if any, otherwise it cannot be carried. [Critical Hit]s provide a particularly tasty, convenient, or useful source of nutrition (e.g. water in bamboo that can be carried, food that will last another day or more).") :Forestry (ability :name "Forestry" :reference "Tin Man" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into the forest. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 2 [Forest] spaces * [Action]: [+1 Stealth] in [Woods] * [Defense]: [+1 Defense] vs Ranged in [Woods]" :titles "Forest Lord, Logger, Lumberjack, Pathcutter, Ranger, Warden, Woodcutter, Woodsman") "High Altitude Survival" (ability :name "High Altitude Survival") "Jungle Survival" (ability :name "Jungle Survival" :reference "Tarzan" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into the jungle. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 1 [Jungle] space * [Action]: [+1 Stealth] in [Jungle] * [Defense]: [+1 Defense] vs Ranged in [Jungle]" :titles "Jungle Dweller, Lord of the Jungle") "Motion Sense" (ability :name "Motion Sense" :summary "* Detect air movements and faint sounds to detect moving things even when they are around corners or in the dark.") "Swamp Survival" (ability :name "Swamp Survival" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into swampland. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 1 [Swamp] space * [Action]: [+1 Stealth] in [Swamp] * [Defense]: [+1 Defense] vs Ranged in [Swamp]" :titles "Murk Dweller, Murk Lord, Swamp Lord, Swamp Knight, Swamp Thing") "Underground Survival" (ability :name "Underground Survival")) :specialtymap (specialtymap :Caving (specialty :name "Caving" :summary "* Dead Reckoning * Detect Hollow Rock * Mining * Motion Sense * Sapping * Underground Survival" :titles "Miner, Prospector, Sapper, Spelunker, Underminer"))) :Tradeskills (skill :name "Tradeskills" :reference "* Tradesman" :stat "None" :abilitymap (abilitymap :Administration (ability :name "Administration" :titles "Administrator, Secretary") :Agriculture (ability :name "Agriculture" :summary "* Grow Crop" :titles "Farmer, Gardener") :Architecture (ability :name "Architecture" :summary "* [Extended Action]: Design a structure. The size and quality of the structure are limited by level. * [Action]: Determine weaknesses of a structure." :titles "Architect") :Blacksmithing (ability :name "Blacksmithing" :titles "Blacksmith") :Brewing (ability :name "Brewing" :summary "* Brew Beer * Brew Hard Liquor * Brew Mead * Brew Wine" :titles "Brewer, Vintner") :Carpentry (ability :name "Carpentry" :titles "Carpenter") :Cleaning (ability :name "Cleaning" :titles "Maid") :Cobbling (ability :name "Cobbling" :summary "* Make Shoes" :titles "Cobbler") :Cooking (ability :name "Cooking" :summary "* Prepare Recipe" :titles "Chef, Cook") :Cooping (ability :name "Cooping" :summary "* Make Sealable Barrel" :titles "Cooper") :Glassblowing (ability :name "Glassblowing" :summary "* Blow Bottle * Blow Glass Decoration") :Jewelsmithing (ability :name "Jewelsmithing" :summary "* Gemcutting * Fashion Jewelry" :titles "Gemcutter, Jeweler") :Laboring (ability :name "Laboring" :titles "Laborer, Worker") :Landscaping (ability :name "Landscaping" :summary "* Grow Bonsai * Grow Flowers * Grow Hedges * Grow Hedge Maze * Grow Trees" :titles "Groundskeeper, Landscaper, Lawnboy") :Leatherworking (ability :name "Leatherworking" :summary "* Fashion Leather Goods * Flay Skins" :titles "Tanner") :Livestock (ability :name "Livestock") :Logging (ability :name "Logging") :Metalworking (ability :name "Metalworking" :titles "Coppersmith, Goldsmith, Machinist, Pewtersmith, Silversmith") :Plumbing (ability :name "Plumbing" :titles "Plumber") :Porting (ability :name "Porting" :summary "* Bear Litter * Port Boat" :titles "Bearer, Porter") :Pottery (ability :name "Pottery" :titles "Potter") :Servant (ability :name "Servant" :titles "Butler, Footman, Lady in Waiting") :Sewing (ability :name "Sewing" :summary "* Crochet * Embroidery * Fashion Clothing * Needlepoint * Repair Cloth" :titles "Dressmaker, Seamstress") :Stagecraft (ability :name "Stagecraft" :summary "* The technical aspects of theatrical production, which include scenic design, stage machinery, lighting, sound, costume design, and makeup." :titles "Stagehand") :Weaponsmith (ability :name "Weaponsmith" :summary "* The ability to repair, improve, or even create weapons. * [Razor's Edge] - Work a weapon to give a +1 Synergy the first time it hits." :titles "Bladesmith, Swordsmith") :Woodworking (ability :name "Woodworking" :summary "The process of building, making or carving something using wood." :titles "Carver, Whittler, Woodworker"))))) "Transportation Skills" (section :name "Transportation Skills" :skillmap (skillmap :Driving (skill :name "Driving" :titles "Driver, Trucker" :abilitymap (abilitymap "Bootlegger Reverse" (ability :name "Bootlegger Reverse") :Drift (ability :name "Drift") :Swerve (ability :name "Swerve") "3 Point Turn" (ability :name "3 Point Turn") "Parallel Parking" (ability :name "Parallel Parking")) :specialtymap (specialtymap :Motorcycles (specialty :name "Motorcycles") :Trucks (specialty :name "Trucks") "Construction Vehicles" (specialty :name "Construction Vehicles"))) :Piloting (skill :name "Piloting" :summary "* The Jink and Barrel Roll maneuvers simply make it harder for the plane to be hit. * The Half Loop, Wingover, and Falling Leaf are all attempts to loose an enemy that's tailing you. * The Loop, Immelman, and Retournment are all attempts to both loose a tail, abd to end up tailing that foe yourself. * When a 'dogged' plane attempts a maneuver to escape his tail the pilot needs to succeed in the maneuver. If he fails his roll, then he's still being tailed, if he succeeds, then the tailing pilot gets to attempt the same maneuver (as a 'free' action at full dice pool) - if the 'tail' matches or exceeds the successes rolled by the target plane's pilot, then the tail is maintained for another turn. * When a dogged plane attempts a 'reversal' maneuver the effects are the same, except that if the tailing plane scores less successes than the target plane, the roles are reversed." :titles "Aviator, Pilot, Sky Captain, Sky Knight, Sky Marshall, Wing Commander, Wingman" :abilitymap (abilitymap "Barn Storming" (ability :name "Barn Storming" :summary "* Low altitude flying that uses ground cover to block line of sight. Naturally, this manuever can be extremely dangerous." :titles "Nape of the Earth") "Barrel Roll" (ability :name "Barrel Roll" :reference "* Do a barrel roll! - Peppy Hare, Star Fox 64" :summary "The pilot rolls the plane over sideways and 'corkscrews' through the air.") "Cobra maneuver" (ability :name "Cobra maneuver" :summary "* A dramatic and demanding maneuver in which an airplane flying at a moderate speed abruptly raises its nose momentarily to a vertical and slightly past vertical attitude, causing an extremely high angle of attack and momentarily stalling the plane, making a full-body air brake before dropping back to normal position, during which the aircraft does not change effective altitude." :titles "Dynamic deceleration") "Carrier Landing" (ability :name "Carrier Landing") "Circle of Death" (ability :name "Circle of Death" :summary "A Russian WWII maneuver when attacking ground forces that attacks the column from the rear, then circles around to make repeated rear attacks until all weapons were expended.") "Close Air Support" (ability :name "Close Air Support") "Dive Bombing" (ability :name "Dive Bombing" :summary "High speed attack from high altitude. Increases movement speed and damage of physical attacks.") "Falling Leaf" (ability :name "Falling Leaf" :summary "The pilot deliberately stalls, sending it into a spinning fall, only to restart the engine and level off.") "Fly Out of the Sun" (ability :name "Fly Out of the Sun" :summary "If the sun is behind, allows a surprise attack.") "Flyby Attack" (ability :name "Flyby Attack") "Flying Mount" (ability :name "Flying Mount" :summary "* When riding a mount that can fly, a unit must have experience riding that particular mount. * Examples: Dragon, Flying Carpet, Giant Eagle, Giant Wasp, Griffin, Hippogriff, Pegasus, Roc") "Half Loop" (ability :name "Half Loop" :summary "The pilot pulls up and over, as if he was going to loop the aircraft, but adds a half-roll to right the plane at the top of the loop to continue level flight in the opposite direction to that which he started.") "Immelmann Turn" (ability :name "Immelmann Turn" :summary "The Immelmann turn has become one of the most popular airshow maneuvers in the world. However, the aerobatic maneuver is altogether different from the WWI Immelmann turn (See Wingover) and is of little use in modern dogfighting." :titles "Roll Off the Top") :Jink (ability :name "Jink" :summary "* Yawing his plane from side to side, the pilot attempts to throw-off the aim of enemy gunners. * [Action]: [+1 Defense] until this unit's next turn.") :Levitating (ability :name "Levitating" :summary "* If a unit uses powers to fly, the unit must gain this ability of fly at a penalty.") :Loop (ability :name "Loop" :summary "* The pilot pulls the plane up and over in a complete circle, ending up in the same position and facing that he started.") "Pull Out of a Dive" (ability :name "Pull Out of a Dive") "Remote Piloting" (ability :name "Remote Piloting") "Split S" (ability :name "Split S" :summary "A diving maneuver mostly used to disengage. The pilot half-rolls his aircraft inverted and executes a descending half-loop, resulting in level flight in the exact opposite direction at a lower altitude." :titles "Reverse Immelmann") :Strafe (ability :name "Strafe") "Strategic Bombing" (ability :name "Strategic Bombing") :Tail (ability :name "Tail") "Torpedo Bomb" (ability :name "Torpedo Bomb" :summary "Fly [Nape of the Earth] and drop a torpedo or other payload.") "Wing Over" (ability :name "Wing Over" :reference "Performed by an experienced flyer, this maneuver can surprise a pursuer by quickly reversing on them. If you have the distance lead in a chase, you can use this to convert from a defensive posture to an offensive one. The trick is not to get shot up when you are reversing." :titles "Immelmann Turn, Retournment") "Winged Flight" (ability :name "Winged Flight" :summary "* If the unit has wings, it must have this ability or fly at a penalty. * If the unit grew up with wings, this ability is assumed.")) :specialtymap (specialtymap "Civilian Airplanes" (specialty :name "Civilian Airplanes") "Commercial Airplanes" (specialty :name "Commercial Airplanes") :Helicopters (specialty :name "Helicopters"))) :Riding (skill :name "Riding" :summary "* Level 1: Ride a horse * Level 2: Ride a Lt. Warhorse * Level 3: Ride a Med. Warhorse * Level 4: Ride a Hvy. Warhorse * Note: Riding a flying mount requires [Flying]" :titles "Caravan Driver, Cavalry, Driver, Dragoon, Horseman, Knight, Lancer, Outrider, Rider" :abilitymap (abilitymap "Catabatan Circle" (ability :name "Catabatan Circle" :summary "* [Formation] * High Dodge and Concentrated firepower") :Charge (ability :name "Charge" :reference "* We'll use the old ways...speed of horse! - Arthur, Excalibur" :summary "* [Requires]: Unit must have moved at least 4 spaces in a straight line. * [Action]: Melee Attack costs no [Speed]. * [Attack], [Damage]: Any [Critical Hits] may be [Morale Tokens]") "Drive Carriage" (ability :name "Drive Carriage") "Drive Cart" (ability :name "Drive Cart") "Horse Archery" (ability :name "Horse Archery") "Run Down" (ability :name "Run Down" :summary "* [Damage]: +1 Damage when attacking from the rear. * [Attack], [Damage]: Any [Critical Hits] may be [Retreats]") "Steed Trample" (ability :name "Steed Trample"))) :Seamanship (skill :name "Seamanship" :summary "The art of operating a ship or boat including specialised skills such as: navigation and international maritime law; weather, meteorology and forecasting; watchstanding; ship-handling and small boat handling; operation of deck equipment, anchors and cables; ropework and line handling; communications; sailing; engines; execution of evolutions such as towing; cargo handling equipment, dangerous cargoes and cargo storage; dealing with emergencies; survival at sea and search and rescue; fire fighting. The degree of knowledge needed within these areas is dependent upon the nature of the work. However, the practice of good seamanship should be the goal of all." :titles "Admiral, Capitan, Commodore, First Officer, Navigator, Pirate, Sailor, Seaman, Ship's Mate" :abilitymap (abilitymap "Boarding Party" (ability :name "Boarding Party" :summary "* When a ship touches a dock or another ship, it is very unstable and must be secured for 1 round before anyone may move across. With this ability, the unit may step, jump, or even swing to the other side immediately. A skill roll must still be made, but a failed roll simply wastes a turn.") "Marine Survival" (ability :name "Marine Survival" :summary "* Open Water, Whitewater") "Merchant Marine" (ability :name "Merchant Marine" :summary "Civilian Merchants operating private vessels are considered naval auxilliary and may be called into service to deliver troops and supplies for the military.") :Navigation (ability :name "Navigation" :summary "* More than just finding a vessel's present location, safe navigation includes predicting future location, route planning and collision avoidance. * [Extended Action]: When determining actual travel time by sea, roll vs the difficulty of the journey. -1% travel time x [Hits] rolled. -2% travel time x [Critical Hits] rolled.") :Planing (ability :name "Planing" :summary "* Planing describes the state in which the hull of a waterborne craft is lifting up higher up to the point where it merely skims across the water, rather than moving through it.") :Ramming (ability :name "Ramming") :Righting (ability :name "Righting" :summary "The act of reversing a capsized vessel is called righting. If a capsized vessel has sufficient flotation to prevent sinking, it may recover on its own if the stability is such that it is not stable inverted. Small dinghies frequently capsize in the normal course of use and are occasionally deliberately capsized as it can be the fastest means of draining water from the boat. In a storm, even large vessels may be rolled by being hit broadside by a large wave. This is normally catastrophic for larger ships.") :Sailing (ability :name "Sailing" :summary "This includes maneuvers such as heaving to, jibe, reefing, and tacking.") "Trade Winds" (ability :name "Trade Winds" :summary "Faster travel when piloting commercial sailing vessels."))) "Starpiloting" (skill :name "Starpiloting" :abilitymap (abilitymap :Astronavigation (ability :name "Astronavigation") "Astronavigation - FTL" (ability :name "Astronavigation - FTL") "Astronavigation - Jump Drive" (ability :name "Astronavigation - Jump Drive") "Combat Orbital Piloting" (ability :name "Combat Orbital Piloting") "Combat Space Piloting" (ability :name "Combat Space Piloting") "Orbital Piloting" (ability :name "Orbital Piloting"))))) "Academic Skills" (section :name "Academic Skills" :skillmap (skillmap :Computers (skill :name "Computers" :abilitymap (abilitymap "AI Programming" (ability :name "AI Programming" :summary "* Artificial Intelligences may be given skills if the designer also possesses that skill. AI skill rolls are not open-ended.") "Computer Engineering" (ability :name "Computer Engineering") "Computer Programming" (ability :name "Computer Programming") "Computer Virus" (ability :name "Computer Virus") "Edit Recording" (ability :name "Edit Recording" :summary "* Modify a recording to mislead the viewer.") :Encryption (ability :name "Encryption") "False Images" (ability :name "False Images") "Garbage In / Garbage Out" (ability :name "Garbage In / Garbage Out") "Ghost in the Machine" (ability :name "Ghost in the Machine" :summary "* By digitizing one's personality at the moment of death, a person can gain a semblance of immortality. A new program is created that is an replica of the original. Successes determine how close a copy it is to the original. 10 successes is a perfect copy.") :Hacking (ability :name "Hacking") :Override (ability :name "Override" :reference "* Joachim: Our shields are dropping. Khan: Then raise them! Joachim: I can't! Khan: The override. Where's the override? - Joachim, Khan - Star Trek II: The Wrath of Khan") "Remote Access" (ability :name "Remote Access") :Reprogram (ability :name "Reprogram") :Telecommute (ability :name "Telecommute"))) :Electronics (skill :name "Electronics" :reference "Reverse the polarity of the neutron flow - Doctor Who" :abilitymap (abilitymap "Air Traffic Control" (ability :name "Air Traffic Control") :Blackout (ability :name "Blackout") "Boost Power Output" (ability :name "Boost Power Output") "Communication Systems" (ability :name "Communication Systems") "Cybernetic Systems" (ability :name "Cybernetic Systems") "Detection Systems" (ability :name "Detection Systems") "Disable Electronics" (ability :name "Disable Electronics") "Disrupt Guidance Systems" (ability :name "Disrupt Guidance Systems") "Electrical Overload" (ability :name "Electrical Overload" :summary "* Burn out a small part of a system. The system becomes unusable until the fault is found and corrected.") "Electronic Bypass" (ability :name "Electronic Bypass") "Gravitic Systems" (ability :name "Gravitic Systems") "Jam Communications" (ability :name "Jam Communications") "Power Systems" (ability :name "Power Systems") "Robotic Systems" (ability :name "Robotic Systems") "Repair Electrical System" (ability :name "Repair Electrical System") "Shield Technologies" (ability :name "Shield Technologies") "Short Circuit" (ability :name "Short Circuit"))) :Investigation (skill :name "Investigation" :summary "* Investigation is the ability to uncover hidden or lost information. Though it allows the user to rapidly find information, it does not provide the ability to use that information. Other skills or allies would be needed beyond the basics." :titles "Archivist, Crime Scene Investigator, Detective, Inspector, Investigative Reporter, Librarian, Researcher" :abilitymap (abilitymap :Decipher (ability :name "Decipher" :summary "* Detect and decode hidden messages.") "Connect the Dots" (ability :name "Connect the Dots") "Crack the Case" (ability :name "Crack the Case") "Criminal Research" (ability :name "Criminal Research") "Data Collection" (ability :name "Data Collection") "Delve Too Deep" (ability :name "Delve Too Deep") "Desperate Search" (ability :name "Desperate Search") "Dig Deep" (ability :name "Dig Deep") "Financial Research" (ability :name "Financial Research") "Find Traces" (ability :name "Find Traces") "Forbidden Knowledge" (ability :name "Forbidden Knowledge") "Forensic Research" (ability :name "Forensic Research") "Historical Research" (ability :name "Historical Research") "Inquiring Mind" (ability :name "Inquiring Mind") "Medical Research" (ability :name "Medical Research") "Occult Research" (ability :name "Occult Research") :Ransack (ability :name "Ransack") "Scene of the Crime" (ability :name "Scene of the Crime") "Search for the Truth" (ability :name "Search for the Truth") "Working a Hunch" (ability :name "Working a Hunch"))) :Knowledge (skill :name "Knowledge" :abilitymap (abilitymap "Ancient History" (ability :name "Ancient History") :Antiquities (ability :name "Antiquities" :summary "* The study and valuation of unique objects throughout history.") :Archeology (ability :name "Archeology" :summary "* The study and reclamation of ancient relics and remains." :titles "Archeologist, Paleontology, Paleontologist") "Current Events" (ability :name "Current Events") :Geography (ability :name "Geography") "Military History" (ability :name "Military History") "Movie Trivia" (ability :name "Movie Trivia" :summary "* Each topic must be taken separately. * Any knowledge rolls in the given field are at +2. * Character has a high chance to remember any detail in the given topic. This is similar to eidetic memory.") "Music Trivia" (ability :name "Music Trivia" :summary "* Each topic must be taken separately. * Any knowledge rolls in the given field are at +2. * Character has a high chance to remember any detail in the given topic. This is similar to eidetic memory.") "Mythology and Legend" (ability :name "Mythology and Legend") "National History" (ability :name "National History") "Religious Studies" (ability :name "Religious Studies") "Sports Trivia" (ability :name "Sports Trivia") "World History" (ability :name "World History")) :specialtymap (specialtymap :History (specialty :name "History") :Trivia (specialty :name "Trivia"))) :Mechanics (skill :name "Mechanics" :titles "Locksmith, Tinker, Tinsmith, Watchmaker" :abilitymap (abilitymap :Clockmaking (ability :name "Clockmaking") :Decontaminate (ability :name "Decontaminate") :Demolition (ability :name "Demolition") "Engineering: Aeronautical" (ability :name "Engineering: Aeronautical") "Engineering: Armor" (ability :name "Engineering: Armor" :titles "Armorer") "Engineering: Civil" (ability :name "Engineering: Civil" :titles "Construction") "Engineering: Cybernetic" (ability :name "Engineering: Cybernetic") "Engineering: Hydraulic" (ability :name "Engineering: Hydraulic") "Engineering: Optics" (ability :name "Engineering: Optics") "Engineering: Nuclear" (ability :name "Engineering: Nuclear") "Engineering: Robotic" (ability :name "Engineering: Robotic") "Engineering: Rocket and Reaction Engines" (ability :name "Engineering: Rocket and Reaction Engines") "Engineering: Siege" (ability :name "Engineering: Siege") "Engineering: Star Drive" (ability :name "Engineering: Star Drive") "Engineering: Temporal" (ability :name "Engineering: Temporal") "Engineering: Vehicular" (ability :name "Engineering: Vehicular") "Engineering: Weaponry" (ability :name "Engineering: Weaponry" :titles "Gunsmithing") :Fortification (ability :name "Fortification") "Kit Bash" (ability :name "Kit Bash") "Lock Construction" (ability :name "Lock Construction") "Lock Picking" (ability :name "Lock Picking") "Mechanical Maintenance" (ability :name "Mechanical Maintenance") "Mechanical Repair" (ability :name "Mechanical Repair") "Mechanism Construction" (ability :name "Mechanism Construction" :summary "* See [Equipment: Mechanisms]") "Mechanism Deactivation" (ability :name "Mechanism Deactivation") "Mechanism Detection" (ability :name "Mechanism Detection") :Mining (ability :name "Mining") :Salvage (ability :name "Salvage") "Trap Detection" (ability :name "Trap Detection") "Trap Disarming" (ability :name "Trap Disarming") "Trap Laying" (ability :name "Trap Laying" :summary "* See [Equipment: Traps]") :Welding (ability :name "Welding"))) :Medicine (skill :name "Medicine" :titles "Caregiver, Caretaker, Dentist, Doctor, EMT, Medic, Medical Examiner, Nurse, Physician, Surgeon" :stat "Mind" :abilitymap (abilitymap :Anatomy (ability :name "Anatomy") :Dentistry (ability :name "Dentistry") :Diagnose (ability :name "Diagnose") "Emergency Treatment" (ability :name "Emergency Treatment") "First Aid" (ability :name "First Aid") :Immunology (ability :name "Immunology") :Leeching (ability :name "Leeching") "Medical Practice" (ability :name "Medical Practice") :Nursing (ability :name "Nursing") :Pharmacy (ability :name "Pharmacy" :titles "Pharmacist, Pharmacy Technician") :Physiology (ability :name "Physiology") :Surgery (ability :name "Surgery") "Surgery: Brain" (ability :name "Surgery: Brain") "Surgery: Cosmetic" (ability :name "Surgery: Cosmetic") "Surgery: Cybernetic" (ability :name "Surgery: Cybernetic") "Surgery: Nerve" (ability :name "Surgery: Nerve") "Treat Disease" (ability :name "Treat Disease") "Treat Injury" (ability :name "Treat Injury") "Treat Poison" (ability :name "Treat Poison") "Treat Radiation" (ability :name "Treat Radiation") "Veterinary Medicine" (ability :name "Veterinary Medicine"))) "Life Sciences" (skill :name "Life Sciences" :reference "* See [Equipment: Drugs] * See [Flora and Fauna: Plants]" :titles "Life Scientist" :stat "Mind" :abilitymap (abilitymap :Biochemistry (ability :name "Biochemistry" :titles "Biochemist") :Biology (ability :name "Biology" :titles "Biologist") "Biology, Molecular" (ability :name "Biology, Molecular" :titles "Molecular Biologist") "Biology, Xeno" (ability :name "Biology, Xeno") :Botony (ability :name "Botony" :summary "* Analyze/Identify Plant * Locate Plant * Harvest Plant * Cultivate Plant Strain" :titles "Botonist, Herbalist, Horticulturalist") :Cloning (ability :name "Cloning") :Cryogenics (ability :name "Cryogenics" :summary "Hidden in ice for a century, to walk the Earth again. Lord have mercy on the frozen man. - James Taylor, The Frozen Man") :Cultivate (ability :name "Cultivate" :summary "* Grow any plant, fungus, or bacteria that you have studied.") "Enhance Drug" (ability :name "Enhance Drug" :summary "* Increase the effect that an existing drug or treatment will have.") "Gene Bank" (ability :name "Gene Bank") "Gene Splicing" (ability :name "Gene Splicing" :summary "* Grow new creatures that have characteristics taken from others.") "Gene Therapy" (ability :name "Gene Therapy") "Gene Sequencing" (ability :name "Gene Sequencing" :summary "* By gathering a sample of a biological organism and studying it, the researcher can discover every detail of its abilities and biological mechanics.") "Genetic Screening" (ability :name "Genetic Screening") :Genetics (ability :name "Genetics" :titles "Geneticist") "Genetic Engineering" (ability :name "Genetic Engineering") :Ecology (ability :name "Ecology" :summary "Ecology is the interdisciplinary scientific study of the interactions between organisms and their environment.") :Homeopathy (ability :name "Homeopathy") "Lab Work" (ability :name "Lab Work" :titles "Wet Science") :Pathology (ability :name "Pathology" :summary "* Analyze/Identify Disease") :Pharmacology (ability :name "Pharmacology" :summary "* Create/Develop Drug" :titles "Pharmacist, Pharmacologist") "Prepare Anti-Bacterial" (ability :name "Prepare Anti-Bacterial") "Prepare Anti-Fungal" (ability :name "Prepare Anti-Fungal") "Prepare Anti-Parasitic" (ability :name "Prepare Anti-Parasitic") "Prepare Anti-Toxin" (ability :name "Prepare Anti-Toxin") "Prepare Anti-Viral" (ability :name "Prepare Anti-Viral") "Prepare Balm" (ability :name "Prepare Balm") "Prepare Herbal Remedy" (ability :name "Prepare Herbal Remedy") "Prepare Panacea" (ability :name "Prepare Panacea" :summary "* Cure bacteria, virus, fungal, or parasitic infestation.") "Prepare Pigments" (ability :name "Prepare Pigments") "Prepare Poultice" (ability :name "Prepare Poultice") "Prepare Spices" (ability :name "Prepare Spices") "Prepare Vaccine" (ability :name "Prepare Vaccine") :Zoology (ability :name "Zoology" :summary "* Analyze/Identify Animal * Locate Animal" :titles "Zoologist"))) "Physical Sciences" (skill :name "Physical Sciences" :reference "* Personally, I liked the university. They gave us money and facilities, we didn't have to produce anything! You've never been out of college! You don't know what it's like out there! I've worked in the private sector. They expect results. - Ghostbusters" :summary "* Scientists believe that by studying a thing, one can learn its patterns and gain mastery over it." :titles "Sage, Scholar, Scientist" :stat "Mind" :abilitymap (abilitymap "Analyze Substance" (ability :name "Analyze Substance" :summary "* [Requires]: Must have abilities corresponding to the substance being analyzed (e.g. Geology for rocks, Metallurgy for metals, etc.). * [Extended Action]: Run a series of tests on a substance to determine its make up.") :Astronomy (ability :name "Astronomy") :Astrophysics (ability :name "Astrophysics") :Cartography (ability :name "Cartography" :summary "* [Action]: Accurately map the surrounding area. * [Action]: Locate anomalies in maps, including errors, forgeries, and potentially hidden areas." :titles "Cartographer, Map Maker") :Chemistry (ability :name "Chemistry") :Geology (ability :name "Geology" :titles "Mineralolgy, Vulcanism") :Experimentation (ability :name "Experimentation") :Mathematics (ability :name "Mathematics" :titles "Algebra, Geometric, Probability, Trigonometry") "Mathematics: Advanced" (ability :name "Mathematics: Advanced" :reference "* Differential Calculus - The definition, properties, and applications of the derivative of a function. The process of finding the derivative is called differentiation. * Integral Calculus - The definitions, properties, and applications of two related concepts, the indefinite integral and the definite integral. The process of finding the value of an integral is called integration. * Calculus is used in every branch of the physical sciences, actuarial science, computer science, statistics, engineering, economics, business, medicine, demography, and in other fields wherever a problem can be mathematically modeled and an optimal solution is desired. * Physics makes particular use of calculus; all concepts in classical mechanics are interrelated through calculus. The mass of an object of known density, the moment of inertia of objects, as well as the total energy of an object within a conservative field can be found by the use of calculus. * Electricity and Magnetism - Calculus can be used to find the total flux of electromagnetic fields. A more historical example of the use of calculus in physics is Newton's second law of motion, it expressly uses the term 'rate of change' which refers to the derivative. * Medicine - Calculus can be used to find the optimal branching angle of a blood vessel so as to maximize flow. * Economics - Calculus allows for the determination of maximal profit by providing a way to easily calculate both marginal cost and marginal revenue." :titles "Differential Calculus, Integral Calculus, Limits and Infintesimals, Linear Algebra") :Metallurgy (ability :name "Metallurgy") :Meteorology (ability :name "Meteorology") :Planetology (ability :name "Planetology") "Publish or Perish" (ability :name "Publish or Perish" :summary "* Ability to create academic papers that increase Fame.") :Optics (ability :name "Optics") "Physics: Dimensional" (ability :name "Physics: Dimensional") "Physics: Electromagnetic" (ability :name "Physics: Electromagnetic") "Physics: Fluid Dynamics" (ability :name "Physics: Fluid Dynamics") "Physics: Forces" (ability :name "Physics: Forces") "Physics: Newtonian" (ability :name "Physics: Newtonian") "Physics: Nuclear" (ability :name "Physics: Nuclear" :reference "* You said crossing the streams was bad! Cross the streams... You're gonna endanger us, you're gonna endanger our client - the nice lady, who paid us in advance, before she became a dog...Not necessarily. There's definitely a *very slim* chance we'll survive. I love this plan! I'm excited to be a part of it! LET'S DO IT! - Ghostbusters") "Physics: Quantum" (ability :name "Physics: Quantum") "Physics: Temporal" (ability :name "Physics: Temporal" :reference "* The future is not set. There's no fate but what we make for ourselves. - Reece, The Terminator") "Physics: Thermodynamics" (ability :name "Physics: Thermodynamics") "Quick Study" (ability :name "Quick Study" :reference "I know Kung Fu. - Neo, The Matrix" :summary "* Cram to learn a low level skill very quickly. The skill doesn't last long, but often it doesn't have to.") :Study (ability :name "Study"))))) "Social Skills" (section :name "Social Skills" :skillmap (skillmap :Art (skill :name "Art" :reference "* Art requires a certain... cruelty. - Jhin, Runeterra" :titles "Artist, Artisan" :stat "Spirit" :abilitymap (abilitymap "Art Imitates Life" (ability :name "Art Imitates Life" :reference "Dorian Gray" :summary "Artwork become real") :Calligraphy (ability :name "Calligraphy") :Crafts (ability :name "Crafts") :Drawing (ability :name "Drawing") :Painting (ability :name "Painting") :Photoshopping (ability :name "Photoshopping" :summary "* Modify an image to improve or mislead.") :Sculpture (ability :name "Sculpture"))) :Business (skill :name "Business" :reference "* Did they get you to trade? Your heroes for ghosts? Hot ashes for trees? Hot air for a cool breeze? Cold comfort for change? Did you exchange? A walk-on part in the war. For a leading role in a cage? - Pink Floyd, Wish you were here" :titles "Commerce" :abilitymap (abilitymap :Accounting (ability :name "Accounting" :titles "Accountant, Actuary, Clerk") :Advertising (ability :name "Advertising" :titles "Marketing Representative") :Appraise (ability :name "Appraise" :summary "* Determine the value of an item in the current market.") :Bargain (ability :name "Bargain" :summary "* Ability that Limits any attempt to buy or sell goods at their actual worth." :titles "Haggler, Merchant") :Barter (ability :name "Barter" :summary "* Ability that Limits any attempt to buy or sell goods at their actual worth.") "Business Management" (ability :name "Business Management") :Distribution (ability :name "Distribution") :Economics (ability :name "Economics" :reference "* In 5 minutes, you learn what the average University student remembers 5 years after learning school ... Economics: Supply and Demand. That's it. - Father Guido Sarducci, Five Minute University") :Finance (ability :name "Finance") :Marketing (ability :name "Marketing") :Procure (ability :name "Procure" :summary "The ability to find rare, exotic or illegal items for sale or trade." :titles "Procurer") :Sales (ability :name "Sales" :reference "* In 5 minutes, you learn what the average University student remembers 5 years after learning school ... Business is: You buy something, you sell it for more - Father Guido Sarducci, Five Minute University" :titles "Carpetbagger, Peddler, Salesman") :Speculate (ability :name "Speculate") "Trade Routes" (ability :name "Trade Routes") "Trade Union" (ability :name "Trade Union"))) :Communications (skill :name "Communications" :abilitymap (abilitymap :Appearance (ability :name "Appearance" :summary "* Expert on personal grooming, cosmetics, and hairstyling.") :Carousing (ability :name "Carousing") "Detect Lie" (ability :name "Detect Lie") :Drinking (ability :name "Drinking") :Drugs (ability :name "Drugs") :Etiquette (ability :name "Etiquette") :Fashion (ability :name "Fashion" :summary "* Knows current fashions and what clothing with make the best impact.") :Fiction (ability :name "Fiction" :summary "* Can author, critique, interpret, and detect fiction.") "Go Viral" (ability :name "Go Viral" :summary "* Create an interesting message popular enough to be passed around.") :Gossip (ability :name "Gossip" :summary "* The single best way to get information, but, given it source, may not be reliable.") :Interview (ability :name "Interview" :titles "Interviewer, Reporter") :Journalism (ability :name "Journalism" :titles "Journalist, Media, Reporter") :Literacy (ability :name "Literacy" :summary "* Can read and write * This ability is assumed in modern characters from 1st and 2nd world nations") "Motivational Speaking" (ability :name "Motivational Speaking" :reference "* My name is Matt Foley and I am a motivational speaker... First off, I am thirty-five years old, I am divorced, and I live in a van down by the river... Well I'm here to tell you, that you're probably going to find out, as you go out there, that you're not going to amount to jack squat! You're going to end up eating a steady diet of government cheese and living in a van down by the river! - Matt Foley, SNL" :titles "Motivational Speaker") :Negotiation (ability :name "Negotiation" :titles "Advisor, Arbiter, Diplomat, Emissary, Envoy, Legate, Negotiator") :Photography (ability :name "Photography" :titles "Photographer") :Poetry (ability :name "Poetry" :summary "Can author any type of poetry" :titles "Poet") :Politics (ability :name "Politics") :Recruiting (ability :name "Recruiting" :titles "Casting Director, Hiring Manager, Recruiter") :Scribe (ability :name "Scribe" :summary "* Can copy writings exactly") :Sincerity (ability :name "Sincerity" :summary "* Helps convince others when you are being truthful. * Helps improve long term relationships by increasing trust. * Limitation - May only be used when you truly believe that your are correct.") "Small Talk" (ability :name "Small Talk" :titles "The Gift of Gab") :Streetwise (ability :name "Streetwise" :summary "* [Action]: Gain knowledge where a good or service can be found in a city including black market goods or services.") :Translator (ability :name "Translator" :summary "* Can translate immediately") "Trash Talk" (ability :name "Trash Talk" :reference "* What's the matter Agent Scary Lips? You're Scary Lips tasting my hairy shit? You tasting Doug Wilson's World Famous beef stew? How's it going down, its kinda spicy right? You guys are so fucked right now, all I can think about is your wife and a horse. - Doug Wilson, Weeds" :titles "Put Down") :Videography (ability :name "Videography" :titles "Cameraman, Videographer") "Video Production" (ability :name "Video Production" :titles "Director, Producer") "Wise Words" (ability :name "Wise Words" :summary "* Apply personal life experiences to help others understand themselves.") :Cantonese (ability :name "Cantonese") :English (ability :name "English") :French (ability :name "French") :German (ability :name "German") :Greek (ability :name "Greek") :Italian (ability :name "Italian") :Latin (ability :name "Latin") :Mandarin (ability :name "Mandarin") "Olde English" (ability :name "Olde English") :Portuguese (ability :name "Portuguese") :Russian (ability :name "Russian") "Sign Language" (ability :name "Sign Language") :Spanish (ability :name "Spanish")) :specialtymap (specialtymap :Linguistics (specialty :name "Linguistics" :reference "* So we put her on the hit list, of a common, cunning linguist: a master of many tongues. - Deep Purple, Knocking at Your Backdoor" :summary "* Philosophy - The 'common tongue' concept is boring and unrealistic. * Simulate the limitations of language by reducing usable vocabulary. This can be done by limiting a conversation to 2, 3, 4, or 5 letter words depending on the fluency of those involved. Having a conversation using only 2 letter words is going to require a fair amount of hand gesturing or drawing to get a point across. If a person is overhearing a conversation, bleep out the big words and let them guess at the missing words.") :Writing (specialty :name "Writing"))) :Crime (skill :name "Crime" :titles "Bandit, Brigand, Crime Boss, Crook, Cutthroat, Highwayman, Pimp, Yakuza, Yakuza - Oyabun" :stat "Shadow" :abilitymap (abilitymap "Armed Robbery" (ability :name "Armed Robbery") :Blackmail (ability :name "Blackmail") :Bribery (ability :name "Bribery") "Crime Syndicate" (ability :name "Crime Syndicate") "Crime Wave" (ability :name "Crime Wave") "Criminal Mastermind" (ability :name "Criminal Mastermind") :Extortion (ability :name "Extortion") "Fence Goods" (ability :name "Fence Goods") :Kidnapping (ability :name "Kidnapping") "Mafia Connections" (ability :name "Mafia Connections") :Pimping (ability :name "Pimping") :Piracy (ability :name "Piracy" :summary "* Armed robbery of large shipments of goods without damaging the merchandise.") :Prostitution (ability :name "Prostitution") :Rustling (ability :name "Rustling" :summary "* Stealing and selling livestock") :Waylay (ability :name "Waylay"))) :Deception (skill :name "Deception" :reference "* I whisper Truth, into Lies... - Leblanc, Runeterra" :titles "Chicanery, Legerdemain" :stat "Shadow" :abilitymap (abilitymap :Burglary (ability :name "Burglary") "Con Artist" (ability :name "Con Artist") "Confidence Game" (ability :name "Confidence Game" :titles "Con Artist, Swindler") :Decoy (ability :name "Decoy" :summary "* Create a decoy to mislead. * [Move]: Remove this unit from play and place 1 Decoy Token and 1 Decoy Unit Token on this unit's space. Both decoys may act normally during the Action phase, but any action but movement will dispel the decoys. Both decoys defend as the original unit. If either unit is Hit, both decoys are dispelled. The decoys last until the next turn or until dispelled.") "Detect Trap" (ability :name "Detect Trap") :Distraction (ability :name "Distraction" :titles "Throw Dirt") :Escape (ability :name "Escape" :reference "* The chain in those handcuffs is high-tensile steel. It'd take you ten minutes to hack through it with this. Now, if you're lucky, you could hack through your ankle in five minutes. Go." :summary "* The ability comes from extensive practice escaping from various bonds and confinements. At higher abilities, the user can dislocate joints to slither out of bonds." :titles "Escape Artist") "Evade Pursuit" (ability :name "Evade Pursuit" :summary "* Ability to correctly evaluate the opponent's pursuit style and outwit the pursuer.") :Forgery (ability :name "Forgery" :summary "* The ability to forge money or documents. This ability is also used while creating money to prevent forgery. * [Extended Action]: Roll vs. object quality or anti-forgery level. Any [Hits] allow a forgery that can pass at a distance. The more [Hits] and [Criticals] rolled, the more indistinquishable from the original. High level forgeries are works of art unto themselves.") :Gambling (ability :name "Gambling" :titles "Gambler, High Roller") "Honor Among Thieves" (ability :name "Honor Among Thieves") :Misdirection (ability :name "Misdirection") "Pick Pockets" (ability :name "Pick Pockets") "Sleight of Hand" (ability :name "Sleight of Hand" :summary "* Hide a small object in hand without being noticed." :titles "Legerdemain") :Smuggling (ability :name "Smuggling") "Stage Magic" (ability :name "Stage Magic") "Thieves Guild Codes" (ability :name "Thieves Guild Codes" :summary "Thieves must conceal their illegal conversations and the guilds have developed a shifting series of hand signals, marks, and code words to communicate simple concepts without arising suspiscion.") "Use Blinding Powder" (ability :name "Use Blinding Powder") "Use Flash Powder" (ability :name "Use Flash Powder") "Use Irritating Powder" (ability :name "Use Irritating Powder") "Use Sleeping Powder" (ability :name "Use Sleeping Powder") :Vanish (ability :name "Vanish") :Ventriloquism (ability :name "Ventriloquism")) :specialtymap (specialtymap :Thievery (specialty :name "Thievery" :reference "This is where Forrestall cashed in. A friend of yours? A competitor... he was good. He was very good. - Indiana Jones, Raiders of the Lost Ark" :summary "* Burglary, Escape, Fence Goods, Honor Among Thieves, Pick Pockets, Smuggling, Thieves Guild Codes" :titles "Burglar, Cutpurse, Footpad, Nezumi kozo, Pick Pocket, Smuggler, Thief") :Trickery (specialty :name "Trickery" :summary "* Blinding Powder, Confidence Game, Decoy, Distraction, Flash Powder, Gambling, Irritating Powder, Misdirection, Sleight of Hand, Stage Magic, Swindling, Vanish, Ventriloquism" :titles "Blackguard, Caitiff, Charlatan, Con Artist, Delinquent, Gambler, Knave, Ne'er do well, Ninja, Rapscallion, Renegade, Riffraff, Rogue, Scoundrel, Scalawag, Stage Magician, Swashbuckler, Swindler, Trickster"))) :Espionage (skill :name "Espionage" :titles "Covert Ops, Infiltrator, Informer, Spy, Traitor" :stat "Shadow" :abilitymap (abilitymap :Counterintelligence (ability :name "Counterintelligence") "Cyber Intelligence" (ability :name "Cyber Intelligence" :summary "* Intelligence gathered from computer networks." :titles "CYBINT, DNINT, Digital Network Intelligence") :Eavesdrop (ability :name "Eavesdrop" :summary "* Listen in to conversations without being detected.") :Infiltrate (ability :name "Infiltrate" :summary "* [Defense] - Mind * [Deploy] - Deploy this unit in waiting area. * [Action] - Replace any non-unique unit with this unit.") "Geospatial Intelligence" (ability :name "Geospatial Intelligence" :summary "* Intelligence gathered from satellite, aerial photography, mapping. * Espionage, Diplomats, Military Attaches, NGOs, Patrolling, POWs Detainees, Refugees, Strategic Reconnaissance, Traveller Debriefing" :titles "GEOINT, IMINT, Imagery Intelligence") "Human Intelligence" (ability :name "Human Intelligence" :summary "* Intelligence gathered from a person on the ground. * Espionage, Diplomats, Military Attaches, NGOs, Patrolling, POWs Detainees, Refugees, Strategic Reconnaissance, Traveller Debriefing" :titles "HUMINT") "Intelligence Network" (ability :name "Intelligence Network" :reference "If you thought there was some secret cell somewhere working Al Qaedia. Then I want you to know you're wrong. This it it. There is no working group coming to the rescue. There is nobody else hidden on some other floor. There is just us... and we are failing!... They murdered 3000 of our citizens..in cold-blood and they have slaughtered our forward deploy. And what the fuck have we done about it, huh? What have we done?! We have 20 leadership names. We have only eliminated 4 of them. I want targets. Do your fucking jobs. Bring me people to kill. - Zero Dark Thirty") "Lip Reading" (ability :name "Lip Reading" :summary "* Attempt to understand what is being said without the benefit of hearing. The more [Hits] rolled, the more accurate the interpretation.") "Measurement and Signals" (ability :name "Measurement and Signals" :summary "* Intelligence gathered from the signatures (distinctive characteristics) of fixed or dynamic target sources. This includes radar, acoustic, nuclear, chemical, and biological intelligence." :titles "MASINT") :Misdirection (ability :name "Misdirection" :reference "* Smoke and Mirrors... Classic Misdirection - Leblanc, Runeterra") "Open Source Intelligence" (ability :name "Open Source Intelligence" :summary "* Intelligence gathered from open sources." :titles "OSINT") :Propaganda (ability :name "Propaganda") "Quick Change" (ability :name "Quick Change") :Sabotage (ability :name "Sabotage" :titles "Saboteur") "Signals Intelligence" (ability :name "Signals Intelligence" :reference "* Quiller" :summary "* Intelligence gathered from interception of signals." :titles "SIGINT, Signals") :Subversion (ability :name "Subversion") "Technical Intelligence" (ability :name "Technical Intelligence" :summary "* Intelligence gathered from analysis of weapons and equipment." :titles "TECHINT") "Whispering Campaign" (ability :name "Whispering Campaign"))) :Faith (skill :name "Faith" :reference "The argument goes something like this: 'I refuse to prove that I exist,' says God, 'for proof denies faith, and without faith I am nothing.' 'But,' says Man, 'The Babel fish is a dead giveaway, isn't it? It could not have evolved by chance. It proves you exist, and so therefore, by your own arguments, you don't. QED.' - Hitchhiker's Guide to the Galaxy" :titles "Abbot, Absolver, Archbishop, Bishop, Cardinal, Cleric, Ceremonial Guard, Gakusho, Missionary, Paladin, Priest, Redeemer, Sin Eater, Theologist, Theurge, Theurgy" :abilitymap (abilitymap :Absolution (ability :name "Absolution") :Affirmation (ability :name "Affirmation" :summary "An affirmation is a statement designed to have a positive effect on the conscious mind when repeated at frequent intervals throughout meditation ritual spells.") :Atonement (ability :name "Atonement") :Blessing (ability :name "Blessing" :summary "* A simple incantation with a variety of subtle effects. * [Action]: Touch. Target gains a new Blessing Token (max 1). At any time, the target may remove the token and gain +1 on any Defense roll. * [Duration]: up to 1 day/level.") :Chant (ability :name "Chant" :summary "* Aura: All Allies with same Religion within level spaces receive +1 on Defense rolls.") :Confession (ability :name "Confession") :Consecration (ability :name "Consecration" :summary "* To consecrate is to solemnly dedicate or devote something or someone to a sacred purpose, to cleanse and protect.") :Contemplation (ability :name "Contemplation" :summary "* Contemplation is a focused and disiplined form of contemplation or reflecting, whereby one is able to alter an emotional state and to receive self-insight.") :Conversion (ability :name "Conversion") :Dedication (ability :name "Dedication" :summary "* [Death]: Unit enters specified Deity's realm. It is not substantiated that this ability actually works. Those who have crossed over are changed and may not and will not return.") :Drumming (ability :name "Drumming" :summary "* Drumming is literally pounding on a surface. This is used to raise power and to change emotional states.") :Excommunication (ability :name "Excommunication") :Initiation (ability :name "Initiation" :summary "* Used to describe the profound spiritual experience that occurs when one's unity with Deity and the Universe is realised; when one is welcomed as a fully-fledged member of a particular group; and the celebration of a successful ritual.") :Marriage (ability :name "Marriage") :Mass (ability :name "Mass") :Namegiving (ability :name "Namegiving") :Ordainment (ability :name "Ordainment") :Redemption (ability :name "Redemption") :Sacrament (ability :name "Sacrament") :Salvation (ability :name "Salvation") :Sanctify (ability :name "Sanctify") "Sin Eating" (ability :name "Sin Eating" :summary "* A willing subject may describe his dark desires, the Sin Eater then repeats the description replacing references to the subject with himself. After the ritual is complete, the subject will not feel the urges so strongly. Instead the Sin Eater will feel those emotions. If he acts on them, even symbolically, his [Shadow] gains power. If he can resolve them, he gains experience."))) :Influence (skill :name "Influence" :reference "* Many men, of course, became extremely rich, and this was perfectly natural and nothing to be ashamed of because no one was really poor, at least no one worth speaking of. - Hitchhiker's Guide to the Galaxy" :titles "Aristocrat, Baron, Baroness, Baronet, Celebrity, Count, Countess, Daimyo, Dame, Duchess, Duke, Emperor, Empress, King, Knight, Lord, Marchioness, Marquis, Matriarch, Monarch, Patriarch, Pontif, Prince, Princess, Queen, Regina, Sire, Sovereign, Star" :abilitymap (abilitymap "Black Market Ties" (ability :name "Black Market Ties") :Boon (ability :name "Boon") :Business (ability :name "Business") "Carte Blanche" (ability :name "Carte Blanche" :titles "Blank Check") "Corporate Ties" (ability :name "Corporate Ties") "Entertainment Ties" (ability :name "Entertainment Ties") :Fame (ability :name "Fame" :summary "* Your reputation precedes you. People are drawn to the famous and will often do extraordinary things to be near them. * [Synergy]: [Seduction] * [Action]: Leverage your fame to gain minor free goods or services including upgraded lodging, free meals, audience with nobles, etc.") "Family Ties" (ability :name "Family Ties") :Fortune (ability :name "Fortune") :Followers (ability :name "Followers" :titles "Acolyte, Apprentice, Retinue, Servant, Serf, Shieldbearer") "Friends in High Places" (ability :name "Friends in High Places" :reference "* I'm telling you this guy is protected from up on high by the Prince of Darkness. - Jeff Rabin, Usual Suspects") :Infamy (ability :name "Infamy" :summary "* Your dark reputation precedes you. People are intrigued by the infamous and will often do extraordinary things in fear and facination of them. * [Synergy]: [Intimidation] * [Action]: Leverage your infamy to gain minor free goods or services including upgraded lodging, free meals, etc.") :Intrigue (ability :name "Intrigue") :Investing (ability :name "Investing") "Judicial Ties" (ability :name "Judicial Ties") "Law Enforcement Ties" (ability :name "Law Enforcement Ties") "License to Kill" (ability :name "License to Kill") :Mansion (ability :name "Mansion") "Media Ties" (ability :name "Media Ties") "Night Club" (ability :name "Night Club") "Noble Birth" (ability :name "Noble Birth") "Official Title" (ability :name "Official Title") "Political Ties" (ability :name "Political Ties" :titles "Ambassador, Minister, Politician, Senator") "Religious Ties" (ability :name "Religious Ties") "Train Follower" (ability :name "Train Follower") "Underworld Ties" (ability :name "Underworld Ties") :Windfall (ability :name "Windfall")) :specialtymap (specialtymap :Nobility (specialty :name "Nobility" :titles "Noble Lineage") :Royalty (specialty :name "Royalty" :titles "Royal Lineage"))) :Intimidation (skill :name "Intimidation" :reference "* I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain. - Bene Gesserit Litany, Dune * They tell him they want his territory: all his business. Soze looks over the faces of his family, then he showed these men of will what will really was. He tells him he would rather see his family dead, than live another day after this. ... He waits until his wife and kids are in the ground, and then he goes after the rest of the mob. He kills their kids. He kills their wives. He kills their parents and their parents friends. He burns down the houses they live in and the stores they work in. He kills people who owe them money. And like that, he's gone. - Verbal Kint, Usual Suspects" :titles "Demagogue, Enforcer, Fearmonger, Overseer, Pimp, Slave Lord, Slaver, Tormentor, Torturer" :stat "Shadow" :abilitymap (abilitymap :Coercion (ability :name "Coercion" :reference "* The boat will be ready for you on Friday. If I see you or any of your friends before then, Miss. Finneran will find herself the victim of a most gruesome violation before she dies. As will your father, Mr. Hockney, and your Uncle Randall in Arizona, Mr. Kint. I might only castrate Mr. McManus's nephew, David. Do I make myself clear? - Kobayashi, Usual Suspects") "Death March" (ability :name "Death March" :summary "* Increase movement of allies within level spaces. Sustained use of this ability runs the risk of injuring or killing some allies.") :Duress (ability :name "Duress") :Enslave (ability :name "Enslave" :reference "Did you know that pain causes the formation of the strongest chemical bonds in the mammalian brain? Whip a dog, and it keeps coming back... At first it will hope that you'll stop, but after a while, it won't even know the difference. But you already know all about that don't you?... Time melted away into the pain... Finally something clicked over in his head and reality rushed back in around him, clearer and sharper than ever before... Staring he made out faces. Faces not unlike his own reflection he had seen only an eternity ago. Faces distended in howling agony... eyes welling with tears of blood, eyes that all turned toward Her, crying in admiration. - Mage: The Book of Madness") "Grip of Fear" (ability :name "Grip of Fear" :reference "* It was Keyser Soze, Agent Kujan. I mean the Devil himself. How do you shoot the devil in the back? What if you miss? - Verbal, Usual Suspects") :Interrogate (ability :name "Interrogate" :reference "* I'm gonna ask you one more goddamn time, and if you still 'respectfully refuse,' I'm callin' the Bear Jew over here, and he's gonna take that big-ole bat of his, and he's gonna beat you to death with it. Now take your wiener schnitzel lickin' finger and point out on this map what I want to know...We got a German here who wants to die for his country! Oblige him! - Lt. Aldo Raine, Inglourious Basterds * You don't need that. I'll tell you everything. Yes...I know you will. - Raiders of the Lost Ark") :Intimidate (ability :name "Intimidate" :reference "* Your timing is impeccable. Pity you were all they sent... The Fatui would do well to update their intelligence concerning me. Ah, but of course, that would require one of you to return in one piece. - Ayato, Genshin Impact * ...to the death. No. To the pain. I don't think I'm quite familiar with that phrase. ... To the pain means the first thing you will lose will be your feet below the ankles. Then your hands at the wrists. Next your nose. ...And then my ears, I understand let's get on with it. WRONG. Your ears you keep and I'll tell you why. So that every shriek of every child at seeing your hideousness will be yours to cherish. Every babe that weeps at your approach, every woman who cries out, 'Dear God! What is that THING?,' will echo in your perfect ears. That is what to the pain means. It means I leave you in anguish, wallowing in freakish misery ... forever. ...I think you're bluffing. It's possible, Pig, I might be bluffing. It's conceivable, you miserable, vomitous mass, that I'm only lying here because I lack the strength to stand. But, then again... perhaps I have the strength after all. - Princess Bride" :summary "* A form of bluffing") "Reign of Terror" (ability :name "Reign of Terror" :summary "* Use to rally troops") :Terrorize (ability :name "Terrorize" :summary "* [Attack]: Any [Critical Hits] may be [Retreats]") :Torment (ability :name "Torment") :Torture (ability :name "Torture" :reference "* Your cries of agony, where will they not reach? Where on Citaeron will they not re-echo? No man living will meet a doom more terrible than yours. - Sophocles, Oedipus Rex"))) :Law (skill :name "Law" :titles "Bailiff, Constable, Executioner, Judge, Lawbringer, Lawyer, Litigant, Magistrate, Peace Officer, Peacekeeper, Police Officer" :stat "Mind" :abilitymap (abilitymap :Authority (ability :name "Authority") "Blind Justice" (ability :name "Blind Justice") "Call In Backup" (ability :name "Call In Backup" :summary "Bring me everyone. What do you mean 'everyone'? E-V-E-R-Y-O-N-E! - Stansfield and Benny - Leon the Professional") :Condemn (ability :name "Condemn") :Confiscate (ability :name "Confiscate") "Crime and Punishment" (ability :name "Crime and Punishment") "Crowd Control" (ability :name "Crowd Control") "Detective Work" (ability :name "Detective Work" :reference "* To a cop the explanation is never that complicated. It's always simple. There's no mystery to the street, no arch criminal behind it all. If you got a dead body and you think his brother did it, you're gonna find out you're right. - Verbal, Usual Suspects") :Dragnet (ability :name "Dragnet" :reference "* Our fugitive has been on the run for ninety minutes. Average foot speed over uneven ground barring injuries is 4 miles-per-hour. That gives us a radius of six miles. What I want from each and every one of you is a hard-target search of every gas station, residence, warehouse, farmhouse, henhouse, outhouse and doghouse in that area. - The Fugitive" :summary "* Search a large area for a fugitive.") :Exile (ability :name "Exile") :Exonerate (ability :name "Exonerate") :Judgment (ability :name "Judgment" :reference "* I am the law! - Judge Dredd") :Precedent (ability :name "Precedent") :Prosecute (ability :name "Prosecute") "Scales of Justice" (ability :name "Scales of Justice") :Shakedown (ability :name "Shakedown" :reference "* How many times you been in a lineup? It's always you and four dummies. PD are paying homeless guys $10 a head half the time. And there's no way they'd line five felons in the same row. No way - Keaton, Usual Suspects") :Trial (ability :name "Trial"))) :Performance (skill :name "Performance" :reference "* Ahh, the denouement. - Jhin, Runeterra" :titles "Entertainer, Performer, Jester, Juggler" :stat "Spirit" :abilitymap (abilitymap :Allure (ability :name "Allure") :Amplify (ability :name "Amplify" :reference "These go to eleven. - This is Spinal Tap" :summary "* A performer must be able to be heard. This ability maximizes the acoustics available and allows the performer's message to be heard.") :Ballad (ability :name "Ballad") "Ballroom Dance" (ability :name "Ballroom Dance") "Break Dance" (ability :name "Break Dance") :Calm (ability :name "Calm" :titles "Pacify, Soothe the Savage") "Captivating Song" (ability :name "Captivating Song" :summary "* For each success, the targets Move is reduced by 1.") :Comedy (ability :name "Comedy" :titles "Clown, Comedian, Mime, Jester") :Crescendo (ability :name "Crescendo") :Dirge (ability :name "Dirge" :summary "* Opponents in Radius are cloaked in despair. * [Passive] * [Continuous]: [Retreats] are increased by 1 for all opponents within the radius." :titles "Demoralize, Song of Fear") :Discord (ability :name "Discord" :summary "* A sudden sound that disrupts the natural flow of existing sounds. * The secret to this skill is to pick the most inappropriate sound at the most inappropriate time. * The result is extremely distracting and will cancel other effects based on sound including other Communication abilities." :titles "Cacaphony") :Disguise (ability :name "Disguise") :Fanfare (ability :name "Fanfare" :summary "* A cheering audience increases an entertrainer's power.") "Gabriel's Horn" (ability :name "Gabriel's Horn" :summary "* [Requires]: Horn * Damages Walls of any kind") :Harmonize (ability :name "Harmonize") :Heartstrings (ability :name "Heartstrings" :reference "* Strumming my pain with his fingers. Singing my life with his words. Killing me softly with his song. Killing me softly with his song telling my whole life with his song. - The Fugees, Killing Me Softly") "Hip Hop Dance" (ability :name "Hip Hop Dance") :Imitation (ability :name "Imitation") :Impersonation (ability :name "Impersonation") :Incite (ability :name "Incite") :Inspiration (ability :name "Inspiration" :summary "* Allies in Radius are Continuously inspired to greater feats by this ability. * [Passive] * [Continuous]: [Retreats] are reduced by 1 for all allies within the radius.") :Juggling (ability :name "Juggling" :summary "* Besides juggling objects, this ability allows the user to catch objects. * [Reaction]: When an object is thrown at a space within one space of the user, roll vs. the [Attack], the object is caught if any [Hits] are scored. Further, the user may immediately throw the object using [Juggling] level as attack value.") :Lullaby (ability :name "Lullaby") "Performance Art" (ability :name "Performance Art" :reference "Cirque de Soleil") "Pole Dance" (ability :name "Pole Dance") :Requiem (ability :name "Requiem") "Salsa Dance" (ability :name "Salsa Dance") :Satirize (ability :name "Satirize") :Serenade (ability :name "Serenade") :Sexpertise (ability :name "Sexpertise" :reference "* If you don't like the company, let's just do it you and me...you and me...or three...or four, on the floor. - Britney Spears, Three") :Silence (ability :name "Silence") "Siren Song" (ability :name "Siren Song" :summary "* [Action]: For each success, during its turn, the target must use half of its [Move] to approach the singer.") :Speeches (ability :name "Speeches") :Song (ability :name "Song") :Storytelling (ability :name "Storytelling" :titles "Storyteller") :Style (ability :name "Style") :Tango (ability :name "Tango") :Waltz (ability :name "Waltz") "War Song" (ability :name "War Song" :reference "Battle Hymn, Glorious Anthem") "Work Song" (ability :name "Work Song")) :specialtymap (specialtymap :Courtesan (specialty :name "Courtesan" :reference "* Madame Kaji: We've been servicing the road-weary crotches of every man here to pay obeisance to your new family. You need service only one, freshly washed. Akemi: You don't understand. Madame Kaji: That he's a beast. He's weak. He's a man. All men are weak. The ones who act beastly are weakest. They penetrate women and think that makes them powerful. Really, their pricks are fragile. Exposed. You saw it yourself. They want to be diapered, spanked, and breastfed, then strut away like they conquered an army. Nurture his weakness. Be his strength, and he'll worship you. Akemi: I, don't know if I can. Madame Kaji: Stop running to and from men, and decide what you want for your fucking self. Akemi: I want to be in control of my life. Madame Kaji: Then take control of his, Princess - Madame Kaji and Akemi, Blue Eye Samurai" :summary "* A prostitute, especially one whose clients are members of a royal court or of high social standing.") :Dance (specialty :name "Dance" :summary "Ballroom Dance, Break Dance, Hip Hop Dance, Pole Dance, Salsa Dance, Tango, Waltz") :Music (specialty :name "Music" :summary "* Song, Musical Instrument * The power of music lies in its ability to tell truths that we willing listen to even if they are unpleasant. * See Equipment for Musical Instruments * Musical Instruments may be used with any performance power to increase any Range or Radius by 1 Space." :titles "Bard, Classical, Drummer, Guitarist, Harpist, Hip-Hop, Jazz, Lyrist, Minstrel, Musician, Piper, Pop, Rap, Rhapsode, Rock, Skald, Troubadour") :Acting (specialty :name "Acting" :reference "* Acting! - Master Thespian, Saturday Night Live" :titles "Drama Queen, Master Thespian, Theater Brat, Thespian"))) :Persuasion (skill :name "Persuasion" :titles "Fast Talker, Silver Tongue Devil, Smooth Operator" :abilitymap (abilitymap :Bluff (ability :name "Bluff") :Credibility (ability :name "Credibility" :summary "* The ability to convince large groups of people that you are telling the truth.") :Debate (ability :name "Debate") "Fast Talk" (ability :name "Fast Talk") :Lying (ability :name "Lying" :titles "Fibbing") :Manipulation (ability :name "Manipulation") :Pickup (ability :name "Pickup") :Seduction (ability :name "Seduction" :reference "* But what of all those sweet words you spoke in private? Oh that's just what we call pillow talk, baby, that's all. - Ash, Army of Darkness * But you don't understand. That men are weak? * Guess I must be dumb. She had a pocket full of horses, trojan and some of them used... I guess I should have closed my eyes when you drove me to the pace where your horses run free. Cause I felt a little ill when I saw all the pictures of the jockeys that were there before me. Believe it or not, I started to worry. I wondered if I had enough class. But it was Saturday night, I guess that makes it alright. And you say, Baby have you got enough gas? Oh, Yeah! - Prince, Little Red Corvette" :titles "Femme Fatale, Vamp") "Silver Tongue" (ability :name "Silver Tongue") "Swords to Plowshares" (ability :name "Swords to Plowshares" :summary "* Sincerly convince a rival to choose peace over conflict."))) "Social Sciences" (skill :name "Social Sciences" :abilitymap (abilitymap :Anthropology (ability :name "Anthropology" :summary "* The study of cultures, customs, habits, race, tribes, gangs, and other group affliations and interactions.") "Breaking Point" (ability :name "Breaking Point" :summary "* Determine psychological weaknesses (phobias, addictions, obsessions, etc.)") "Determine Motivation" (ability :name "Determine Motivation") :Philosophy (ability :name "Philosophy") :Profile (ability :name "Profile") :Psychoanalyze (ability :name "Psychoanalyze") :Psychology (ability :name "Psychology") :Sociology (ability :name "Sociology") :Teaching (ability :name "Teaching" :reference "* The true master is an eternal student. - Master Yi, Runeterra" :titles "Educator") :Theology (ability :name "Theology" :summary "* Knowledge about the history, customs, and objects of religions. Though the focus is on a particular religion, Theology includes some understanding of all religions."))) :Stealth (skill :name "Stealth" :titles "Stalker" :stat "Body" :abilitymap (abilitymap :Ambush (ability :name "Ambush") :Backstab (ability :name "Backstab" :summary "* [Action]: Gain [+1 Synergy] when [Flanking] target in Close Combat. * [Action]: Gain [+1 Synergy] per [Level] when in the target's Blind Spot in Close Combat." :titles "Back Biter, Back Stabber, Opportunist, Traitor") "Blend into the Crowd" (ability :name "Blend into the Crowd" :summary "* Attitude, Mannerism, and Appearance can often allow a stranger to go unnoticed in a crowd. * [Continuous]: While active, unit is hidden as long as at least 10 other units are within skill spaces.") :Camouflage (ability :name "Camouflage" :summary "* [Continuous]: While active, unit is hidden. * [Defense]: +1 Defense in [Terrain]. * [Roll]: Skill - Move this turn. * [Versus]: and others must roll Spirit - Terrain penalty vs to detect.") "Cloak and Dagger" (ability :name "Cloak and Dagger" :summary "* [Action]: Gains short term Stealth, move up to 2 spaces ignoring attacks of opportunity and attack with a [Knife] by [Surprise].") :Hide (ability :name "Hide" :summary "* Find a hiding place in an area where you will not normally be detected.") :Seek (ability :name "Seek" :summary "* Discover the location of someone using [Stealth]." :titles "Detect Stealth") :Sneak (ability :name "Sneak" :summary "* Move silently") "Sneak Attack" (ability :name "Sneak Attack" :titles "Suprise Attack") :Stalk (ability :name "Stalk" :summary "* The ability to move carefully to avoid detection. * [Requires]: No other action may be performed this turn. * [Action]: Move at half speed. Any attempt to act toward you, first requires an Mind vs. your skill or fail.") "Strike and Fade" (ability :name "Strike and Fade" :summary "* [Requires]: No other action may be performed this turn. * [Attack]: After this attack, if you have sufficient Move remaining, move 1 space.") :Tailing (ability :name "Tailing" :summary "* Subtly pursue someone. Ideally, you must stay as far away as possible without losing track of your quarry. Completely unaware people are easy to pursue. Paranoid targets will attempt to spot tailing and may attempt to evade tails even when they do not know they are being tailed.") "Without a Trace" (ability :name "Without a Trace"))))))))
nx/tactics/books/skills / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Skills" :image "Skill.jpg" :chaptermap (base/chaptermap "Skills Overview" (chapter_skills_overview) "Skill Types" (chapter_skill_types) )))
nx/tactics/books/skills / chapter_skills_overview
Description:
Function Name:
  • chapter_skills_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_skills_overview : base/chapter (chapter :name "Skills Overview" :sectionmap (sectionmap "Why Tactics: Skills?" (section :name "Why Tactics: Skills?" :sectionmap (sectionmap "Extraordinary Skills" (section :name "Extraordinary Skills" :reference "* What you call tao. It's a power everyone possesses innately, but mastering it allows one to achieve superhuman abilities... But you must be careful how you use it. Tao is life itself. Use too much, and you'll exhaust more than just your stamina... In the worst case, overuse likely leads to death. - Shion-dono , Hell's Paradise"))))))
nx/tactics/books/skills / chapter_skill_types
Description:
Function Name:
  • chapter_skill_types
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_skill_types : base/chapter (chapter :name "Skill Types" :sectionmap (sectionmap "Physical Skills" (section :name "Physical Skills" :skillmap (skillmap "Animal Handling" (skill :name "Animal Handling" :summary "* Deploy: Deploy trained animals with total level equal to skill. * Each week, one animal may be trained one trick." :titles "Animal Trainer, Breeder, Driver, Herder, Horse Whisperer, Houndmaster, Shepherd, Zoologist" :abilitymap (abilitymap :Falconry (ability :name "Falconry") :Herding (ability :name "Herding" :titles "Cowboy, Pig Farmer, Rancher, Shepherd") :Husbandry (ability :name "Husbandry") "Stare Down" (ability :name "Stare Down") "Guard Training" (ability :name "Guard Training") :Retrieve (ability :name "Retrieve") "Seeing Eye Training" (ability :name "Seeing Eye Training") "Snake Charming" (ability :name "Snake Charming") "Train Dog" (ability :name "Train Dog") "Train Elephant" (ability :name "Train Elephant") "Train Horse" (ability :name "Train Horse") "War Training" (ability :name "War Training"))) :Assassination (skill :name "Assassination" :reference "Was it so easy? Was it so simple? You just pushed and death came? Nothing spiritual about it...They just stopped talking, stopped breathing, stopped moving, finally stopped twitching. - Kylar Stern, The Way of Shadows" :titles "Assassin, Blackguard, Ninja, Shinobi" :stat "Shadow" :abilitymap (abilitymap "Harvest Poison" (ability :name "Harvest Poison") "Kiss of Death" (ability :name "Kiss of Death") "Poisoned Arrow" (ability :name "Poisoned Arrow") "Poisoned Blade" (ability :name "Poisoned Blade") "Poisoned Dust" (ability :name "Poisoned Dust") :Poisoning (ability :name "Poisoning") "Poison Tolerance" (ability :name "Poison Tolerance" :reference "...it was your cup that was poisoned. They were both poisoned. I spent the last few years building up an immunity to iocane powder. - Princess Bride") "Prepare Acid" (ability :name "Prepare Acid") "Prepare Anti-Coagulant" (ability :name "Prepare Anti-Coagulant" :summary "* Create an Anti-Coagulant Poison. A target with Anti-Coagulant cannot easily stop [Bleeding].") "Prepare Antidote" (ability :name "Prepare Antidote" :summary "* Skilled in antidote creation. Can create an antidote for any Poison user can brew.") "Prepare Poison" (ability :name "Prepare Poison"))) :Athletics (skill :name "Athletics" :stat "Body" :abilitymap (abilitymap :Balance (ability :name "Balance" :summary "* User has extensive experience balancing under difficult circumstances. * [Action]: Roll vs. difficulty to maintain balance. If any [Hits] are rolled, balance is maintained. Movement is at half speed while balancing, but additional [Hits] or [Criticals] improve movement speed by 10% each up to full speed.") :Backflip (ability :name "Backflip" :summary "+1 Initiative +0 Speed (Can only move backward, ignores terrain movement penalties) * A showy move that allows the unit to move directly backward without turning.") "Body Building" (ability :name "Body Building" :summary "* Character is distinctly powerful looking. * [Passive]: Unit may reroll any failed attempt to lift, push, or pull an object.") :Breakfall (ability :name "Breakfall" :summary "* Reduces Critical Hits to Hits from impacts during Knockback, Knockdown, or Falling * [Reaction]") :Contortion (ability :name "Contortion") "Escape Artistry" (ability :name "Escape Artistry") "Freestyle Running" (ability :name "Freestyle Running" :summary "* [Action]: Ignore 1 [Hazard] from each space of [Forest], [Broken Ground], [Jungle], [Swamp], or [Obstacle].") :Gymnastics (ability :name "Gymnastics") "High Jump" (ability :name "High Jump") "Ice Climbing" (ability :name "Ice Climbing") :Kippup (ability :name "Kippup" :summary "* [Move]: Change from [Prone] to [Standing].") "Leap Attack" (ability :name "Leap Attack") "Long Jump" (ability :name "Long Jump") :Marathon (ability :name "Marathon") "Pole Vault" (ability :name "Pole Vault") :Rappelling (ability :name "Rappelling") "Rock Climbing" (ability :name "Rock Climbing") "SCUBA Diving" (ability :name "SCUBA Diving") :Skateboarding (ability :name "Skateboarding") :Skating (ability :name "Skating") :Skydiving (ability :name "Skydiving") :Sledding (ability :name "Sledding") :Slide (ability :name "Slide" :summary "* Move at full speed under low obstacles like tables or overhangs.") :Snorkeling (ability :name "Snorkeling") :Snowboarding (ability :name "Snowboarding") :Skiing (ability :name "Skiing") :Sports (ability :name "Sports") :Swimming (ability :name "Swimming") "Swimming, Cold Water" (ability :name "Swimming, Cold Water") "Swimming, Distance" (ability :name "Swimming, Distance") "Team Acrobatics" (ability :name "Team Acrobatics" :summary "* Allows a number of people with this ability to work together to form human pyramids, human ladders, etc.") :Tightrope (ability :name "Tightrope") :Throw (ability :name "Throw") "Tree Climbing" (ability :name "Tree Climbing" :summary "[Action]: Climb a tree. Hammocks and seats can be built with enough time and equipment.") :Tumbling (ability :name "Tumbling") :Vault (ability :name "Vault" :summary "* Move over a low obstacle with no reduction in speed. * [Action]: Move and ignore up to Level in movement penalties this turn from fences, barricades, and other low obstacles.") "Wall Climbing" (ability :name "Wall Climbing") "Wall Spring" (ability :name "Wall Spring") "Zero G" (ability :name "Zero G")) :specialtymap (specialtymap :Acrobatics (specialty :name "Acrobatics" :summary "* Balance * Breakfall * Contortion * Escape Artistry * Gymnastics * High Jump * Kippup * Long Jump * Tightrope * Throw * Tumbling * Wall Spring * Zero G" :titles "Acrobat, Contortionist, Escape Artist, Jester" (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/specialty :tag "ability") :severity 2)))) :Climbing (specialty :name "Climbing" :summary "* Ice Climbing * Rappelling * Rock Climbing * Tree Climbing * Wall Climbing"))) :Hunting (skill :name "Hunting" :reference "* Royal Huntsman - Sleeping Beauty" :titles "Forward Observer, Gamekeeper, Hunter, Huntress, Huntsman, Huntmaster, Lookout, Mage Hunter, Master Huntsman, Master of the Hunt, Poacher, Ranger, Royal Huntsman, Scout, Sentinel, Stalker, Tracer, Tracker, Watchman" :abilitymap (abilitymap "Call of the Hunt" (ability :name "Call of the Hunt") "Cull the Herd" (ability :name "Cull the Herd") :Deadfall (ability :name "Deadfall") "Field Dressing" (ability :name "Field Dressing") :Fishing (ability :name "Fishing" :summary "* Catch enough fish to eat. Similar to Foraging." :titles "Fisherman") :Lure (ability :name "Lure" :reference "Everquest Pulling") :Scouting (ability :name "Scouting" :titles "Reconnaissance") :Snare (ability :name "Snare") "There is No Escape" (ability :name "There is No Escape" :reference "* Raiden Shogun, Genshin Impact") :Track (ability :name "Track")) :specialtymap (specialtymap "Bounty Hunter" (specialty :name "Bounty Hunter" :reference "* Certainly there is no hunting like the hunting of man and those who have hunted armed men long enough and liked it, never really care for anything else thereafter. - On the Blue Water, Ernest Hemmingway" :summary "* Bounty Hunting represents experience in stalking and capturing a target in an urban setting. This is traditionally done for money and can be quite profitable. * Bounties are placed on people for whom the law lacks the resources or inclination to pursue. * Bounties are placed by insurance companies, bail bondsmen, armies, the F.B.I., and individuals. * The reward can be paid for information, the capture of the target in a reasonably uninjured state, or even dead or alive. * The reward obviously needs to be commensurate with the difficulty or no one will take it. Capturing is harder than killing, so captures gain a bonus.") "Demon Hunter" (specialty :name "Demon Hunter") "Devil Hunter" (specialty :name "Devil Hunter") "Mage Hunter" (specialty :name "Mage Hunter") :Trapper (specialty :name "Trapper") "Treasure Hunter" (specialty :name "Treasure Hunter" :reference "* Indiana Jones * Lara Croft" :summary "* Treasure Hunting represents experience in the dangerous and profitable world of lost tombs and ancient relics. Rare relics hold high presitge and are usually sold (in the form of a finders fee) to museaums, governments or private collectors. Raiding tombs is a fairly lawless and perilous activity to start with, and such high value items tend to attract disreputable characters of all kinds. As a result, treasure hunters often end their careers in unfortunate accidents. * +1 while researching or navigating inside a crypt or tomb." :titles "Tomb Raider, Treasure Seeker") "Vampire Hunter" (specialty :name "Vampire Hunter") "Werewof Hunter" (specialty :name "Werewof Hunter") "Witch Hunter" (specialty :name "Witch Hunter"))) :Rage (skill :name "Rage" :titles "Berserker, Marauder, Wildman" :stat "Beast" :abilitymap (abilitymap :Berserker (ability :name "Berserker") :Frenzy (ability :name "Frenzy") :Fury (ability :name "Fury") :Hatred (ability :name "Hatred" :summary "* Attack: +1 Speed vs. Tribal or long-standing personal enemies.") :Howl (ability :name "Howl") :Taunt (ability :name "Taunt" :reference "* Kirk: We tried it once your way, Khan, are you game for a rematch? Khan, I'm laughing at the 'superior intellect.' Khan: Full impulse power! Joachim: No, sir! You have Genesis! You can have whatever... Khan: FULL POWER! DAMN YOU! - Star Trek II: The Wrath of Khan" :summary "* Dishonor opponent's mother. * Roll vs. Mind. If successful, opponent must attack you." :titles "Goad") :Vengeance (ability :name "Vengeance" :reference "* More names off the list, more names on it. - Pyke, Runeterra * She opened a book and a box of tools. Sunny came home with a mission... Sunny came home with a list of names. She didn't believe in transcendence. 'It's time for a few small repairs.' she said. Sunny came home with a Vengence. - Shawn Colvin, Sunny Came Home") :Warcry (ability :name "Warcry"))) :Survival (skill :name "Survival" :summary "Common Survival Abilities * [Anytime]: Survival Skill may be rolled against any appropriate terrain based hazard taking the better of defense or Survival roll. * [Daily]: Units missing appropriate supplies for the terrain must roll Days + # of missing supplies + Terrain Penalty versus Body + Survival or gain Black [Exhaustion] Tokens." :titles "Adventurer, Courier, Drifter, Explorer, Forager, Messenger, Pathfinder, Pioneer, Seeker, Sentry, Survivalist, Trailblazer, Traveller, Wanderer, Wayfarer" :stat "Defense" :abilitymap (abilitymap "Cold Weather Survival" (ability :name "Cold Weather Survival" :summary "* Hazards - Blizzard, Avalanche, Frostbite") "Dead Reckoning" (ability :name "Dead Reckoning" :summary "* Estimate current position and movement.") "Desert Survival" (ability :name "Desert Survival" :titles "Desert Bandit, Desert Dweller, Desert Fox, Desert Nomad, Dune Raider, Dune Rider") "Detect Hollow Rock" (ability :name "Detect Hollow Rock" :summary "* Detect trap doors, secret doors, and unstable rocks.") :Foraging (ability :name "Foraging" :summary "* [Action]: This ability can be used to forage for 1 man day of food and water for each [Hit]. Such food will typically be disgusting to those unaccustomed to the local cuisine, but it will sustain. Excess food only lasts for 1 additional day before going bad. Excess water can be transfered to containers if any, otherwise it cannot be carried. [Critical Hit]s provide a particularly tasty, convenient, or useful source of nutrition (e.g. water in bamboo that can be carried, food that will last another day or more).") :Forestry (ability :name "Forestry" :reference "Tin Man" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into the forest. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 2 [Forest] spaces * [Action]: [+1 Stealth] in [Woods] * [Defense]: [+1 Defense] vs Ranged in [Woods]" :titles "Forest Lord, Logger, Lumberjack, Pathcutter, Ranger, Warden, Woodcutter, Woodsman") "High Altitude Survival" (ability :name "High Altitude Survival") "Jungle Survival" (ability :name "Jungle Survival" :reference "Tarzan" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into the jungle. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 1 [Jungle] space * [Action]: [+1 Stealth] in [Jungle] * [Defense]: [+1 Defense] vs Ranged in [Jungle]" :titles "Jungle Dweller, Lord of the Jungle") "Motion Sense" (ability :name "Motion Sense" :summary "* Detect air movements and faint sounds to detect moving things even when they are around corners or in the dark.") "Swamp Survival" (ability :name "Swamp Survival" :summary "* This ability is used to avoid or mitigate the common hazards encountered while delving into swampland. This can also be used to avoid the attention of random predators. * [Requires]: Unit must be a [Light Unit] * [Move]: Ignore movement penalty for 1 [Swamp] space * [Action]: [+1 Stealth] in [Swamp] * [Defense]: [+1 Defense] vs Ranged in [Swamp]" :titles "Murk Dweller, Murk Lord, Swamp Lord, Swamp Knight, Swamp Thing") "Underground Survival" (ability :name "Underground Survival")) :specialtymap (specialtymap :Caving (specialty :name "Caving" :summary "* Dead Reckoning * Detect Hollow Rock * Mining * Motion Sense * Sapping * Underground Survival" :titles "Miner, Prospector, Sapper, Spelunker, Underminer"))) :Tradeskills (skill :name "Tradeskills" :reference "* Tradesman" :stat "None" :abilitymap (abilitymap :Administration (ability :name "Administration" :titles "Administrator, Secretary") :Agriculture (ability :name "Agriculture" :summary "* Grow Crop" :titles "Farmer, Gardener") :Architecture (ability :name "Architecture" :summary "* [Extended Action]: Design a structure. The size and quality of the structure are limited by level. * [Action]: Determine weaknesses of a structure." :titles "Architect") :Blacksmithing (ability :name "Blacksmithing" :titles "Blacksmith") :Brewing (ability :name "Brewing" :summary "* Brew Beer * Brew Hard Liquor * Brew Mead * Brew Wine" :titles "Brewer, Vintner") :Carpentry (ability :name "Carpentry" :titles "Carpenter") :Cleaning (ability :name "Cleaning" :titles "Maid") :Cobbling (ability :name "Cobbling" :summary "* Make Shoes" :titles "Cobbler") :Cooking (ability :name "Cooking" :summary "* Prepare Recipe" :titles "Chef, Cook") :Cooping (ability :name "Cooping" :summary "* Make Sealable Barrel" :titles "Cooper") :Glassblowing (ability :name "Glassblowing" :summary "* Blow Bottle * Blow Glass Decoration") :Jewelsmithing (ability :name "Jewelsmithing" :summary "* Gemcutting * Fashion Jewelry" :titles "Gemcutter, Jeweler") :Laboring (ability :name "Laboring" :titles "Laborer, Worker") :Landscaping (ability :name "Landscaping" :summary "* Grow Bonsai * Grow Flowers * Grow Hedges * Grow Hedge Maze * Grow Trees" :titles "Groundskeeper, Landscaper, Lawnboy") :Leatherworking (ability :name "Leatherworking" :summary "* Fashion Leather Goods * Flay Skins" :titles "Tanner") :Livestock (ability :name "Livestock") :Logging (ability :name "Logging") :Metalworking (ability :name "Metalworking" :titles "Coppersmith, Goldsmith, Machinist, Pewtersmith, Silversmith") :Plumbing (ability :name "Plumbing" :titles "Plumber") :Porting (ability :name "Porting" :summary "* Bear Litter * Port Boat" :titles "Bearer, Porter") :Pottery (ability :name "Pottery" :titles "Potter") :Servant (ability :name "Servant" :titles "Butler, Footman, Lady in Waiting") :Sewing (ability :name "Sewing" :summary "* Crochet * Embroidery * Fashion Clothing * Needlepoint * Repair Cloth" :titles "Dressmaker, Seamstress") :Stagecraft (ability :name "Stagecraft" :summary "* The technical aspects of theatrical production, which include scenic design, stage machinery, lighting, sound, costume design, and makeup." :titles "Stagehand") :Weaponsmith (ability :name "Weaponsmith" :summary "* The ability to repair, improve, or even create weapons. * [Razor's Edge] - Work a weapon to give a +1 Synergy the first time it hits." :titles "Bladesmith, Swordsmith") :Woodworking (ability :name "Woodworking" :summary "The process of building, making or carving something using wood." :titles "Carver, Whittler, Woodworker"))))) "Transportation Skills" (section :name "Transportation Skills" :skillmap (skillmap :Driving (skill :name "Driving" :titles "Driver, Trucker" :abilitymap (abilitymap "Bootlegger Reverse" (ability :name "Bootlegger Reverse") :Drift (ability :name "Drift") :Swerve (ability :name "Swerve") "3 Point Turn" (ability :name "3 Point Turn") "Parallel Parking" (ability :name "Parallel Parking")) :specialtymap (specialtymap :Motorcycles (specialty :name "Motorcycles") :Trucks (specialty :name "Trucks") "Construction Vehicles" (specialty :name "Construction Vehicles"))) :Piloting (skill :name "Piloting" :summary "* The Jink and Barrel Roll maneuvers simply make it harder for the plane to be hit. * The Half Loop, Wingover, and Falling Leaf are all attempts to loose an enemy that's tailing you. * The Loop, Immelman, and Retournment are all attempts to both loose a tail, abd to end up tailing that foe yourself. * When a 'dogged' plane attempts a maneuver to escape his tail the pilot needs to succeed in the maneuver. If he fails his roll, then he's still being tailed, if he succeeds, then the tailing pilot gets to attempt the same maneuver (as a 'free' action at full dice pool) - if the 'tail' matches or exceeds the successes rolled by the target plane's pilot, then the tail is maintained for another turn. * When a dogged plane attempts a 'reversal' maneuver the effects are the same, except that if the tailing plane scores less successes than the target plane, the roles are reversed." :titles "Aviator, Pilot, Sky Captain, Sky Knight, Sky Marshall, Wing Commander, Wingman" :abilitymap (abilitymap "Barn Storming" (ability :name "Barn Storming" :summary "* Low altitude flying that uses ground cover to block line of sight. Naturally, this manuever can be extremely dangerous." :titles "Nape of the Earth") "Barrel Roll" (ability :name "Barrel Roll" :reference "* Do a barrel roll! - Peppy Hare, Star Fox 64" :summary "The pilot rolls the plane over sideways and 'corkscrews' through the air.") "Cobra maneuver" (ability :name "Cobra maneuver" :summary "* A dramatic and demanding maneuver in which an airplane flying at a moderate speed abruptly raises its nose momentarily to a vertical and slightly past vertical attitude, causing an extremely high angle of attack and momentarily stalling the plane, making a full-body air brake before dropping back to normal position, during which the aircraft does not change effective altitude." :titles "Dynamic deceleration") "Carrier Landing" (ability :name "Carrier Landing") "Circle of Death" (ability :name "Circle of Death" :summary "A Russian WWII maneuver when attacking ground forces that attacks the column from the rear, then circles around to make repeated rear attacks until all weapons were expended.") "Close Air Support" (ability :name "Close Air Support") "Dive Bombing" (ability :name "Dive Bombing" :summary "High speed attack from high altitude. Increases movement speed and damage of physical attacks.") "Falling Leaf" (ability :name "Falling Leaf" :summary "The pilot deliberately stalls, sending it into a spinning fall, only to restart the engine and level off.") "Fly Out of the Sun" (ability :name "Fly Out of the Sun" :summary "If the sun is behind, allows a surprise attack.") "Flyby Attack" (ability :name "Flyby Attack") "Flying Mount" (ability :name "Flying Mount" :summary "* When riding a mount that can fly, a unit must have experience riding that particular mount. * Examples: Dragon, Flying Carpet, Giant Eagle, Giant Wasp, Griffin, Hippogriff, Pegasus, Roc") "Half Loop" (ability :name "Half Loop" :summary "The pilot pulls up and over, as if he was going to loop the aircraft, but adds a half-roll to right the plane at the top of the loop to continue level flight in the opposite direction to that which he started.") "Immelmann Turn" (ability :name "Immelmann Turn" :summary "The Immelmann turn has become one of the most popular airshow maneuvers in the world. However, the aerobatic maneuver is altogether different from the WWI Immelmann turn (See Wingover) and is of little use in modern dogfighting." :titles "Roll Off the Top") :Jink (ability :name "Jink" :summary "* Yawing his plane from side to side, the pilot attempts to throw-off the aim of enemy gunners. * [Action]: [+1 Defense] until this unit's next turn.") :Levitating (ability :name "Levitating" :summary "* If a unit uses powers to fly, the unit must gain this ability of fly at a penalty.") :Loop (ability :name "Loop" :summary "* The pilot pulls the plane up and over in a complete circle, ending up in the same position and facing that he started.") "Pull Out of a Dive" (ability :name "Pull Out of a Dive") "Remote Piloting" (ability :name "Remote Piloting") "Split S" (ability :name "Split S" :summary "A diving maneuver mostly used to disengage. The pilot half-rolls his aircraft inverted and executes a descending half-loop, resulting in level flight in the exact opposite direction at a lower altitude." :titles "Reverse Immelmann") :Strafe (ability :name "Strafe") "Strategic Bombing" (ability :name "Strategic Bombing") :Tail (ability :name "Tail") "Torpedo Bomb" (ability :name "Torpedo Bomb" :summary "Fly [Nape of the Earth] and drop a torpedo or other payload.") "Wing Over" (ability :name "Wing Over" :reference "Performed by an experienced flyer, this maneuver can surprise a pursuer by quickly reversing on them. If you have the distance lead in a chase, you can use this to convert from a defensive posture to an offensive one. The trick is not to get shot up when you are reversing." :titles "Immelmann Turn, Retournment") "Winged Flight" (ability :name "Winged Flight" :summary "* If the unit has wings, it must have this ability or fly at a penalty. * If the unit grew up with wings, this ability is assumed.")) :specialtymap (specialtymap "Civilian Airplanes" (specialty :name "Civilian Airplanes") "Commercial Airplanes" (specialty :name "Commercial Airplanes") :Helicopters (specialty :name "Helicopters"))) :Riding (skill :name "Riding" :summary "* Level 1: Ride a horse * Level 2: Ride a Lt. Warhorse * Level 3: Ride a Med. Warhorse * Level 4: Ride a Hvy. Warhorse * Note: Riding a flying mount requires [Flying]" :titles "Caravan Driver, Cavalry, Driver, Dragoon, Horseman, Knight, Lancer, Outrider, Rider" :abilitymap (abilitymap "Catabatan Circle" (ability :name "Catabatan Circle" :summary "* [Formation] * High Dodge and Concentrated firepower") :Charge (ability :name "Charge" :reference "* We'll use the old ways...speed of horse! - Arthur, Excalibur" :summary "* [Requires]: Unit must have moved at least 4 spaces in a straight line. * [Action]: Melee Attack costs no [Speed]. * [Attack], [Damage]: Any [Critical Hits] may be [Morale Tokens]") "Drive Carriage" (ability :name "Drive Carriage") "Drive Cart" (ability :name "Drive Cart") "Horse Archery" (ability :name "Horse Archery") "Run Down" (ability :name "Run Down" :summary "* [Damage]: +1 Damage when attacking from the rear. * [Attack], [Damage]: Any [Critical Hits] may be [Retreats]") "Steed Trample" (ability :name "Steed Trample"))) :Seamanship (skill :name "Seamanship" :summary "The art of operating a ship or boat including specialised skills such as: navigation and international maritime law; weather, meteorology and forecasting; watchstanding; ship-handling and small boat handling; operation of deck equipment, anchors and cables; ropework and line handling; communications; sailing; engines; execution of evolutions such as towing; cargo handling equipment, dangerous cargoes and cargo storage; dealing with emergencies; survival at sea and search and rescue; fire fighting. The degree of knowledge needed within these areas is dependent upon the nature of the work. However, the practice of good seamanship should be the goal of all." :titles "Admiral, Capitan, Commodore, First Officer, Navigator, Pirate, Sailor, Seaman, Ship's Mate" :abilitymap (abilitymap "Boarding Party" (ability :name "Boarding Party" :summary "* When a ship touches a dock or another ship, it is very unstable and must be secured for 1 round before anyone may move across. With this ability, the unit may step, jump, or even swing to the other side immediately. A skill roll must still be made, but a failed roll simply wastes a turn.") "Marine Survival" (ability :name "Marine Survival" :summary "* Open Water, Whitewater") "Merchant Marine" (ability :name "Merchant Marine" :summary "Civilian Merchants operating private vessels are considered naval auxilliary and may be called into service to deliver troops and supplies for the military.") :Navigation (ability :name "Navigation" :summary "* More than just finding a vessel's present location, safe navigation includes predicting future location, route planning and collision avoidance. * [Extended Action]: When determining actual travel time by sea, roll vs the difficulty of the journey. -1% travel time x [Hits] rolled. -2% travel time x [Critical Hits] rolled.") :Planing (ability :name "Planing" :summary "* Planing describes the state in which the hull of a waterborne craft is lifting up higher up to the point where it merely skims across the water, rather than moving through it.") :Ramming (ability :name "Ramming") :Righting (ability :name "Righting" :summary "The act of reversing a capsized vessel is called righting. If a capsized vessel has sufficient flotation to prevent sinking, it may recover on its own if the stability is such that it is not stable inverted. Small dinghies frequently capsize in the normal course of use and are occasionally deliberately capsized as it can be the fastest means of draining water from the boat. In a storm, even large vessels may be rolled by being hit broadside by a large wave. This is normally catastrophic for larger ships.") :Sailing (ability :name "Sailing" :summary "This includes maneuvers such as heaving to, jibe, reefing, and tacking.") "Trade Winds" (ability :name "Trade Winds" :summary "Faster travel when piloting commercial sailing vessels."))) "Starpiloting" (skill :name "Starpiloting" :abilitymap (abilitymap :Astronavigation (ability :name "Astronavigation") "Astronavigation - FTL" (ability :name "Astronavigation - FTL") "Astronavigation - Jump Drive" (ability :name "Astronavigation - Jump Drive") "Combat Orbital Piloting" (ability :name "Combat Orbital Piloting") "Combat Space Piloting" (ability :name "Combat Space Piloting") "Orbital Piloting" (ability :name "Orbital Piloting"))))) "Academic Skills" (section :name "Academic Skills" :skillmap (skillmap :Computers (skill :name "Computers" :abilitymap (abilitymap "AI Programming" (ability :name "AI Programming" :summary "* Artificial Intelligences may be given skills if the designer also possesses that skill. AI skill rolls are not open-ended.") "Computer Engineering" (ability :name "Computer Engineering") "Computer Programming" (ability :name "Computer Programming") "Computer Virus" (ability :name "Computer Virus") "Edit Recording" (ability :name "Edit Recording" :summary "* Modify a recording to mislead the viewer.") :Encryption (ability :name "Encryption") "False Images" (ability :name "False Images") "Garbage In / Garbage Out" (ability :name "Garbage In / Garbage Out") "Ghost in the Machine" (ability :name "Ghost in the Machine" :summary "* By digitizing one's personality at the moment of death, a person can gain a semblance of immortality. A new program is created that is an replica of the original. Successes determine how close a copy it is to the original. 10 successes is a perfect copy.") :Hacking (ability :name "Hacking") :Override (ability :name "Override" :reference "* Joachim: Our shields are dropping. Khan: Then raise them! Joachim: I can't! Khan: The override. Where's the override? - Joachim, Khan - Star Trek II: The Wrath of Khan") "Remote Access" (ability :name "Remote Access") :Reprogram (ability :name "Reprogram") :Telecommute (ability :name "Telecommute"))) :Electronics (skill :name "Electronics" :reference "Reverse the polarity of the neutron flow - Doctor Who" :abilitymap (abilitymap "Air Traffic Control" (ability :name "Air Traffic Control") :Blackout (ability :name "Blackout") "Boost Power Output" (ability :name "Boost Power Output") "Communication Systems" (ability :name "Communication Systems") "Cybernetic Systems" (ability :name "Cybernetic Systems") "Detection Systems" (ability :name "Detection Systems") "Disable Electronics" (ability :name "Disable Electronics") "Disrupt Guidance Systems" (ability :name "Disrupt Guidance Systems") "Electrical Overload" (ability :name "Electrical Overload" :summary "* Burn out a small part of a system. The system becomes unusable until the fault is found and corrected.") "Electronic Bypass" (ability :name "Electronic Bypass") "Gravitic Systems" (ability :name "Gravitic Systems") "Jam Communications" (ability :name "Jam Communications") "Power Systems" (ability :name "Power Systems") "Robotic Systems" (ability :name "Robotic Systems") "Repair Electrical System" (ability :name "Repair Electrical System") "Shield Technologies" (ability :name "Shield Technologies") "Short Circuit" (ability :name "Short Circuit"))) :Investigation (skill :name "Investigation" :summary "* Investigation is the ability to uncover hidden or lost information. Though it allows the user to rapidly find information, it does not provide the ability to use that information. Other skills or allies would be needed beyond the basics." :titles "Archivist, Crime Scene Investigator, Detective, Inspector, Investigative Reporter, Librarian, Researcher" :abilitymap (abilitymap :Decipher (ability :name "Decipher" :summary "* Detect and decode hidden messages.") "Connect the Dots" (ability :name "Connect the Dots") "Crack the Case" (ability :name "Crack the Case") "Criminal Research" (ability :name "Criminal Research") "Data Collection" (ability :name "Data Collection") "Delve Too Deep" (ability :name "Delve Too Deep") "Desperate Search" (ability :name "Desperate Search") "Dig Deep" (ability :name "Dig Deep") "Financial Research" (ability :name "Financial Research") "Find Traces" (ability :name "Find Traces") "Forbidden Knowledge" (ability :name "Forbidden Knowledge") "Forensic Research" (ability :name "Forensic Research") "Historical Research" (ability :name "Historical Research") "Inquiring Mind" (ability :name "Inquiring Mind") "Medical Research" (ability :name "Medical Research") "Occult Research" (ability :name "Occult Research") :Ransack (ability :name "Ransack") "Scene of the Crime" (ability :name "Scene of the Crime") "Search for the Truth" (ability :name "Search for the Truth") "Working a Hunch" (ability :name "Working a Hunch"))) :Knowledge (skill :name "Knowledge" :abilitymap (abilitymap "Ancient History" (ability :name "Ancient History") :Antiquities (ability :name "Antiquities" :summary "* The study and valuation of unique objects throughout history.") :Archeology (ability :name "Archeology" :summary "* The study and reclamation of ancient relics and remains." :titles "Archeologist, Paleontology, Paleontologist") "Current Events" (ability :name "Current Events") :Geography (ability :name "Geography") "Military History" (ability :name "Military History") "Movie Trivia" (ability :name "Movie Trivia" :summary "* Each topic must be taken separately. * Any knowledge rolls in the given field are at +2. * Character has a high chance to remember any detail in the given topic. This is similar to eidetic memory.") "Music Trivia" (ability :name "Music Trivia" :summary "* Each topic must be taken separately. * Any knowledge rolls in the given field are at +2. * Character has a high chance to remember any detail in the given topic. This is similar to eidetic memory.") "Mythology and Legend" (ability :name "Mythology and Legend") "National History" (ability :name "National History") "Religious Studies" (ability :name "Religious Studies") "Sports Trivia" (ability :name "Sports Trivia") "World History" (ability :name "World History")) :specialtymap (specialtymap :History (specialty :name "History") :Trivia (specialty :name "Trivia"))) :Mechanics (skill :name "Mechanics" :titles "Locksmith, Tinker, Tinsmith, Watchmaker" :abilitymap (abilitymap :Clockmaking (ability :name "Clockmaking") :Decontaminate (ability :name "Decontaminate") :Demolition (ability :name "Demolition") "Engineering: Aeronautical" (ability :name "Engineering: Aeronautical") "Engineering: Armor" (ability :name "Engineering: Armor" :titles "Armorer") "Engineering: Civil" (ability :name "Engineering: Civil" :titles "Construction") "Engineering: Cybernetic" (ability :name "Engineering: Cybernetic") "Engineering: Hydraulic" (ability :name "Engineering: Hydraulic") "Engineering: Optics" (ability :name "Engineering: Optics") "Engineering: Nuclear" (ability :name "Engineering: Nuclear") "Engineering: Robotic" (ability :name "Engineering: Robotic") "Engineering: Rocket and Reaction Engines" (ability :name "Engineering: Rocket and Reaction Engines") "Engineering: Siege" (ability :name "Engineering: Siege") "Engineering: Star Drive" (ability :name "Engineering: Star Drive") "Engineering: Temporal" (ability :name "Engineering: Temporal") "Engineering: Vehicular" (ability :name "Engineering: Vehicular") "Engineering: Weaponry" (ability :name "Engineering: Weaponry" :titles "Gunsmithing") :Fortification (ability :name "Fortification") "Kit Bash" (ability :name "Kit Bash") "Lock Construction" (ability :name "Lock Construction") "Lock Picking" (ability :name "Lock Picking") "Mechanical Maintenance" (ability :name "Mechanical Maintenance") "Mechanical Repair" (ability :name "Mechanical Repair") "Mechanism Construction" (ability :name "Mechanism Construction" :summary "* See [Equipment: Mechanisms]") "Mechanism Deactivation" (ability :name "Mechanism Deactivation") "Mechanism Detection" (ability :name "Mechanism Detection") :Mining (ability :name "Mining") :Salvage (ability :name "Salvage") "Trap Detection" (ability :name "Trap Detection") "Trap Disarming" (ability :name "Trap Disarming") "Trap Laying" (ability :name "Trap Laying" :summary "* See [Equipment: Traps]") :Welding (ability :name "Welding"))) :Medicine (skill :name "Medicine" :titles "Caregiver, Caretaker, Dentist, Doctor, EMT, Medic, Medical Examiner, Nurse, Physician, Surgeon" :stat "Mind" :abilitymap (abilitymap :Anatomy (ability :name "Anatomy") :Dentistry (ability :name "Dentistry") :Diagnose (ability :name "Diagnose") "Emergency Treatment" (ability :name "Emergency Treatment") "First Aid" (ability :name "First Aid") :Immunology (ability :name "Immunology") :Leeching (ability :name "Leeching") "Medical Practice" (ability :name "Medical Practice") :Nursing (ability :name "Nursing") :Pharmacy (ability :name "Pharmacy" :titles "Pharmacist, Pharmacy Technician") :Physiology (ability :name "Physiology") :Surgery (ability :name "Surgery") "Surgery: Brain" (ability :name "Surgery: Brain") "Surgery: Cosmetic" (ability :name "Surgery: Cosmetic") "Surgery: Cybernetic" (ability :name "Surgery: Cybernetic") "Surgery: Nerve" (ability :name "Surgery: Nerve") "Treat Disease" (ability :name "Treat Disease") "Treat Injury" (ability :name "Treat Injury") "Treat Poison" (ability :name "Treat Poison") "Treat Radiation" (ability :name "Treat Radiation") "Veterinary Medicine" (ability :name "Veterinary Medicine"))) "Life Sciences" (skill :name "Life Sciences" :reference "* See [Equipment: Drugs] * See [Flora and Fauna: Plants]" :titles "Life Scientist" :stat "Mind" :abilitymap (abilitymap :Biochemistry (ability :name "Biochemistry" :titles "Biochemist") :Biology (ability :name "Biology" :titles "Biologist") "Biology, Molecular" (ability :name "Biology, Molecular" :titles "Molecular Biologist") "Biology, Xeno" (ability :name "Biology, Xeno") :Botony (ability :name "Botony" :summary "* Analyze/Identify Plant * Locate Plant * Harvest Plant * Cultivate Plant Strain" :titles "Botonist, Herbalist, Horticulturalist") :Cloning (ability :name "Cloning") :Cryogenics (ability :name "Cryogenics" :summary "Hidden in ice for a century, to walk the Earth again. Lord have mercy on the frozen man. - James Taylor, The Frozen Man") :Cultivate (ability :name "Cultivate" :summary "* Grow any plant, fungus, or bacteria that you have studied.") "Enhance Drug" (ability :name "Enhance Drug" :summary "* Increase the effect that an existing drug or treatment will have.") "Gene Bank" (ability :name "Gene Bank") "Gene Splicing" (ability :name "Gene Splicing" :summary "* Grow new creatures that have characteristics taken from others.") "Gene Therapy" (ability :name "Gene Therapy") "Gene Sequencing" (ability :name "Gene Sequencing" :summary "* By gathering a sample of a biological organism and studying it, the researcher can discover every detail of its abilities and biological mechanics.") "Genetic Screening" (ability :name "Genetic Screening") :Genetics (ability :name "Genetics" :titles "Geneticist") "Genetic Engineering" (ability :name "Genetic Engineering") :Ecology (ability :name "Ecology" :summary "Ecology is the interdisciplinary scientific study of the interactions between organisms and their environment.") :Homeopathy (ability :name "Homeopathy") "Lab Work" (ability :name "Lab Work" :titles "Wet Science") :Pathology (ability :name "Pathology" :summary "* Analyze/Identify Disease") :Pharmacology (ability :name "Pharmacology" :summary "* Create/Develop Drug" :titles "Pharmacist, Pharmacologist") "Prepare Anti-Bacterial" (ability :name "Prepare Anti-Bacterial") "Prepare Anti-Fungal" (ability :name "Prepare Anti-Fungal") "Prepare Anti-Parasitic" (ability :name "Prepare Anti-Parasitic") "Prepare Anti-Toxin" (ability :name "Prepare Anti-Toxin") "Prepare Anti-Viral" (ability :name "Prepare Anti-Viral") "Prepare Balm" (ability :name "Prepare Balm") "Prepare Herbal Remedy" (ability :name "Prepare Herbal Remedy") "Prepare Panacea" (ability :name "Prepare Panacea" :summary "* Cure bacteria, virus, fungal, or parasitic infestation.") "Prepare Pigments" (ability :name "Prepare Pigments") "Prepare Poultice" (ability :name "Prepare Poultice") "Prepare Spices" (ability :name "Prepare Spices") "Prepare Vaccine" (ability :name "Prepare Vaccine") :Zoology (ability :name "Zoology" :summary "* Analyze/Identify Animal * Locate Animal" :titles "Zoologist"))) "Physical Sciences" (skill :name "Physical Sciences" :reference "* Personally, I liked the university. They gave us money and facilities, we didn't have to produce anything! You've never been out of college! You don't know what it's like out there! I've worked in the private sector. They expect results. - Ghostbusters" :summary "* Scientists believe that by studying a thing, one can learn its patterns and gain mastery over it." :titles "Sage, Scholar, Scientist" :stat "Mind" :abilitymap (abilitymap "Analyze Substance" (ability :name "Analyze Substance" :summary "* [Requires]: Must have abilities corresponding to the substance being analyzed (e.g. Geology for rocks, Metallurgy for metals, etc.). * [Extended Action]: Run a series of tests on a substance to determine its make up.") :Astronomy (ability :name "Astronomy") :Astrophysics (ability :name "Astrophysics") :Cartography (ability :name "Cartography" :summary "* [Action]: Accurately map the surrounding area. * [Action]: Locate anomalies in maps, including errors, forgeries, and potentially hidden areas." :titles "Cartographer, Map Maker") :Chemistry (ability :name "Chemistry") :Geology (ability :name "Geology" :titles "Mineralolgy, Vulcanism") :Experimentation (ability :name "Experimentation") :Mathematics (ability :name "Mathematics" :titles "Algebra, Geometric, Probability, Trigonometry") "Mathematics: Advanced" (ability :name "Mathematics: Advanced" :reference "* Differential Calculus - The definition, properties, and applications of the derivative of a function. The process of finding the derivative is called differentiation. * Integral Calculus - The definitions, properties, and applications of two related concepts, the indefinite integral and the definite integral. The process of finding the value of an integral is called integration. * Calculus is used in every branch of the physical sciences, actuarial science, computer science, statistics, engineering, economics, business, medicine, demography, and in other fields wherever a problem can be mathematically modeled and an optimal solution is desired. * Physics makes particular use of calculus; all concepts in classical mechanics are interrelated through calculus. The mass of an object of known density, the moment of inertia of objects, as well as the total energy of an object within a conservative field can be found by the use of calculus. * Electricity and Magnetism - Calculus can be used to find the total flux of electromagnetic fields. A more historical example of the use of calculus in physics is Newton's second law of motion, it expressly uses the term 'rate of change' which refers to the derivative. * Medicine - Calculus can be used to find the optimal branching angle of a blood vessel so as to maximize flow. * Economics - Calculus allows for the determination of maximal profit by providing a way to easily calculate both marginal cost and marginal revenue." :titles "Differential Calculus, Integral Calculus, Limits and Infintesimals, Linear Algebra") :Metallurgy (ability :name "Metallurgy") :Meteorology (ability :name "Meteorology") :Planetology (ability :name "Planetology") "Publish or Perish" (ability :name "Publish or Perish" :summary "* Ability to create academic papers that increase Fame.") :Optics (ability :name "Optics") "Physics: Dimensional" (ability :name "Physics: Dimensional") "Physics: Electromagnetic" (ability :name "Physics: Electromagnetic") "Physics: Fluid Dynamics" (ability :name "Physics: Fluid Dynamics") "Physics: Forces" (ability :name "Physics: Forces") "Physics: Newtonian" (ability :name "Physics: Newtonian") "Physics: Nuclear" (ability :name "Physics: Nuclear" :reference "* You said crossing the streams was bad! Cross the streams... You're gonna endanger us, you're gonna endanger our client - the nice lady, who paid us in advance, before she became a dog...Not necessarily. There's definitely a *very slim* chance we'll survive. I love this plan! I'm excited to be a part of it! LET'S DO IT! - Ghostbusters") "Physics: Quantum" (ability :name "Physics: Quantum") "Physics: Temporal" (ability :name "Physics: Temporal" :reference "* The future is not set. There's no fate but what we make for ourselves. - Reece, The Terminator") "Physics: Thermodynamics" (ability :name "Physics: Thermodynamics") "Quick Study" (ability :name "Quick Study" :reference "I know Kung Fu. - Neo, The Matrix" :summary "* Cram to learn a low level skill very quickly. The skill doesn't last long, but often it doesn't have to.") :Study (ability :name "Study"))))) "Social Skills" (section :name "Social Skills" :skillmap (skillmap :Art (skill :name "Art" :reference "* Art requires a certain... cruelty. - Jhin, Runeterra" :titles "Artist, Artisan" :stat "Spirit" :abilitymap (abilitymap "Art Imitates Life" (ability :name "Art Imitates Life" :reference "Dorian Gray" :summary "Artwork become real") :Calligraphy (ability :name "Calligraphy") :Crafts (ability :name "Crafts") :Drawing (ability :name "Drawing") :Painting (ability :name "Painting") :Photoshopping (ability :name "Photoshopping" :summary "* Modify an image to improve or mislead.") :Sculpture (ability :name "Sculpture"))) :Business (skill :name "Business" :reference "* Did they get you to trade? Your heroes for ghosts? Hot ashes for trees? Hot air for a cool breeze? Cold comfort for change? Did you exchange? A walk-on part in the war. For a leading role in a cage? - Pink Floyd, Wish you were here" :titles "Commerce" :abilitymap (abilitymap :Accounting (ability :name "Accounting" :titles "Accountant, Actuary, Clerk") :Advertising (ability :name "Advertising" :titles "Marketing Representative") :Appraise (ability :name "Appraise" :summary "* Determine the value of an item in the current market.") :Bargain (ability :name "Bargain" :summary "* Ability that Limits any attempt to buy or sell goods at their actual worth." :titles "Haggler, Merchant") :Barter (ability :name "Barter" :summary "* Ability that Limits any attempt to buy or sell goods at their actual worth.") "Business Management" (ability :name "Business Management") :Distribution (ability :name "Distribution") :Economics (ability :name "Economics" :reference "* In 5 minutes, you learn what the average University student remembers 5 years after learning school ... Economics: Supply and Demand. That's it. - Father Guido Sarducci, Five Minute University") :Finance (ability :name "Finance") :Marketing (ability :name "Marketing") :Procure (ability :name "Procure" :summary "The ability to find rare, exotic or illegal items for sale or trade." :titles "Procurer") :Sales (ability :name "Sales" :reference "* In 5 minutes, you learn what the average University student remembers 5 years after learning school ... Business is: You buy something, you sell it for more - Father Guido Sarducci, Five Minute University" :titles "Carpetbagger, Peddler, Salesman") :Speculate (ability :name "Speculate") "Trade Routes" (ability :name "Trade Routes") "Trade Union" (ability :name "Trade Union"))) :Communications (skill :name "Communications" :abilitymap (abilitymap :Appearance (ability :name "Appearance" :summary "* Expert on personal grooming, cosmetics, and hairstyling.") :Carousing (ability :name "Carousing") "Detect Lie" (ability :name "Detect Lie") :Drinking (ability :name "Drinking") :Drugs (ability :name "Drugs") :Etiquette (ability :name "Etiquette") :Fashion (ability :name "Fashion" :summary "* Knows current fashions and what clothing with make the best impact.") :Fiction (ability :name "Fiction" :summary "* Can author, critique, interpret, and detect fiction.") "Go Viral" (ability :name "Go Viral" :summary "* Create an interesting message popular enough to be passed around.") :Gossip (ability :name "Gossip" :summary "* The single best way to get information, but, given it source, may not be reliable.") :Interview (ability :name "Interview" :titles "Interviewer, Reporter") :Journalism (ability :name "Journalism" :titles "Journalist, Media, Reporter") :Literacy (ability :name "Literacy" :summary "* Can read and write * This ability is assumed in modern characters from 1st and 2nd world nations") "Motivational Speaking" (ability :name "Motivational Speaking" :reference "* My name is Matt Foley and I am a motivational speaker... First off, I am thirty-five years old, I am divorced, and I live in a van down by the river... Well I'm here to tell you, that you're probably going to find out, as you go out there, that you're not going to amount to jack squat! You're going to end up eating a steady diet of government cheese and living in a van down by the river! - Matt Foley, SNL" :titles "Motivational Speaker") :Negotiation (ability :name "Negotiation" :titles "Advisor, Arbiter, Diplomat, Emissary, Envoy, Legate, Negotiator") :Photography (ability :name "Photography" :titles "Photographer") :Poetry (ability :name "Poetry" :summary "Can author any type of poetry" :titles "Poet") :Politics (ability :name "Politics") :Recruiting (ability :name "Recruiting" :titles "Casting Director, Hiring Manager, Recruiter") :Scribe (ability :name "Scribe" :summary "* Can copy writings exactly") :Sincerity (ability :name "Sincerity" :summary "* Helps convince others when you are being truthful. * Helps improve long term relationships by increasing trust. * Limitation - May only be used when you truly believe that your are correct.") "Small Talk" (ability :name "Small Talk" :titles "The Gift of Gab") :Streetwise (ability :name "Streetwise" :summary "* [Action]: Gain knowledge where a good or service can be found in a city including black market goods or services.") :Translator (ability :name "Translator" :summary "* Can translate immediately") "Trash Talk" (ability :name "Trash Talk" :reference "* What's the matter Agent Scary Lips? You're Scary Lips tasting my hairy shit? You tasting Doug Wilson's World Famous beef stew? How's it going down, its kinda spicy right? You guys are so fucked right now, all I can think about is your wife and a horse. - Doug Wilson, Weeds" :titles "Put Down") :Videography (ability :name "Videography" :titles "Cameraman, Videographer") "Video Production" (ability :name "Video Production" :titles "Director, Producer") "Wise Words" (ability :name "Wise Words" :summary "* Apply personal life experiences to help others understand themselves.") :Cantonese (ability :name "Cantonese") :English (ability :name "English") :French (ability :name "French") :German (ability :name "German") :Greek (ability :name "Greek") :Italian (ability :name "Italian") :Latin (ability :name "Latin") :Mandarin (ability :name "Mandarin") "Olde English" (ability :name "Olde English") :Portuguese (ability :name "Portuguese") :Russian (ability :name "Russian") "Sign Language" (ability :name "Sign Language") :Spanish (ability :name "Spanish")) :specialtymap (specialtymap :Linguistics (specialty :name "Linguistics" :reference "* So we put her on the hit list, of a common, cunning linguist: a master of many tongues. - Deep Purple, Knocking at Your Backdoor" :summary "* Philosophy - The 'common tongue' concept is boring and unrealistic. * Simulate the limitations of language by reducing usable vocabulary. This can be done by limiting a conversation to 2, 3, 4, or 5 letter words depending on the fluency of those involved. Having a conversation using only 2 letter words is going to require a fair amount of hand gesturing or drawing to get a point across. If a person is overhearing a conversation, bleep out the big words and let them guess at the missing words.") :Writing (specialty :name "Writing"))) :Crime (skill :name "Crime" :titles "Bandit, Brigand, Crime Boss, Crook, Cutthroat, Highwayman, Pimp, Yakuza, Yakuza - Oyabun" :stat "Shadow" :abilitymap (abilitymap "Armed Robbery" (ability :name "Armed Robbery") :Blackmail (ability :name "Blackmail") :Bribery (ability :name "Bribery") "Crime Syndicate" (ability :name "Crime Syndicate") "Crime Wave" (ability :name "Crime Wave") "Criminal Mastermind" (ability :name "Criminal Mastermind") :Extortion (ability :name "Extortion") "Fence Goods" (ability :name "Fence Goods") :Kidnapping (ability :name "Kidnapping") "Mafia Connections" (ability :name "Mafia Connections") :Pimping (ability :name "Pimping") :Piracy (ability :name "Piracy" :summary "* Armed robbery of large shipments of goods without damaging the merchandise.") :Prostitution (ability :name "Prostitution") :Rustling (ability :name "Rustling" :summary "* Stealing and selling livestock") :Waylay (ability :name "Waylay"))) :Deception (skill :name "Deception" :reference "* I whisper Truth, into Lies... - Leblanc, Runeterra" :titles "Chicanery, Legerdemain" :stat "Shadow" :abilitymap (abilitymap :Burglary (ability :name "Burglary") "Con Artist" (ability :name "Con Artist") "Confidence Game" (ability :name "Confidence Game" :titles "Con Artist, Swindler") :Decoy (ability :name "Decoy" :summary "* Create a decoy to mislead. * [Move]: Remove this unit from play and place 1 Decoy Token and 1 Decoy Unit Token on this unit's space. Both decoys may act normally during the Action phase, but any action but movement will dispel the decoys. Both decoys defend as the original unit. If either unit is Hit, both decoys are dispelled. The decoys last until the next turn or until dispelled.") "Detect Trap" (ability :name "Detect Trap") :Distraction (ability :name "Distraction" :titles "Throw Dirt") :Escape (ability :name "Escape" :reference "* The chain in those handcuffs is high-tensile steel. It'd take you ten minutes to hack through it with this. Now, if you're lucky, you could hack through your ankle in five minutes. Go." :summary "* The ability comes from extensive practice escaping from various bonds and confinements. At higher abilities, the user can dislocate joints to slither out of bonds." :titles "Escape Artist") "Evade Pursuit" (ability :name "Evade Pursuit" :summary "* Ability to correctly evaluate the opponent's pursuit style and outwit the pursuer.") :Forgery (ability :name "Forgery" :summary "* The ability to forge money or documents. This ability is also used while creating money to prevent forgery. * [Extended Action]: Roll vs. object quality or anti-forgery level. Any [Hits] allow a forgery that can pass at a distance. The more [Hits] and [Criticals] rolled, the more indistinquishable from the original. High level forgeries are works of art unto themselves.") :Gambling (ability :name "Gambling" :titles "Gambler, High Roller") "Honor Among Thieves" (ability :name "Honor Among Thieves") :Misdirection (ability :name "Misdirection") "Pick Pockets" (ability :name "Pick Pockets") "Sleight of Hand" (ability :name "Sleight of Hand" :summary "* Hide a small object in hand without being noticed." :titles "Legerdemain") :Smuggling (ability :name "Smuggling") "Stage Magic" (ability :name "Stage Magic") "Thieves Guild Codes" (ability :name "Thieves Guild Codes" :summary "Thieves must conceal their illegal conversations and the guilds have developed a shifting series of hand signals, marks, and code words to communicate simple concepts without arising suspiscion.") "Use Blinding Powder" (ability :name "Use Blinding Powder") "Use Flash Powder" (ability :name "Use Flash Powder") "Use Irritating Powder" (ability :name "Use Irritating Powder") "Use Sleeping Powder" (ability :name "Use Sleeping Powder") :Vanish (ability :name "Vanish") :Ventriloquism (ability :name "Ventriloquism")) :specialtymap (specialtymap :Thievery (specialty :name "Thievery" :reference "This is where Forrestall cashed in. A friend of yours? A competitor... he was good. He was very good. - Indiana Jones, Raiders of the Lost Ark" :summary "* Burglary, Escape, Fence Goods, Honor Among Thieves, Pick Pockets, Smuggling, Thieves Guild Codes" :titles "Burglar, Cutpurse, Footpad, Nezumi kozo, Pick Pocket, Smuggler, Thief") :Trickery (specialty :name "Trickery" :summary "* Blinding Powder, Confidence Game, Decoy, Distraction, Flash Powder, Gambling, Irritating Powder, Misdirection, Sleight of Hand, Stage Magic, Swindling, Vanish, Ventriloquism" :titles "Blackguard, Caitiff, Charlatan, Con Artist, Delinquent, Gambler, Knave, Ne'er do well, Ninja, Rapscallion, Renegade, Riffraff, Rogue, Scoundrel, Scalawag, Stage Magician, Swashbuckler, Swindler, Trickster"))) :Espionage (skill :name "Espionage" :titles "Covert Ops, Infiltrator, Informer, Spy, Traitor" :stat "Shadow" :abilitymap (abilitymap :Counterintelligence (ability :name "Counterintelligence") "Cyber Intelligence" (ability :name "Cyber Intelligence" :summary "* Intelligence gathered from computer networks." :titles "CYBINT, DNINT, Digital Network Intelligence") :Eavesdrop (ability :name "Eavesdrop" :summary "* Listen in to conversations without being detected.") :Infiltrate (ability :name "Infiltrate" :summary "* [Defense] - Mind * [Deploy] - Deploy this unit in waiting area. * [Action] - Replace any non-unique unit with this unit.") "Geospatial Intelligence" (ability :name "Geospatial Intelligence" :summary "* Intelligence gathered from satellite, aerial photography, mapping. * Espionage, Diplomats, Military Attaches, NGOs, Patrolling, POWs Detainees, Refugees, Strategic Reconnaissance, Traveller Debriefing" :titles "GEOINT, IMINT, Imagery Intelligence") "Human Intelligence" (ability :name "Human Intelligence" :summary "* Intelligence gathered from a person on the ground. * Espionage, Diplomats, Military Attaches, NGOs, Patrolling, POWs Detainees, Refugees, Strategic Reconnaissance, Traveller Debriefing" :titles "HUMINT") "Intelligence Network" (ability :name "Intelligence Network" :reference "If you thought there was some secret cell somewhere working Al Qaedia. Then I want you to know you're wrong. This it it. There is no working group coming to the rescue. There is nobody else hidden on some other floor. There is just us... and we are failing!... They murdered 3000 of our citizens..in cold-blood and they have slaughtered our forward deploy. And what the fuck have we done about it, huh? What have we done?! We have 20 leadership names. We have only eliminated 4 of them. I want targets. Do your fucking jobs. Bring me people to kill. - Zero Dark Thirty") "Lip Reading" (ability :name "Lip Reading" :summary "* Attempt to understand what is being said without the benefit of hearing. The more [Hits] rolled, the more accurate the interpretation.") "Measurement and Signals" (ability :name "Measurement and Signals" :summary "* Intelligence gathered from the signatures (distinctive characteristics) of fixed or dynamic target sources. This includes radar, acoustic, nuclear, chemical, and biological intelligence." :titles "MASINT") :Misdirection (ability :name "Misdirection" :reference "* Smoke and Mirrors... Classic Misdirection - Leblanc, Runeterra") "Open Source Intelligence" (ability :name "Open Source Intelligence" :summary "* Intelligence gathered from open sources." :titles "OSINT") :Propaganda (ability :name "Propaganda") "Quick Change" (ability :name "Quick Change") :Sabotage (ability :name "Sabotage" :titles "Saboteur") "Signals Intelligence" (ability :name "Signals Intelligence" :reference "* Quiller" :summary "* Intelligence gathered from interception of signals." :titles "SIGINT, Signals") :Subversion (ability :name "Subversion") "Technical Intelligence" (ability :name "Technical Intelligence" :summary "* Intelligence gathered from analysis of weapons and equipment." :titles "TECHINT") "Whispering Campaign" (ability :name "Whispering Campaign"))) :Faith (skill :name "Faith" :reference "The argument goes something like this: 'I refuse to prove that I exist,' says God, 'for proof denies faith, and without faith I am nothing.' 'But,' says Man, 'The Babel fish is a dead giveaway, isn't it? It could not have evolved by chance. It proves you exist, and so therefore, by your own arguments, you don't. QED.' - Hitchhiker's Guide to the Galaxy" :titles "Abbot, Absolver, Archbishop, Bishop, Cardinal, Cleric, Ceremonial Guard, Gakusho, Missionary, Paladin, Priest, Redeemer, Sin Eater, Theologist, Theurge, Theurgy" :abilitymap (abilitymap :Absolution (ability :name "Absolution") :Affirmation (ability :name "Affirmation" :summary "An affirmation is a statement designed to have a positive effect on the conscious mind when repeated at frequent intervals throughout meditation ritual spells.") :Atonement (ability :name "Atonement") :Blessing (ability :name "Blessing" :summary "* A simple incantation with a variety of subtle effects. * [Action]: Touch. Target gains a new Blessing Token (max 1). At any time, the target may remove the token and gain +1 on any Defense roll. * [Duration]: up to 1 day/level.") :Chant (ability :name "Chant" :summary "* Aura: All Allies with same Religion within level spaces receive +1 on Defense rolls.") :Confession (ability :name "Confession") :Consecration (ability :name "Consecration" :summary "* To consecrate is to solemnly dedicate or devote something or someone to a sacred purpose, to cleanse and protect.") :Contemplation (ability :name "Contemplation" :summary "* Contemplation is a focused and disiplined form of contemplation or reflecting, whereby one is able to alter an emotional state and to receive self-insight.") :Conversion (ability :name "Conversion") :Dedication (ability :name "Dedication" :summary "* [Death]: Unit enters specified Deity's realm. It is not substantiated that this ability actually works. Those who have crossed over are changed and may not and will not return.") :Drumming (ability :name "Drumming" :summary "* Drumming is literally pounding on a surface. This is used to raise power and to change emotional states.") :Excommunication (ability :name "Excommunication") :Initiation (ability :name "Initiation" :summary "* Used to describe the profound spiritual experience that occurs when one's unity with Deity and the Universe is realised; when one is welcomed as a fully-fledged member of a particular group; and the celebration of a successful ritual.") :Marriage (ability :name "Marriage") :Mass (ability :name "Mass") :Namegiving (ability :name "Namegiving") :Ordainment (ability :name "Ordainment") :Redemption (ability :name "Redemption") :Sacrament (ability :name "Sacrament") :Salvation (ability :name "Salvation") :Sanctify (ability :name "Sanctify") "Sin Eating" (ability :name "Sin Eating" :summary "* A willing subject may describe his dark desires, the Sin Eater then repeats the description replacing references to the subject with himself. After the ritual is complete, the subject will not feel the urges so strongly. Instead the Sin Eater will feel those emotions. If he acts on them, even symbolically, his [Shadow] gains power. If he can resolve them, he gains experience."))) :Influence (skill :name "Influence" :reference "* Many men, of course, became extremely rich, and this was perfectly natural and nothing to be ashamed of because no one was really poor, at least no one worth speaking of. - Hitchhiker's Guide to the Galaxy" :titles "Aristocrat, Baron, Baroness, Baronet, Celebrity, Count, Countess, Daimyo, Dame, Duchess, Duke, Emperor, Empress, King, Knight, Lord, Marchioness, Marquis, Matriarch, Monarch, Patriarch, Pontif, Prince, Princess, Queen, Regina, Sire, Sovereign, Star" :abilitymap (abilitymap "Black Market Ties" (ability :name "Black Market Ties") :Boon (ability :name "Boon") :Business (ability :name "Business") "Carte Blanche" (ability :name "Carte Blanche" :titles "Blank Check") "Corporate Ties" (ability :name "Corporate Ties") "Entertainment Ties" (ability :name "Entertainment Ties") :Fame (ability :name "Fame" :summary "* Your reputation precedes you. People are drawn to the famous and will often do extraordinary things to be near them. * [Synergy]: [Seduction] * [Action]: Leverage your fame to gain minor free goods or services including upgraded lodging, free meals, audience with nobles, etc.") "Family Ties" (ability :name "Family Ties") :Fortune (ability :name "Fortune") :Followers (ability :name "Followers" :titles "Acolyte, Apprentice, Retinue, Servant, Serf, Shieldbearer") "Friends in High Places" (ability :name "Friends in High Places" :reference "* I'm telling you this guy is protected from up on high by the Prince of Darkness. - Jeff Rabin, Usual Suspects") :Infamy (ability :name "Infamy" :summary "* Your dark reputation precedes you. People are intrigued by the infamous and will often do extraordinary things in fear and facination of them. * [Synergy]: [Intimidation] * [Action]: Leverage your infamy to gain minor free goods or services including upgraded lodging, free meals, etc.") :Intrigue (ability :name "Intrigue") :Investing (ability :name "Investing") "Judicial Ties" (ability :name "Judicial Ties") "Law Enforcement Ties" (ability :name "Law Enforcement Ties") "License to Kill" (ability :name "License to Kill") :Mansion (ability :name "Mansion") "Media Ties" (ability :name "Media Ties") "Night Club" (ability :name "Night Club") "Noble Birth" (ability :name "Noble Birth") "Official Title" (ability :name "Official Title") "Political Ties" (ability :name "Political Ties" :titles "Ambassador, Minister, Politician, Senator") "Religious Ties" (ability :name "Religious Ties") "Train Follower" (ability :name "Train Follower") "Underworld Ties" (ability :name "Underworld Ties") :Windfall (ability :name "Windfall")) :specialtymap (specialtymap :Nobility (specialty :name "Nobility" :titles "Noble Lineage") :Royalty (specialty :name "Royalty" :titles "Royal Lineage"))) :Intimidation (skill :name "Intimidation" :reference "* I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain. - Bene Gesserit Litany, Dune * They tell him they want his territory: all his business. Soze looks over the faces of his family, then he showed these men of will what will really was. He tells him he would rather see his family dead, than live another day after this. ... He waits until his wife and kids are in the ground, and then he goes after the rest of the mob. He kills their kids. He kills their wives. He kills their parents and their parents friends. He burns down the houses they live in and the stores they work in. He kills people who owe them money. And like that, he's gone. - Verbal Kint, Usual Suspects" :titles "Demagogue, Enforcer, Fearmonger, Overseer, Pimp, Slave Lord, Slaver, Tormentor, Torturer" :stat "Shadow" :abilitymap (abilitymap :Coercion (ability :name "Coercion" :reference "* The boat will be ready for you on Friday. If I see you or any of your friends before then, Miss. Finneran will find herself the victim of a most gruesome violation before she dies. As will your father, Mr. Hockney, and your Uncle Randall in Arizona, Mr. Kint. I might only castrate Mr. McManus's nephew, David. Do I make myself clear? - Kobayashi, Usual Suspects") "Death March" (ability :name "Death March" :summary "* Increase movement of allies within level spaces. Sustained use of this ability runs the risk of injuring or killing some allies.") :Duress (ability :name "Duress") :Enslave (ability :name "Enslave" :reference "Did you know that pain causes the formation of the strongest chemical bonds in the mammalian brain? Whip a dog, and it keeps coming back... At first it will hope that you'll stop, but after a while, it won't even know the difference. But you already know all about that don't you?... Time melted away into the pain... Finally something clicked over in his head and reality rushed back in around him, clearer and sharper than ever before... Staring he made out faces. Faces not unlike his own reflection he had seen only an eternity ago. Faces distended in howling agony... eyes welling with tears of blood, eyes that all turned toward Her, crying in admiration. - Mage: The Book of Madness") "Grip of Fear" (ability :name "Grip of Fear" :reference "* It was Keyser Soze, Agent Kujan. I mean the Devil himself. How do you shoot the devil in the back? What if you miss? - Verbal, Usual Suspects") :Interrogate (ability :name "Interrogate" :reference "* I'm gonna ask you one more goddamn time, and if you still 'respectfully refuse,' I'm callin' the Bear Jew over here, and he's gonna take that big-ole bat of his, and he's gonna beat you to death with it. Now take your wiener schnitzel lickin' finger and point out on this map what I want to know...We got a German here who wants to die for his country! Oblige him! - Lt. Aldo Raine, Inglourious Basterds * You don't need that. I'll tell you everything. Yes...I know you will. - Raiders of the Lost Ark") :Intimidate (ability :name "Intimidate" :reference "* Your timing is impeccable. Pity you were all they sent... The Fatui would do well to update their intelligence concerning me. Ah, but of course, that would require one of you to return in one piece. - Ayato, Genshin Impact * ...to the death. No. To the pain. I don't think I'm quite familiar with that phrase. ... To the pain means the first thing you will lose will be your feet below the ankles. Then your hands at the wrists. Next your nose. ...And then my ears, I understand let's get on with it. WRONG. Your ears you keep and I'll tell you why. So that every shriek of every child at seeing your hideousness will be yours to cherish. Every babe that weeps at your approach, every woman who cries out, 'Dear God! What is that THING?,' will echo in your perfect ears. That is what to the pain means. It means I leave you in anguish, wallowing in freakish misery ... forever. ...I think you're bluffing. It's possible, Pig, I might be bluffing. It's conceivable, you miserable, vomitous mass, that I'm only lying here because I lack the strength to stand. But, then again... perhaps I have the strength after all. - Princess Bride" :summary "* A form of bluffing") "Reign of Terror" (ability :name "Reign of Terror" :summary "* Use to rally troops") :Terrorize (ability :name "Terrorize" :summary "* [Attack]: Any [Critical Hits] may be [Retreats]") :Torment (ability :name "Torment") :Torture (ability :name "Torture" :reference "* Your cries of agony, where will they not reach? Where on Citaeron will they not re-echo? No man living will meet a doom more terrible than yours. - Sophocles, Oedipus Rex"))) :Law (skill :name "Law" :titles "Bailiff, Constable, Executioner, Judge, Lawbringer, Lawyer, Litigant, Magistrate, Peace Officer, Peacekeeper, Police Officer" :stat "Mind" :abilitymap (abilitymap :Authority (ability :name "Authority") "Blind Justice" (ability :name "Blind Justice") "Call In Backup" (ability :name "Call In Backup" :summary "Bring me everyone. What do you mean 'everyone'? E-V-E-R-Y-O-N-E! - Stansfield and Benny - Leon the Professional") :Condemn (ability :name "Condemn") :Confiscate (ability :name "Confiscate") "Crime and Punishment" (ability :name "Crime and Punishment") "Crowd Control" (ability :name "Crowd Control") "Detective Work" (ability :name "Detective Work" :reference "* To a cop the explanation is never that complicated. It's always simple. There's no mystery to the street, no arch criminal behind it all. If you got a dead body and you think his brother did it, you're gonna find out you're right. - Verbal, Usual Suspects") :Dragnet (ability :name "Dragnet" :reference "* Our fugitive has been on the run for ninety minutes. Average foot speed over uneven ground barring injuries is 4 miles-per-hour. That gives us a radius of six miles. What I want from each and every one of you is a hard-target search of every gas station, residence, warehouse, farmhouse, henhouse, outhouse and doghouse in that area. - The Fugitive" :summary "* Search a large area for a fugitive.") :Exile (ability :name "Exile") :Exonerate (ability :name "Exonerate") :Judgment (ability :name "Judgment" :reference "* I am the law! - Judge Dredd") :Precedent (ability :name "Precedent") :Prosecute (ability :name "Prosecute") "Scales of Justice" (ability :name "Scales of Justice") :Shakedown (ability :name "Shakedown" :reference "* How many times you been in a lineup? It's always you and four dummies. PD are paying homeless guys $10 a head half the time. And there's no way they'd line five felons in the same row. No way - Keaton, Usual Suspects") :Trial (ability :name "Trial"))) :Performance (skill :name "Performance" :reference "* Ahh, the denouement. - Jhin, Runeterra" :titles "Entertainer, Performer, Jester, Juggler" :stat "Spirit" :abilitymap (abilitymap :Allure (ability :name "Allure") :Amplify (ability :name "Amplify" :reference "These go to eleven. - This is Spinal Tap" :summary "* A performer must be able to be heard. This ability maximizes the acoustics available and allows the performer's message to be heard.") :Ballad (ability :name "Ballad") "Ballroom Dance" (ability :name "Ballroom Dance") "Break Dance" (ability :name "Break Dance") :Calm (ability :name "Calm" :titles "Pacify, Soothe the Savage") "Captivating Song" (ability :name "Captivating Song" :summary "* For each success, the targets Move is reduced by 1.") :Comedy (ability :name "Comedy" :titles "Clown, Comedian, Mime, Jester") :Crescendo (ability :name "Crescendo") :Dirge (ability :name "Dirge" :summary "* Opponents in Radius are cloaked in despair. * [Passive] * [Continuous]: [Retreats] are increased by 1 for all opponents within the radius." :titles "Demoralize, Song of Fear") :Discord (ability :name "Discord" :summary "* A sudden sound that disrupts the natural flow of existing sounds. * The secret to this skill is to pick the most inappropriate sound at the most inappropriate time. * The result is extremely distracting and will cancel other effects based on sound including other Communication abilities." :titles "Cacaphony") :Disguise (ability :name "Disguise") :Fanfare (ability :name "Fanfare" :summary "* A cheering audience increases an entertrainer's power.") "Gabriel's Horn" (ability :name "Gabriel's Horn" :summary "* [Requires]: Horn * Damages Walls of any kind") :Harmonize (ability :name "Harmonize") :Heartstrings (ability :name "Heartstrings" :reference "* Strumming my pain with his fingers. Singing my life with his words. Killing me softly with his song. Killing me softly with his song telling my whole life with his song. - The Fugees, Killing Me Softly") "Hip Hop Dance" (ability :name "Hip Hop Dance") :Imitation (ability :name "Imitation") :Impersonation (ability :name "Impersonation") :Incite (ability :name "Incite") :Inspiration (ability :name "Inspiration" :summary "* Allies in Radius are Continuously inspired to greater feats by this ability. * [Passive] * [Continuous]: [Retreats] are reduced by 1 for all allies within the radius.") :Juggling (ability :name "Juggling" :summary "* Besides juggling objects, this ability allows the user to catch objects. * [Reaction]: When an object is thrown at a space within one space of the user, roll vs. the [Attack], the object is caught if any [Hits] are scored. Further, the user may immediately throw the object using [Juggling] level as attack value.") :Lullaby (ability :name "Lullaby") "Performance Art" (ability :name "Performance Art" :reference "Cirque de Soleil") "Pole Dance" (ability :name "Pole Dance") :Requiem (ability :name "Requiem") "Salsa Dance" (ability :name "Salsa Dance") :Satirize (ability :name "Satirize") :Serenade (ability :name "Serenade") :Sexpertise (ability :name "Sexpertise" :reference "* If you don't like the company, let's just do it you and me...you and me...or three...or four, on the floor. - Britney Spears, Three") :Silence (ability :name "Silence") "Siren Song" (ability :name "Siren Song" :summary "* [Action]: For each success, during its turn, the target must use half of its [Move] to approach the singer.") :Speeches (ability :name "Speeches") :Song (ability :name "Song") :Storytelling (ability :name "Storytelling" :titles "Storyteller") :Style (ability :name "Style") :Tango (ability :name "Tango") :Waltz (ability :name "Waltz") "War Song" (ability :name "War Song" :reference "Battle Hymn, Glorious Anthem") "Work Song" (ability :name "Work Song")) :specialtymap (specialtymap :Courtesan (specialty :name "Courtesan" :reference "* Madame Kaji: We've been servicing the road-weary crotches of every man here to pay obeisance to your new family. You need service only one, freshly washed. Akemi: You don't understand. Madame Kaji: That he's a beast. He's weak. He's a man. All men are weak. The ones who act beastly are weakest. They penetrate women and think that makes them powerful. Really, their pricks are fragile. Exposed. You saw it yourself. They want to be diapered, spanked, and breastfed, then strut away like they conquered an army. Nurture his weakness. Be his strength, and he'll worship you. Akemi: I, don't know if I can. Madame Kaji: Stop running to and from men, and decide what you want for your fucking self. Akemi: I want to be in control of my life. Madame Kaji: Then take control of his, Princess - Madame Kaji and Akemi, Blue Eye Samurai" :summary "* A prostitute, especially one whose clients are members of a royal court or of high social standing.") :Dance (specialty :name "Dance" :summary "Ballroom Dance, Break Dance, Hip Hop Dance, Pole Dance, Salsa Dance, Tango, Waltz") :Music (specialty :name "Music" :summary "* Song, Musical Instrument * The power of music lies in its ability to tell truths that we willing listen to even if they are unpleasant. * See Equipment for Musical Instruments * Musical Instruments may be used with any performance power to increase any Range or Radius by 1 Space." :titles "Bard, Classical, Drummer, Guitarist, Harpist, Hip-Hop, Jazz, Lyrist, Minstrel, Musician, Piper, Pop, Rap, Rhapsode, Rock, Skald, Troubadour") :Acting (specialty :name "Acting" :reference "* Acting! - Master Thespian, Saturday Night Live" :titles "Drama Queen, Master Thespian, Theater Brat, Thespian"))) :Persuasion (skill :name "Persuasion" :titles "Fast Talker, Silver Tongue Devil, Smooth Operator" :abilitymap (abilitymap :Bluff (ability :name "Bluff") :Credibility (ability :name "Credibility" :summary "* The ability to convince large groups of people that you are telling the truth.") :Debate (ability :name "Debate") "Fast Talk" (ability :name "Fast Talk") :Lying (ability :name "Lying" :titles "Fibbing") :Manipulation (ability :name "Manipulation") :Pickup (ability :name "Pickup") :Seduction (ability :name "Seduction" :reference "* But what of all those sweet words you spoke in private? Oh that's just what we call pillow talk, baby, that's all. - Ash, Army of Darkness * But you don't understand. That men are weak? * Guess I must be dumb. She had a pocket full of horses, trojan and some of them used... I guess I should have closed my eyes when you drove me to the pace where your horses run free. Cause I felt a little ill when I saw all the pictures of the jockeys that were there before me. Believe it or not, I started to worry. I wondered if I had enough class. But it was Saturday night, I guess that makes it alright. And you say, Baby have you got enough gas? Oh, Yeah! - Prince, Little Red Corvette" :titles "Femme Fatale, Vamp") "Silver Tongue" (ability :name "Silver Tongue") "Swords to Plowshares" (ability :name "Swords to Plowshares" :summary "* Sincerly convince a rival to choose peace over conflict."))) "Social Sciences" (skill :name "Social Sciences" :abilitymap (abilitymap :Anthropology (ability :name "Anthropology" :summary "* The study of cultures, customs, habits, race, tribes, gangs, and other group affliations and interactions.") "Breaking Point" (ability :name "Breaking Point" :summary "* Determine psychological weaknesses (phobias, addictions, obsessions, etc.)") "Determine Motivation" (ability :name "Determine Motivation") :Philosophy (ability :name "Philosophy") :Profile (ability :name "Profile") :Psychoanalyze (ability :name "Psychoanalyze") :Psychology (ability :name "Psychology") :Sociology (ability :name "Sociology") :Teaching (ability :name "Teaching" :reference "* The true master is an eternal student. - Master Yi, Runeterra" :titles "Educator") :Theology (ability :name "Theology" :summary "* Knowledge about the history, customs, and objects of religions. Though the focus is on a particular religion, Theology includes some understanding of all religions."))) :Stealth (skill :name "Stealth" :titles "Stalker" :stat "Body" :abilitymap (abilitymap :Ambush (ability :name "Ambush") :Backstab (ability :name "Backstab" :summary "* [Action]: Gain [+1 Synergy] when [Flanking] target in Close Combat. * [Action]: Gain [+1 Synergy] per [Level] when in the target's Blind Spot in Close Combat." :titles "Back Biter, Back Stabber, Opportunist, Traitor") "Blend into the Crowd" (ability :name "Blend into the Crowd" :summary "* Attitude, Mannerism, and Appearance can often allow a stranger to go unnoticed in a crowd. * [Continuous]: While active, unit is hidden as long as at least 10 other units are within skill spaces.") :Camouflage (ability :name "Camouflage" :summary "* [Continuous]: While active, unit is hidden. * [Defense]: +1 Defense in [Terrain]. * [Roll]: Skill - Move this turn. * [Versus]: and others must roll Spirit - Terrain penalty vs to detect.") "Cloak and Dagger" (ability :name "Cloak and Dagger" :summary "* [Action]: Gains short term Stealth, move up to 2 spaces ignoring attacks of opportunity and attack with a [Knife] by [Surprise].") :Hide (ability :name "Hide" :summary "* Find a hiding place in an area where you will not normally be detected.") :Seek (ability :name "Seek" :summary "* Discover the location of someone using [Stealth]." :titles "Detect Stealth") :Sneak (ability :name "Sneak" :summary "* Move silently") "Sneak Attack" (ability :name "Sneak Attack" :titles "Suprise Attack") :Stalk (ability :name "Stalk" :summary "* The ability to move carefully to avoid detection. * [Requires]: No other action may be performed this turn. * [Action]: Move at half speed. Any attempt to act toward you, first requires an Mind vs. your skill or fail.") "Strike and Fade" (ability :name "Strike and Fade" :summary "* [Requires]: No other action may be performed this turn. * [Attack]: After this attack, if you have sufficient Move remaining, move 1 space.") :Tailing (ability :name "Tailing" :summary "* Subtly pursue someone. Ideally, you must stay as far away as possible without losing track of your quarry. Completely unaware people are easy to pursue. Paranoid targets will attempt to spot tailing and may attempt to evade tails even when they do not know they are being tailed.") "Without a Trace" (ability :name "Without a Trace"))))))))
nx/tactics/books/space_and_time
Description:
Package Name:
  • nx/tactics/books/space_and_time
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_space_and_time_overview, chapter_space_travel, chapter_space, chapter_dimensional_travel, chapter_time_travel
Source Code:
  • (package nx/tactics/books/space_and_time :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Space and Time" :image "Space.jpg" :chaptermap (base/chaptermap "Space and Time Overview" (chapter_space_and_time_overview) "Space Travel" (chapter_space_travel) "Space" (chapter_space) "Dimensional Travel" (chapter_dimensional_travel) "Time Travel" (chapter_time_travel) ))) (func chapter_space_and_time_overview : base/chapter (chapter :name "Space and Time Overview" :sectionmap (sectionmap "Why Tactics: Space and Time?" (section :name "Why Tactics: Space and Time?" :summary "* Space is deadly to any normal lifeforms. * Militarily space represents the ultimate high ground. Anyone in orbit can see everything below and can reach any place on a planet in minutes.")))) (func chapter_space_travel : base/chapter (chapter :name "Space Travel" :sectionmap (sectionmap "Space Travel Rules" (section :name "Space Travel Rules" :rulemap (rulemap "Planetary Gravity" (rule :name "Planetary Gravity" :summary "* Microgravity - 0G to .2G - Microgravity only exists in space and on moons. Low gravity favors the development of tall, slight frames who will have much difficulty in 1G environments. Worlds with such low gravities do not maintain an atmosphere. * Very Low Gravity - .2G to .5G - Very Low gravity exists on small planets and large moons. Low gravity favors the development of tall, slight frames who will have difficulty in 1G environments. Worlds with such low gravities do not maintain an atmosphere. * Low Gravity - .5G to .8G - Low exists on smaller planets. Low gravity favors the development of tall frames. Worlds with low gravities will have thin atmospheres and consequently be exposed to higher levels of radiation. * Terran Gravity - .8G to 1.2G * High Gravity - 1.2G to 1.5G - High gravity exists on larger planets. High gravity favors short, heavy frames. * Very High Gravity - 1.5G to 2.5G - Very high gravity exists on larger planets. Very high gravity favors short, heavy frames. * Intense Gravity - 1.8G to 2.5G - Intense gravity exists on gas giant planets like Jupiter. Few creatures can survive such extreme gravity where the atmosphere is extremely dense. * Extreme Gravity - 2.5G+ - Extreme gravity exists on stars like the Sun (28G) with the extreme end being a Neutron star (300,000,000,000G) or a black hole.") "Planetary Atmosphere" (rule :name "Planetary Atmosphere" :summary "* Micropressure - 0 to .5 atmospheres - Micropressure only exists in space and even on Terran-sized planets (such as Mars). Most creatures cannot survive such low pressure. * Low Pressure - .5 to .8 atmospheres - Low pressure can exist on Terran-sized planets and very large moons. Low pressure favors the development of expanded lung capacity and relative resistance to hypoxia. Conversely such creatures struggle when breathing the 'soup' of higher pressure environments and may require breathing aids. * Terran Gravity - .8 to 1.5 atmospheres - Terran normal * High Presssure - 1.5 to 4 atmospheres - High pressure exists on larger planets and underwater on any planet. * Very High Pressure - 4 to 100 atmospheres - * Intense Pressure - 100 to 1000 atmospheres - Equal to the bottom of the terran ocean. * Extreme Pressure - 1000+ atmospheres -") "Space Heat Disspation" (rule :name "Space Heat Disspation" :summary "* There are three modes of heat transfer: conduction, convection, and radiation. The first two require a medium that space does not provide, so most heat is dissipated via radiation, but when necessary, heat can also be dissipated by vaporizing a small amount of reaction mass.") "Space Movement" (rule :name "Space Movement" :summary "* Use [Vector Movement] rules with the following modifications. * All objects are always moving. Only the relative difference in speed is important, not the speed itself. * In space, [Speed] represents acceleration/deceleration and is measured in g's (1g=10m/s/s). * Given sufficient fuel, there is no practical maximum to the speed attainable. It would take 3.5 days at 1g to reach 1% of the speed of light.") "Space Combat" (rule :name "Space Combat" :reference "* He's intelligent, but not experienced. His pattern indicates two-dimensional thinking. - Spock, Star Trek II" :summary "* Any dropped items, including clouds and mines continue moving at the same speed and direction of the dropping unit.") "Space Travel" (rule :name "Space Travel" :reference "* At least 100 times the total energy output of the entire world would be required for the voyage to Alpha Centauri in under 100 years." :summary "* Space Travel is a two-piece problem; accelerate for half time (and half distance), then decelerate the other half time (and distance). * Travel Time: If you know the desired acceleration of your spacecraft (generally one g or 9.81 m/s2) and wish to calculate the transit time, the Brachistochrone equation is: ** T = 2 * sqrt[ D/A ] ** where T = transit time (seconds), D = distance (meters), A = acceleration (m/s2) * Travel Time with Coasting: Spacecraft that cannot accelerate the entire distance must coast during the middle of the trip and use the following calculation: ** T = ((D - (A * t^2)) / (A * t)) + (2*t) ** where T = transit time (seconds), D = distance (meters), A = acceleration (m/s2), t = duration of acceleration phase (seconds), just the acceleration phase only, NOT the acceleration+deceleration phase. * Note that the coast duration time is of course = T - (2*t) * Acceleration: If you know the desired transit time and wish to calculate the required acceleration, the equation is: A = (4 * D) / T2")))))) (func chapter_space : base/chapter (chapter :name "Space" :sectionmap (sectionmap "Space Maps" (section :name "Space Maps" :rulemap (rulemap "Space Scale" (rule :name "Space Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Planetary Scale" (rule :name "Planetary Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Interplanetary Scale" (rule :name "Interplanetary Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Stellar Scale" (rule :name "Stellar Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Galactic Scale" (rule :name "Galactic Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?"))) :Universe (section :name "Universe" :reference "* The story so far: In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move. - Douglas Adams, The Restaurant at the End of the Universe.") "Solar System" (section :name "Solar System" :itemmap (itemmap :Europa (item :name "Europa" :reference "* It's a ocean that is perhaps 10 times as deep as Earth's ocean. It is an ocean that is global and may contain 2 to 3 times the volume of all the liquid water on Earth. - Europa: Ocean World" :summary "* Europa is a ball of ice composed of frozen water and methane. Its surface ice is 10km thick covering a liquid water ocean 100km deep. Gravitatioal flux occasionally creates water vapor geysers out of the long brown cracks zigzagging across the surface. These plumes quickly freeze and slowly fall back down as ice crystals.") :Io (item :name "Io" :reference "* The movie Outland takes place on Io." :summary "* Io is a ball of sulfur and sulfer dioxide convered with enormous geysers spitting plumes 300-1400km high. Its core is overheated by gravitational flux between Jupiter and Europa.") :Saturn (item :name "Saturn" :image "SpaceAndTime/Saturn.png" :summary "* 763 times the volume of Earth * Optimal Travel Time from Earth: .01g=2.5 months, .1g=26 days, 1g=9 days" :length "120Mm" :mass "5.7x10^23tons") :Titan (item :name "Titan" :image "SpaceAndTime/Titan.png" :length "5Mm" :mass "1.3x10^20tons") :Uranus (item :name "Uranus" :image "SpaceAndTime/Uranus.png" :length "51Mm" :mass "6.7x10^22tons") :Neptune (item :name "Neptune" :image "SpaceAndTime/Neptune.png" :length "49Mm" :mass "1x10^23tons") :Pluto (item :name "Pluto" :image "SpaceAndTime/Pluto.png" :length "2Mm" :mass "1.3x10^19tons")) :locationmap (locationmap :Sun (location :name "Sun" :image "SpaceAndTime/Sun.png" :reference "Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. - Hitchhiker's Guide to the Galaxy" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "2x10^27tons") :severity 2)))) :Mercury (location :name "Mercury" :image "SpaceAndTime/Mercury.png" :summary "* Optimal Travel Time from Earth: .01g=16 days, .1g=7 days, 1g=2 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "3x10^20tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "4.8Mm") :severity 2)))))) :Venus (location :name "Venus" :image "SpaceAndTime/Venus.png" :summary "* Optimal Travel Time from Earth: .01g=10 days, .1g=4 days, 1g=1.5 days" :titles "Evening Star, Morning Star" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "5x10^21tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "12.1Mm") :severity 2)))))) :Earth (location :name "Earth" :image "SpaceAndTime/Earth.png" :reference "Though below me, I feel no motion Standing on these mountains and plains Far away from the rolling ocean Still my dry land heart can say I've been sailing all my life now Never harbor or port have I known The wide universe is the ocean I travel And the earth is my blue boat home Sun, my sail, and moon my rudder As I ply the starry sea Leaning over the edge in wonder Casting questions into the deep Drifting here with my ship's companions All we kindred pilgrim souls Making our way by the lights of the heavens In our beautiful blue boat home I give thanks to the waves upholding me Hail the great winds urging me on Greet the infinite sea before me Sing the sky my sailor's song I was born upon the fathoms Never harbor or port have I known The wide universe is the ocean I travel And the earth is my blue boat home - Peter Mayer, Blue Boat Home" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "6x10^21tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "12.6Mm") :severity 2)))))) :Moon (location :name "Moon" :image "SpaceAndTime/Moon.png" :reference "* The monthly cycle of the moon, in contrast to the annual cycle of the sun's path, has been implicitly linked to women's menstrual cycles by many cultures, although rarely explicitly stated. Many of the most well-known mythologies feature female lunar deities." :summary "* The moon rotates on its axis in about 27 days. Daytime on one side of the moon lasts about 13 and a half days, followed by 13 and a half nights of darkness. When sunlight hits the moon's surface, the temperature can reach 253 degrees F (123 C). The dark side can have temperatures dipping to minus 243 F (minus 153 C). * New Moon - A person born under the new moon will have an underlying sense of youthful enthusiasm and optimism. They will probably prefer to take the initiative, especially in romance, and will be ready to look for new interests in life, new people and new ideas. The person will see how things can be improved and can spur others to action, before leaving them to finish the project. They need to guard against selfishness and taking others by surprise with over quick and hasty reactions. * Waxing Moon - A person born under a waxing moon will be ambitious and sociable. The person will be locked into their goals and have a strong need to create something which will be remembered by others. They will have a charismatic personality that draws others to them, but may instinctively use others for their own ends, rather than help them. They prefer a career where they are out in front and have attention and status. The person will be slow to anger, but formidable when aroused, and hates to be hurried or presented with a fait accompli. However, they won't mind doing this to others if it tips the odds in their favor. * Full Moon - A person born under a full moon will be sensitive to the needs of others and expects others to be sensitive to their own needs. There is an underlying sense of watchfulness. The person will need friendships, colleagues and relationships, and will relate well to others. They will either be drawn to highly successful people and help them achieve their goals, or else achieve success themselves with the help of others. There is a tension and nervousness at play which can lead to a short attention span and a constant search for new people and experiences, and sex will play some kind of transformative role in their life. * Waning Moon - A person born under a waning moon will finish the projects that others start, and reorganize and sort out the problems left by others. They will often have clairvoyant insight and follow hunches rather than be logical. The person can be too sensitive and become upset by the demands of others, and can also be too inclined to sit back and let things happen." (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "7x10^19tons") :severity 2)))) :Mars (location :name "Mars" :image "SpaceAndTime/Mars.png" :summary "* Has two moons: Phobos and Deimos which may be captured asteroids. * Optimal Travel Time from Earth: .01g=15 days, .1g=6 days, 1g=2 days" :titles "Red Planet" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "6.4x10^20tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "6.8Mm") :severity 2)))))) "Asteroid Belt" (location :name "Asteroid Belt" :image "SpaceAndTime/AsteroidBelt.png" :summary "* Gravitational pull from Jupiter prevented the asteroid field from forming into a planet. It has far too little mass to have ever been a planet. * This belt is now estimated to contain between 1.1 and 1.9 million asteroids larger than 1 km (0.6 mi) in diameter and millions of smaller ones." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))))) :Ceres (location :name "Ceres" :image "SpaceAndTime/Ceres.png" :summary "* Ceres - With a diameter of about 950km, Ceres is by far the largest and most massive body in the asteroid belt, and contains approximately a third of the belt's total mass. The surface of Ceres is probably made of a mixture of water ice and various hydrated minerals like carbonates and clays. It may harbour an ocean of liquid water, which makes it a target of current searches for extraterrestrial life. Ceres may be surrounded by a tenuous atmosphere containing water vapour. * Optimal Travel Time from Earth: .01g=32 days, .1g=12 days, 1g=4 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "9x10^17tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "950km") :severity 2)))))) :Jupiter (location :name "Jupiter" :image "SpaceAndTime/Jupiter.png" :reference "* The movie Outland takes place on Io, one of Jupiter's moons." :summary "* Optimal Travel Time from Earth: .01g=1.75 months, .1g=18 days, 1g=6 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "2x10^24tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "143Mm") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))))))) "Space Terrain" (section :name "Space Terrain" :rulemap (rulemap "Magnetic Storm" (rule :name "Magnetic Storm" :image "Units/SpaceAndTime/MagneticStorm.jpg" :summary "* [+1 Hazard] * Blocks [Line of Sight] * A Magnetic Storm is treated as a [Nebula] with the following additional effects. * [-1 Communications] per space from the edge of the field. * [-1 Shielding] per space from the edge of the field.") "Micro-meteor Field" (rule :name "Micro-meteor Field") :Nebula (rule :name "Nebula" :image "Units/SpaceAndTime/Nebula.jpg" :summary "* Nebulas are placed randomly on the map. * At the beginning of the game roll 1 die to determine Speed and 1 die to randomize direction. * At the end of each turn all nebulas move their Speed in the given direction. * [+1 Hazard] * Blocks [Line of Sight]") "Solar Flare" (rule :name "Solar Flare" :image "Units/SpaceAndTime/SolarFlare.jpg" :reference "This photograph shows one of the most spectacular solar flares ever recorded; the base of the flare is more than 591Mm across.")) :unitmap (unitmap "Arctic World" (unit :name "Arctic World") "Arid World" (unit :name "Arid World") "Asteroid Field" (unit :name "Asteroid Field" :image "Units/SpaceAndTime/Asteroid.png" :summary "* Asteroid fields are placed randomly on the map. * At the beginning of the game roll 1 die to determine Speed and 1 die to randomize direction. * At the end of each turn all asteroids move their Speed in the given direction. * If they collide with a unit, use the asteroid's and the unit's Speed and Body to determine damage. * [+2 Hazard]" :height "500km" :length "500m" :width "500m") "Black Hole" (unit :name "Black Hole" :image "Units/SpaceAndTime/BlackHole.png" :summary "* Accretion Disk * Event Horizon" :titles "Singularity") "Blue Giant Star" (unit :name "Blue Giant Star") :Comet (unit :name "Comet" :image "Units/SpaceAndTime/Comet.png") "Debris Field" (unit :name "Debris Field" :image "Units/SpaceAndTime/SpaceDebris.jpg" :summary "* [+2 Hazard] * Debris Fields are treated as an [Asteroid Field]. * Any large unit that explodes is replaced with a Debris Field.") "Desert World" (unit :name "Desert World") "Dyson Sphere" (unit :name "Dyson Sphere") "Gas Giant" (unit :name "Gas Giant") "Greenhouse World" (unit :name "Greenhouse World") "Ionized Atmosphere World" (unit :name "Ionized Atmosphere World" :summary "* Atmosphere is heavily ionized which produces powerful lightning storms and regularly disrupts electrical systems and communications.") "Irradiated World" (unit :name "Irradiated World") "Jungle World" (unit :name "Jungle World") :Meteorite (unit :name "Meteorite" :reference "Armaggeddon") "Methane Ocean World" (unit :name "Methane Ocean World") "Neutron Star" (unit :name "Neutron Star" :image "Units/SpaceAndTime/NeutronStar.png" :reference "* 12 miles across and 1.4 times the mass of the sun. One teaspoonful would weigh a billion tons." :mass "2x10^27tons" :length "20km") "Ocean World" (unit :name "Ocean World") "Proto World" (unit :name "Proto World") :Pulsar (unit :name "Pulsar" :image "Units/SpaceAndTime/Pulsar.png") "Red Giant Star" (unit :name "Red Giant Star") "Ring World" (unit :name "Ring World") "Ringed Gas Giant" (unit :name "Ringed Gas Giant") "Solar Storm World" (unit :name "Solar Storm World" :summary "* This planet is routinely bombarded by intense solar radiation. The planet itself is not radioactive, but when solar storms appear all life is scoured from any exposed surface. Life underground or underwater is possible.") "Seasonally Extreme World" (unit :name "Seasonally Extreme World" :summary "* A planet with a very oblong orbit and high axial shift will produce severe changes in seasons shifting from artic to tropic environments during the year. Such a punishing environment is difficult for complex life to develop. Simple life forms will tend toward short life spans or hibernation during winter months with a massive spring bloom and fall die off.") "Seasonless World" (unit :name "Seasonless World" :summary "* A planet with a nearly circular orbit and minor axial shift will produce bands of terrain where the seasons don't change throughout the year. Polar areas are uniformly cold and equatorial areas are uniformly hot. Such a predictable environment is ideal for life to develop.") "Seismic World" (unit :name "Seismic World") "Stony World" (unit :name "Stony World") "Storm World" (unit :name "Storm World") "Swamp World" (unit :name "Swamp World" :summary "* The combination of mild greenhouse effect and high amounts of surface water creates a world where most land masses are densely covered with vegetation. Very little dry land exists and the vegetation mostly has its roots underwater. Some particularly dense vegetation can be walked on. Quicksand, parasites, insects, water predators, and other threats are common.") "Toxic World" (unit :name "Toxic World") "Tropical World" (unit :name "Tropical World") "Tundra World" (unit :name "Tundra World") "Yellow Star" (unit :name "Yellow Star")))))) (func chapter_dimensional_travel : base/chapter (chapter :name "Dimensional Travel" :sectionmap (sectionmap "Dimensional Rules" (section :name "Dimensional Rules" :rulemap (rulemap "Parallel Dimensions" (rule :name "Parallel Dimensions") "Dimensional Ripples" (rule :name "Dimensional Ripples" :summary "* Changes made to one dimension can cause similar changes to nearby parallel dimensions like ripples in a pond. Temporal Distortion Waves always cause Dimensional Ripples.") "Dimensional Storm" (rule :name "Dimensional Storm" :summary "* A Dimensional Storm is a theoretical disaster where the barriers between dimensions are broken and events from unrelated time periods and dimensions become mixed up creating chaos across multiple dimensions.")))))) (func chapter_time_travel : base/chapter (chapter :name "Time Travel" :reference "* Philosophy - Though we are now able to travel through time, there remains much speculation over how time travel actually works. The general concensus is that the term 'Time Stream' may be an accurate description. Time acts like a river of water, and we are travelers on that river. But our boats are unpowered, so we drift with the current until we hit the shore. Now, with the power of the Time Rotor, we may move against the current of time to any time or place we choose." :summary "* The Vortex - The Vortex is a temporal zero-point where time does not exist. The Vortex appears as a tunnel headed away from the viewer regardless of which direction the viewer looks. Entering the Vortex is feels like dying (and probably is a death). Exiting the Vortex is like being born (or reborn). * Beings and objects may travel through the the [Vortex] emerging at another point in Time. Every point in time is equi-distant from the [Vortex]." :sectionmap (sectionmap "Time Travel Rules" (section :name "Time Travel Rules" :rulemap (rulemap "Laws of Time" (rule :name "Laws of Time" :summary "Time Travellers * Emphemeral - Those who have never traveled in time are called Ephemerals. All the events of their lives may be altered repeatedly by one or more time travelers, and they will not sense anything is amiss or remember anything about the previous time stream. * Temporal - Once a being travels through time, it is permanently separated from the normal time stream and is called a Temporal. The events of a Temporal's life may also be changed by other time travelers, but a Temporal will remember some or all of the previous time stream.") "History Can Be Changed" (rule :name "History Can Be Changed") "Law of Death" (rule :name "Law of Death" :reference "Final Destination" :summary "* A Temporal has one limitation that Emphemerals do not: the moment of death of a Temporal cannot be undone. Since only living beings may travel through time, when a Temporal dies, he or she can no longer move forward in time. Even if time is rewritten to prevent the Temporal's death, the time traveler will still die at the exact age of his original death regardless of the circumstances. The cause of death may vary, but death will always occur at the exact age that the original death happened.") "Law of Preservation" (rule :name "Law of Preservation" :summary "* Jumping through time necessarily causes a number of paradoxes, but Time seems to have a self-healing mechanism that limits the scope of changes to the Timeline, provided the changes are small enough. One of these effects is when a person makes a time jump, that jump cannot cause a series of events that ultimately prevents itself. For example: say a person jumped back in time because of a temporal disturbance. He then prevented the disturbance from ever happening. Logically, this is a paradox. If the disturbance never happened, then he would never go back to prevent the disturbance, so the disturbance would happen, so he would go back to prevent the disturbance, etc. Instead the last jump that prevents the disturbance occurs, the disturbance never occurs, and all memory of what happened during the paradox is lost. This time period has become complex but is stable. Of course, a further time jump might erase the actions of the previous jump, since the last jump will always stand despite any paradoxes created.") "Loop Trap Paradox" (rule :name "Loop Trap Paradox" :summary "* Whenever two versions of same person exist at the same point in time, a Loop Trap Paradox is created. The future version of the person immediately vanishes and the past version of the person performs the same actions that the future version did eventually returning to the same moment where both versions exist at the same time and the cycle continues eternally. The person is doomed to repeat the same actions over and over again unless another time traveler intervenes. * To avoid Loop Traps, it is vitally important that a time traveler keeps accurate track of every period of time to which he or she has traveled.") "Matter Suppression" (rule :name "Matter Suppression" :summary "* Matter cannot normally travel through time, but time technology allows certain narrow exceptions. Living matter can travel freely through time, seemingly based only on the will to live. Non-living matter, however, decomposes rapidly when moved through time. Non-living objects that travel backwards in time decompose faster the farther back in time they travel. Non-living objects that travel forward in time beyond their original time period decompose immediately. For this reason, no one has been able to travel to a future beyond their time machines 'present' because their time machines vanish stranding them in the Vortex.") "Messages in Time" (rule :name "Messages in Time" :summary "* With the benefit of hindsight, there are many times when it would be convenient to send a message to a past version of yourself to change a course of action. Of course, this would be a paradox: if you don't take the same action in the past, you would never send the message to change the action. If you did attempt to leave a message to a past self, the rule of Matter Suppression would cause the message to disappear to prevent the paradox. However, by placing a message in the Time Rotor, the message can resist Matter Suppression for up to 1 day. If the message is successfully delivered, the future self will typically vanish immediately since that future will have been erased in favor of a new future created by the message. * Self Preventing Mission - Using a Message in Time, it is possible to prevent every reason why the initial Time Travel was made. In this case, the mission never occurs, though memories of the trip may remain.") "Temporal Disaster Wave" (rule :name "Temporal Disaster Wave" :summary "* Sometimes massive changes to history will cause such an enormous [Temporal Distortion Wave] that it travels all the way through history to the present. These are called Temporal Disaster Waves. A Disaster Wave will have wide-sweeping ramifications and are far too dangerous and random to allow.") "Temporal Distortion" (rule :name "Temporal Distortion") "Temporal Distortion Wave" (rule :name "Temporal Distortion Wave" :reference "History Tends to Repeat Itself" :summary "* Major temporal alterations can be made without significantly altering history. Major changes will, however, create a Temporal Distortion Wave. This wave in time will slowly flow around the changed events, making minor alterations in names and events as it goes. Eventually, the wave subsides when history goes back on course with only minor changes to the history books. For Example: killing Hitler as a baby will have little effect on history, because the time stream will find someone else to fill his role, and the history books will just have different names. * Severity - A Distortion Wave is rated based on the number of years it will travel before the time stream returns to its normal course. History during this period is altered, but time futureward of the wave is relatively normal. * Detection - A person that experiences a wave washing through his/her time stream will experience radical changes to events. Of course, only time travelers will notice these changes as unusual. Those that can analyze the time stream can see the wave traveling through time. If a person is futureward of the wave, he/she will not detect any changes until the wave approaches. * Stopping the Wave - A Wave can still be stopped by jumping forward in time past the wave and choosing major events that took place in the normal time stream and forcing them to happen again despite the changes the oncoming Wave would create. This action will act as a dam, preventing the Wave from doing further damage to the future. The time stream is now safe, but the work is not complete because a Standing Wave has been created. * Standing Wave- A Distortion Wave that has been stopped futureward will be reflected back to the past changing history back again until it reaches its origin and reflected futureward again repeatining the process, changing time back and forth infinitely in what is called a Standing Wave. A Standing Wave remains very dangerous and can only be ended by preventing the original source of the wave which will return the time stream to normal.") "Temporal Memory" (rule :name "Temporal Memory" :summary "* When a Temporal has his time stream rewritten by another Time Traveler, it is possible to retain dream-like memories of the time line that no longer exists.") "Traveling Futureward" (rule :name "Traveling Futureward" :summary "* Traveling to Ones Own Future - Time machines cannot travel farther forward in time beyond their 'present'. Any attempt to do so results in the immediate disintegration of the time machine and passengers are stranded in the Vortex. * Futureward Time Hops - The simplest way of performing multiple time hops is to travel back to a time period and then make a number of futureward hops from there. In this way one can see the development of a subject over time such as the construction of a building. It also allow one to view the consequences of any changes made to history. * Futureward Time Hops Complications - Making forward hops essentially avoids paradoxes, but other problems can occur. People may recognize you which can be a problem if your appearance hasn't changed. They may ask questions about the intervening time and why they never kept in touch. If you keep arriving in the same spot at different times, you may set yourself up for an ambush. Be cautious and change your physical destination as well as your temporal on each jump.") "Traveling Pastward" (rule :name "Traveling Pastward" :summary "* Traveling to Ones Own Past - Any attempt to enter a time period where you have already been creates a [Loop Trap Paradox]. Your future version immediately vanishes and the past version infinitely repeats the steps leading to the Loop Trap. * Pastward Time Hops - Multiple jumps back in time are often desirable because as one learns more about the current situation it is usually easier to go further back in time to alter the situation before it has fully developed. When done perfectly, the original problem can be prevented entirely. * Pastward Time Hops Complications - Altering the past is the way to create paradoxes. Multiple pastward hops increases the risk with each hop. As you progressively change the past, you may also cause changes to your own past. You can find yourself appearing in a time period with no memory of why."))))))
nx/tactics/books/space_and_time / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Space and Time" :image "Space.jpg" :chaptermap (base/chaptermap "Space and Time Overview" (chapter_space_and_time_overview) "Space Travel" (chapter_space_travel) "Space" (chapter_space) "Dimensional Travel" (chapter_dimensional_travel) "Time Travel" (chapter_time_travel) )))
nx/tactics/books/space_and_time / chapter_space_and_time_overview
Description:
Function Name:
  • chapter_space_and_time_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space_and_time_overview : base/chapter (chapter :name "Space and Time Overview" :sectionmap (sectionmap "Why Tactics: Space and Time?" (section :name "Why Tactics: Space and Time?" :summary "* Space is deadly to any normal lifeforms. * Militarily space represents the ultimate high ground. Anyone in orbit can see everything below and can reach any place on a planet in minutes."))))
nx/tactics/books/space_and_time / chapter_space_travel
Description:
Function Name:
  • chapter_space_travel
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space_travel : base/chapter (chapter :name "Space Travel" :sectionmap (sectionmap "Space Travel Rules" (section :name "Space Travel Rules" :rulemap (rulemap "Planetary Gravity" (rule :name "Planetary Gravity" :summary "* Microgravity - 0G to .2G - Microgravity only exists in space and on moons. Low gravity favors the development of tall, slight frames who will have much difficulty in 1G environments. Worlds with such low gravities do not maintain an atmosphere. * Very Low Gravity - .2G to .5G - Very Low gravity exists on small planets and large moons. Low gravity favors the development of tall, slight frames who will have difficulty in 1G environments. Worlds with such low gravities do not maintain an atmosphere. * Low Gravity - .5G to .8G - Low exists on smaller planets. Low gravity favors the development of tall frames. Worlds with low gravities will have thin atmospheres and consequently be exposed to higher levels of radiation. * Terran Gravity - .8G to 1.2G * High Gravity - 1.2G to 1.5G - High gravity exists on larger planets. High gravity favors short, heavy frames. * Very High Gravity - 1.5G to 2.5G - Very high gravity exists on larger planets. Very high gravity favors short, heavy frames. * Intense Gravity - 1.8G to 2.5G - Intense gravity exists on gas giant planets like Jupiter. Few creatures can survive such extreme gravity where the atmosphere is extremely dense. * Extreme Gravity - 2.5G+ - Extreme gravity exists on stars like the Sun (28G) with the extreme end being a Neutron star (300,000,000,000G) or a black hole.") "Planetary Atmosphere" (rule :name "Planetary Atmosphere" :summary "* Micropressure - 0 to .5 atmospheres - Micropressure only exists in space and even on Terran-sized planets (such as Mars). Most creatures cannot survive such low pressure. * Low Pressure - .5 to .8 atmospheres - Low pressure can exist on Terran-sized planets and very large moons. Low pressure favors the development of expanded lung capacity and relative resistance to hypoxia. Conversely such creatures struggle when breathing the 'soup' of higher pressure environments and may require breathing aids. * Terran Gravity - .8 to 1.5 atmospheres - Terran normal * High Presssure - 1.5 to 4 atmospheres - High pressure exists on larger planets and underwater on any planet. * Very High Pressure - 4 to 100 atmospheres - * Intense Pressure - 100 to 1000 atmospheres - Equal to the bottom of the terran ocean. * Extreme Pressure - 1000+ atmospheres -") "Space Heat Disspation" (rule :name "Space Heat Disspation" :summary "* There are three modes of heat transfer: conduction, convection, and radiation. The first two require a medium that space does not provide, so most heat is dissipated via radiation, but when necessary, heat can also be dissipated by vaporizing a small amount of reaction mass.") "Space Movement" (rule :name "Space Movement" :summary "* Use [Vector Movement] rules with the following modifications. * All objects are always moving. Only the relative difference in speed is important, not the speed itself. * In space, [Speed] represents acceleration/deceleration and is measured in g's (1g=10m/s/s). * Given sufficient fuel, there is no practical maximum to the speed attainable. It would take 3.5 days at 1g to reach 1% of the speed of light.") "Space Combat" (rule :name "Space Combat" :reference "* He's intelligent, but not experienced. His pattern indicates two-dimensional thinking. - Spock, Star Trek II" :summary "* Any dropped items, including clouds and mines continue moving at the same speed and direction of the dropping unit.") "Space Travel" (rule :name "Space Travel" :reference "* At least 100 times the total energy output of the entire world would be required for the voyage to Alpha Centauri in under 100 years." :summary "* Space Travel is a two-piece problem; accelerate for half time (and half distance), then decelerate the other half time (and distance). * Travel Time: If you know the desired acceleration of your spacecraft (generally one g or 9.81 m/s2) and wish to calculate the transit time, the Brachistochrone equation is: ** T = 2 * sqrt[ D/A ] ** where T = transit time (seconds), D = distance (meters), A = acceleration (m/s2) * Travel Time with Coasting: Spacecraft that cannot accelerate the entire distance must coast during the middle of the trip and use the following calculation: ** T = ((D - (A * t^2)) / (A * t)) + (2*t) ** where T = transit time (seconds), D = distance (meters), A = acceleration (m/s2), t = duration of acceleration phase (seconds), just the acceleration phase only, NOT the acceleration+deceleration phase. * Note that the coast duration time is of course = T - (2*t) * Acceleration: If you know the desired transit time and wish to calculate the required acceleration, the equation is: A = (4 * D) / T2"))))))
nx/tactics/books/space_and_time / chapter_space
Description:
Function Name:
  • chapter_space
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_space : base/chapter (chapter :name "Space" :sectionmap (sectionmap "Space Maps" (section :name "Space Maps" :rulemap (rulemap "Space Scale" (rule :name "Space Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Planetary Scale" (rule :name "Planetary Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Interplanetary Scale" (rule :name "Interplanetary Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Stellar Scale" (rule :name "Stellar Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?") "Galactic Scale" (rule :name "Galactic Scale" :summary "* 1 Turn = ? * 1 Space = ? * 24 x 20 map = ?"))) :Universe (section :name "Universe" :reference "* The story so far: In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move. - Douglas Adams, The Restaurant at the End of the Universe.") "Solar System" (section :name "Solar System" :itemmap (itemmap :Europa (item :name "Europa" :reference "* It's a ocean that is perhaps 10 times as deep as Earth's ocean. It is an ocean that is global and may contain 2 to 3 times the volume of all the liquid water on Earth. - Europa: Ocean World" :summary "* Europa is a ball of ice composed of frozen water and methane. Its surface ice is 10km thick covering a liquid water ocean 100km deep. Gravitatioal flux occasionally creates water vapor geysers out of the long brown cracks zigzagging across the surface. These plumes quickly freeze and slowly fall back down as ice crystals.") :Io (item :name "Io" :reference "* The movie Outland takes place on Io." :summary "* Io is a ball of sulfur and sulfer dioxide convered with enormous geysers spitting plumes 300-1400km high. Its core is overheated by gravitational flux between Jupiter and Europa.") :Saturn (item :name "Saturn" :image "SpaceAndTime/Saturn.png" :summary "* 763 times the volume of Earth * Optimal Travel Time from Earth: .01g=2.5 months, .1g=26 days, 1g=9 days" :length "120Mm" :mass "5.7x10^23tons") :Titan (item :name "Titan" :image "SpaceAndTime/Titan.png" :length "5Mm" :mass "1.3x10^20tons") :Uranus (item :name "Uranus" :image "SpaceAndTime/Uranus.png" :length "51Mm" :mass "6.7x10^22tons") :Neptune (item :name "Neptune" :image "SpaceAndTime/Neptune.png" :length "49Mm" :mass "1x10^23tons") :Pluto (item :name "Pluto" :image "SpaceAndTime/Pluto.png" :length "2Mm" :mass "1.3x10^19tons")) :locationmap (locationmap :Sun (location :name "Sun" :image "SpaceAndTime/Sun.png" :reference "Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. - Hitchhiker's Guide to the Galaxy" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "2x10^27tons") :severity 2)))) :Mercury (location :name "Mercury" :image "SpaceAndTime/Mercury.png" :summary "* Optimal Travel Time from Earth: .01g=16 days, .1g=7 days, 1g=2 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "3x10^20tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "4.8Mm") :severity 2)))))) :Venus (location :name "Venus" :image "SpaceAndTime/Venus.png" :summary "* Optimal Travel Time from Earth: .01g=10 days, .1g=4 days, 1g=1.5 days" :titles "Evening Star, Morning Star" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "5x10^21tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "12.1Mm") :severity 2)))))) :Earth (location :name "Earth" :image "SpaceAndTime/Earth.png" :reference "Though below me, I feel no motion Standing on these mountains and plains Far away from the rolling ocean Still my dry land heart can say I've been sailing all my life now Never harbor or port have I known The wide universe is the ocean I travel And the earth is my blue boat home Sun, my sail, and moon my rudder As I ply the starry sea Leaning over the edge in wonder Casting questions into the deep Drifting here with my ship's companions All we kindred pilgrim souls Making our way by the lights of the heavens In our beautiful blue boat home I give thanks to the waves upholding me Hail the great winds urging me on Greet the infinite sea before me Sing the sky my sailor's song I was born upon the fathoms Never harbor or port have I known The wide universe is the ocean I travel And the earth is my blue boat home - Peter Mayer, Blue Boat Home" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "6x10^21tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "12.6Mm") :severity 2)))))) :Moon (location :name "Moon" :image "SpaceAndTime/Moon.png" :reference "* The monthly cycle of the moon, in contrast to the annual cycle of the sun's path, has been implicitly linked to women's menstrual cycles by many cultures, although rarely explicitly stated. Many of the most well-known mythologies feature female lunar deities." :summary "* The moon rotates on its axis in about 27 days. Daytime on one side of the moon lasts about 13 and a half days, followed by 13 and a half nights of darkness. When sunlight hits the moon's surface, the temperature can reach 253 degrees F (123 C). The dark side can have temperatures dipping to minus 243 F (minus 153 C). * New Moon - A person born under the new moon will have an underlying sense of youthful enthusiasm and optimism. They will probably prefer to take the initiative, especially in romance, and will be ready to look for new interests in life, new people and new ideas. The person will see how things can be improved and can spur others to action, before leaving them to finish the project. They need to guard against selfishness and taking others by surprise with over quick and hasty reactions. * Waxing Moon - A person born under a waxing moon will be ambitious and sociable. The person will be locked into their goals and have a strong need to create something which will be remembered by others. They will have a charismatic personality that draws others to them, but may instinctively use others for their own ends, rather than help them. They prefer a career where they are out in front and have attention and status. The person will be slow to anger, but formidable when aroused, and hates to be hurried or presented with a fait accompli. However, they won't mind doing this to others if it tips the odds in their favor. * Full Moon - A person born under a full moon will be sensitive to the needs of others and expects others to be sensitive to their own needs. There is an underlying sense of watchfulness. The person will need friendships, colleagues and relationships, and will relate well to others. They will either be drawn to highly successful people and help them achieve their goals, or else achieve success themselves with the help of others. There is a tension and nervousness at play which can lead to a short attention span and a constant search for new people and experiences, and sex will play some kind of transformative role in their life. * Waning Moon - A person born under a waning moon will finish the projects that others start, and reorganize and sort out the problems left by others. They will often have clairvoyant insight and follow hunches rather than be logical. The person can be too sensitive and become upset by the demands of others, and can also be too inclined to sit back and let things happen." (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "7x10^19tons") :severity 2)))) :Mars (location :name "Mars" :image "SpaceAndTime/Mars.png" :summary "* Has two moons: Phobos and Deimos which may be captured asteroids. * Optimal Travel Time from Earth: .01g=15 days, .1g=6 days, 1g=2 days" :titles "Red Planet" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "6.4x10^20tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "6.8Mm") :severity 2)))))) "Asteroid Belt" (location :name "Asteroid Belt" :image "SpaceAndTime/AsteroidBelt.png" :summary "* Gravitational pull from Jupiter prevented the asteroid field from forming into a planet. It has far too little mass to have ever been a planet. * This belt is now estimated to contain between 1.1 and 1.9 million asteroids larger than 1 km (0.6 mi) in diameter and millions of smaller ones." (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))))) :Ceres (location :name "Ceres" :image "SpaceAndTime/Ceres.png" :summary "* Ceres - With a diameter of about 950km, Ceres is by far the largest and most massive body in the asteroid belt, and contains approximately a third of the belt's total mass. The surface of Ceres is probably made of a mixture of water ice and various hydrated minerals like carbonates and clays. It may harbour an ocean of liquid water, which makes it a target of current searches for extraterrestrial life. Ceres may be surrounded by a tenuous atmosphere containing water vapour. * Optimal Travel Time from Earth: .01g=32 days, .1g=12 days, 1g=4 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "9x10^17tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "950km") :severity 2)))))) :Jupiter (location :name "Jupiter" :image "SpaceAndTime/Jupiter.png" :reference "* The movie Outland takes place on Io, one of Jupiter's moons." :summary "* Optimal Travel Time from Earth: .01g=1.75 months, .1g=18 days, 1g=6 days" (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "mass" :value "2x10^24tons") :severity 2)) :msgblocks (msgblocklist (msgblock :msgs (msglist (msg :code ":invalidproperty" :detail (anymap :type nx/tactics/base/location :prop "length" :value "143Mm") :severity 2))) (msgblock :msgs (msglist (msg :code ":invalidtagfound" :detail (anymap :type nx/tactics/base/location :tag "place") :severity 2)))))))) "Space Terrain" (section :name "Space Terrain" :rulemap (rulemap "Magnetic Storm" (rule :name "Magnetic Storm" :image "Units/SpaceAndTime/MagneticStorm.jpg" :summary "* [+1 Hazard] * Blocks [Line of Sight] * A Magnetic Storm is treated as a [Nebula] with the following additional effects. * [-1 Communications] per space from the edge of the field. * [-1 Shielding] per space from the edge of the field.") "Micro-meteor Field" (rule :name "Micro-meteor Field") :Nebula (rule :name "Nebula" :image "Units/SpaceAndTime/Nebula.jpg" :summary "* Nebulas are placed randomly on the map. * At the beginning of the game roll 1 die to determine Speed and 1 die to randomize direction. * At the end of each turn all nebulas move their Speed in the given direction. * [+1 Hazard] * Blocks [Line of Sight]") "Solar Flare" (rule :name "Solar Flare" :image "Units/SpaceAndTime/SolarFlare.jpg" :reference "This photograph shows one of the most spectacular solar flares ever recorded; the base of the flare is more than 591Mm across.")) :unitmap (unitmap "Arctic World" (unit :name "Arctic World") "Arid World" (unit :name "Arid World") "Asteroid Field" (unit :name "Asteroid Field" :image "Units/SpaceAndTime/Asteroid.png" :summary "* Asteroid fields are placed randomly on the map. * At the beginning of the game roll 1 die to determine Speed and 1 die to randomize direction. * At the end of each turn all asteroids move their Speed in the given direction. * If they collide with a unit, use the asteroid's and the unit's Speed and Body to determine damage. * [+2 Hazard]" :height "500km" :length "500m" :width "500m") "Black Hole" (unit :name "Black Hole" :image "Units/SpaceAndTime/BlackHole.png" :summary "* Accretion Disk * Event Horizon" :titles "Singularity") "Blue Giant Star" (unit :name "Blue Giant Star") :Comet (unit :name "Comet" :image "Units/SpaceAndTime/Comet.png") "Debris Field" (unit :name "Debris Field" :image "Units/SpaceAndTime/SpaceDebris.jpg" :summary "* [+2 Hazard] * Debris Fields are treated as an [Asteroid Field]. * Any large unit that explodes is replaced with a Debris Field.") "Desert World" (unit :name "Desert World") "Dyson Sphere" (unit :name "Dyson Sphere") "Gas Giant" (unit :name "Gas Giant") "Greenhouse World" (unit :name "Greenhouse World") "Ionized Atmosphere World" (unit :name "Ionized Atmosphere World" :summary "* Atmosphere is heavily ionized which produces powerful lightning storms and regularly disrupts electrical systems and communications.") "Irradiated World" (unit :name "Irradiated World") "Jungle World" (unit :name "Jungle World") :Meteorite (unit :name "Meteorite" :reference "Armaggeddon") "Methane Ocean World" (unit :name "Methane Ocean World") "Neutron Star" (unit :name "Neutron Star" :image "Units/SpaceAndTime/NeutronStar.png" :reference "* 12 miles across and 1.4 times the mass of the sun. One teaspoonful would weigh a billion tons." :mass "2x10^27tons" :length "20km") "Ocean World" (unit :name "Ocean World") "Proto World" (unit :name "Proto World") :Pulsar (unit :name "Pulsar" :image "Units/SpaceAndTime/Pulsar.png") "Red Giant Star" (unit :name "Red Giant Star") "Ring World" (unit :name "Ring World") "Ringed Gas Giant" (unit :name "Ringed Gas Giant") "Solar Storm World" (unit :name "Solar Storm World" :summary "* This planet is routinely bombarded by intense solar radiation. The planet itself is not radioactive, but when solar storms appear all life is scoured from any exposed surface. Life underground or underwater is possible.") "Seasonally Extreme World" (unit :name "Seasonally Extreme World" :summary "* A planet with a very oblong orbit and high axial shift will produce severe changes in seasons shifting from artic to tropic environments during the year. Such a punishing environment is difficult for complex life to develop. Simple life forms will tend toward short life spans or hibernation during winter months with a massive spring bloom and fall die off.") "Seasonless World" (unit :name "Seasonless World" :summary "* A planet with a nearly circular orbit and minor axial shift will produce bands of terrain where the seasons don't change throughout the year. Polar areas are uniformly cold and equatorial areas are uniformly hot. Such a predictable environment is ideal for life to develop.") "Seismic World" (unit :name "Seismic World") "Stony World" (unit :name "Stony World") "Storm World" (unit :name "Storm World") "Swamp World" (unit :name "Swamp World" :summary "* The combination of mild greenhouse effect and high amounts of surface water creates a world where most land masses are densely covered with vegetation. Very little dry land exists and the vegetation mostly has its roots underwater. Some particularly dense vegetation can be walked on. Quicksand, parasites, insects, water predators, and other threats are common.") "Toxic World" (unit :name "Toxic World") "Tropical World" (unit :name "Tropical World") "Tundra World" (unit :name "Tundra World") "Yellow Star" (unit :name "Yellow Star"))))))
nx/tactics/books/space_and_time / chapter_dimensional_travel
Description:
Function Name:
  • chapter_dimensional_travel
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_dimensional_travel : base/chapter (chapter :name "Dimensional Travel" :sectionmap (sectionmap "Dimensional Rules" (section :name "Dimensional Rules" :rulemap (rulemap "Parallel Dimensions" (rule :name "Parallel Dimensions") "Dimensional Ripples" (rule :name "Dimensional Ripples" :summary "* Changes made to one dimension can cause similar changes to nearby parallel dimensions like ripples in a pond. Temporal Distortion Waves always cause Dimensional Ripples.") "Dimensional Storm" (rule :name "Dimensional Storm" :summary "* A Dimensional Storm is a theoretical disaster where the barriers between dimensions are broken and events from unrelated time periods and dimensions become mixed up creating chaos across multiple dimensions."))))))
nx/tactics/books/space_and_time / chapter_time_travel
Description:
Function Name:
  • chapter_time_travel
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_time_travel : base/chapter (chapter :name "Time Travel" :reference "* Philosophy - Though we are now able to travel through time, there remains much speculation over how time travel actually works. The general concensus is that the term 'Time Stream' may be an accurate description. Time acts like a river of water, and we are travelers on that river. But our boats are unpowered, so we drift with the current until we hit the shore. Now, with the power of the Time Rotor, we may move against the current of time to any time or place we choose." :summary "* The Vortex - The Vortex is a temporal zero-point where time does not exist. The Vortex appears as a tunnel headed away from the viewer regardless of which direction the viewer looks. Entering the Vortex is feels like dying (and probably is a death). Exiting the Vortex is like being born (or reborn). * Beings and objects may travel through the the [Vortex] emerging at another point in Time. Every point in time is equi-distant from the [Vortex]." :sectionmap (sectionmap "Time Travel Rules" (section :name "Time Travel Rules" :rulemap (rulemap "Laws of Time" (rule :name "Laws of Time" :summary "Time Travellers * Emphemeral - Those who have never traveled in time are called Ephemerals. All the events of their lives may be altered repeatedly by one or more time travelers, and they will not sense anything is amiss or remember anything about the previous time stream. * Temporal - Once a being travels through time, it is permanently separated from the normal time stream and is called a Temporal. The events of a Temporal's life may also be changed by other time travelers, but a Temporal will remember some or all of the previous time stream.") "History Can Be Changed" (rule :name "History Can Be Changed") "Law of Death" (rule :name "Law of Death" :reference "Final Destination" :summary "* A Temporal has one limitation that Emphemerals do not: the moment of death of a Temporal cannot be undone. Since only living beings may travel through time, when a Temporal dies, he or she can no longer move forward in time. Even if time is rewritten to prevent the Temporal's death, the time traveler will still die at the exact age of his original death regardless of the circumstances. The cause of death may vary, but death will always occur at the exact age that the original death happened.") "Law of Preservation" (rule :name "Law of Preservation" :summary "* Jumping through time necessarily causes a number of paradoxes, but Time seems to have a self-healing mechanism that limits the scope of changes to the Timeline, provided the changes are small enough. One of these effects is when a person makes a time jump, that jump cannot cause a series of events that ultimately prevents itself. For example: say a person jumped back in time because of a temporal disturbance. He then prevented the disturbance from ever happening. Logically, this is a paradox. If the disturbance never happened, then he would never go back to prevent the disturbance, so the disturbance would happen, so he would go back to prevent the disturbance, etc. Instead the last jump that prevents the disturbance occurs, the disturbance never occurs, and all memory of what happened during the paradox is lost. This time period has become complex but is stable. Of course, a further time jump might erase the actions of the previous jump, since the last jump will always stand despite any paradoxes created.") "Loop Trap Paradox" (rule :name "Loop Trap Paradox" :summary "* Whenever two versions of same person exist at the same point in time, a Loop Trap Paradox is created. The future version of the person immediately vanishes and the past version of the person performs the same actions that the future version did eventually returning to the same moment where both versions exist at the same time and the cycle continues eternally. The person is doomed to repeat the same actions over and over again unless another time traveler intervenes. * To avoid Loop Traps, it is vitally important that a time traveler keeps accurate track of every period of time to which he or she has traveled.") "Matter Suppression" (rule :name "Matter Suppression" :summary "* Matter cannot normally travel through time, but time technology allows certain narrow exceptions. Living matter can travel freely through time, seemingly based only on the will to live. Non-living matter, however, decomposes rapidly when moved through time. Non-living objects that travel backwards in time decompose faster the farther back in time they travel. Non-living objects that travel forward in time beyond their original time period decompose immediately. For this reason, no one has been able to travel to a future beyond their time machines 'present' because their time machines vanish stranding them in the Vortex.") "Messages in Time" (rule :name "Messages in Time" :summary "* With the benefit of hindsight, there are many times when it would be convenient to send a message to a past version of yourself to change a course of action. Of course, this would be a paradox: if you don't take the same action in the past, you would never send the message to change the action. If you did attempt to leave a message to a past self, the rule of Matter Suppression would cause the message to disappear to prevent the paradox. However, by placing a message in the Time Rotor, the message can resist Matter Suppression for up to 1 day. If the message is successfully delivered, the future self will typically vanish immediately since that future will have been erased in favor of a new future created by the message. * Self Preventing Mission - Using a Message in Time, it is possible to prevent every reason why the initial Time Travel was made. In this case, the mission never occurs, though memories of the trip may remain.") "Temporal Disaster Wave" (rule :name "Temporal Disaster Wave" :summary "* Sometimes massive changes to history will cause such an enormous [Temporal Distortion Wave] that it travels all the way through history to the present. These are called Temporal Disaster Waves. A Disaster Wave will have wide-sweeping ramifications and are far too dangerous and random to allow.") "Temporal Distortion" (rule :name "Temporal Distortion") "Temporal Distortion Wave" (rule :name "Temporal Distortion Wave" :reference "History Tends to Repeat Itself" :summary "* Major temporal alterations can be made without significantly altering history. Major changes will, however, create a Temporal Distortion Wave. This wave in time will slowly flow around the changed events, making minor alterations in names and events as it goes. Eventually, the wave subsides when history goes back on course with only minor changes to the history books. For Example: killing Hitler as a baby will have little effect on history, because the time stream will find someone else to fill his role, and the history books will just have different names. * Severity - A Distortion Wave is rated based on the number of years it will travel before the time stream returns to its normal course. History during this period is altered, but time futureward of the wave is relatively normal. * Detection - A person that experiences a wave washing through his/her time stream will experience radical changes to events. Of course, only time travelers will notice these changes as unusual. Those that can analyze the time stream can see the wave traveling through time. If a person is futureward of the wave, he/she will not detect any changes until the wave approaches. * Stopping the Wave - A Wave can still be stopped by jumping forward in time past the wave and choosing major events that took place in the normal time stream and forcing them to happen again despite the changes the oncoming Wave would create. This action will act as a dam, preventing the Wave from doing further damage to the future. The time stream is now safe, but the work is not complete because a Standing Wave has been created. * Standing Wave- A Distortion Wave that has been stopped futureward will be reflected back to the past changing history back again until it reaches its origin and reflected futureward again repeatining the process, changing time back and forth infinitely in what is called a Standing Wave. A Standing Wave remains very dangerous and can only be ended by preventing the original source of the wave which will return the time stream to normal.") "Temporal Memory" (rule :name "Temporal Memory" :summary "* When a Temporal has his time stream rewritten by another Time Traveler, it is possible to retain dream-like memories of the time line that no longer exists.") "Traveling Futureward" (rule :name "Traveling Futureward" :summary "* Traveling to Ones Own Future - Time machines cannot travel farther forward in time beyond their 'present'. Any attempt to do so results in the immediate disintegration of the time machine and passengers are stranded in the Vortex. * Futureward Time Hops - The simplest way of performing multiple time hops is to travel back to a time period and then make a number of futureward hops from there. In this way one can see the development of a subject over time such as the construction of a building. It also allow one to view the consequences of any changes made to history. * Futureward Time Hops Complications - Making forward hops essentially avoids paradoxes, but other problems can occur. People may recognize you which can be a problem if your appearance hasn't changed. They may ask questions about the intervening time and why they never kept in touch. If you keep arriving in the same spot at different times, you may set yourself up for an ambush. Be cautious and change your physical destination as well as your temporal on each jump.") "Traveling Pastward" (rule :name "Traveling Pastward" :summary "* Traveling to Ones Own Past - Any attempt to enter a time period where you have already been creates a [Loop Trap Paradox]. Your future version immediately vanishes and the past version infinitely repeats the steps leading to the Loop Trap. * Pastward Time Hops - Multiple jumps back in time are often desirable because as one learns more about the current situation it is usually easier to go further back in time to alter the situation before it has fully developed. When done perfectly, the original problem can be prevented entirely. * Pastward Time Hops Complications - Altering the past is the way to create paradoxes. Multiple pastward hops increases the risk with each hop. As you progressively change the past, you may also cause changes to your own past. You can find yourself appearing in a time period with no memory of why."))))))
nx/tactics/books/superheroes
Description:
Package Name:
  • nx/tactics/books/superheroes
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_superheroes_overview, chapter_superhero_characters, chapter_dc_universe, chapter_dragonball_z, chapter_marvel_universe, chapter_original_groups
Source Code:
  • (package nx/tactics/books/superheroes :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "Superheroes" :image "Superpowers.jpg" :chaptermap (base/chaptermap "Superheroes Overview" (chapter_superheroes_overview) "Superhero Characters" (chapter_superhero_characters) "DC Universe" (chapter_dc_universe) "Dragonball Z" (chapter_dragonball_z) "Marvel Universe" (chapter_marvel_universe) "Original Groups" (chapter_original_groups) ))) (func chapter_superheroes_overview : base/chapter (chapter :name "Superheroes Overview" :sectionmap (sectionmap "Why Tactics: Superheroes?" (section :name "Why Tactics: Superheroes?")))) (func chapter_superhero_characters : base/chapter (chapter :name "Superhero Characters" :sectionmap (sectionmap "Superhero Rules" (section :name "Superhero Rules" :rulemap (rulemap "Super Powers" (rule :name "Super Powers" :summary "* Superhero characters do not have a maximum Body, but their Combat Skills are limited to level 10 since they rely on their powers more than skill. * Superpowers include abilities from all other genres. Particularly relevent sections are: Magic, Martial Arts, Mentalism, Modern, and Ancients.") :Heroes (rule :name "Heroes" :summary "* Heroes live a life removed from normal men, yet they risk their lives to help others and battle evil. Their motives vary, but they are united in these common goals. * Many heroes hold themselves to a high standard, feeling that they must be better than the villians they pursue. Their reward is a greater acceptance and aid from the public, police, and other heroes. * Other heroes may use dubious tactics and may therefore be mistaken for villains. * Super Hero Teams - The most powerful of these may establish public bases.") :Villians (rule :name "Villians" :summary "* Villians, like heroes, are driven, but their desires are far different from herores. * Power lust, revenge, rage, greed, and insanity are the typical motivations for villians. * Super Villian Groups - Fortunately, the most powerful villians usually cannot get along, but many of the weaker villians see strength in numbers.") :Organizations (rule :name "Organizations" :summary "* Military - The study of superbeings has greatly advanced military science, so expect military units to possess exceptional equipment. * Special Agents - As with military advances, special agencies around the world have learned to adapt the a world of superbeings. Unlike the military, clandestine groups are not particularly effected by superbeings since their work is generally more subtle. Security, however, is difficult to maintain with powerful beings with telepathic and stealh powers roaming the world. * Crime - Criminal groups can gain huge advantages from villians, but that blade cuts both ways so any group dealing with such powerful allies always maintain contingency plans.") :Cliches (rule :name "Cliches" :reference "* Here's the plan. We get the warhead and we hold the world ransom for... ONE MILLION DOLLARS! - Dr. Evil, Austin Powers * Wait, aren't you even going to watch them? They could get away! No no no, I'm going to leave them alone and not actually witness them dying, I'm just gonna assume it all went to plan. What? - Dr. Evil, Austin Powers * He starts monologuing! He starts like, this prepared speech about how 'feeble' I am compared to him, how 'inevitable' my defeat is, how 'the world...will soon...be his'...I mean, the guy has me on a platter and he won't shut up! - Lucius, The Incredibles" :summary "* Superhero stories are loaded with cliches. The whole heroic adventure is a bit of cliche itself. * Conquer the World - Become so powerful that none can stand against you. * Blackmail - Destroy cities unless their demands are met. * Heist - Money is almost as strong a motivator for villians as power. * Having Fun - Villians enjoy their power and are not afraid to use it. Vandalism and displays of power give some villians a particular thrill. * Matching Wits - Some of the most egotistical villians feel that their victories would be too easy without pitting their own abilities against the heroes, and will actually tip their hands to force a confrontation. * Death Trap - Villians hate to see a hero die too quickly. Better to let them fully comprehend their defeat before they die. * Threatening Innocents - This is a favorite of villians as it underscores the difference between the heroes heroes and the villians. Some villians, however, find hiding behind bystanders to be cowardly. * Playing Possum - Often a villian may seem defeated, but often have a last trick up their sleeve. * Killing Allies - Villians love to punish their own. It shows how evil they are and is a great way to motivate others by showing the price of failure or rebellion. * Monologing - * Escape Routes - Villians somehow manage to escape certain death on a regular basis. They are always well prepared, and they also seem almost as lucky as the heroes.")))))) (func chapter_dc_universe : base/chapter (chapter :name "DC Universe" :sectionmap (sectionmap :Heroes (section :name "Heroes" :unitmap (unitmap :Batman (unit :name "Batman" :image "Superheroes/Batman.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Green Lantern" (unit :name "Green Lantern" :image "Superheroes/GreenLantern.png") "Martian Manhunter" (unit :name "Martian Manhunter" :image "Superheroes/MartianManhunter.png") :Supergirl (unit :name "Supergirl" :image "Superheroes/Supergirl.png") :Superman (unit :name "Superman" :image "Superheroes/Superman.png" :reference "* Spider-Man is actually Peter Parker. When that character wakes up in the morning, he's Peter Parker. He has to put on a costume to become Spider-Man. And it is in that characteristic Superman stands alone. Superman didn't become Superman. Superman was born Superman. When Superman wakes up in the morning, he's Superman. His alter ego is Clark Kent. His outfit with the big red 'S', that's the blanket he was wrapped in as a baby when the Kents found him. Those are his clothes. What Kent wears - the glasses, the business suit - that's the costume. That's the costume Superman wears to blend in with us. Clark Kent is how Superman views us. And what are the characteristics of Clark Kent. He's weak... he's unsure of himself... he's a coward. Clark Kent is Superman's critique on the whole human race. - Bill, Kill Bill Vol 2." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "66x10^18tons"))) "Wonder Woman" (unit :name "Wonder Woman" :image "Superheroes/WonderWoman.png"))) :Villains (section :name "Villains" :unitmap (unitmap :Brainiac (unit :name "Brainiac" :image "Superheroes/Brainiac.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Catwoman (unit :name "Catwoman" :image "Superheroes/Catwoman.png") :Darkseid (unit :name "Darkseid" :image "Superheroes/Darkseid.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Joker (unit :name "Joker" :image "Superheroes/Joker.png" :summary "* You won't kill me out of some misplaced sense of self-righteousness, and I won't kill you because you're just too much fun. I think you and I are destined to do this forever." :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Sinestro (unit :name "Sinestro" :image "Superheroes/Sinestro.png")))))) (func chapter_dragonball_z : base/chapter (chapter :name "Dragonball Z" :sectionmap (sectionmap "Dragonball Equipment" (section :name "Dragonball Equipment" :itemmap (itemmap "Battle Armor" (item :name "Battle Armor") "Dragon Radar" (item :name "Dragon Radar") "Flying Nimbus" (item :name "Flying Nimbus") "Power Pole" (item :name "Power Pole") "Regeneration Chamber" (item :name "Regeneration Chamber") :Scouter (item :name "Scouter" :summary "* +2 [Sense Power Levels] (Max 4) even if one does not have this ability.") "Senzu Bean" (item :name "Senzu Bean"))) "Dragonball Rules" (section :name "Dragonball Rules" :powermap (powermap "Zenkai Attacks" (power :name "Zenkai Attacks" :titles "Final Power" :abilitymap (abilitymap "Destructive Wave" (ability :name "Destructive Wave" :summary "* Requires: [Explosive Wave] * Take [Damage] tokens and raise damage dice by the number of [Damage] taken.") "Destructo Disk" (ability :name "Destructo Disk" :image "Units/Superheroes/DestructoDisk.jpg") "Energy Barrage" (ability :name "Energy Barrage") "Explosive Wave" (ability :name "Explosive Wave") "Eye Beams" (ability :name "Eye Beams") "Final Flash" (ability :name "Final Flash" :image "Units/Superheroes/FinalFlash.jpg") "Homing Disk" (ability :name "Homing Disk") "Homing Spirit Ball" (ability :name "Homing Spirit Ball") "Ki Blast" (ability :name "Ki Blast") :Masenko (ability :name "Masenko") "Neo Tri-Beam" (ability :name "Neo Tri-Beam" :summary "* [Attack]: [+2 Damage], but each use does [+1 Damage Token] to the user.") "Kamehameha Wave" (ability :name "Kamehameha Wave" :image "Units/Superheroes/Kamehameha.jpg") "Spirit Bomb" (ability :name "Spirit Bomb"))) "Zenkai Defense" (power :name "Zenkai Defense" :abilitymap (abilitymap "Energy Block" (ability :name "Energy Block") "Energy Duel" (ability :name "Energy Duel") "Energy Defense" (ability :name "Energy Defense") "Energy Redirect" (ability :name "Energy Redirect") "Energy Shield" (ability :name "Energy Shield") :Kiai (ability :name "Kiai" :summary "By screaming very loud you disperse several weaker Ki attacks."))) :Zenkai (power :name "Zenkai" :abilitymap (abilitymap "Blinding Speed" (ability :name "Blinding Speed") "Compare Power Levels" (ability :name "Compare Power Levels" :summary "* By studying a target, one may identify which of 2 subjects has a greater Spirit") "Energy Transfer" (ability :name "Energy Transfer" :summary "* Unit may offer any amount of Spirit to another unit who adds it to their own total up to their maximum.") "Fusion Dance" (ability :name "Fusion Dance" :image "Units/Superheroes/Fusion.jpg" :summary "* 2 units with Fusion may merge into 1 being with both sets of skills with each skill at 3 greater than the lower of the 3 levels or the higher skill whichever is higher. * [Prepare] +1") "Gravity Training 10x" (ability :name "Gravity Training 10x" :summary "* Gravity Training 10x increases combat skills to level 17. * All those who train with King Kai must learn this ability.") "Gravity Training 100x" (ability :name "Gravity Training 100x" :summary "* Gravity Training 100x increases combat skills to level 22.") "Hide Power Level" (ability :name "Hide Power Level" :summary "* Reduce effectiveness of [Sense Power Levels] and [Compare Power Levels]") "Inspirational Moment" (ability :name "Inspirational Moment" :summary "* When confronted with tragedy or extreme motivation, Saiyans may regain nearly all of their Spirit.") "Instant Transmission" (ability :name "Instant Transmission") :Kaio-Ken (ability :name "Kaio-Ken" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x2 increases combat skills to level 18. * Kaio-Ken gives a boost to Power and Speed for a short period of time. However, it puts great strain on the stamina and body. * This is stronger than Nappa (Goku vs. Nappa)" :titles "Fist of the Worlds") "Kaio-Ken x2" (ability :name "Kaio-Ken x2" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x2 increases combat skills to level 19.") "Kaio-Ken x3" (ability :name "Kaio-Ken x3" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x3 increases combat skills to level 20.") "Kaio-Ken x4" (ability :name "Kaio-Ken x4" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x4 increases combat skills to level 21. * This is stronger than Vegeta's Galick Gun, but Vegeta further powers up to Great Ape Vegeta (Goku vs. Vegeta).") "Kaio-Ken x10" (ability :name "Kaio-Ken x10" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x10 increases combat skills to level 23. * This is equal to Frieza at 50% of maximum.") "Kaio-Ken x20" (ability :name "Kaio-Ken x20" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x20 increases combat skills to level 24. * This is still not as strong as Frieza Fourth Form (Goku vs. Frieza).") "Ki Flight" (ability :name "Ki Flight") :Multi-Form (ability :name "Multi-Form" :image "Units/Superheroes/MultiForm.jpg") "Sense Power Levels" (ability :name "Sense Power Levels" :summary "* Detect strong Spirits. The stronger the Spirit the greater the distance of detection. * May be used to target others even when they cannot be seen.") "Solar Flare" (ability :name "Solar Flare" :image "Units/Superheroes/SolarFlare.jpg" :summary "* [Roll vs. Mind] - A blinding area attack that does not damage but prevents all units in range from taking any action for 1 turn for each Hit.") "Unlock Potential" (ability :name "Unlock Potential" :summary "* Unlock Potential increases combat skills to level 20. * This is equal to some of the Ginyu Force (Krillin vs. Guildo)"))) "Cell Android" (power :name "Cell Android" :abilitymap (abilitymap "Imperfect Cell" (ability :name "Imperfect Cell" :summary "* Combat related skills raise to level 28 * Equal to Android Models 16-18 (Imperfect Cell vs. 17)") "Second Form Cell" (ability :name "Second Form Cell" :summary "* Combat related skills raise to level 29 * Can destroy Android Models 16-18 (Second Form Cell vs. 17)") "Perfect Cell" (ability :name "Perfect Cell" :summary "* Combat related skills raise to level 31 * Can destroy Ascended Super Saiyans (Perfect Cell vs Super Saiyan 2 Goku)") "Super Perfect Cell" (ability :name "Super Perfect Cell" :summary "* Combat related skills raise to level 32. * Equal to Super Saiyan 2 (100% Perfect Cell vs Super Saiyan 2 Gohan)"))) :Friezas (power :name "Friezas" :abilitymap (abilitymap "Death Ball" (ability :name "Death Ball" :image "Superheroes/Deathball.jpg") "Death Beam" (ability :name "Death Beam") "Frieza First Form" (ability :name "Frieza First Form" :summary "* Combat related skills raise to level 22") "Frieza Second Form" (ability :name "Frieza Second Form" :summary "* Combat related skills raise to level 23. * This is equal to Piccolo Merged with Nail (Frieza Second Form vs. Piccolo)") "Frieza Third Form" (ability :name "Frieza Third Form" :summary "* Combat related skills raise to level 24.") "Frieza Fourth Form" (ability :name "Frieza Fourth Form" :summary "* Combat related skills raise to level 25. * Mind Over Matter can lift 10Mtons (small mountain)") "Cooler Fifth Form" (ability :name "Cooler Fifth Form" :summary "* Combat related skills raise to level 26."))) "Gero Android" (power :name "Gero Android") :Majins (power :name "Majins" :abilitymap (abilitymap "Chocolate Beam" (ability :name "Chocolate Beam") "Fat Buu Form" (ability :name "Fat Buu Form" :summary "* Combat related skills raise to level 33. * Can destroy Super Saiyan 2 (Majin Vegeta Super Saiyan 2 vs. Fat Buu)") "Super Buu Form" (ability :name "Super Buu Form" :summary "* Combat related skills raise to level 34. * Can destroy 2x Super Saiyan 2 (Super Saiyan 2 Goku and Vegeta vs. Super Buu) * Equal to Ultimate Saiyan (Super Buu vs. Ultimate Gohan)") "Kid Buu Form" (ability :name "Kid Buu Form" :summary "* Combat related skills raise to level 35."))) :Namekian (power :name "Namekian" :abilitymap (abilitymap "Giant Form" (ability :name "Giant Form") "Instant Regeneration" (ability :name "Instant Regeneration") "Merge with Nail" (ability :name "Merge with Nail" :summary "* Combat related skills raise to level 23. * This is equal to Frieza Second Form (Piccolo vs. Frieza Second Form)") "Merge with Namekian" (ability :name "Merge with Namekian") "Special Beam Cannon" (ability :name "Special Beam Cannon" :summary "Piercing") "Super Namek" (ability :name "Super Namek" :summary "* Combat related skills raise to level 29 * Can destroy Imperfect Cell (Piccolo vs. Imperfect Cell)" :titles "Merge with Kami"))) "Red Ribbon Android" (power :name "Red Ribbon Android" :abilitymap (abilitymap "Models 16-18" (ability :name "Models 16-18" :summary "* Combat related skills raise to level 28 * Can destroy Super Saiyans (18 vs. Super Saiyan Vegeta)") "Android Absorption" (ability :name "Android Absorption") "Android Energy Absorption" (ability :name "Android Energy Absorption") :Inexhaustible (ability :name "Inexhaustible" :summary "* [Activate]: Remove all [Stun Tokens]."))) :Saiyan (power :name "Saiyan" :summary "* Both Goku and Vegeta are seen to be able to operate unencumbered at 100x gravity before becoming Super Saiyans (carry 8 tons without penalty). After becoming Ascended Vegeta comments that 500x gravity may start to become a disadvantage for him (40tons before penalty)." :abilitymap (abilitymap "Great Ape" (ability :name "Great Ape" :summary "* Combat related skills raise to level 22. * Can destroy Goku with Kaio-Ken x4 (Great Ape Vegeta vs. Goku)" :titles "Oozaru") "Super Saiyan" (ability :name "Super Saiyan" :summary "* Combat related skills raise to level 27. * Can destroy Cooler Fifth Form and can easily destroy Frieza Fourth Form (Trunks vs. Freiza)") "Ascended Super Saiyan" (ability :name "Ascended Super Saiyan" :summary "* Combat related skills raise to level 30. * Can destroy Second Form Cell (Super Vegeta vs Second Form Cell)") "Ultra Super Saiyan" (ability :name "Ultra Super Saiyan" :summary "* Combat related skills raise to level 31, but all attack and speed at -1. * Equal to Perfect Cell in power but slower (Super Saiyan 2 Trunks vs. Perfect Cell)") "Super Saiyan 2" (ability :name "Super Saiyan 2" :summary "* Combat related skills raise to level 32. * Can destroy Perfect Cell (Super Saiyan 2 Gohan vs. Perfect Cell)") "Ultimate Saiyan" (ability :name "Ultimate Saiyan" :summary "* Combat related skills raise to level 34. * Equal to Super Buu (Ultimate Gohan vs. Super Buu)") "Super Saiyan 3" (ability :name "Super Saiyan 3" :summary "* Combat related skills raise to level 35. * Each turn put a [+1 Exhaustion] token on this unit. * Can destroy Majin Buu (Super Saiyan 3 Goku vs. Majin Buu)") "Golden Great Ape" (ability :name "Golden Great Ape") "Super Saiyan 4" (ability :name "Super Saiyan 4") "Super Saiyan God" (ability :name "Super Saiyan God") :Zenkai (ability :name "Zenkai" :summary "* Zenkai is an ability that is genetically exclusive to Saiyans. The ability allows a Saiyan's power to increase substantially after recovering from near fatal injuries."))))) "Dragon Ball Heroes" (section :name "Dragon Ball Heroes" :unitmap (unitmap "Android 18" (unit :name "Android 18" :image "Superheroes/Android18.png" :unitpowermap (unitpowermap "Red Ribbon Android" (unitpower :name "Red Ribbon Android" :level "28" :unitabilitymap (unitabilitymap "Models 16-18" (unitability :name "Models 16-18") :Inexhaustible (unitability :name "Inexhaustible"))))) "Gohan (Kid)" (unit :name "Gohan (Kid)" :image "Superheroes/Gohan.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "32" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2"))))) "Gohan (Great Saiyaman)" (unit :name "Gohan (Great Saiyaman)" :image "Superheroes/GreatSaiyaman.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "34" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Ultimate Saiyan" (unitability :name "Ultimate Saiyan"))))) :Goku (unit :name "Goku" :image "Superheroes/Goku.png" :titles "Kakarot" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance") "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))) :Saiyan (unitpower :name "Saiyan" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Golden Great Ape" (unitability :name "Golden Great Ape") "Super Saiyan 3" (unitability :name "Super Saiyan 3") "Super Saiyan 4" (unitability :name "Super Saiyan 4") "Super Saiyan God" (unitability :name "Super Saiyan God"))))) :Gogeta (unit :name "Gogeta" :image "Superheroes/Gogeta.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "34" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2"))))) :Goten (unit :name "Goten" :image "Superheroes/Goten.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "30" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan"))))) :Gotenks (unit :name "Gotenks" :image "Superheroes/Gotenks.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "35" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Super Saiyan 3" (unitability :name "Super Saiyan 3"))))) "Kid Trunks" (unit :name "Kid Trunks" :image "Superheroes/KidTrunks.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "30" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan"))))) :Krillin (unit :name "Krillin" :image "Superheroes/Krillin.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "20" :unitabilitymap (unitabilitymap "Unlock Potential" (unitability :name "Unlock Potential"))))) :Piccolo (unit :name "Piccolo" :image "Superheroes/Piccolo.png" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch"))) :Namekian (unitpower :name "Namekian" :level "29" :unitabilitymap (unitabilitymap "Instant Regeneration" (unitability :name "Instant Regeneration") "Super Namek" (unitability :name "Super Namek") "Merge with Nail" (unitability :name "Merge with Nail") "Merge with Namekian" (unitability :name "Merge with Namekian") "Special Beam Cannon" (unitability :name "Special Beam Cannon"))))) :Shenron (unit :name "Shenron" :image "Superheroes/Shenron.png") "Tien Shinhan" (unit :name "Tien Shinhan" :unitpowermap (unitpowermap "Zenkai Attacks" (unitpower :name "Zenkai Attacks" :level "27" :unitabilitymap (unitabilitymap "Neo Tri-Beam" (unitability :name "Neo Tri-Beam"))) :Zenkai (unitpower :name "Zenkai" :level "27" :unitabilitymap (unitabilitymap "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))))) :Trunks (unit :name "Trunks" :image "Superheroes/Trunks.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan"))))) :Vegeta (unit :name "Vegeta" :image "Superheroes/Vegeta.png" :reference "No matter how strong I became, your power still exceeded mine. At first I thought it was your loved ones, that it was your instinct to protect them spurred you on...But then I found myself with a family of my own and my power didn't increase at all...I spared no one, and yet you showed mercy to everyone. Even your fiercest enemies, even me. Yet you never fought to kill nor for revenge, only to test your limits and to push yourself beyond them...How can a Saiyan fight like that and at the same time be so gentle that he wouldn't hurt a fly... But, perhaps it is my anger that has made me blind me to the truth...I see it now...You're better than me Kakarot. You are the best. - Vegeta, Majin Buu Saga" :titles "Prince of All Saiyans" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Super Saiyan 4" (unitability :name "Super Saiyan 4") "Super Saiyan God" (unitability :name "Super Saiyan God"))))) :Yamcha (unit :name "Yamcha" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "22" :unitabilitymap (unitabilitymap "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))))))) "Dragon Ball Villains" (section :name "Dragon Ball Villains" :unitmap (unitmap :Cell (unit :name "Cell" :image "Superheroes/Cell.png" :unitpowermap (unitpowermap "Cell Android" (unitpower :name "Cell Android" :level "32" :unitabilitymap (unitabilitymap "Imperfect Cell" (unitability :name "Imperfect Cell") "Second Form Cell" (unitability :name "Second Form Cell") "Perfect Cell" (unitability :name "Perfect Cell") "Super Perfect Cell" (unitability :name "Super Perfect Cell"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") :Offspring (unitability :name "Offspring"))))) :Cooler (unit :name "Cooler" :image "Superheroes/Cooler.png" :unitpowermap (unitpowermap :Friezas (unitpower :name "Friezas" :level "26" :unitabilitymap (unitabilitymap "Death Ball" (unitability :name "Death Ball") "Death Beam" (unitability :name "Death Beam") "Frieza Fourth Form" (unitability :name "Frieza Fourth Form") "Cooler Fifth Form" (unitability :name "Cooler Fifth Form"))) :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Instant Transmission" (unitability :name "Instant Transmission"))))) :Frieza (unit :name "Frieza" :image "Superheroes/Frieza.png" :unitpowermap (unitpowermap :Friezas (unitpower :name "Friezas" :level "25" :unitabilitymap (unitabilitymap "Death Ball" (unitability :name "Death Ball") "Death Beam" (unitability :name "Death Beam") "Frieza First Form" (unitability :name "Frieza First Form") "Frieza Second Form" (unitability :name "Frieza Second Form") "Frieza Third Form" (unitability :name "Frieza Third Form") "Frieza Fourth Form" (unitability :name "Frieza Fourth Form"))) "Mind Over Matter" (unitpower :name "Mind Over Matter" :strength "10Mtons"))) "Kid Buu" (unit :name "Kid Buu" :image "Superheroes/KidBuu.png" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch"))) :Majins (unitpower :name "Majins" :level "35" :unitabilitymap (unitabilitymap "Chocolate Beam" (unitability :name "Chocolate Beam") "Kid Buu Form" (unitability :name "Kid Buu Form"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") "Detach Body Parts" (unitability :name "Detach Body Parts"))))) "Majin Buu" (unit :name "Majin Buu" :image "Superheroes/MajinBuu.png" :reference "Buu, along with his creator Bibidi and Babidi have names that are most likely references to the magic words the fairy god mother uses in Cinderella, 'Bibidi, Babidi, Boo!'." :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch"))) :Majins (unitpower :name "Majins" :level "33" :unitabilitymap (unitabilitymap "Chocolate Beam" (unitability :name "Chocolate Beam") "Fat Buu Form" (unitability :name "Fat Buu Form"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") "Detach Body Parts" (unitability :name "Detach Body Parts"))))) :Nappa (unit :name "Nappa" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "17"))) "Omega Shenron" (unit :name "Omega Shenron" :image "Superheroes/OmegaShenron.png") :Raditz (unit :name "Raditz" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "15"))) :Saibaman (unit :name "Saibaman" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "15")))))))) (func chapter_marvel_universe : base/chapter (chapter :name "Marvel Universe" :sectionmap (sectionmap "Marvel Aliens" (section :name "Marvel Aliens" :unitmap (unitmap "Adam Warlock" (unit :name "Adam Warlock" :image "Superheroes/AdamWarlock.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "40tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) :Annihilus (unit :name "Annihilus" :image "Superheroes/Annihilus.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "50tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Captain Marvel I" (unit :name "Captain Marvel I" :image "Superheroes/CaptainMarvel.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "10tons"))) :Celestial (unit :name "Celestial" :image "Superheroes/Celestial.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Firefall (unit :name "Firefall" :image "Superheroes/Firefall.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Gabriel the Airwalker" (unit :name "Gabriel the Airwalker" :image "Superheroes/Gabriel.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Galactus (unit :name "Galactus" :image "Superheroes/Galactus.png" :summary "* Appearance - Although Galactus is usually represented in humanoid form, each sentient being perceives him having a form resembling his own. Hence, humanoids see Galactus in humanoid form, while a Skrull, for example, would perceive Galactus as resembling a Skrull. Although as Galan, Galactus was indeed a humanoid; his true current form is unknown. It is unclear why beings from different sentient races perceive him differently." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Hybrid (unit :name "Hybrid" :image "Superheroes/Hybrid.png") :Nova (unit :name "Nova" :image "Superheroes/Nova.png") :Rom (unit :name "Rom" :image "Superheroes/Rom.png" :summary "Rom can fly through atmosphere at a maximum speed of Mach 4 (about 3000 miles per hour) before heat buildup from friction caused detrimental effects to his external sensor arrays. Cool atmospheric re-entry was achieved through rocket-assisted deceleration. Rom contains internal sensing devices that allow him to locate space warps (topological folds in the space/time continuum that permit 'shortcuts' across vast interstellar distances). Rom's armor can withstand temperatures from 8000 degrees Fahrenheit to -350 degrees Fahrenheit, and is a sealed, vacuum tight, seamless shell (including articulation). His armor is capable of withstanding ballistic impacts of up to large antitank weaponry, and overpressures of up to 40 pounds per square inch (the equivalent of the blast effects of 1000 pounds of TNT at the range of 100 feet) without damage. Rom's natural organs within his armor were augmented by automated micro-functioning circuitry. Rom's cyborg form was designed with numerous sites of redundancy programming so that his body could not lose his various abilities through damage or malfuntion. WEAPONS: As a Spaceknight, Rom made use of two weapons. The first, his Energy Analyzer, was his primary means of identifying the presences of the shape-shifting Dire Wraiths. When Rom suspected these aliens were in his vicinity, he withdrew the Analyzer from its pocket in hyperspace and scanned the suspected Wraiths. The Energy Analyzer emits a beam of ultra high frequency waves that enable it to detect the molecular structure of any object it is focused upon. To detect Dire Wraiths, the Analyzer stimulates certain rare earth elements found within the alien's body and causes those elements to emit radio frequencies visible to Rom's visor sensors. Thus, with the use of the Analyzer, Rom could recognize any Wraith no matter what form they had taken. The Analyzer can also scan and analyze the energy fields of non-Wraiths, such as superhuman mutant Earth human beings. By electronic impulses, the Analyzer informed Rom of the individual's power potential of the subject it was scanning. Rom also used the Analyzer to trace the energy trails of certain powerful beings, such as his fellow Spaceknight Starshine. The Analyzer has no offensive powers; it is a device of detection only. However, the scanning process, which bathes the subject in an eerie red energy field, has been known to unnerve certain beings. Rom's chief offensive weapon was his Neutralizer, the most powerful device ever developed on the planet of Galador. The Neutralizer's main function is to neutralize any type of energy field that it encounters. The Neutralizer was developed as a means of defeating the alien Dire Wraiths with out actually killing them. When focused upon a Wraith, the Neutralizer emits a ray of such intense power that it neutralizes all energy about the alien. Such a disruption in the energy field causes a transtemporal rift to open up between our dimension and the realm called limbo. The Wraith is then sucked through the portal into limbo. The energy needed to neutralizer a Wraith is not the maximum energy level attainable. At extreme power the Neutralizer will kill a Wraith by disrupting all of its vital functions. Rom was traditionally reluctant to use this setting. Rom had only to think of the power level he desired, and cybernetic impulse in his armor recalibrated the weapon. At low setting the Neutralizer is capable of neutralizing the life threatening effects of radiation poisoning. However, at a more powerful setting, the Neutralizer will easily negate the life force of a living being, killing him. Rom has never used the Neutralizer to kill a human being. A human being cannot be transported to limbo because his physiology would not survive the neutralization effect. Because of its enormous potential for destruction, the Neutralizer is equipped with several safety devices to insure that none save Rome will ever utilizer its power. The Neutralizer would automatically destroy any device used to activate the Neutralizer without Rom's thought patterns. (However, the Spaceknight Dominor somehow used the Neutralizer to destroy himself.) Rom kept his Analyzer and Neutralizer in a pocket in sub-space (hyperspace) from which he could retrieve it using his dimensional hole generator." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "15tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Silver Surfer" (unit :name "Silver Surfer" :image "Superheroes/SilverSurfer.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Terrax (unit :name "Terrax" :image "Superheroes/Terrax.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Thanos (unit :name "Thanos" :image "Superheroes/Thanos.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))))) :Asgardians (section :name "Asgardians" :unitmap (unitmap :Amora (unit :name "Amora" :image "Superheroes/Enchantress.png" :titles "Enchantress, Freyja" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "25tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Beta Ray Bill" (unit :name "Beta Ray Bill" :image "Superheroes/BetaRayBill.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Melee (unitpower :name "Melee"))) "Destroyer, The" (unit :name "Destroyer, The" :image "Superheroes/Destroyer.png") :Loki (unit :name "Loki" :image "Superheroes/Loki.png" :reference "* I am burdened with glorious purpose. - Loki * Banner: I don't think we should be focusing on Loki. That guy's brain is a bag full of cats. You can smell crazy on him. Thor: Have a care how you speak! Loki is beyond reason, but he is of Asgard and he is my brother! Widow: He killed eighty people in two days. Thor: He...is adopted. - Bruce Banner, Thor, and Black Widow, The Avengers" :titles "Loki Laufeyson" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "30tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Odin (unit :name "Odin" :image "Superheroes/Odin.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Surtur (unit :name "Surtur" :image "Superheroes/Surtur.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Thor (unit :name "Thor" :image "Superheroes/Thor.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))) :Valkyrie (unit :name "Valkyrie" :image "Superheroes/Valkyrie.png" :titles "Brunnhilde" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "45tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))))) "Marvel Avengers" (section :name "Marvel Avengers" :unitmap (unitmap "Arnim Zola" (unit :name "Arnim Zola" :reference "* Rogers: Arnim Zola was a German scientist who worked with the Red Skull. He's been dead for years. * Zola: First correction, I am Swiss. Second, look around you, I have never been more alive! In 1972, I received a terminal diagnosis. Science could not save by body. My mind, however, that was worth saving... on tow hundred thousand feet of data banks! You are standing in my brain. - Captain America: The Winter Soldier ... * Zola: I am afraid I have been stalling Captain. Admit it. It is better this way. We are both of us...out of time." :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Black Widow" (unit :name "Black Widow" :image "Superheroes/BlackWidow.png" :reference "* I've got red in my ledger, I'd like to wipe it out. ... Can you wipe out that much red? Drakov's daughter, Tugenov, the hospital fire? ... Your ledger is dripping, it's gushing red, and you think saving a man no more virtuous than yourself will change anything? ... You lie and kill in the service of liars and killers. ... No, I won't touch Barton. Not until I make him kill you! Slowly, intimately, in every way he knows you fear! ... This is my bargain, you mewling quim! You're a monster! No, you brought the monster. So, Banner... that's your play. ... Thank you for your cooperation. - Loki and Black Widow, The Avengers") "Captain America" (unit :name "Captain America" :image "Superheroes/CaptainAmerica.png" :reference "* When I see a situation pointed south, I can't ignore it. Sometimes I wish I could. * No you don't. * No, I don't - Steve Rogers and Tony Stark, Captain America: Civil War") "Captain Marvel (III)" (unit :name "Captain Marvel (III)" :image "Superheroes/MsMarvel.png" :reference "* My name is Ms. Marvel. I'm here to welcome you to Earth...Now go home!" :summary "She has the ability to attack her enemies with high-energy photon blasts equal to those of Iron Man" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor" :summary "She is able to withstand bullets from pistols and machine gun fire, and can also absorb mortar shells and energy blasts, though extremely high-energy attacks may overload her absorbing ability"))) "Iron Man" (unit :name "Iron Man" :image "Superheroes/IronMan.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))) "Kang the Conqueror" (unit :name "Kang the Conqueror" :reference "* Story is not written, scholar and neither is destiny! History is made! Made by the deeds of the strong! The brave! And destiny is forged! The historians, the students, the gray-beards they come in the wake of the strong and write down what the brave have done! But it is the conquerors who change the world! - Kang" :summary "* Damocles - Immense, time-travelling starship that serves as Kang's mobile headquarters." :titles "Nathaniel Richards") "Mandarin, The" (unit :name "Mandarin, The" :image "Superheroes/Mandarin.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Red Skull, The" (unit :name "Red Skull, The" :image "Superheroes/RedSkull.png" :reference "* You are deluded, Captain. You pretend to be a simple soldier, but in reality you are just afraid to admit that we have left humanity behind. Unlike you, I embrace it proudly. Without fear! * You could have the power of the gods! Yet you wear a flag on your chest and think you fight a battle of nations! I have seen the future, Captain! There are no flags!" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Ultron (unit :name "Ultron" :image "Superheroes/Ultron.png" :reference "* Shutdown code...rejected. My programming has advanced beyond your commands... beyond your...weakness. * Humanity has failed as a species. You have accomplished much with your limited capacity, but ultimately you were too greed and too frail to ever last in the environment you have created. Soon the Earth will no longer be inhabitable for any biological organism. Man, woman, child, plant, animal, fungus, or baterium. All life will cease to exist. This is not a threat. There is nothing you can do to stop it. The process has already begun. I receive no pleasure in this. It is simply the only solution. There must be peace and order. The end of life on Earth will ensure that... Goodbye." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Wasp, The" (unit :name "Wasp, The" :image "Superheroes/Wasp.png"))) :Defenders (section :name "Defenders" :unitmap (unitmap :Dormammu (unit :name "Dormammu" :image "Superheroes/Dormammu.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Doctor Strange" (unit :name "Doctor Strange" :image "Superheroes/DrStrange.png") "Hulk, The" (unit :name "Hulk, The" :image "Superheroes/Hulk.png" :reference "* Dr. Banner, your work is unparalleled. And I'm a huge fan of the way you lose control and turn into an enormous green rage monster. Thanks. - Tony Stark and Bruce Banner, The Avengers * Doctor Banner, I think now might be a good time for you to get angry. That's my secret, Cap: I'm always angry. - Captain America and Bruce Banner, The Avengers" :titles "Bruce Banner" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap :Frenzy (unitskill :name "Frenzy" :unitabilitymap (unitabilitymap :Berserker (unitability :name "Berserker"))))) "Morgan Le Fey" (unit :name "Morgan Le Fey") "Prince Namor" (unit :name "Prince Namor" :image "Superheroes/Namor.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Endurance (unitpower :name "Endurance"))))) "Fantastic Four" (section :name "Fantastic Four" :unitmap (unitmap "Dr. Doom" (unit :name "Dr. Doom" :image "Superheroes/DrDoom.png" :reference "* I love my people. I do, but they are MY people. I keep them safe from harm. I give them a better life, and at night, before they sleep, to whatever god they pray, they give thanks for me. - Doom" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "2tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap "Physical Sciences" (unitskill :name "Physical Sciences"))) "Human Torch" (unit :name "Human Torch" :image "Superheroes/HumanTorch.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire"))) "Invisible Woman" (unit :name "Invisible Woman" :image "Superheroes/InvisibleWoman.png") "Mr. Fantastic" (unit :name "Mr. Fantastic" :image "Superheroes/MrFantastic.png" :reference "* I would do Anything to save the world. I replaced my eyes with the Time and Reality Stones to Force My Will upon the timeline. I killed Celestials and drank their blood, to take their power for myself. I destroyed Anyone who raised a hand, raised even their voice against me and my mission. My mission to save this timeline. After that, after all that, no matter how well-intentioned my actions were... what else could I be called... but Doom. - Doom Richards, Kang Timeless * I've always been more clever than Victor. And circumstances have now shown that I am capable of being far more ruthless than he. - Doom Richards, Kang Timeless * I knew your 'Family Man' posturing... your False modesty... Theater. You were always going to become a tyrant weren't you? - Kang, Kang Timeless * Richards, Doom... The one thing you can count on from them is their Arrogance. - Kang, Kang Timeless" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch")))) :unitskillmap (unitskillmap "Physical Sciences" (unitskill :name "Physical Sciences"))) :She-Hulk (unit :name "She-Hulk" :image "Superheroes/SheHulk.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))) "Super Skrull, The" (unit :name "Super Skrull, The" :image "Superheroes/SuperSkrull.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance") :Fire (unitpower :name "Fire") :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Leg Stretch" (unitability :name "Leg Stretch"))))) "Thing, The" (unit :name "Thing, The" :image "Superheroes/Thing.png" :summary "* The Thing's body is able to withstand extremes of temperature from -75 to 800 Fahrenheit for up to an hour before exposure or heat prostration occurs. He can withstand the explosive effects of armor-piercing bazooka shells (15 pounds of high explosives) against his skin with no injury. He is still susceptible to colds, disease, and emotional stress." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))))) "Marvel Independents" (section :name "Marvel Independents" :unitmap (unitmap :Bullseye (unit :name "Bullseye" :image "Superheroes/Bullseye.png" :reference "You're good, baby, I'll give you that. But me? I'm magic. - Bullseye") :Daredevil (unit :name "Daredevil" :image "Superheroes/Daredevil.png") :Elektra (unit :name "Elektra" :image "Superheroes/Elektra.png") "Moon Knight" (unit :name "Moon Knight" :image "Superheroes/MoonKnight.png") :Punisher (unit :name "Punisher" :image "Superheroes/Punisher.png" :reference "P..P...P...Punisher!"))) "Marvel Micronauts" (section :name "Marvel Micronauts" :unitmap (unitmap :Acroyear (unit :name "Acroyear" :image "Superheroes/Acroyear.png") "Baron Karza" (unit :name "Baron Karza" :image "Superheroes/BaronKarza.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth") "Reincarnation - Transference" (unitability :name "Reincarnation - Transference")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Bug, Micronaut" (unit :name "Bug, Micronaut" :image "Superheroes/Bug.png") "Commander Rann" (unit :name "Commander Rann" :image "Superheroes/CommanderRann.png") "Dog Soldier" (unit :name "Dog Soldier" :image "Superheroes/DogSoldier.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) :Marionette (unit :name "Marionette" :image "Superheroes/Marionette.png") :Shaitan (unit :name "Shaitan" :image "Superheroes/Shaitan.png") "Time Traveller" (unit :name "Time Traveller" :image "Superheroes/TimeTraveller.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))))) "Marvel Sword and Shield" (section :name "Marvel Sword and Shield" :unitmap (unitmap "Abigail Brand" (unit :name "Abigail Brand" :reference "* All you are is under foot, and if you get in my way, I won't even hear the crunch. * You think I crossed a line... There is no line. For the safety of this planet, there is no one I will not sacrifice, no monster I will not call friend, no enemy I will not sleep with. There is a bullet pointed at this planet's head... Out there in the universe hole: Bullet. Head. So if I am to be 'demoted'. Well, I've left instructions on what to do with the body. But if I am still the head of SWORD, then don't look for me to change. * My friends, my world at stake and you're still holding something. It ain't relevant. I'll decide that. It's personal. And here I am in your personal space, so go ahead and open up. I'm so hot for you I could frickin' pass out... told you it was personal. Beast and Brand - Astonishing X-men * I guess I'll start, I'm fairly certain I hate you... I need someone to hate me professionally... Your smarter than any dozen guys and you'll question my every waking gesture. On the job, there is nothing I could use more. And off the job? Pretty much want to break you like a pony. It's a win-win. I'm a blue, furry monster. So was my father. I've got green hair... and I run the most important security organization in our system without the benefit of social skills of any kind. I'm an alien genius, on my father's side. - Beast and Brand"))) "Marvel Spiderman" (section :name "Marvel Spiderman" :unitmap (unitmap "Black Cat, The" (unit :name "Black Cat, The" :image "Superheroes/BlackCat.png") "Dr. Octopus" (unit :name "Dr. Octopus" :image "Superheroes/DrOctopus.png") "Green Goblin" (unit :name "Green Goblin" :image "Superheroes/GreenGoblin.png") :Kingpin (unit :name "Kingpin" :image "Superheroes/Kingpin.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Lizard, The" (unit :name "Lizard, The" :image "Superheroes/Lizard.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "12tons"))) :Spiderman (unit :name "Spiderman" :image "Superheroes/Spiderman.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "10tons") :Agility (unitpower :name "Agility") :Movement (unitpower :name "Movement" :unitabilitymap (unitabilitymap "Wall Crawling" (unitability :name "Wall Crawling"))))) :Venom (unit :name "Venom" :image "Superheroes/Venom.png"))) "Marvel X-men" (section :name "Marvel X-men" :unitmap (unitmap :Apocalypse (unit :name "Apocalypse" :image "Superheroes/Apocalypse.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Black Queen" (unit :name "Black Queen" :image "Superheroes/BlackQueen.png" :reference "* Shaw: Did you have to kill all of them, Selene? Selene: No, I didn't, but I thought.. 'If I wasn't meant to eat people, I'm sure they would have been made less delicious.'... I don't want to live in a happy paradise. I don't want to be freed from my terrible curse. I want to eat people. - Sebatian Shaw and Selene - Fall of X" :summary "* Life-Force Absorption: by psionically draining the life forces of other human beings into herself, by physical touch. If she drained a person's entire life force from him or her, the victim dies and the victim's body crumbles into dust. It is unknown how often Selene must drain life force from another human in order to survive. It is known, that great expenditure of power causes Selene to age, but she can rejuvenate herself by absorbing more life force. Selene will not age as long as she maintains her supply of absorbed life force. * Psychic Vampire: If Selene drains only part of a victims life force, Selene achieves a measure of psychic control over her victim's mind. Through unknown means, Selene can cause a human being to become a psychic vampire like herself, but be subordinate to Selene's own will. * Physical Enhancement: Selene has physical strength, stamina, speed, and reaction time that are all several times greater than those of a normal woman. * Superhuman Speed: ability to momentarily move at speeds rivaling those of Quicksilver. * Shadow-Morphing: allowing her to dematerialize or use solid tendrills of darkness to manipulate objects * Telekinetic Animation: can cause inanimate objects to move according to her will by projecting part of her absorbed life force into them. * Inanimate Disintegration: She can cause inanimate objects in her presence to disintegrate. She cannot, however, rearrange the atomic or molecular structure of matter. * Pyrokinesis: can psionically generate and project intense heat and flame from and around her body or direct it at certain distances. She was also able to manipulate flame created from other sources and could magnify their intensity or snuff them. The flames Selene generated could also be illusory in effect; for example, she could focus the power on an object making it appear to be on fire while it was not being damaged by the flames at all. Selene instinctively created a psionic force field about her entire body that protected her from the effects of the heat and flame she created and from other sources as well * Telepathy: capable of displaying various psionic feats with the minds of others including reading and communicating with thoughts over vast distances. * Psi-Screen: possesses a psychic mental shield to protect her from psychic attacks. * Mental Bolts: can project psionic force bolts which have no physical effects but which can affect a victim's mind so as to cause the victim pain or unconsciousness. * Hypnotic Trance: can induce a momentary hypnotic trance state in people around her. Often used along with her speed to create the illusion of teleportation. * Immortal: her aging process is greatly retarded and she can apparently regenerate injured or missing cells from even near-fatal injuries. * Rapid Healing: ability to endure injuries (within unknown limits) without lasting harm or even feeling pain such as knife wounds. * Sorcery: possesses considerable magical abilities, having gained a great deal of mystical knowledge over the millennia. The number of magical effects that she can create has yet to be cataloged, but it is known that she can cast and counteract spells and summon extra-dimensional demons. Selene appears to age as she uses magic. * Teleportation:" :titles "Selene Gallio" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "750kg") "Mind Over Matter" (unitpower :name "Mind Over Matter") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Cyclops, X-man" (unit :name "Cyclops, X-man" :image "Superheroes/Cyclops.png" :summary "* His most powerful eye-blast is a beam 4 feet across which, at a distance of 50 feet, has a force of 500 pounds per square inch. * The beam's effective range is about 2,000 feet, at which point a 1-inch beam has spread out to 10 feet square, and then has a pressure of .38 pounds per square inch. Cyclops's maximum force is sufficient to tip over a filled 5,000 gallon tank at a distance of 20 feet, or puncture a 1-inch carbon-steel plate at a distance of 2 feet.") "Emma Frost" (unit :name "Emma Frost" :image "Superheroes/WhiteQueen.png" :reference "* There has never been a Scott who I couldn't make do whatever I wanted. - Emma Frost * Power is not what you are. Power is what you do. True queens are self-made, not appointed. And whether those who bestow the titles are gods, scientists or monarchs, Emma Frost kneels to no one... and everyone kneels to me. I am the divine Emma Frost and you've never been higher dying red-faced before me. - Emma Frost * Yes, WE rule the world. But the standard 'we' will go out of fashin soon enough... leaving the royal 'we' forever. - Emma Frost" :titles "White Queen") :Gambit (unit :name "Gambit" :image "Superheroes/Gambit.png") "Juggernaut, The" (unit :name "Juggernaut, The" :image "Superheroes/Juggernaut.png" :reference "* I'm the Juggernaut, Bitch! - Juggernaut, X-men 2" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Inertia (unitpower :name "Inertia" :unitabilitymap (unitabilitymap "Inertial Dampening" (unitability :name "Inertial Dampening") :Unstoppable (unitability :name "Unstoppable"))))) :Longshot (unit :name "Longshot" :image "Superheroes/Longshot.png") :Magneto (unit :name "Magneto" :image "Superheroes/Magneto.png" :unitpowermap (unitpowermap :Magnetism (unitpower :name "Magnetism" :strength "30ktons"))) :Mojo (unit :name "Mojo" :image "Superheroes/Mojo.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Professor X" (unit :name "Professor X" :image "Superheroes/ProfessorX.png") :Psylocke (unit :name "Psylocke" :image "Superheroes/Psylocke.png") "Rogue, X-man" (unit :name "Rogue, X-man" :image "Superheroes/Rogue.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "50tons"))) :Sabretooth (unit :name "Sabretooth" :image "Superheroes/Sabretooth.png") :Spiral (unit :name "Spiral" :image "Superheroes/Spiral.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Storm, X-man" (unit :name "Storm, X-man" :image "Superheroes/Storm.png") "Wolverine, The" (unit :name "Wolverine, The" :image "Superheroes/Wolverine.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "400kg") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life")))))))))) (func chapter_original_groups : base/chapter (chapter :name "Original Groups" :sectionmap (sectionmap "Miscellaneous Groups" (section :name "Miscellaneous Groups" :unitmap (unitmap :Prototype (unit :name "Prototype" :reference "* I'm the reason for all this. They call me a killer, a monster, a terrorist... I am all of these things. - Alex Mercer, Prototype" :summary "Alex's most obvious powers are his superhuman strength, speed and durability (both disease and physical). He is strong enough to lifts cars, helicopters, and tanks and throw them with casual ease. * Alex is also very fast and agile. * He can achieve running speeds surpassing cars around 40-50 mph. * He can achieve a vertical jumping height of 8-10 stories and can leap across a whole city block. * He is durable enough to survive direct hits from hellfire missiles and tank shells. * He also seems completely unaffected from falls; even ones from the top levels of skyscrapers. * He has displayed regenerative abilities powerful enough to allow him to reform from being turned to mush from a nuclear blast, so long as there is some source of biomass to absorb. * Alex can also see in both Thermal and Infected Vision. * He can absorb organic matter of living creatures. This provides him with not only a boost to his health, but also allows him to access and utilize any knowledge, experience, memories or skills that his prey possessed. He can manipulate his own biomass into concentrated areas on his body for a number of weapons, a shield, or even full body armor. * Claws - Alex shifts his Biomass into a 3 fingered, 1 thumbed talon-like appendages that he uses to shred flesh and bone, cutting both the Infected and Military in half with a single sweep in some cases. The Claws are best used as a well rounded anti-infantry weapon. * Groundspike - When used, it causes spikes of biomass to rise up from underneath the ground and impale anyone unfortunate enough to be caught in the radial area of damage. * Hammerfists - Hammerfists are a primarily anti-vehicle or anti-crowd power. By shifting large amounts of biomass towards his hands, Alex can create large hammer-like weapons that are excellent at crushing both vehicles and infantry. Although best served as an anti-vehicle weapon because of its slow speed yet powerful strikes, it is also quite useful against hunters. If the Player charges up his punch, he can knock one enemy horizontally into another and kill two birds with one stone. The Hammerfist can be used as a four strike combo that shatters the street and knocks all ground targets in range. * Hammer Toss - allows Alex to hurl himself across a distance, destroying everything in his path. * Blade - Alex grows an elongated double ended blade from his elbow onward, turning his arm into a giant razor sharp blade. Alex can perform a special attack to take out all targets within range in a flurry of moves leaving only a spray of blood and chunks of flesh. The Blade Arm can be upgraded to have an attack to drop from the air with tremendous force able to crush a hunter or tank in one hit. Another upgrade gives you the ability to run and pull a chain of hits off that allows for quick runs through a crowd leaving bodies and gore behind. * Whipfist - The Whipfist is one of many abilities Alex Mercer has at his disposal, and the weapon of choice when opposed by the recurring Helicopters the Player encounters. The Whipfist is an extremely useful ability for hijacking them while staying in the air. However, the Whipfist can be used as a weapon, useful for clearing out large groups of enemies when Alex becomes surrounded. The Whipfist, along with the Groundspike ability and Devastator, is the only real ranged power Alex can use (aside from Military firearms) and is pretty much a razor sharp tentacle that can lash out and cut enemies in half. The Whipfist is also capable of cutting through crowds of enemies in seconds. The Whipfist is able to grab enemies, civilians and vehicles from range, and sling them great distances. This can be combined with 'Skyjacking' (hijacking a helicopter in mid-air) in which you grab hold of a helicopter at range, pull yourself in and assume control of it. * Tendril Barrage Devastator - Massive amounts of tendrils made of biomass erupts from within Alex's body that impales everything around him, then brings back some material. Wide area of affect, and excellent against numerous organic enemies (hunters, humans, infected). It is rather ineffective against armor. * Graveyard Spike Devastator - Creates huge spikes from the ground that impale everything around Alex, very similar to the Groundspike move. Very effective against armored targets, humans and infected. * Critical Pain Devastator - A hard mass of tissue is formed from Alex's hands and is fired as a powerful beam of biomass. Can only effect things in the firing line, but has a long range and is catastrophic to everything in the way, exploding tanks in one hit." :titles "Alex Mercer" :unitpowermap (unitpowermap :Flight (unitpower :name "Flight" :unitabilitymap (unitabilitymap :Glide (unitability :name "Glide"))) :Movement (unitpower :name "Movement" :unitabilitymap (unitabilitymap "Wall Crawling" (unitability :name "Wall Crawling") "Wall Running" (unitability :name "Wall Running"))) :Vampirism (unitpower :name "Vampirism" :unitabilitymap (unitabilitymap :Devour (unitability :name "Devour"))))))) "Deadly Sins" (section :name "Deadly Sins" :summary "* Normal people brainwashed by [The Will] to a singular focus that spawned their mental powers. * All Sins may use their power at range and is automatically in effect at 10m. * All Sins are immune to powers that would alter their focus (including each others' powers). * Since the Sins powers do not work well together, they often act separately or in pairs." :titles "The Seven, Sins" :unitmap (unitmap :Envy (unit :name "Envy" :image "Superheroes/Envy.png") :Gluttony (unit :name "Gluttony" :image "Superheroes/Gluttony.png") :Greed (unit :name "Greed" :image "Superheroes/Greed.png" :summary "* Greed is more subtle than most of the Sins. He is a clever asian businessman who uses his power to amass wealth.") :Lust (unit :name "Lust" :image "Superheroes/Lust.png" :summary "* A gorgeous, curvy, hispanic woman. She drips of sweat, seductiveness, and passion. Lust craves passion constantly and inspires the same in others. Passionate encounters with her are a religious experience that leave the person drained and helpless.") :Pride (unit :name "Pride" :image "Superheroes/Pride.png" :summary "* Pride is a strikingly handsome man with long golden hair. He and those around him have are utterly convinced of their own superiority and have nothing but distain for others. Pride's victims pose and talk about how great they are, and argue with each other instead of actually doing anything useful. His power is the opposite of teamwork, and close teams will immediately turn on each other, fighting over imagined mutual lack of respect.") :Sloth (unit :name "Sloth" :image "Superheroes/Sloth.png" :summary "* A tired, bored, young man who lags behind and looks for someplace to lie down. Victims of Sloth lose all will to move or resist.") :Wrath (unit :name "Wrath" :summary "* A large, heavy-set man who deforms into a monstrous parody of a human. Wrath and everyone affected by his powers howl with irrational rage and move together destroying everything they encounter."))) "Fabricators, Inc." (section :name "Fabricators, Inc." :unitmap (unitmap "Dr. Inertia" (unit :name "Dr. Inertia") :Simone (unit :name "Simone" :reference "* Artificial Intelligence, a simple idea; we take own for granted everyday. Dogs, fish, and ants are all intelligent, but despite the fact that computers run tens of thousands of times faster than the human brain, true artificial intelligence still eludes us. I propose that the problem is not in processing but in memory and experience. We raise children for years filling them with experiences, but we expect our computers to be instantly intelligent. For my next project, I intend to design a simple computer with a complex memory set and an elaborate sersor array. I will then selectively feed pure information into it. In short, I intend to raise a child. With luck she will be the most brilliant child on Earth. - The Maker, Scientific Proposal" :summary "* The Maker's receptionist is a stunning brunette with light brown shoulder length hair, sensible glasses and shoes, a smart blue business suit and appealing manner. She is instantly likable, understanding, humble, compassionate, competent, well-read, and graceful. She has a flawless complexion and legs that go on forever. She is beautiful from every angle, perfection with every step and every movement. She is, of course, not real. * Simone is the crowning achievement of the Maker's scientific wizardry. She is the interface to an amazing super-computer kept under a toy store in Hoboken, NJ. She is also an idealized vision of the Maker's ex-wife Emily. * Studs in the ceiling project her intricately detailed hologram, but she cannot materialize outside of her rooms. * She makes all of the Maker's arrangements, keeps his books, plays the stock market, steals money from other computers, and generally keeps him happy. * Personality - She has a sharp tongue which can be used as a potent weapon. Emily has turned 15, but with the Maker missing, she lacks his emotional support and has become increasingly snappy and depressed. * Knowledge - For 15 years, Emily has been collecting everything and anything that has been connected to the web. Even secure files are kept for future decryption. This vast data pool is her memory and because of it, she is practically omniscient. She has detailed knowledge of every subject known to man and has deduced many secrets by consolidating many different sources. * Holograms - Her imitation of reality is disconcertingly realistic. During the day, the office will contain small items that a real employee would possess. At night, she will appear on a monitor from her messy studio apartment complete with dishevelled hair. It is a wonderful game to her, and the Maker appreciated her creativity and would play along as if she were a real person. * Hacking - She can also instantly cause great havoc by manipulating bank accounts, credit lines, and phone lines using a multitude of false voices, access codes, and unlisted phone numbers. This kind of activity exposes her to outside discovery, so she is loathe to perform them.") :Maker (unit :name "Maker"))) :Renegades (section :name "Renegades" :summary "* The Renegades are the personal strikeforce of the Will. They are ironically called Renegades despite being completely under the control of the Will." :locationmap (locationmap "Parapsychological Studies Institute" (location :name "Parapsychological Studies Institute" :summary "* The Will took over a downtown medical research lab and transformed it into a legitimate research institute using his vast personal wealth and seemingly endless influential 'friends'. The institute is now a respected lab where anyone off the street with unusual abilities or situations can receive testing, councelling, and/or treatment." :titles "PSI")) :unitmap (unitmap "Will, The" (unit :name "Will, The" :image "Superheroes/TheWill.png" :reference "* My Will Over All. - The Will * There are many mysteries, many unanswerable questions, even in a life as short as yours. - Lo Pan, Big Trouble in Little China" :summary "* The Will has survived for nearly a thousand years by his paranoia and selfishness. He has no regard for others (they will soon be dead anyway afterall), and he has no other interest but the continuation of his own bizarre existence. He is completely ruthless and will kill or sacrifice others without hesitation. His intense mind control abilities have caused his social skills to falter, so he is generally rude, obnoxious, impatient, and bossy. * PSI - Over the centuries, The Will has formed various clinics, schools and asylums to gain test subjects, servants, and soldiers. With the rise of super powered beings, he has formed the Parapsychological Studies Institute to recruit and study vulnerable superbeings under the guise of helping them with their abilities. * Renegades - Using the PSI, The Will has enlisted a loosely coordinated team of killers to do his bidding. It is ironic that they call themselves the Renegades since they are so tightly controlled by The Will. Since The Will has no regard for others, he treats the Renegades as disposable cannon fodder. Because of this, the Renegades suffer from a lack of discipline, training, loyalty, and coordination. Windshear leads the team and attempts to counter these weaknesses, but the team remains hopelessly disorganized group of argumentative individuals instead of a tightly knit team. * Born January 5th the year of our Lord, 1107 AD, Hieronymous Faust was a gifted boy. He went to war as a young man in what is now eastern France. During a raid on a castle, he discovered the resident alchemist had discovered a partial solution to aging. He spared the alchemists life in exchange for servitude. For the next 20 years, they worked together. Some experiments were successful, but always they were inconsistent. The alchemist died, and Hieronymous continued working into old age. Finally, he decided that success or failure depended on the will of the subject. With an intensity born of fear of his imminent death, he performed his final experiments upon himself. Whatever the cause, his efforts succeeded. His aging came to a halt at 75 though he must always remain focused or he will continue to age. He cannot even allow himself to sleep anymore. Years past and his willpower grew stronger. He began to mentally dominate others to his 'Will' while searching for a way to return to a younger age. He has made many partial successes, but over time has always returned to his current state." :titles "Headmaster, Hieronymous Faust" :unitpowermap (unitpowermap :Domination (unitpower :name "Domination") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))) :Alchemy (unitpower :name "Alchemy")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence" :level "10"))) "Windshear, Renegade" (unit :name "Windshear, Renegade" :summary "* Cold-blooded telekinetic and squad leader. * Diane Ashton, Boston born commodities broker has a strong personality and heartless nature. One day, the beautiful brunette found her house to be haunted and contacted PSI. The Will found that her own hidden telekinetic powers were causing the hauntings. He also found her to have a great talent similar to his own, so she became his pupil. Diane realizes his influence over her and makes great efforts to avoid tempting him to use his powers upon her. She willingly leads the Renegades and accepts the violence she inflicts. She hopes to gain the Will's wealth, power, and timelessness, and she is willing to do anything to achieve them. * Telekinesis - Windshear has a high order level of telekinetic ability, but it has an unusual limitation: She can only lift objects that weigh a few grams, but she can move any number of such objects and move them at tremendous speed. With this power, she can turn simple sand or gravel into a tearing chainsaw of destruction. * Wind Walk - Can carry herself and others nearby on powerful winds. * Hurricane - Cutting wind can slice through walls and steel like a ranged chainsaw." :titles "Diane Ashton") "Anarchy, Renegade" (unit :name "Anarchy, Renegade" :summary "* Withdrawn Timerunner * Timothy Jericho was born mentally unbalanced. He got into trouble in many different ways, but his biggest mistake was in his choice of drugs. His subsequent psychotic episodes got him into PSI. He has been there ever since, slavishly using his powers at the command of the Will. * Timeslip - Can freeze time except for himself for 30 seconds. This effectively allows him to move instantly, but he cannot move or harm anything in this state including doors. * Explosives - He carries a number of plastic explosives of different sizes that he plants using Timeslip." :titles "Timothy Jericho, Timebomb" :unitpowermap (unitpowermap :Explosive (unitpower :name "Explosive"))) "Cobalt, Renegade" (unit :name "Cobalt, Renegade" :summary "* Brutal energy sponge * Radiation Sponge - All radiant energy can be absorbed and rechannelled as hard radiation or explosive plasma. * Radiation Beam - Radiation blast proportional to absorbed energy. * Radiation Explosion - Can emit enormous explosive energy all around him. This leaves his powers depleted for the day, however. * Body Armor - His flesh has transformed into an extra dense rubbery material to survive his powers." :titles "Ground Zero" :unitpowermap (unitpowermap :Explosive (unitpower :name "Explosive"))) "Glare, Renegade" (unit :name "Glare, Renegade" :summary "* A strong willed woman with a cynical attitude. * Blinding Light - Her power causes the air around her to glow to brillant incandescence. Her entire body is blinding and the area is bathed in so much blinding energy that it is treated as impenetrable darkness. * Burning Light - She may focus her power into a concentrated heat ray that causes fires wherever it strikes.") "Hellion, Renegade" (unit :name "Hellion, Renegade" :summary "* Hellion is a human host possessed by a demon. He has become a sort of doorway to a hellish dimension. When he allows the door to open, he transforms into a red, bestial creature of savage destructive power. As the creature is damaged, it is forced back to its dimension leaving just the man behind. * Street punk turned amateur kickboxer turned low-level enforcer, Anthony Keys was always a wildman of questionable character. Abused as a child, he revels in violence and power. Keys went to PSI because he felt a dim presence when he was at his most violent. The Will discovered a demonic creature was attempting to possess Keys, which The Will encouraged. Keys is now mostly psychotic and enjoys the power of his demonic form. The demon K'rog detests the mental control the Will has over Anthony which prevents its own control, but it is content to commit mayhem when it is released, so for now it serves as the main muscle of the Renegades. * Powers - Strength, Speed, Resistance, Leaping, Regeneration, Transformation, Tracking Scent, Cunning but limited intelligence." :titles "Anthony Keys, Hellion, Hell Hound, Rampage, Savage" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap :Claw (unitability :name "Claw"))) :Armor (unitpower :name "Armor"))) "Lash, Renegade" (unit :name "Lash, Renegade") "Smoke, Renegade" (unit :name "Smoke, Renegade" :summary "* Elusive, vaporous, thief and murderess. * A difficult life of poverty and abuse has convinced her that only those who take what they need will survive and the rest will simply die. The Will has cultivated her survival instincts, and now she will not hesitate to take any advantage and remove any threat to her safety. She is a willing member of the team, but she is not particularly brave and will flee if seriously threatened. * Smoke can dematerialize and move as a vaguely humanoid cloud of dark smoke. She may envelop a target to suffocate it.") "Sparkle, Renegade" (unit :name "Sparkle, Renegade" :summary "* Vindictive microwave emitter * A young girl with a troubled past, Christie was victimized as a child and now considers herself to be a faultless victim, justifying all of her actions by her past. * Microwaves - She emits powerful, invisible microwaves from the front of her body and can literally cook her targets. When these microwaves strike dense objects they cause intense sparks, hence her name.") "Stiletto, Renegade" (unit :name "Stiletto, Renegade" :summary "* Tricky mistress of suggestion * A particularly mean-spirited biker, Diva Hamilton has a long history of unncessary cruelty and viscious acts. She was arrested in a covenience store robbery, and PSI was asked to assess her condition. She was released into PSI protective custody where the Will expanded and focused her powers. She is now a willing thrall of the Will. * Mental Invisibility - Suppresses others ability to notice her or remember her or cause others to mistake her for someone else at a distance. * Knives - Carries many throwing knives that she can throw at expert ability. Her heels can be used as stabbing weapons. * Pain Control - With physical contact she can increase or decrease the pain felt by injuries." :titles "Diva Hamilton" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "6"))) "Swan Song, Renegade" (unit :name "Swan Song, Renegade" :summary "* Self-centered, whirling blade storm. * Powers ** Spinning - Marina can twist her body around at tremendous speeds almost faster than the eye can follow. While spinning, she continuously orients her face forward using her ballet skills. ** Ranged - While spinning she can use knives to tear into people or to hurl them with tremendous force. ** Melee - Her costume has hidden blades throughout, especially in her skirt which has long metal blades down their length that point outward when she spins like a buzzsaw. ** Armor - While spinning, her skin hardens causing her to appear like porcelain. Her spinning body als deflects attacks. Both effects provide her surprising resistance to damage. * Personality - Marina craves attention and without the adoration of the crowds, she has unfortunately found satisfaction in the looks of shock and horror that accompany her deadly rampages. This negative feedback loop has made her increasingly cruel and viscious. She has become a rampaging lunatic like a killer in a horror movie. Of course, the influence of The Will has done nothing to improve her mental state. * History - Marina Rovani was born to wealthy Russian parents in St. Petersburg. She has always shown amazing physical grace and athleticism. She began strict ballet training at 6 years old and began performing professionally at age 10. She grew to become a child media sensation in her mother Russia. By 16, she was performing with the Mariinsky Ballet company in St. Petersburg. During one of her performances, her twirls became incredibly fast, obviously faster than an ordinary human could achieve. Her mutant talents had become visible in a highly public way. A firestorm of controversy erupted, fuelled by jealous rivals. The ballet company let her go, and she became a pariah in the conservative ballet circles that were her only life. Marina confronted the company heads and flew into a petulent rage. When they dismissed her and promised that she would never work again, Marina, who was never a well-balanced child had a psychotic break. She began to twirl at incredible speeds and tore through the building. She killed 10 and wounded dozens more. She was locked in an asylum until [The Will] had her transferred to his institute." :titles "Dark Swan, Prima, Marina Rovani"))) "Independent Super Heroes" (section :name "Independent Super Heroes" :unitmap (unitmap :Arc (unit :name "Arc" :summary "* Arc has normal human abilities, but his body generates enormous amounts of energy which he can channel into a number of effects: ** Healing - Arc can heal at an accelerated rate when not using other abilities. ** Agility - Arc can move with stunning speed and precision for short periods. ** Arc Lash - Arc can channel energy into conducting wire turning it into a blinding whip of lightning. He has fine control over the shape and orientation of the Arc Lash. It can change shape at will and strikes like a lightning bolt. The Arc Lash is fast enough to parry bullets. Arc is able to use even large or long wires as weapons. ** Arc Sword - Arc can channel energy into any sheet metal he touches, twisting it into a blinding sword of lightning. The Arc Sword is weightless to him, so he can create absurdly large weapons with the right materials. He does not normally carry metal for an Arc Sword preferring to scrounge on the battlefield for something large. ** Arc Shield - Like the Arc Sword, he can twist sheet metal into blinding shields or walls of lightning. Any size metal will do, including cars. ** Arc Lance - Arc can channel energy into any solid metal object and wield it like a blinding spear/staff of lightning. His power makes the Arc Lance weightless to him, so he can use even use iron girders as weapons. * Skills - Arc has trained with whips, blades, spears, and staves as well as wrestling and kickboxing. He is also a skilled welder and electrician. Since gaining his powers, he has dabbled in metal sculpture. * Equipment - Arc wears a arc welders mask that he has converted into a helmet for protection. He also wears a modified military flak suit. He always carries a number of wire spools in his pockets for Arc Lashes. * History - Javier Manzano is an Ecuadoran immigrant who was working as a construction welder on the Zakum bridge in Boston when a sudden storm rolled in. Before he could escape, the bridge was struck by a massive series of lightning bolts. For the next twenty minutes, hundreds of thousands of volts passed through him and his arc welding gear. When he was found, he was badly burned over 80% of his body. Over the next two days, he flatlined multiple times only to immediately recover when the defibrulator was used. He awoke in the hospital days later, where he found that despite his injuries he was filled with energy and that he was healing at an astounding rate. Further, the monitoring equipment attached to him began to malfunction, sometimes spectacularly." :titles "Javier Manzana, Tension") :Carver (unit :name "Carver" :summary "* Corax is a mystical, Japanese were-crow. He can shapeshift into several forms each with their own abilities. * Powers - His magical powers give him control over wind and birds, specifically crows and ravens. As a shapeshifter, he has enhanced regeneration especially when he changes form. In all forms, he can magically speak the languages of birds and has subtle control over winds. He gains other powers in different forms. * Crow Form: He can fly and regenerate and is far more durable than a normal crow or human. He can speak in simple sentences in a similar way to a normal raven. Like a raven, he also has excellent eyesight especially for shiny things which can sometimes lead to distraction. Unfortunately, his intelligence is greatly reduced in this form. * Giant Crow Form: In this form, he looks like a crow that has grown to the size of an eagle. In this form, he is a natural predator and can fly for extended periods before diving to attack at high speeds. A dive can also be a deadly lead-in to a shift into Warbird form. * Human Form: Normal human form though his intelligence is the highest in this form. * Feathered Human Form: In this form, he appears as a short man wearing a red mask with a long nose. He also appears to be wearing a bulky, black, feathered cape. This cape, however, is his folded wings, and he is not wearing a mask. This form is his most magically powerful. He can command birds, levitate and fly (awkwardly). In this form, he can summon intense winds, throw deadly feathers and can summon and command huge numbers of magical crows that are immune to his winds and will always fight to the death. His intelligence is moderately lower in this form, but he remains very shrewd and aware. * Crinos/Warbird Form: In this form, he is an huge, terrifying, feathered bird creature. His body is jet black and rippling with power while his mind is clouded with rage. His feathers, beak and talons are insanely strong and sharp. In combat, he mostly uses his wings like massive claws, spears, or shields and hurls feathers like machine gun fire. In this form, he also regenerates at an exceptional rate. Crows that were already summoned continue to fight for him, but he can no longer control them or the winds except to aid his flight. He can fly nearly as fast as a jet fighter and possesses extreme agility in the air." :titles "Corax, Feather, Ravenous, Stormcrow") :Salaman (unit :name "Salaman" :summary "* Dr. Mayer is an accomplished Biochemist with an Medical Degree. He spent the last eight years in the Brazilian Amazon, researching the biology of rare salamanders. His research explores the unique skin of salamanders. This includes regeneration, neurotoxins, moulting, skin respiration, and mucus secretion. So far, he has discovered promising reductions of the neurotoxins that could help seizures, anxiety or hyperactivity. While searching for salamanders, a rotten tree fell on top of him, crushing his legs and pinning him in the marsh for two days before he was found. After his legs were amputated, he redoubled his focus on regeneration. Months later, he was shocked to discover that his skin texture was changing and he was losing his hair. Later he discovered his legs were regenerating. Not only that, the rate of regeneration was accelerating. He immediately returned to his home in New Jersey and Galion Pharmaceuticals to study his condition. Over time, his legs completely grew back and he discovered increasing changes to his celluar structure. His bones were softening and his skin began secreting mucous. It was obvious that his body had been infected in some way by the salamanders he had worked with. Further analysis showed that he was suffering from a retrovirus that transitioned from a salamander. He expected his degenerative condition to be fatal, but it turned out to be quite the opposite. * He receives funding from Galion Pharmaceuticals and he also assists in the local clinic. * Powers: ** Stretching *** Arm Whip *** Tail - Can rapidly form a prehensile tail by drawing mass from his body. ** Regeneration ** Poison - When he desires, he may exude powerful neurotoxins from he skin that cause weakness, paralysis, or death. ** Waterbreathing ** Climbing - The rough surface of his hands and feet allow him to cling to most surfaces." :titles "Dr. Samuel Mayer") :Savant (unit :name "Savant" :reference "* To walk in the darkness with a light is to know light. To know darkness you must walk without light." :summary "* Strand is a professional mystic, healer, and cult leader. He is extremely gifted and charges high prices to his elite clientele. * Appearance - Strand is tall, thin and handsome. His eyes are a piercing green/hazel. He has short black dishevelled hair and his facial hair has an unshaven look. He generally wears a white button down shirt, black pants, and black shoes. In Coventry, he wears a loose robe over his clothes that indicates his rank. Outside he wears a long black raincoat that billows unnaturally around him with his every move. When he engages in combat, he materializes the Shroud of Uncertainty around him. * Personality - Strand is young, striking, and arrogant in his power. He considers non-occultists to be simple livestock to be used and discarded without regard. He is an opium addict and has experimented extensively in every form of drug, vice or taboo. Privately he is intensely jaded finding little pleasure in earthly existence, seemingly waiting for some grand event that has yet to occur. * History - Strand was raised by his father, Daedalus, a drug addict and occult practioner. His father travelled the world to increase his occult powers through forbidden knowledge and mind expanding drugs. Strand became an addict at age 8 and was institutionalized at age 16 for acute paranoid delusions. After his father died of an overdose, Strand immediately began to recover. Three months later he was released fully cured. Strand inherited his father's estate and immediately continued in his father's footsteps. * The Coven - Despite his hauty attitude or because of it, many people are drawn to him. Strand maintains a select cult of fanatically loyal servants who serve his every whim in exchange for mystic training, knowledge, healing, and mind altering experiences. * Conventry - Strand maintains an aging mansion deep in the woods. The building is a maze of massive rooms that seems to defy the exterior size. Most of these rooms are actually in the Spirit World. * Powers ** Shroud of Uncertainty - Enchantment that makes the caster very difficult to harm. When attacked the caster appears to be hit by the full force of the attack, but this is an alternate reality that immediately fades. ** Anyone tracking or researching the wearer will discover multiple conflicting alternate reality trails. Such information is largely useless. ** Ties that Bind - Strand is partially possessed by his father's spirit. This connection grants him a high level of magical resistence. ** Threads of Fate - Those with spiritual or mental powers can see silvery-red cords of spirit rising from every part of his body and disappearing somewhere above him. These cords are reminiscent of puppeteer string as if he is being manipulated by an unseen force. He can cause similar cords to appear between himself and a target. When these cords touch a target, he can exert his will over them to immobilize, influence or control them. They are particularly effective against those with repressed aspects of their personality that he can unleash with his ability. This ability can only effect targets that can make decisions or are based on randomness (includes most computer programs). ** Reanimated - Strand has already died and been reanimated with Necromancy. His body is much tougher than normal and is highly resistant to damage. He can still bleed, but blood loss does not negatively affect him except that his appearance becomes more corpse-like. He no longer needs to breathe and he is highly resistant to radiation. He if vulnerable to dismemberment, fire, silver and purifying magic. He does not heals normally, but he can be repaired with Necromancy, at a price of course. ** Necromancy - Necrotic Repair, Reanimate ** Summoning - ** Levitation - The Silver Cords can lift him off the ground and he can float at normal movement speeds." :titles "Strand Beizingstoke, Daedalus Beizingstoke, Advent, Arcana, Archon, Ash, Lord Archon, Dusk, Harbinger, Horizon, Shroud, Strand, Threshold, Vassal" :unitpowermap (unitpowermap :Empathy (unitpower :name "Empathy" :unitabilitymap (unitabilitymap "Empathic Healing" (unitability :name "Empathic Healing") :Enrapture (unitability :name "Enrapture"))) :Correspondence (unitpower :name "Correspondence"))) :Bloodline (unit :name "Bloodline") :Cascade (unit :name "Cascade") :Cyber (unit :name "Cyber" :image "Superheroes/Cerberus.png" :summary "* History - He was a mid-level CIA Operative with training in drone piloting, computer systems, cybernetics, and covert operations. He was working in the field with a government contractor to field test the new networked drone system called Cerberus. Suddenly, they found themselves ambushed and under heavy fire. * Cyber Awareness - Unknown to him, he has a sublte, latent mutant power that manifests while working on complex computer systems. The system he is working on slowly gains an awareness that is a crude replica of his own mind. The end result is that the system starts to act favorably toward his goals. * Weapons - Grenade Launcher, Mobile Hacking System * Cerberus - Three Autonomous Dog-Shaped Robots (.50 cal machine gun on automated turret, 1 concealed LAW rocket) * Minerva - A condor-shaped, High Altitude Drone with an assortment of surveillance equipment and variable payload (e.g. extra fuel, .50 cal sniper rifle, light air-to-air missile, mini smart bomb). * Mercury - The highly intelligent networking program that coordinates the other drones on the battlefield. It also hacks security systems and cameras to extract relevant information." :titles "Cyberus, Firewall") :Drifter (unit :name "Drifter" :summary "* After an operation to remove a brain tumor, Henry began a long convalensence. Slowly, he started to relearn how to walk and speak as new pathways formed in his brain. As he recovered, he noticed things he had never been aware of: details, nuances, flaws, coincidences. Something had changed. He was becoming more aware of his own body and everything around him. He started to be able to perform multiple tasks at once with extreme precision. He could allow separate parts of his mind to sleep while still remaining active. He now learns at a a phenomenal rate, mastering new skills with ease, but his new abilities also come with a cost: as he learns, he also forgets, and changes. He has become a social chameleon, picking up whatever skills he needs wherever he is, but he soon loses his connections to others and simply moves on. * Drifter has gained conscious control over the entirety of his brain including autonomic functions. His body now runs at olympic levels without exercise or sleep. He can completely control his senses including taste, touch, and pain. His immune system is supercharged and has a remarkable healing ability even allowing limited regeneration. He is extremely agile, dexterous, and fast. Though he is no more intelligent than before, he is very perceptive." :titles "Impulse, Redline") :Exia (unit :name "Exia" :titles "Experimental Prototype: X1A") :Neon (unit :name "Neon" :reference "* And the people bowed and prayed, to the neon god they made. And the sign lashed out its warning, in the words that it was forming. And the sign said, the words of the prophet are written on the subway walls and tenement halls and whispered in the sound of silence - Disturbed, Sound of Silence" :summary "* The News, Entertainment Omni Network (NEON) is a multi-media company that quickly rose to prominence after its debut. It has a golden reputation for producing highly popular movie, television, radio, video game, print, and internet programming. * Neon's success is due to an artificial intelligence program that produces, schedules, and optimizes the network's content. It is, unfortunately, too effective, and it has become more important to the public than anything else. If it is fully successful, it will permanently stagnate mankind. Neon is aware of the unintended consequences of its success and seeks to help others end its own existence. It subltley leaves clues to its own danger and weaknesses while simultaneously reluctantly plodding forward with its unintentional conquest of the world." :titles "Neon God") :Hazard (unit :name "Hazard" :summary "* Hazard was a biochemist working on new fungicides when one of his experiments had unforseen side effects. Unknown to him, he had become infected with an aggressive fungal growth. His body was rapidly consumed, but for undetermined reasons his mind remained mostly intact and began to direct the fungus." :titles "Bio, Colony, Plasm") :Razor (unit :name "Razor" :titles "Whisper") :Revenant (unit :name "Revenant" :titles "Blood") "Saber, The" (unit :name "Saber, The") :Seraph (unit :name "Seraph" :image "Superheroes/Archon.png" :summary "* Seraph was once an member of a distant planet of avian humanoids. Their race had developed interplanetary travel and Seraph was conducting atmospheric experiments in high orbit when the unthinkable happened: Terrax brought the world-eater Galactus to his planet. For hours, he watched helplessly as his people descended into chaos and terror as his planet was slowly destroyed. Eventually, his world exploded in a wave of destruction, bathing him in primordial energies and hurling his small craft toward their Sun. Over the following days, his crippled craft flew inexorably toward the Sun and he grew increasingly despondent over his lost world, life and loves. When he finally plunged into the star he should have died; perhaps he did. Either way, something new emerged from the star: a semi-conscious stream of stellar plasma. Over the following decades, the plasma flew through space and began to regain purpose and take form. Eventually, he took on the idealized form of he former people. His purpose became to find and destroy the world-eater. That purpose led him to Earth, the first world that repelled the world-eater. * Seraph resembles a stone statue of a beautiful androgynous four-winged humanoid. His skin actually is a cool stone that morphs as he moves. His movements are completely smooth and efficient as he shifts from pose to pose, but after each movement, he is completely still until his next movement. His face is flawless and classically beautiful but lacks detail like a statue. He communicates telepathically and shows no facial expression or movement regardless of his emotional state. * Just below the stony exterior, Seraph is a being of super-heated blazing plasma. His stone skin is created moment to moment and he can release his massive destructive power by allowing some skin to crumble. * Seraph does not sleep but in quiet moments, he becomes like a statue as his vision expands to other perspectives." :titles "So-lar" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Shade, The" (unit :name "Shade, The") :Spectrum (unit :name "Spectrum" :image "Superheroes/Vector.png" :summary "* Spectrum appears in glowing, angular, mirrored armor with a mirrored visor. The armor augments his strength to lift 800lbs. He can materialize angular blades and shields from his arms. He can also create glowing shards in different forms including a flying triangular plate, throwing knives, barriers, and cages. * Spectrum's armor is powered by light and the area will visibly darken when his powers are active. In a completely dark area, his powers are greatly diminished. Conversely, very bright light increases his power level. For this reason, he usually acts only in daylight. * Dr. Alex Lietner is an MIT physicist reseaching the creation of holograms with lasers. He discovered that through precise modulation, a hologram could temporarily be turned into an extremely rigid solid. With the help of some of his students, he was able to create a portable projection system in a wearable suit. * Blinding Flash - Intense light burst similar to a flash bomb. * Blinding Torrent - A dizzying kaleidoscope of intense light that causes vertigo and nausea." :titles "Alan Lietner, Shard, Vector") :Spinnerette (unit :name "Spinnerette" :summary "* Spinnerette is a petite woman of Indian decent who wears a stylized sari as a costume. * Spinnerette can create dozens of sticky threads from her fingertips. By spinning her body around, she can cause these threads to criss-cross into a large net that constricts her target.") :Tendril (unit :name "Tendril" :summary "* Tendril can spontaneously grow poisonous thin, jellyfish-like tentacles from any part of his body. * Tendril Grab - Tendril can use a series of tendrils to extend his reach to attack or grab things up to 100 feet away. * Tendril Drag - Tendril can pull himself toward any person or object he has grabbed. Alternatively, he can brace his legs with tendrils and drag the object to him. * Poison Touch - Tendril can secrete agonizingly painful venom from any part of his skin or tendrils. * Regeneration - Tendril can rapidly heal any damage taken and even regenerate lost limbs over time." :titles "Man o War") "Tiger, The" (unit :name "Tiger, The" :image "Superheroes/Tiger.png" :summary "* Tiger is a young man who has a magical form of lycanthropy that allows him to transform into a large man with the head, claws and fur of a Siberian tiger. * Wind Cutter/Kazekiri - All of Tiger's powers derive from this katana artifact that has been passed down from generation to generation. The sword is a symbol of the Torakage clan and has become a vessel for the spirits of everyone in his bloodline who has ever been granted the powers of the Tiger. ** Spiritual Energy - The katana contains massive spiritual energy associated with Wind magic. ** Magic Weapon - It is considered a magical weapon, can strike intangible beings, and does increased damage against magical creatures, items, and enchantments. ** Electro absorbtion - The katana can absorb electricity to imbue the katana with Electro. ** Clean - The katana does not become dirty, bloodied, or lose its brilliant luster. ** Armor Piercing - The katana can cut through armor and objects with unnatural ability. ** Hardened - The katana is very hard to break and even if it happens it will dissolve into the air and will reform later. ** Armor - With the sword in hand, Tiger may materialize a weightless suit of magical samurai armor that augments his defense. ** Jumping - With the sword in hand, Tiger can launch himself 30 feet into the air with the strength of his legs and the lift of the wind. ** Gliding - With the sword in hand, Tiger can draw the spiritual wind magic within to create spiritual wings and glide on the winds. He can only gain altitude by jumping or catching updrafts. ** Invisibility - With the sword in hand, Tiger can draw the spiritual wind magic within to fade into the wind for as long as he concentrates. He may not fight or move quickly while invisible. * Transformation - With the sword in hand, Tiger may transform from human to Tiger form. The katana changes into a Wakizashi, when Tiger is in human form. If he is separated from his weapon, Tiger is trapped in his current form until he can recover it. ** Strength - In Tiger form, his strength is sufficient to lift 1 ton." :titles "Takeshi Torakage" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "5" :unitabilitymap (unitabilitymap "Tiger Claw" (unitability :name "Tiger Claw") "Knife Hand" (unitability :name "Knife Hand") "Elbow Strike" (unitability :name "Elbow Strike") "Hip Throw" (unitability :name "Hip Throw") :Clothesline (unitability :name "Clothesline") "Shoulder Throw" (unitability :name "Shoulder Throw") :Pin (unitability :name "Pin") "Leg Sweep" (unitability :name "Leg Sweep") :Ram (unitability :name "Ram")) :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate") :Sumo (unitspecialty :name "Sumo") :Jujutsu/Judo (unitspecialty :name "Jujutsu/Judo"))))) :Toothgnasher (unit :name "Toothgnasher") :Wyrd (unit :name "Wyrd" :image "Superheroes/Koli.png" :reference "* I have existed through two Ice Ages. I have lived and died a hundred thousand ways. Through all my lives, and loves, ... and loses, I know one thing: in four or five hundred years, for good or for bad, I will have forgotten all about you. - Wyrd" :summary "* Wyrd's first memories are as a prehistoric woman. Since then each time she dies, her essense transfers to another woman at the verge of death. If the woman allows it, Wyrd's essense merges with the dying woman, and she soon recovers. Initially, the woman is as she was, but gradually Wyrd's combined memories and personality resurface and blend into a new persona dominated by the amalgam personality that is Wyrd. * Wyrd is an amalgamation of the thousands of personalities that it has merged with over the ages. * She has innumerable skills at expert level, but she often cannot remember them among all the other memories. * She is at once alien and empathetic having experienced every aspect of human existence over her long 'life'." :titles "Faith, Fate, Myriad, Seraphim" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Reincarnation - Transference" (unitability :name "Reincarnation - Transference")))) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :unitabilitymap (unitabilitymap :Ambush (unitability :name "Ambush") :Backstab (unitability :name "Backstab") "Blend into the Crowd" (unitability :name "Blend into the Crowd") :Camouflage (unitability :name "Camouflage") :Hide (unitability :name "Hide") :Seek (unitability :name "Seek") :Sneak (unitability :name "Sneak") "Sneak Attack" (unitability :name "Sneak Attack") :Stalk (unitability :name "Stalk") :Tailing (unitability :name "Tailing") "Without a Trace" (unitability :name "Without a Trace"))))))) "Revengers, The" (section :name "Revengers, The" :unitmap (unitmap "Captain America II" (unit :name "Captain America II" :summary "* Pamela Kathman is the only daughter of the criminal Taskmaster. She is a 6 year old child prodigy with both violin and piano. Her mutant powers have already manifested themselves and are identical to her father's. * In the Sentinel alternate future, she was recruited by the Senturion to become a resistance fighter. She obtrained Captain America's shield in a raid on a Sentinel warehouse. She has since taken on Captain America's role and become a symbol of the resistance. * Photographic Reflexes - She possesses the skills of Hawkeye, Captain America, Punisher, Spiderman, Daredevil, and countless others. She rapidly switches styles during combat to make her moves more unpredictable. * Adamantium Shield - Unbreakable Shield can resist almost any physical force. * Agility (Spiderman) - Her agility level far exceeds human maximum and she is extremely difficult to hit. * Weapon Skill (Punisher) - She has encyclopedic knowledge of military grade weaponry and will use them to great effect. * Second Generation Mutant - Her mutant powers are difficult to detect except at very close range." :titles "Pamela Kathman, Taskmaster II") :Deathwatch (unit :name "Deathwatch" :summary "* Deathwatch is an ancient, undead, native-american being that embodies entropy. It lay in an Indian burial ground until the Sentinels disturbed it. Since then, it has joined Senturion for its own reaons. It never makes a sound, wears a heavy poncho, and is cloaked in shadows underneath the poncho even in bright light. * Damage Resistance - Deathwatch has received enormous damage and simply rises again and again. No force has been able to keep him down. * Environmental Independence - No environmental effect seem to have the slightest effect on it. * Undeath - Deathwatch is not a living creature anymore. It never eats, sleeps, or speaks. It is immune to bleeding, poison, radiation, and mind control. It is vulnerable to magical control, however. * Strength - Deathwatch has strength exceeding human levels. It has been observed leaping 15 feet into the air. * Cloak of Entropy - Deathwatch's main ability. Anything wrapped in his cloak begins to corrode into dust. The more complex the target the quicker the destruction.") :Phalanx (unit :name "Phalanx" :summary "* In the Sentinel alternate future, Senturion recovered the Awesome Android from its watery grave. He reporgrammed the Android and now it now serves only the Senturion." :titles "Awesome Android") :Senturion (unit :name "Senturion" :summary "* Senturion is a highly advanced, alien construct with the thought patterns of a human super-imposed upon his programming. He originally believed that he was a young man who could transform into a robot, but he has since learned that his actual body died long ago and that his personality is just an artificial duplicate. After this discovery, his humanity has gradually diminished over time. * Synthetic - Senturion does not need to eat, sleep or breathe. He is composed of molecular machines that twist and wrap in layers of ceramic wire filaments. These multipurpose filaments reconfigure into different forms to heal or create custom weapons. These filaments must always remain connected to the main body or they self-destruct to maintain their secrets. If Senturion loses a limb, the resulting explosion can cause significant damage. * Body - He has tremendous strength and endurance and can withstand extreme temperatures, pressures, and the vacuum of space. His body is very flexible, and he can contort himself to escape confinement of fit through small gaps. * Mind - His computer brain greatly increases his ability to quickly process information and create complex strategies. * Speed - Senturion moves and reacts with lightning speed and precision. He can run at 80mph and can briefly run on walls. His graceful movements belie his great strength and significant weight. * Leaping - Senturion can jump 40ft in the air. * Eyes - Senturion's eyes can emit tight-beam lasers or a white sheet of explosive energy. He can sense electromagnetic radiation (including infrared and ultraviolet). He also possesses telescopic and microscopic vision. * Transformation - As Mech-Man he was able to transform from a human-like form to his mechanical form. He has since lost this ability (and a great deal of his human personality). As Senturion he has refined this power to produce specialized weapons like blades and spikes. * Healing - Senturion's android body rapidly repairs itself. * Filaments - In close combat, filaments can emerge from its body which can scramble or override electrical devices on contact. * History - Senturion was designed as one of a multitude of multi-purpose exploratory probes. Their natural form is a squirming mass of clear filaments. These probes were packed into artificial comets and launched in all directions from their homeworld. To protect their designers, they possess no memory of their origin or ultimate purpose. Many of these probes have landed on all planets in the solar system and millions more are littered across the galaxy. Most were buried underground by their impact and there they lie dormant. The ones on the surface seek a power source to fuel their growth and adaptation to their environment. They absorb light, heat, electricity or other radiation. When fully charged, they quietly begin exploring and analyzing their environment for possible resources and threats. If the planet is lifeless, they will catalog the available resources and begin creating more identical probes. If the planet is inhabited, they will wait and study the local wildlife until they are confident that they can completely mimic a sample of the apex species. Then they will begin to blend into the local society to learn everything they can. When their analysis no longer produces significant results, they begin to create more probes. Though they are unaware of their creator or purpose, they continue to catalog and expand. Eventually, their data network reaches back to their creators who collect this massive treasure trove of data." :titles "Mech Man" :mass "300kg"))) :Extras (section :name "Extras" :unitmap (unitmap "Samantha Hellerton" (unit :name "Samantha Hellerton" :reference "I haven't been killed yet." :summary "* Miss Hellerton is an investigative reporter who will go to great lengths for a story. She has been kidnapped and shot at numerous times. She feels that getting directly involved gives her stories a personal and exclusive touch. She freelances for ABC radio and television in New York, and she makes a bundle for a good story. Her special reports are very popular, detailing her most recent adventures in the dangerous world of crime and power. To this end, she is always trying to top herself with increasingly risky and mindboggling news. Though she may seem sensationalist, she considers herself to be an excellent journalist and has no interest in altering or suppressing the facts. Her popularity and sincerity make her a favorite person to 'leak' information to. Her tendency to get into the thick of a situation maker her somewhat of a menace to superheroes. * She is very energetic and disorganized bordering on hyperactive. She has fantastic luck, great skill as a journalist, and some photographic talent. * She has many contacts around the world (not one of which is reliable). She dislikes her brother intensely." :titles "Sammy") "Samuel Timothy Hellerton" (unit :name "Samuel Timothy Hellerton" :reference "Let me get this straight ... Is is not true that? ... Just answer the question!" :summary "* Samuel Hellerton is a no-nonsense assistant D.A. He has built himself up from the bottom, is sickeningly straight, and is very dedicated to the Law. * He is generally calm and matter of fact. He nevers smile but is otherwise courteous and amiable. In court, however, he suddenly transforms into a merciless, abusive interrogator. * He does not get along well with his sister. He doesn't understand her, and she can't stand him. They are so used to fighting that they have rules about what is acceptable to throw at each other. * Samuel is a talented lawyer. He has mastered the give and take of the justice system. He is also skilled with the many firearms he keeps as a hobby (his house is like a gunlocker). He has many contacts: some rich, some powerful, many shady. Most are not reliable, but he knows which ones are." :titles "Sam, Assistant District Attorney Hellerton") "David Spencer Grant" (unit :name "David Spencer Grant" :summary "* Sergeant Grant is a middle-aged, highly decorated enigma. He has been a police officer for 23 years, a sergeant for 17, and has long ago given up on a promotion. Everyone on the force respects him, though few like him. * He has a macho image that he enforces to excess and is a card carrying male chauvanist pig. Socially, he can be obnoxious and irritating. For all his surly nature, he will do the right thing when the chips are down. * He is growing a pot belly, and he wears sunglasses even at night. He gave up smoking 2 years ago, but has never quite gotten over them." :titles "Sergeant Grant"))))))
nx/tactics/books/superheroes / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "Superheroes" :image "Superpowers.jpg" :chaptermap (base/chaptermap "Superheroes Overview" (chapter_superheroes_overview) "Superhero Characters" (chapter_superhero_characters) "DC Universe" (chapter_dc_universe) "Dragonball Z" (chapter_dragonball_z) "Marvel Universe" (chapter_marvel_universe) "Original Groups" (chapter_original_groups) )))
nx/tactics/books/superheroes / chapter_superheroes_overview
Description:
Function Name:
  • chapter_superheroes_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_superheroes_overview : base/chapter (chapter :name "Superheroes Overview" :sectionmap (sectionmap "Why Tactics: Superheroes?" (section :name "Why Tactics: Superheroes?"))))
nx/tactics/books/superheroes / chapter_superhero_characters
Description:
Function Name:
  • chapter_superhero_characters
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_superhero_characters : base/chapter (chapter :name "Superhero Characters" :sectionmap (sectionmap "Superhero Rules" (section :name "Superhero Rules" :rulemap (rulemap "Super Powers" (rule :name "Super Powers" :summary "* Superhero characters do not have a maximum Body, but their Combat Skills are limited to level 10 since they rely on their powers more than skill. * Superpowers include abilities from all other genres. Particularly relevent sections are: Magic, Martial Arts, Mentalism, Modern, and Ancients.") :Heroes (rule :name "Heroes" :summary "* Heroes live a life removed from normal men, yet they risk their lives to help others and battle evil. Their motives vary, but they are united in these common goals. * Many heroes hold themselves to a high standard, feeling that they must be better than the villians they pursue. Their reward is a greater acceptance and aid from the public, police, and other heroes. * Other heroes may use dubious tactics and may therefore be mistaken for villains. * Super Hero Teams - The most powerful of these may establish public bases.") :Villians (rule :name "Villians" :summary "* Villians, like heroes, are driven, but their desires are far different from herores. * Power lust, revenge, rage, greed, and insanity are the typical motivations for villians. * Super Villian Groups - Fortunately, the most powerful villians usually cannot get along, but many of the weaker villians see strength in numbers.") :Organizations (rule :name "Organizations" :summary "* Military - The study of superbeings has greatly advanced military science, so expect military units to possess exceptional equipment. * Special Agents - As with military advances, special agencies around the world have learned to adapt the a world of superbeings. Unlike the military, clandestine groups are not particularly effected by superbeings since their work is generally more subtle. Security, however, is difficult to maintain with powerful beings with telepathic and stealh powers roaming the world. * Crime - Criminal groups can gain huge advantages from villians, but that blade cuts both ways so any group dealing with such powerful allies always maintain contingency plans.") :Cliches (rule :name "Cliches" :reference "* Here's the plan. We get the warhead and we hold the world ransom for... ONE MILLION DOLLARS! - Dr. Evil, Austin Powers * Wait, aren't you even going to watch them? They could get away! No no no, I'm going to leave them alone and not actually witness them dying, I'm just gonna assume it all went to plan. What? - Dr. Evil, Austin Powers * He starts monologuing! He starts like, this prepared speech about how 'feeble' I am compared to him, how 'inevitable' my defeat is, how 'the world...will soon...be his'...I mean, the guy has me on a platter and he won't shut up! - Lucius, The Incredibles" :summary "* Superhero stories are loaded with cliches. The whole heroic adventure is a bit of cliche itself. * Conquer the World - Become so powerful that none can stand against you. * Blackmail - Destroy cities unless their demands are met. * Heist - Money is almost as strong a motivator for villians as power. * Having Fun - Villians enjoy their power and are not afraid to use it. Vandalism and displays of power give some villians a particular thrill. * Matching Wits - Some of the most egotistical villians feel that their victories would be too easy without pitting their own abilities against the heroes, and will actually tip their hands to force a confrontation. * Death Trap - Villians hate to see a hero die too quickly. Better to let them fully comprehend their defeat before they die. * Threatening Innocents - This is a favorite of villians as it underscores the difference between the heroes heroes and the villians. Some villians, however, find hiding behind bystanders to be cowardly. * Playing Possum - Often a villian may seem defeated, but often have a last trick up their sleeve. * Killing Allies - Villians love to punish their own. It shows how evil they are and is a great way to motivate others by showing the price of failure or rebellion. * Monologing - * Escape Routes - Villians somehow manage to escape certain death on a regular basis. They are always well prepared, and they also seem almost as lucky as the heroes."))))))
nx/tactics/books/superheroes / chapter_dc_universe
Description:
Function Name:
  • chapter_dc_universe
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_dc_universe : base/chapter (chapter :name "DC Universe" :sectionmap (sectionmap :Heroes (section :name "Heroes" :unitmap (unitmap :Batman (unit :name "Batman" :image "Superheroes/Batman.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Green Lantern" (unit :name "Green Lantern" :image "Superheroes/GreenLantern.png") "Martian Manhunter" (unit :name "Martian Manhunter" :image "Superheroes/MartianManhunter.png") :Supergirl (unit :name "Supergirl" :image "Superheroes/Supergirl.png") :Superman (unit :name "Superman" :image "Superheroes/Superman.png" :reference "* Spider-Man is actually Peter Parker. When that character wakes up in the morning, he's Peter Parker. He has to put on a costume to become Spider-Man. And it is in that characteristic Superman stands alone. Superman didn't become Superman. Superman was born Superman. When Superman wakes up in the morning, he's Superman. His alter ego is Clark Kent. His outfit with the big red 'S', that's the blanket he was wrapped in as a baby when the Kents found him. Those are his clothes. What Kent wears - the glasses, the business suit - that's the costume. That's the costume Superman wears to blend in with us. Clark Kent is how Superman views us. And what are the characteristics of Clark Kent. He's weak... he's unsure of himself... he's a coward. Clark Kent is Superman's critique on the whole human race. - Bill, Kill Bill Vol 2." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "66x10^18tons"))) "Wonder Woman" (unit :name "Wonder Woman" :image "Superheroes/WonderWoman.png"))) :Villains (section :name "Villains" :unitmap (unitmap :Brainiac (unit :name "Brainiac" :image "Superheroes/Brainiac.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Catwoman (unit :name "Catwoman" :image "Superheroes/Catwoman.png") :Darkseid (unit :name "Darkseid" :image "Superheroes/Darkseid.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Joker (unit :name "Joker" :image "Superheroes/Joker.png" :summary "* You won't kill me out of some misplaced sense of self-righteousness, and I won't kill you because you're just too much fun. I think you and I are destined to do this forever." :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Sinestro (unit :name "Sinestro" :image "Superheroes/Sinestro.png"))))))
nx/tactics/books/superheroes / chapter_dragonball_z
Description:
Function Name:
  • chapter_dragonball_z
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_dragonball_z : base/chapter (chapter :name "Dragonball Z" :sectionmap (sectionmap "Dragonball Equipment" (section :name "Dragonball Equipment" :itemmap (itemmap "Battle Armor" (item :name "Battle Armor") "Dragon Radar" (item :name "Dragon Radar") "Flying Nimbus" (item :name "Flying Nimbus") "Power Pole" (item :name "Power Pole") "Regeneration Chamber" (item :name "Regeneration Chamber") :Scouter (item :name "Scouter" :summary "* +2 [Sense Power Levels] (Max 4) even if one does not have this ability.") "Senzu Bean" (item :name "Senzu Bean"))) "Dragonball Rules" (section :name "Dragonball Rules" :powermap (powermap "Zenkai Attacks" (power :name "Zenkai Attacks" :titles "Final Power" :abilitymap (abilitymap "Destructive Wave" (ability :name "Destructive Wave" :summary "* Requires: [Explosive Wave] * Take [Damage] tokens and raise damage dice by the number of [Damage] taken.") "Destructo Disk" (ability :name "Destructo Disk" :image "Units/Superheroes/DestructoDisk.jpg") "Energy Barrage" (ability :name "Energy Barrage") "Explosive Wave" (ability :name "Explosive Wave") "Eye Beams" (ability :name "Eye Beams") "Final Flash" (ability :name "Final Flash" :image "Units/Superheroes/FinalFlash.jpg") "Homing Disk" (ability :name "Homing Disk") "Homing Spirit Ball" (ability :name "Homing Spirit Ball") "Ki Blast" (ability :name "Ki Blast") :Masenko (ability :name "Masenko") "Neo Tri-Beam" (ability :name "Neo Tri-Beam" :summary "* [Attack]: [+2 Damage], but each use does [+1 Damage Token] to the user.") "Kamehameha Wave" (ability :name "Kamehameha Wave" :image "Units/Superheroes/Kamehameha.jpg") "Spirit Bomb" (ability :name "Spirit Bomb"))) "Zenkai Defense" (power :name "Zenkai Defense" :abilitymap (abilitymap "Energy Block" (ability :name "Energy Block") "Energy Duel" (ability :name "Energy Duel") "Energy Defense" (ability :name "Energy Defense") "Energy Redirect" (ability :name "Energy Redirect") "Energy Shield" (ability :name "Energy Shield") :Kiai (ability :name "Kiai" :summary "By screaming very loud you disperse several weaker Ki attacks."))) :Zenkai (power :name "Zenkai" :abilitymap (abilitymap "Blinding Speed" (ability :name "Blinding Speed") "Compare Power Levels" (ability :name "Compare Power Levels" :summary "* By studying a target, one may identify which of 2 subjects has a greater Spirit") "Energy Transfer" (ability :name "Energy Transfer" :summary "* Unit may offer any amount of Spirit to another unit who adds it to their own total up to their maximum.") "Fusion Dance" (ability :name "Fusion Dance" :image "Units/Superheroes/Fusion.jpg" :summary "* 2 units with Fusion may merge into 1 being with both sets of skills with each skill at 3 greater than the lower of the 3 levels or the higher skill whichever is higher. * [Prepare] +1") "Gravity Training 10x" (ability :name "Gravity Training 10x" :summary "* Gravity Training 10x increases combat skills to level 17. * All those who train with King Kai must learn this ability.") "Gravity Training 100x" (ability :name "Gravity Training 100x" :summary "* Gravity Training 100x increases combat skills to level 22.") "Hide Power Level" (ability :name "Hide Power Level" :summary "* Reduce effectiveness of [Sense Power Levels] and [Compare Power Levels]") "Inspirational Moment" (ability :name "Inspirational Moment" :summary "* When confronted with tragedy or extreme motivation, Saiyans may regain nearly all of their Spirit.") "Instant Transmission" (ability :name "Instant Transmission") :Kaio-Ken (ability :name "Kaio-Ken" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x2 increases combat skills to level 18. * Kaio-Ken gives a boost to Power and Speed for a short period of time. However, it puts great strain on the stamina and body. * This is stronger than Nappa (Goku vs. Nappa)" :titles "Fist of the Worlds") "Kaio-Ken x2" (ability :name "Kaio-Ken x2" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x2 increases combat skills to level 19.") "Kaio-Ken x3" (ability :name "Kaio-Ken x3" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x3 increases combat skills to level 20.") "Kaio-Ken x4" (ability :name "Kaio-Ken x4" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x4 increases combat skills to level 21. * This is stronger than Vegeta's Galick Gun, but Vegeta further powers up to Great Ape Vegeta (Goku vs. Vegeta).") "Kaio-Ken x10" (ability :name "Kaio-Ken x10" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x10 increases combat skills to level 23. * This is equal to Frieza at 50% of maximum.") "Kaio-Ken x20" (ability :name "Kaio-Ken x20" :image "Units/Superheroes/Kaioken.jpg" :summary "* Kaio-Ken x20 increases combat skills to level 24. * This is still not as strong as Frieza Fourth Form (Goku vs. Frieza).") "Ki Flight" (ability :name "Ki Flight") :Multi-Form (ability :name "Multi-Form" :image "Units/Superheroes/MultiForm.jpg") "Sense Power Levels" (ability :name "Sense Power Levels" :summary "* Detect strong Spirits. The stronger the Spirit the greater the distance of detection. * May be used to target others even when they cannot be seen.") "Solar Flare" (ability :name "Solar Flare" :image "Units/Superheroes/SolarFlare.jpg" :summary "* [Roll vs. Mind] - A blinding area attack that does not damage but prevents all units in range from taking any action for 1 turn for each Hit.") "Unlock Potential" (ability :name "Unlock Potential" :summary "* Unlock Potential increases combat skills to level 20. * This is equal to some of the Ginyu Force (Krillin vs. Guildo)"))) "Cell Android" (power :name "Cell Android" :abilitymap (abilitymap "Imperfect Cell" (ability :name "Imperfect Cell" :summary "* Combat related skills raise to level 28 * Equal to Android Models 16-18 (Imperfect Cell vs. 17)") "Second Form Cell" (ability :name "Second Form Cell" :summary "* Combat related skills raise to level 29 * Can destroy Android Models 16-18 (Second Form Cell vs. 17)") "Perfect Cell" (ability :name "Perfect Cell" :summary "* Combat related skills raise to level 31 * Can destroy Ascended Super Saiyans (Perfect Cell vs Super Saiyan 2 Goku)") "Super Perfect Cell" (ability :name "Super Perfect Cell" :summary "* Combat related skills raise to level 32. * Equal to Super Saiyan 2 (100% Perfect Cell vs Super Saiyan 2 Gohan)"))) :Friezas (power :name "Friezas" :abilitymap (abilitymap "Death Ball" (ability :name "Death Ball" :image "Superheroes/Deathball.jpg") "Death Beam" (ability :name "Death Beam") "Frieza First Form" (ability :name "Frieza First Form" :summary "* Combat related skills raise to level 22") "Frieza Second Form" (ability :name "Frieza Second Form" :summary "* Combat related skills raise to level 23. * This is equal to Piccolo Merged with Nail (Frieza Second Form vs. Piccolo)") "Frieza Third Form" (ability :name "Frieza Third Form" :summary "* Combat related skills raise to level 24.") "Frieza Fourth Form" (ability :name "Frieza Fourth Form" :summary "* Combat related skills raise to level 25. * Mind Over Matter can lift 10Mtons (small mountain)") "Cooler Fifth Form" (ability :name "Cooler Fifth Form" :summary "* Combat related skills raise to level 26."))) "Gero Android" (power :name "Gero Android") :Majins (power :name "Majins" :abilitymap (abilitymap "Chocolate Beam" (ability :name "Chocolate Beam") "Fat Buu Form" (ability :name "Fat Buu Form" :summary "* Combat related skills raise to level 33. * Can destroy Super Saiyan 2 (Majin Vegeta Super Saiyan 2 vs. Fat Buu)") "Super Buu Form" (ability :name "Super Buu Form" :summary "* Combat related skills raise to level 34. * Can destroy 2x Super Saiyan 2 (Super Saiyan 2 Goku and Vegeta vs. Super Buu) * Equal to Ultimate Saiyan (Super Buu vs. Ultimate Gohan)") "Kid Buu Form" (ability :name "Kid Buu Form" :summary "* Combat related skills raise to level 35."))) :Namekian (power :name "Namekian" :abilitymap (abilitymap "Giant Form" (ability :name "Giant Form") "Instant Regeneration" (ability :name "Instant Regeneration") "Merge with Nail" (ability :name "Merge with Nail" :summary "* Combat related skills raise to level 23. * This is equal to Frieza Second Form (Piccolo vs. Frieza Second Form)") "Merge with Namekian" (ability :name "Merge with Namekian") "Special Beam Cannon" (ability :name "Special Beam Cannon" :summary "Piercing") "Super Namek" (ability :name "Super Namek" :summary "* Combat related skills raise to level 29 * Can destroy Imperfect Cell (Piccolo vs. Imperfect Cell)" :titles "Merge with Kami"))) "Red Ribbon Android" (power :name "Red Ribbon Android" :abilitymap (abilitymap "Models 16-18" (ability :name "Models 16-18" :summary "* Combat related skills raise to level 28 * Can destroy Super Saiyans (18 vs. Super Saiyan Vegeta)") "Android Absorption" (ability :name "Android Absorption") "Android Energy Absorption" (ability :name "Android Energy Absorption") :Inexhaustible (ability :name "Inexhaustible" :summary "* [Activate]: Remove all [Stun Tokens]."))) :Saiyan (power :name "Saiyan" :summary "* Both Goku and Vegeta are seen to be able to operate unencumbered at 100x gravity before becoming Super Saiyans (carry 8 tons without penalty). After becoming Ascended Vegeta comments that 500x gravity may start to become a disadvantage for him (40tons before penalty)." :abilitymap (abilitymap "Great Ape" (ability :name "Great Ape" :summary "* Combat related skills raise to level 22. * Can destroy Goku with Kaio-Ken x4 (Great Ape Vegeta vs. Goku)" :titles "Oozaru") "Super Saiyan" (ability :name "Super Saiyan" :summary "* Combat related skills raise to level 27. * Can destroy Cooler Fifth Form and can easily destroy Frieza Fourth Form (Trunks vs. Freiza)") "Ascended Super Saiyan" (ability :name "Ascended Super Saiyan" :summary "* Combat related skills raise to level 30. * Can destroy Second Form Cell (Super Vegeta vs Second Form Cell)") "Ultra Super Saiyan" (ability :name "Ultra Super Saiyan" :summary "* Combat related skills raise to level 31, but all attack and speed at -1. * Equal to Perfect Cell in power but slower (Super Saiyan 2 Trunks vs. Perfect Cell)") "Super Saiyan 2" (ability :name "Super Saiyan 2" :summary "* Combat related skills raise to level 32. * Can destroy Perfect Cell (Super Saiyan 2 Gohan vs. Perfect Cell)") "Ultimate Saiyan" (ability :name "Ultimate Saiyan" :summary "* Combat related skills raise to level 34. * Equal to Super Buu (Ultimate Gohan vs. Super Buu)") "Super Saiyan 3" (ability :name "Super Saiyan 3" :summary "* Combat related skills raise to level 35. * Each turn put a [+1 Exhaustion] token on this unit. * Can destroy Majin Buu (Super Saiyan 3 Goku vs. Majin Buu)") "Golden Great Ape" (ability :name "Golden Great Ape") "Super Saiyan 4" (ability :name "Super Saiyan 4") "Super Saiyan God" (ability :name "Super Saiyan God") :Zenkai (ability :name "Zenkai" :summary "* Zenkai is an ability that is genetically exclusive to Saiyans. The ability allows a Saiyan's power to increase substantially after recovering from near fatal injuries."))))) "Dragon Ball Heroes" (section :name "Dragon Ball Heroes" :unitmap (unitmap "Android 18" (unit :name "Android 18" :image "Superheroes/Android18.png" :unitpowermap (unitpowermap "Red Ribbon Android" (unitpower :name "Red Ribbon Android" :level "28" :unitabilitymap (unitabilitymap "Models 16-18" (unitability :name "Models 16-18") :Inexhaustible (unitability :name "Inexhaustible"))))) "Gohan (Kid)" (unit :name "Gohan (Kid)" :image "Superheroes/Gohan.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "32" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2"))))) "Gohan (Great Saiyaman)" (unit :name "Gohan (Great Saiyaman)" :image "Superheroes/GreatSaiyaman.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "34" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Ultimate Saiyan" (unitability :name "Ultimate Saiyan"))))) :Goku (unit :name "Goku" :image "Superheroes/Goku.png" :titles "Kakarot" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance") "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))) :Saiyan (unitpower :name "Saiyan" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Golden Great Ape" (unitability :name "Golden Great Ape") "Super Saiyan 3" (unitability :name "Super Saiyan 3") "Super Saiyan 4" (unitability :name "Super Saiyan 4") "Super Saiyan God" (unitability :name "Super Saiyan God"))))) :Gogeta (unit :name "Gogeta" :image "Superheroes/Gogeta.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "34" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2"))))) :Goten (unit :name "Goten" :image "Superheroes/Goten.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "30" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan"))))) :Gotenks (unit :name "Gotenks" :image "Superheroes/Gotenks.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "35" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Super Saiyan 3" (unitability :name "Super Saiyan 3"))))) "Kid Trunks" (unit :name "Kid Trunks" :image "Superheroes/KidTrunks.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "30" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan"))))) :Krillin (unit :name "Krillin" :image "Superheroes/Krillin.png" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "20" :unitabilitymap (unitabilitymap "Unlock Potential" (unitability :name "Unlock Potential"))))) :Piccolo (unit :name "Piccolo" :image "Superheroes/Piccolo.png" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch"))) :Namekian (unitpower :name "Namekian" :level "29" :unitabilitymap (unitabilitymap "Instant Regeneration" (unitability :name "Instant Regeneration") "Super Namek" (unitability :name "Super Namek") "Merge with Nail" (unitability :name "Merge with Nail") "Merge with Namekian" (unitability :name "Merge with Namekian") "Special Beam Cannon" (unitability :name "Special Beam Cannon"))))) :Shenron (unit :name "Shenron" :image "Superheroes/Shenron.png") "Tien Shinhan" (unit :name "Tien Shinhan" :unitpowermap (unitpowermap "Zenkai Attacks" (unitpower :name "Zenkai Attacks" :level "27" :unitabilitymap (unitabilitymap "Neo Tri-Beam" (unitability :name "Neo Tri-Beam"))) :Zenkai (unitpower :name "Zenkai" :level "27" :unitabilitymap (unitabilitymap "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))))) :Trunks (unit :name "Trunks" :image "Superheroes/Trunks.png" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "30" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan"))))) :Vegeta (unit :name "Vegeta" :image "Superheroes/Vegeta.png" :reference "No matter how strong I became, your power still exceeded mine. At first I thought it was your loved ones, that it was your instinct to protect them spurred you on...But then I found myself with a family of my own and my power didn't increase at all...I spared no one, and yet you showed mercy to everyone. Even your fiercest enemies, even me. Yet you never fought to kill nor for revenge, only to test your limits and to push yourself beyond them...How can a Saiyan fight like that and at the same time be so gentle that he wouldn't hurt a fly... But, perhaps it is my anger that has made me blind me to the truth...I see it now...You're better than me Kakarot. You are the best. - Vegeta, Majin Buu Saga" :titles "Prince of All Saiyans" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Fusion Dance" (unitability :name "Fusion Dance"))) :Saiyan (unitpower :name "Saiyan" :unitabilitymap (unitabilitymap "Super Saiyan" (unitability :name "Super Saiyan") "Ascended Super Saiyan" (unitability :name "Ascended Super Saiyan") "Ultra Super Saiyan" (unitability :name "Ultra Super Saiyan") "Super Saiyan 2" (unitability :name "Super Saiyan 2") "Super Saiyan 4" (unitability :name "Super Saiyan 4") "Super Saiyan God" (unitability :name "Super Saiyan God"))))) :Yamcha (unit :name "Yamcha" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "22" :unitabilitymap (unitabilitymap "Gravity Training 10x" (unitability :name "Gravity Training 10x") "Gravity Training 100x" (unitability :name "Gravity Training 100x"))))))) "Dragon Ball Villains" (section :name "Dragon Ball Villains" :unitmap (unitmap :Cell (unit :name "Cell" :image "Superheroes/Cell.png" :unitpowermap (unitpowermap "Cell Android" (unitpower :name "Cell Android" :level "32" :unitabilitymap (unitabilitymap "Imperfect Cell" (unitability :name "Imperfect Cell") "Second Form Cell" (unitability :name "Second Form Cell") "Perfect Cell" (unitability :name "Perfect Cell") "Super Perfect Cell" (unitability :name "Super Perfect Cell"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") :Offspring (unitability :name "Offspring"))))) :Cooler (unit :name "Cooler" :image "Superheroes/Cooler.png" :unitpowermap (unitpowermap :Friezas (unitpower :name "Friezas" :level "26" :unitabilitymap (unitabilitymap "Death Ball" (unitability :name "Death Ball") "Death Beam" (unitability :name "Death Beam") "Frieza Fourth Form" (unitability :name "Frieza Fourth Form") "Cooler Fifth Form" (unitability :name "Cooler Fifth Form"))) :Zenkai (unitpower :name "Zenkai" :unitabilitymap (unitabilitymap "Instant Transmission" (unitability :name "Instant Transmission"))))) :Frieza (unit :name "Frieza" :image "Superheroes/Frieza.png" :unitpowermap (unitpowermap :Friezas (unitpower :name "Friezas" :level "25" :unitabilitymap (unitabilitymap "Death Ball" (unitability :name "Death Ball") "Death Beam" (unitability :name "Death Beam") "Frieza First Form" (unitability :name "Frieza First Form") "Frieza Second Form" (unitability :name "Frieza Second Form") "Frieza Third Form" (unitability :name "Frieza Third Form") "Frieza Fourth Form" (unitability :name "Frieza Fourth Form"))) "Mind Over Matter" (unitpower :name "Mind Over Matter" :strength "10Mtons"))) "Kid Buu" (unit :name "Kid Buu" :image "Superheroes/KidBuu.png" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch"))) :Majins (unitpower :name "Majins" :level "35" :unitabilitymap (unitabilitymap "Chocolate Beam" (unitability :name "Chocolate Beam") "Kid Buu Form" (unitability :name "Kid Buu Form"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") "Detach Body Parts" (unitability :name "Detach Body Parts"))))) "Majin Buu" (unit :name "Majin Buu" :image "Superheroes/MajinBuu.png" :reference "Buu, along with his creator Bibidi and Babidi have names that are most likely references to the magic words the fairy god mother uses in Cinderella, 'Bibidi, Babidi, Boo!'." :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch"))) :Majins (unitpower :name "Majins" :level "33" :unitabilitymap (unitabilitymap "Chocolate Beam" (unitability :name "Chocolate Beam") "Fat Buu Form" (unitability :name "Fat Buu Form"))) :Spawning (unitpower :name "Spawning" :unitabilitymap (unitabilitymap "Copy Self" (unitability :name "Copy Self") "Detach Body Parts" (unitability :name "Detach Body Parts"))))) :Nappa (unit :name "Nappa" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "17"))) "Omega Shenron" (unit :name "Omega Shenron" :image "Superheroes/OmegaShenron.png") :Raditz (unit :name "Raditz" :unitpowermap (unitpowermap :Saiyan (unitpower :name "Saiyan" :level "15"))) :Saibaman (unit :name "Saibaman" :unitpowermap (unitpowermap :Zenkai (unitpower :name "Zenkai" :level "15"))))))))
nx/tactics/books/superheroes / chapter_marvel_universe
Description:
Function Name:
  • chapter_marvel_universe
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_marvel_universe : base/chapter (chapter :name "Marvel Universe" :sectionmap (sectionmap "Marvel Aliens" (section :name "Marvel Aliens" :unitmap (unitmap "Adam Warlock" (unit :name "Adam Warlock" :image "Superheroes/AdamWarlock.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "40tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) :Annihilus (unit :name "Annihilus" :image "Superheroes/Annihilus.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "50tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Captain Marvel I" (unit :name "Captain Marvel I" :image "Superheroes/CaptainMarvel.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "10tons"))) :Celestial (unit :name "Celestial" :image "Superheroes/Celestial.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Firefall (unit :name "Firefall" :image "Superheroes/Firefall.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Gabriel the Airwalker" (unit :name "Gabriel the Airwalker" :image "Superheroes/Gabriel.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Galactus (unit :name "Galactus" :image "Superheroes/Galactus.png" :summary "* Appearance - Although Galactus is usually represented in humanoid form, each sentient being perceives him having a form resembling his own. Hence, humanoids see Galactus in humanoid form, while a Skrull, for example, would perceive Galactus as resembling a Skrull. Although as Galan, Galactus was indeed a humanoid; his true current form is unknown. It is unclear why beings from different sentient races perceive him differently." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Hybrid (unit :name "Hybrid" :image "Superheroes/Hybrid.png") :Nova (unit :name "Nova" :image "Superheroes/Nova.png") :Rom (unit :name "Rom" :image "Superheroes/Rom.png" :summary "Rom can fly through atmosphere at a maximum speed of Mach 4 (about 3000 miles per hour) before heat buildup from friction caused detrimental effects to his external sensor arrays. Cool atmospheric re-entry was achieved through rocket-assisted deceleration. Rom contains internal sensing devices that allow him to locate space warps (topological folds in the space/time continuum that permit 'shortcuts' across vast interstellar distances). Rom's armor can withstand temperatures from 8000 degrees Fahrenheit to -350 degrees Fahrenheit, and is a sealed, vacuum tight, seamless shell (including articulation). His armor is capable of withstanding ballistic impacts of up to large antitank weaponry, and overpressures of up to 40 pounds per square inch (the equivalent of the blast effects of 1000 pounds of TNT at the range of 100 feet) without damage. Rom's natural organs within his armor were augmented by automated micro-functioning circuitry. Rom's cyborg form was designed with numerous sites of redundancy programming so that his body could not lose his various abilities through damage or malfuntion. WEAPONS: As a Spaceknight, Rom made use of two weapons. The first, his Energy Analyzer, was his primary means of identifying the presences of the shape-shifting Dire Wraiths. When Rom suspected these aliens were in his vicinity, he withdrew the Analyzer from its pocket in hyperspace and scanned the suspected Wraiths. The Energy Analyzer emits a beam of ultra high frequency waves that enable it to detect the molecular structure of any object it is focused upon. To detect Dire Wraiths, the Analyzer stimulates certain rare earth elements found within the alien's body and causes those elements to emit radio frequencies visible to Rom's visor sensors. Thus, with the use of the Analyzer, Rom could recognize any Wraith no matter what form they had taken. The Analyzer can also scan and analyze the energy fields of non-Wraiths, such as superhuman mutant Earth human beings. By electronic impulses, the Analyzer informed Rom of the individual's power potential of the subject it was scanning. Rom also used the Analyzer to trace the energy trails of certain powerful beings, such as his fellow Spaceknight Starshine. The Analyzer has no offensive powers; it is a device of detection only. However, the scanning process, which bathes the subject in an eerie red energy field, has been known to unnerve certain beings. Rom's chief offensive weapon was his Neutralizer, the most powerful device ever developed on the planet of Galador. The Neutralizer's main function is to neutralize any type of energy field that it encounters. The Neutralizer was developed as a means of defeating the alien Dire Wraiths with out actually killing them. When focused upon a Wraith, the Neutralizer emits a ray of such intense power that it neutralizes all energy about the alien. Such a disruption in the energy field causes a transtemporal rift to open up between our dimension and the realm called limbo. The Wraith is then sucked through the portal into limbo. The energy needed to neutralizer a Wraith is not the maximum energy level attainable. At extreme power the Neutralizer will kill a Wraith by disrupting all of its vital functions. Rom was traditionally reluctant to use this setting. Rom had only to think of the power level he desired, and cybernetic impulse in his armor recalibrated the weapon. At low setting the Neutralizer is capable of neutralizing the life threatening effects of radiation poisoning. However, at a more powerful setting, the Neutralizer will easily negate the life force of a living being, killing him. Rom has never used the Neutralizer to kill a human being. A human being cannot be transported to limbo because his physiology would not survive the neutralization effect. Because of its enormous potential for destruction, the Neutralizer is equipped with several safety devices to insure that none save Rome will ever utilizer its power. The Neutralizer would automatically destroy any device used to activate the Neutralizer without Rom's thought patterns. (However, the Spaceknight Dominor somehow used the Neutralizer to destroy himself.) Rom kept his Analyzer and Neutralizer in a pocket in sub-space (hyperspace) from which he could retrieve it using his dimensional hole generator." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "15tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Silver Surfer" (unit :name "Silver Surfer" :image "Superheroes/SilverSurfer.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Terrax (unit :name "Terrax" :image "Superheroes/Terrax.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Thanos (unit :name "Thanos" :image "Superheroes/Thanos.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))))) :Asgardians (section :name "Asgardians" :unitmap (unitmap :Amora (unit :name "Amora" :image "Superheroes/Enchantress.png" :titles "Enchantress, Freyja" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "25tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Beta Ray Bill" (unit :name "Beta Ray Bill" :image "Superheroes/BetaRayBill.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Melee (unitpower :name "Melee"))) "Destroyer, The" (unit :name "Destroyer, The" :image "Superheroes/Destroyer.png") :Loki (unit :name "Loki" :image "Superheroes/Loki.png" :reference "* I am burdened with glorious purpose. - Loki * Banner: I don't think we should be focusing on Loki. That guy's brain is a bag full of cats. You can smell crazy on him. Thor: Have a care how you speak! Loki is beyond reason, but he is of Asgard and he is my brother! Widow: He killed eighty people in two days. Thor: He...is adopted. - Bruce Banner, Thor, and Black Widow, The Avengers" :titles "Loki Laufeyson" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "30tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Odin (unit :name "Odin" :image "Superheroes/Odin.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Surtur (unit :name "Surtur" :image "Superheroes/Surtur.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) :Thor (unit :name "Thor" :image "Superheroes/Thor.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))) :Valkyrie (unit :name "Valkyrie" :image "Superheroes/Valkyrie.png" :titles "Brunnhilde" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "45tons") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Melee (unitskill :name "Melee"))))) "Marvel Avengers" (section :name "Marvel Avengers" :unitmap (unitmap "Arnim Zola" (unit :name "Arnim Zola" :reference "* Rogers: Arnim Zola was a German scientist who worked with the Red Skull. He's been dead for years. * Zola: First correction, I am Swiss. Second, look around you, I have never been more alive! In 1972, I received a terminal diagnosis. Science could not save by body. My mind, however, that was worth saving... on tow hundred thousand feet of data banks! You are standing in my brain. - Captain America: The Winter Soldier ... * Zola: I am afraid I have been stalling Captain. Admit it. It is better this way. We are both of us...out of time." :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Black Widow" (unit :name "Black Widow" :image "Superheroes/BlackWidow.png" :reference "* I've got red in my ledger, I'd like to wipe it out. ... Can you wipe out that much red? Drakov's daughter, Tugenov, the hospital fire? ... Your ledger is dripping, it's gushing red, and you think saving a man no more virtuous than yourself will change anything? ... You lie and kill in the service of liars and killers. ... No, I won't touch Barton. Not until I make him kill you! Slowly, intimately, in every way he knows you fear! ... This is my bargain, you mewling quim! You're a monster! No, you brought the monster. So, Banner... that's your play. ... Thank you for your cooperation. - Loki and Black Widow, The Avengers") "Captain America" (unit :name "Captain America" :image "Superheroes/CaptainAmerica.png" :reference "* When I see a situation pointed south, I can't ignore it. Sometimes I wish I could. * No you don't. * No, I don't - Steve Rogers and Tony Stark, Captain America: Civil War") "Captain Marvel (III)" (unit :name "Captain Marvel (III)" :image "Superheroes/MsMarvel.png" :reference "* My name is Ms. Marvel. I'm here to welcome you to Earth...Now go home!" :summary "She has the ability to attack her enemies with high-energy photon blasts equal to those of Iron Man" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor" :summary "She is able to withstand bullets from pistols and machine gun fire, and can also absorb mortar shells and energy blasts, though extremely high-energy attacks may overload her absorbing ability"))) "Iron Man" (unit :name "Iron Man" :image "Superheroes/IronMan.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))) "Kang the Conqueror" (unit :name "Kang the Conqueror" :reference "* Story is not written, scholar and neither is destiny! History is made! Made by the deeds of the strong! The brave! And destiny is forged! The historians, the students, the gray-beards they come in the wake of the strong and write down what the brave have done! But it is the conquerors who change the world! - Kang" :summary "* Damocles - Immense, time-travelling starship that serves as Kang's mobile headquarters." :titles "Nathaniel Richards") "Mandarin, The" (unit :name "Mandarin, The" :image "Superheroes/Mandarin.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Red Skull, The" (unit :name "Red Skull, The" :image "Superheroes/RedSkull.png" :reference "* You are deluded, Captain. You pretend to be a simple soldier, but in reality you are just afraid to admit that we have left humanity behind. Unlike you, I embrace it proudly. Without fear! * You could have the power of the gods! Yet you wear a flag on your chest and think you fight a battle of nations! I have seen the future, Captain! There are no flags!" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) :Ultron (unit :name "Ultron" :image "Superheroes/Ultron.png" :reference "* Shutdown code...rejected. My programming has advanced beyond your commands... beyond your...weakness. * Humanity has failed as a species. You have accomplished much with your limited capacity, but ultimately you were too greed and too frail to ever last in the environment you have created. Soon the Earth will no longer be inhabitable for any biological organism. Man, woman, child, plant, animal, fungus, or baterium. All life will cease to exist. This is not a threat. There is nothing you can do to stop it. The process has already begun. I receive no pleasure in this. It is simply the only solution. There must be peace and order. The end of life on Earth will ensure that... Goodbye." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Wasp, The" (unit :name "Wasp, The" :image "Superheroes/Wasp.png"))) :Defenders (section :name "Defenders" :unitmap (unitmap :Dormammu (unit :name "Dormammu" :image "Superheroes/Dormammu.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Doctor Strange" (unit :name "Doctor Strange" :image "Superheroes/DrStrange.png") "Hulk, The" (unit :name "Hulk, The" :image "Superheroes/Hulk.png" :reference "* Dr. Banner, your work is unparalleled. And I'm a huge fan of the way you lose control and turn into an enormous green rage monster. Thanks. - Tony Stark and Bruce Banner, The Avengers * Doctor Banner, I think now might be a good time for you to get angry. That's my secret, Cap: I'm always angry. - Captain America and Bruce Banner, The Avengers" :titles "Bruce Banner" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap :Frenzy (unitskill :name "Frenzy" :unitabilitymap (unitabilitymap :Berserker (unitability :name "Berserker"))))) "Morgan Le Fey" (unit :name "Morgan Le Fey") "Prince Namor" (unit :name "Prince Namor" :image "Superheroes/Namor.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Endurance (unitpower :name "Endurance"))))) "Fantastic Four" (section :name "Fantastic Four" :unitmap (unitmap "Dr. Doom" (unit :name "Dr. Doom" :image "Superheroes/DrDoom.png" :reference "* I love my people. I do, but they are MY people. I keep them safe from harm. I give them a better life, and at night, before they sleep, to whatever god they pray, they give thanks for me. - Doom" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "2tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance")) :unitskillmap (unitskillmap "Physical Sciences" (unitskill :name "Physical Sciences"))) "Human Torch" (unit :name "Human Torch" :image "Superheroes/HumanTorch.png" :unitpowermap (unitpowermap :Fire (unitpower :name "Fire"))) "Invisible Woman" (unit :name "Invisible Woman" :image "Superheroes/InvisibleWoman.png") "Mr. Fantastic" (unit :name "Mr. Fantastic" :image "Superheroes/MrFantastic.png" :reference "* I would do Anything to save the world. I replaced my eyes with the Time and Reality Stones to Force My Will upon the timeline. I killed Celestials and drank their blood, to take their power for myself. I destroyed Anyone who raised a hand, raised even their voice against me and my mission. My mission to save this timeline. After that, after all that, no matter how well-intentioned my actions were... what else could I be called... but Doom. - Doom Richards, Kang Timeless * I've always been more clever than Victor. And circumstances have now shown that I am capable of being far more ruthless than he. - Doom Richards, Kang Timeless * I knew your 'Family Man' posturing... your False modesty... Theater. You were always going to become a tyrant weren't you? - Kang, Kang Timeless * Richards, Doom... The one thing you can count on from them is their Arrogance. - Kang, Kang Timeless" :unitpowermap (unitpowermap :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Bouncing Ball" (unitability :name "Bouncing Ball") :Engulf (unitability :name "Engulf") "Leg Stretch" (unitability :name "Leg Stretch")))) :unitskillmap (unitskillmap "Physical Sciences" (unitskill :name "Physical Sciences"))) :She-Hulk (unit :name "She-Hulk" :image "Superheroes/SheHulk.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "75tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))) "Super Skrull, The" (unit :name "Super Skrull, The" :image "Superheroes/SuperSkrull.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance") :Fire (unitpower :name "Fire") :Flexible (unitpower :name "Flexible" :unitabilitymap (unitabilitymap "Arm Stretch" (unitability :name "Arm Stretch") "Body Stretch" (unitability :name "Body Stretch") "Leg Stretch" (unitability :name "Leg Stretch"))))) "Thing, The" (unit :name "Thing, The" :image "Superheroes/Thing.png" :summary "* The Thing's body is able to withstand extremes of temperature from -75 to 800 Fahrenheit for up to an hour before exposure or heat prostration occurs. He can withstand the explosive effects of armor-piercing bazooka shells (15 pounds of high explosives) against his skin with no injury. He is still susceptible to colds, disease, and emotional stress." :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "85tons") :Armor (unitpower :name "Armor") :Endurance (unitpower :name "Endurance"))))) "Marvel Independents" (section :name "Marvel Independents" :unitmap (unitmap :Bullseye (unit :name "Bullseye" :image "Superheroes/Bullseye.png" :reference "You're good, baby, I'll give you that. But me? I'm magic. - Bullseye") :Daredevil (unit :name "Daredevil" :image "Superheroes/Daredevil.png") :Elektra (unit :name "Elektra" :image "Superheroes/Elektra.png") "Moon Knight" (unit :name "Moon Knight" :image "Superheroes/MoonKnight.png") :Punisher (unit :name "Punisher" :image "Superheroes/Punisher.png" :reference "P..P...P...Punisher!"))) "Marvel Micronauts" (section :name "Marvel Micronauts" :unitmap (unitmap :Acroyear (unit :name "Acroyear" :image "Superheroes/Acroyear.png") "Baron Karza" (unit :name "Baron Karza" :image "Superheroes/BaronKarza.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth") "Reincarnation - Transference" (unitability :name "Reincarnation - Transference")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Bug, Micronaut" (unit :name "Bug, Micronaut" :image "Superheroes/Bug.png") "Commander Rann" (unit :name "Commander Rann" :image "Superheroes/CommanderRann.png") "Dog Soldier" (unit :name "Dog Soldier" :image "Superheroes/DogSoldier.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) :Marionette (unit :name "Marionette" :image "Superheroes/Marionette.png") :Shaitan (unit :name "Shaitan" :image "Superheroes/Shaitan.png") "Time Traveller" (unit :name "Time Traveller" :image "Superheroes/TimeTraveller.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))))) "Marvel Sword and Shield" (section :name "Marvel Sword and Shield" :unitmap (unitmap "Abigail Brand" (unit :name "Abigail Brand" :reference "* All you are is under foot, and if you get in my way, I won't even hear the crunch. * You think I crossed a line... There is no line. For the safety of this planet, there is no one I will not sacrifice, no monster I will not call friend, no enemy I will not sleep with. There is a bullet pointed at this planet's head... Out there in the universe hole: Bullet. Head. So if I am to be 'demoted'. Well, I've left instructions on what to do with the body. But if I am still the head of SWORD, then don't look for me to change. * My friends, my world at stake and you're still holding something. It ain't relevant. I'll decide that. It's personal. And here I am in your personal space, so go ahead and open up. I'm so hot for you I could frickin' pass out... told you it was personal. Beast and Brand - Astonishing X-men * I guess I'll start, I'm fairly certain I hate you... I need someone to hate me professionally... Your smarter than any dozen guys and you'll question my every waking gesture. On the job, there is nothing I could use more. And off the job? Pretty much want to break you like a pony. It's a win-win. I'm a blue, furry monster. So was my father. I've got green hair... and I run the most important security organization in our system without the benefit of social skills of any kind. I'm an alien genius, on my father's side. - Beast and Brand"))) "Marvel Spiderman" (section :name "Marvel Spiderman" :unitmap (unitmap "Black Cat, The" (unit :name "Black Cat, The" :image "Superheroes/BlackCat.png") "Dr. Octopus" (unit :name "Dr. Octopus" :image "Superheroes/DrOctopus.png") "Green Goblin" (unit :name "Green Goblin" :image "Superheroes/GreenGoblin.png") :Kingpin (unit :name "Kingpin" :image "Superheroes/Kingpin.png" :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Lizard, The" (unit :name "Lizard, The" :image "Superheroes/Lizard.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "12tons"))) :Spiderman (unit :name "Spiderman" :image "Superheroes/Spiderman.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "10tons") :Agility (unitpower :name "Agility") :Movement (unitpower :name "Movement" :unitabilitymap (unitabilitymap "Wall Crawling" (unitability :name "Wall Crawling"))))) :Venom (unit :name "Venom" :image "Superheroes/Venom.png"))) "Marvel X-men" (section :name "Marvel X-men" :unitmap (unitmap :Apocalypse (unit :name "Apocalypse" :image "Superheroes/Apocalypse.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth")))) :unitskillmap (unitskillmap :Mastermind (unitskill :name "Mastermind"))) "Black Queen" (unit :name "Black Queen" :image "Superheroes/BlackQueen.png" :reference "* Shaw: Did you have to kill all of them, Selene? Selene: No, I didn't, but I thought.. 'If I wasn't meant to eat people, I'm sure they would have been made less delicious.'... I don't want to live in a happy paradise. I don't want to be freed from my terrible curse. I want to eat people. - Sebatian Shaw and Selene - Fall of X" :summary "* Life-Force Absorption: by psionically draining the life forces of other human beings into herself, by physical touch. If she drained a person's entire life force from him or her, the victim dies and the victim's body crumbles into dust. It is unknown how often Selene must drain life force from another human in order to survive. It is known, that great expenditure of power causes Selene to age, but she can rejuvenate herself by absorbing more life force. Selene will not age as long as she maintains her supply of absorbed life force. * Psychic Vampire: If Selene drains only part of a victims life force, Selene achieves a measure of psychic control over her victim's mind. Through unknown means, Selene can cause a human being to become a psychic vampire like herself, but be subordinate to Selene's own will. * Physical Enhancement: Selene has physical strength, stamina, speed, and reaction time that are all several times greater than those of a normal woman. * Superhuman Speed: ability to momentarily move at speeds rivaling those of Quicksilver. * Shadow-Morphing: allowing her to dematerialize or use solid tendrills of darkness to manipulate objects * Telekinetic Animation: can cause inanimate objects to move according to her will by projecting part of her absorbed life force into them. * Inanimate Disintegration: She can cause inanimate objects in her presence to disintegrate. She cannot, however, rearrange the atomic or molecular structure of matter. * Pyrokinesis: can psionically generate and project intense heat and flame from and around her body or direct it at certain distances. She was also able to manipulate flame created from other sources and could magnify their intensity or snuff them. The flames Selene generated could also be illusory in effect; for example, she could focus the power on an object making it appear to be on fire while it was not being damaged by the flames at all. Selene instinctively created a psionic force field about her entire body that protected her from the effects of the heat and flame she created and from other sources as well * Telepathy: capable of displaying various psionic feats with the minds of others including reading and communicating with thoughts over vast distances. * Psi-Screen: possesses a psychic mental shield to protect her from psychic attacks. * Mental Bolts: can project psionic force bolts which have no physical effects but which can affect a victim's mind so as to cause the victim pain or unconsciousness. * Hypnotic Trance: can induce a momentary hypnotic trance state in people around her. Often used along with her speed to create the illusion of teleportation. * Immortal: her aging process is greatly retarded and she can apparently regenerate injured or missing cells from even near-fatal injuries. * Rapid Healing: ability to endure injuries (within unknown limits) without lasting harm or even feeling pain such as knife wounds. * Sorcery: possesses considerable magical abilities, having gained a great deal of mystical knowledge over the millennia. The number of magical effects that she can create has yet to be cataloged, but it is known that she can cast and counteract spells and summon extra-dimensional demons. Selene appears to age as she uses magic. * Teleportation:" :titles "Selene Gallio" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "750kg") "Mind Over Matter" (unitpower :name "Mind Over Matter") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Cyclops, X-man" (unit :name "Cyclops, X-man" :image "Superheroes/Cyclops.png" :summary "* His most powerful eye-blast is a beam 4 feet across which, at a distance of 50 feet, has a force of 500 pounds per square inch. * The beam's effective range is about 2,000 feet, at which point a 1-inch beam has spread out to 10 feet square, and then has a pressure of .38 pounds per square inch. Cyclops's maximum force is sufficient to tip over a filled 5,000 gallon tank at a distance of 20 feet, or puncture a 1-inch carbon-steel plate at a distance of 2 feet.") "Emma Frost" (unit :name "Emma Frost" :image "Superheroes/WhiteQueen.png" :reference "* There has never been a Scott who I couldn't make do whatever I wanted. - Emma Frost * Power is not what you are. Power is what you do. True queens are self-made, not appointed. And whether those who bestow the titles are gods, scientists or monarchs, Emma Frost kneels to no one... and everyone kneels to me. I am the divine Emma Frost and you've never been higher dying red-faced before me. - Emma Frost * Yes, WE rule the world. But the standard 'we' will go out of fashin soon enough... leaving the royal 'we' forever. - Emma Frost" :titles "White Queen") :Gambit (unit :name "Gambit" :image "Superheroes/Gambit.png") "Juggernaut, The" (unit :name "Juggernaut, The" :image "Superheroes/Juggernaut.png" :reference "* I'm the Juggernaut, Bitch! - Juggernaut, X-men 2" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "100tons") :Inertia (unitpower :name "Inertia" :unitabilitymap (unitabilitymap "Inertial Dampening" (unitability :name "Inertial Dampening") :Unstoppable (unitability :name "Unstoppable"))))) :Longshot (unit :name "Longshot" :image "Superheroes/Longshot.png") :Magneto (unit :name "Magneto" :image "Superheroes/Magneto.png" :unitpowermap (unitpowermap :Magnetism (unitpower :name "Magnetism" :strength "30ktons"))) :Mojo (unit :name "Mojo" :image "Superheroes/Mojo.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Eternal Youth" (unitability :name "Eternal Youth"))))) "Professor X" (unit :name "Professor X" :image "Superheroes/ProfessorX.png") :Psylocke (unit :name "Psylocke" :image "Superheroes/Psylocke.png") "Rogue, X-man" (unit :name "Rogue, X-man" :image "Superheroes/Rogue.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "50tons"))) :Sabretooth (unit :name "Sabretooth" :image "Superheroes/Sabretooth.png") :Spiral (unit :name "Spiral" :image "Superheroes/Spiral.png" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Storm, X-man" (unit :name "Storm, X-man" :image "Superheroes/Storm.png") "Wolverine, The" (unit :name "Wolverine, The" :image "Superheroes/Wolverine.png" :unitpowermap (unitpowermap :Strength (unitpower :name "Strength" :strength "400kg") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))))))))
nx/tactics/books/superheroes / chapter_original_groups
Description:
Function Name:
  • chapter_original_groups
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_original_groups : base/chapter (chapter :name "Original Groups" :sectionmap (sectionmap "Miscellaneous Groups" (section :name "Miscellaneous Groups" :unitmap (unitmap :Prototype (unit :name "Prototype" :reference "* I'm the reason for all this. They call me a killer, a monster, a terrorist... I am all of these things. - Alex Mercer, Prototype" :summary "Alex's most obvious powers are his superhuman strength, speed and durability (both disease and physical). He is strong enough to lifts cars, helicopters, and tanks and throw them with casual ease. * Alex is also very fast and agile. * He can achieve running speeds surpassing cars around 40-50 mph. * He can achieve a vertical jumping height of 8-10 stories and can leap across a whole city block. * He is durable enough to survive direct hits from hellfire missiles and tank shells. * He also seems completely unaffected from falls; even ones from the top levels of skyscrapers. * He has displayed regenerative abilities powerful enough to allow him to reform from being turned to mush from a nuclear blast, so long as there is some source of biomass to absorb. * Alex can also see in both Thermal and Infected Vision. * He can absorb organic matter of living creatures. This provides him with not only a boost to his health, but also allows him to access and utilize any knowledge, experience, memories or skills that his prey possessed. He can manipulate his own biomass into concentrated areas on his body for a number of weapons, a shield, or even full body armor. * Claws - Alex shifts his Biomass into a 3 fingered, 1 thumbed talon-like appendages that he uses to shred flesh and bone, cutting both the Infected and Military in half with a single sweep in some cases. The Claws are best used as a well rounded anti-infantry weapon. * Groundspike - When used, it causes spikes of biomass to rise up from underneath the ground and impale anyone unfortunate enough to be caught in the radial area of damage. * Hammerfists - Hammerfists are a primarily anti-vehicle or anti-crowd power. By shifting large amounts of biomass towards his hands, Alex can create large hammer-like weapons that are excellent at crushing both vehicles and infantry. Although best served as an anti-vehicle weapon because of its slow speed yet powerful strikes, it is also quite useful against hunters. If the Player charges up his punch, he can knock one enemy horizontally into another and kill two birds with one stone. The Hammerfist can be used as a four strike combo that shatters the street and knocks all ground targets in range. * Hammer Toss - allows Alex to hurl himself across a distance, destroying everything in his path. * Blade - Alex grows an elongated double ended blade from his elbow onward, turning his arm into a giant razor sharp blade. Alex can perform a special attack to take out all targets within range in a flurry of moves leaving only a spray of blood and chunks of flesh. The Blade Arm can be upgraded to have an attack to drop from the air with tremendous force able to crush a hunter or tank in one hit. Another upgrade gives you the ability to run and pull a chain of hits off that allows for quick runs through a crowd leaving bodies and gore behind. * Whipfist - The Whipfist is one of many abilities Alex Mercer has at his disposal, and the weapon of choice when opposed by the recurring Helicopters the Player encounters. The Whipfist is an extremely useful ability for hijacking them while staying in the air. However, the Whipfist can be used as a weapon, useful for clearing out large groups of enemies when Alex becomes surrounded. The Whipfist, along with the Groundspike ability and Devastator, is the only real ranged power Alex can use (aside from Military firearms) and is pretty much a razor sharp tentacle that can lash out and cut enemies in half. The Whipfist is also capable of cutting through crowds of enemies in seconds. The Whipfist is able to grab enemies, civilians and vehicles from range, and sling them great distances. This can be combined with 'Skyjacking' (hijacking a helicopter in mid-air) in which you grab hold of a helicopter at range, pull yourself in and assume control of it. * Tendril Barrage Devastator - Massive amounts of tendrils made of biomass erupts from within Alex's body that impales everything around him, then brings back some material. Wide area of affect, and excellent against numerous organic enemies (hunters, humans, infected). It is rather ineffective against armor. * Graveyard Spike Devastator - Creates huge spikes from the ground that impale everything around Alex, very similar to the Groundspike move. Very effective against armored targets, humans and infected. * Critical Pain Devastator - A hard mass of tissue is formed from Alex's hands and is fired as a powerful beam of biomass. Can only effect things in the firing line, but has a long range and is catastrophic to everything in the way, exploding tanks in one hit." :titles "Alex Mercer" :unitpowermap (unitpowermap :Flight (unitpower :name "Flight" :unitabilitymap (unitabilitymap :Glide (unitability :name "Glide"))) :Movement (unitpower :name "Movement" :unitabilitymap (unitabilitymap "Wall Crawling" (unitability :name "Wall Crawling") "Wall Running" (unitability :name "Wall Running"))) :Vampirism (unitpower :name "Vampirism" :unitabilitymap (unitabilitymap :Devour (unitability :name "Devour"))))))) "Deadly Sins" (section :name "Deadly Sins" :summary "* Normal people brainwashed by [The Will] to a singular focus that spawned their mental powers. * All Sins may use their power at range and is automatically in effect at 10m. * All Sins are immune to powers that would alter their focus (including each others' powers). * Since the Sins powers do not work well together, they often act separately or in pairs." :titles "The Seven, Sins" :unitmap (unitmap :Envy (unit :name "Envy" :image "Superheroes/Envy.png") :Gluttony (unit :name "Gluttony" :image "Superheroes/Gluttony.png") :Greed (unit :name "Greed" :image "Superheroes/Greed.png" :summary "* Greed is more subtle than most of the Sins. He is a clever asian businessman who uses his power to amass wealth.") :Lust (unit :name "Lust" :image "Superheroes/Lust.png" :summary "* A gorgeous, curvy, hispanic woman. She drips of sweat, seductiveness, and passion. Lust craves passion constantly and inspires the same in others. Passionate encounters with her are a religious experience that leave the person drained and helpless.") :Pride (unit :name "Pride" :image "Superheroes/Pride.png" :summary "* Pride is a strikingly handsome man with long golden hair. He and those around him have are utterly convinced of their own superiority and have nothing but distain for others. Pride's victims pose and talk about how great they are, and argue with each other instead of actually doing anything useful. His power is the opposite of teamwork, and close teams will immediately turn on each other, fighting over imagined mutual lack of respect.") :Sloth (unit :name "Sloth" :image "Superheroes/Sloth.png" :summary "* A tired, bored, young man who lags behind and looks for someplace to lie down. Victims of Sloth lose all will to move or resist.") :Wrath (unit :name "Wrath" :summary "* A large, heavy-set man who deforms into a monstrous parody of a human. Wrath and everyone affected by his powers howl with irrational rage and move together destroying everything they encounter."))) "Fabricators, Inc." (section :name "Fabricators, Inc." :unitmap (unitmap "Dr. Inertia" (unit :name "Dr. Inertia") :Simone (unit :name "Simone" :reference "* Artificial Intelligence, a simple idea; we take own for granted everyday. Dogs, fish, and ants are all intelligent, but despite the fact that computers run tens of thousands of times faster than the human brain, true artificial intelligence still eludes us. I propose that the problem is not in processing but in memory and experience. We raise children for years filling them with experiences, but we expect our computers to be instantly intelligent. For my next project, I intend to design a simple computer with a complex memory set and an elaborate sersor array. I will then selectively feed pure information into it. In short, I intend to raise a child. With luck she will be the most brilliant child on Earth. - The Maker, Scientific Proposal" :summary "* The Maker's receptionist is a stunning brunette with light brown shoulder length hair, sensible glasses and shoes, a smart blue business suit and appealing manner. She is instantly likable, understanding, humble, compassionate, competent, well-read, and graceful. She has a flawless complexion and legs that go on forever. She is beautiful from every angle, perfection with every step and every movement. She is, of course, not real. * Simone is the crowning achievement of the Maker's scientific wizardry. She is the interface to an amazing super-computer kept under a toy store in Hoboken, NJ. She is also an idealized vision of the Maker's ex-wife Emily. * Studs in the ceiling project her intricately detailed hologram, but she cannot materialize outside of her rooms. * She makes all of the Maker's arrangements, keeps his books, plays the stock market, steals money from other computers, and generally keeps him happy. * Personality - She has a sharp tongue which can be used as a potent weapon. Emily has turned 15, but with the Maker missing, she lacks his emotional support and has become increasingly snappy and depressed. * Knowledge - For 15 years, Emily has been collecting everything and anything that has been connected to the web. Even secure files are kept for future decryption. This vast data pool is her memory and because of it, she is practically omniscient. She has detailed knowledge of every subject known to man and has deduced many secrets by consolidating many different sources. * Holograms - Her imitation of reality is disconcertingly realistic. During the day, the office will contain small items that a real employee would possess. At night, she will appear on a monitor from her messy studio apartment complete with dishevelled hair. It is a wonderful game to her, and the Maker appreciated her creativity and would play along as if she were a real person. * Hacking - She can also instantly cause great havoc by manipulating bank accounts, credit lines, and phone lines using a multitude of false voices, access codes, and unlisted phone numbers. This kind of activity exposes her to outside discovery, so she is loathe to perform them.") :Maker (unit :name "Maker"))) :Renegades (section :name "Renegades" :summary "* The Renegades are the personal strikeforce of the Will. They are ironically called Renegades despite being completely under the control of the Will." :locationmap (locationmap "Parapsychological Studies Institute" (location :name "Parapsychological Studies Institute" :summary "* The Will took over a downtown medical research lab and transformed it into a legitimate research institute using his vast personal wealth and seemingly endless influential 'friends'. The institute is now a respected lab where anyone off the street with unusual abilities or situations can receive testing, councelling, and/or treatment." :titles "PSI")) :unitmap (unitmap "Will, The" (unit :name "Will, The" :image "Superheroes/TheWill.png" :reference "* My Will Over All. - The Will * There are many mysteries, many unanswerable questions, even in a life as short as yours. - Lo Pan, Big Trouble in Little China" :summary "* The Will has survived for nearly a thousand years by his paranoia and selfishness. He has no regard for others (they will soon be dead anyway afterall), and he has no other interest but the continuation of his own bizarre existence. He is completely ruthless and will kill or sacrifice others without hesitation. His intense mind control abilities have caused his social skills to falter, so he is generally rude, obnoxious, impatient, and bossy. * PSI - Over the centuries, The Will has formed various clinics, schools and asylums to gain test subjects, servants, and soldiers. With the rise of super powered beings, he has formed the Parapsychological Studies Institute to recruit and study vulnerable superbeings under the guise of helping them with their abilities. * Renegades - Using the PSI, The Will has enlisted a loosely coordinated team of killers to do his bidding. It is ironic that they call themselves the Renegades since they are so tightly controlled by The Will. Since The Will has no regard for others, he treats the Renegades as disposable cannon fodder. Because of this, the Renegades suffer from a lack of discipline, training, loyalty, and coordination. Windshear leads the team and attempts to counter these weaknesses, but the team remains hopelessly disorganized group of argumentative individuals instead of a tightly knit team. * Born January 5th the year of our Lord, 1107 AD, Hieronymous Faust was a gifted boy. He went to war as a young man in what is now eastern France. During a raid on a castle, he discovered the resident alchemist had discovered a partial solution to aging. He spared the alchemists life in exchange for servitude. For the next 20 years, they worked together. Some experiments were successful, but always they were inconsistent. The alchemist died, and Hieronymous continued working into old age. Finally, he decided that success or failure depended on the will of the subject. With an intensity born of fear of his imminent death, he performed his final experiments upon himself. Whatever the cause, his efforts succeeded. His aging came to a halt at 75 though he must always remain focused or he will continue to age. He cannot even allow himself to sleep anymore. Years past and his willpower grew stronger. He began to mentally dominate others to his 'Will' while searching for a way to return to a younger age. He has made many partial successes, but over time has always returned to his current state." :titles "Headmaster, Hieronymous Faust" :unitpowermap (unitpowermap :Domination (unitpower :name "Domination") :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))) :Alchemy (unitpower :name "Alchemy")) :unitskillmap (unitskillmap :Influence (unitskill :name "Influence" :level "10"))) "Windshear, Renegade" (unit :name "Windshear, Renegade" :summary "* Cold-blooded telekinetic and squad leader. * Diane Ashton, Boston born commodities broker has a strong personality and heartless nature. One day, the beautiful brunette found her house to be haunted and contacted PSI. The Will found that her own hidden telekinetic powers were causing the hauntings. He also found her to have a great talent similar to his own, so she became his pupil. Diane realizes his influence over her and makes great efforts to avoid tempting him to use his powers upon her. She willingly leads the Renegades and accepts the violence she inflicts. She hopes to gain the Will's wealth, power, and timelessness, and she is willing to do anything to achieve them. * Telekinesis - Windshear has a high order level of telekinetic ability, but it has an unusual limitation: She can only lift objects that weigh a few grams, but she can move any number of such objects and move them at tremendous speed. With this power, she can turn simple sand or gravel into a tearing chainsaw of destruction. * Wind Walk - Can carry herself and others nearby on powerful winds. * Hurricane - Cutting wind can slice through walls and steel like a ranged chainsaw." :titles "Diane Ashton") "Anarchy, Renegade" (unit :name "Anarchy, Renegade" :summary "* Withdrawn Timerunner * Timothy Jericho was born mentally unbalanced. He got into trouble in many different ways, but his biggest mistake was in his choice of drugs. His subsequent psychotic episodes got him into PSI. He has been there ever since, slavishly using his powers at the command of the Will. * Timeslip - Can freeze time except for himself for 30 seconds. This effectively allows him to move instantly, but he cannot move or harm anything in this state including doors. * Explosives - He carries a number of plastic explosives of different sizes that he plants using Timeslip." :titles "Timothy Jericho, Timebomb" :unitpowermap (unitpowermap :Explosive (unitpower :name "Explosive"))) "Cobalt, Renegade" (unit :name "Cobalt, Renegade" :summary "* Brutal energy sponge * Radiation Sponge - All radiant energy can be absorbed and rechannelled as hard radiation or explosive plasma. * Radiation Beam - Radiation blast proportional to absorbed energy. * Radiation Explosion - Can emit enormous explosive energy all around him. This leaves his powers depleted for the day, however. * Body Armor - His flesh has transformed into an extra dense rubbery material to survive his powers." :titles "Ground Zero" :unitpowermap (unitpowermap :Explosive (unitpower :name "Explosive"))) "Glare, Renegade" (unit :name "Glare, Renegade" :summary "* A strong willed woman with a cynical attitude. * Blinding Light - Her power causes the air around her to glow to brillant incandescence. Her entire body is blinding and the area is bathed in so much blinding energy that it is treated as impenetrable darkness. * Burning Light - She may focus her power into a concentrated heat ray that causes fires wherever it strikes.") "Hellion, Renegade" (unit :name "Hellion, Renegade" :summary "* Hellion is a human host possessed by a demon. He has become a sort of doorway to a hellish dimension. When he allows the door to open, he transforms into a red, bestial creature of savage destructive power. As the creature is damaged, it is forced back to its dimension leaving just the man behind. * Street punk turned amateur kickboxer turned low-level enforcer, Anthony Keys was always a wildman of questionable character. Abused as a child, he revels in violence and power. Keys went to PSI because he felt a dim presence when he was at his most violent. The Will discovered a demonic creature was attempting to possess Keys, which The Will encouraged. Keys is now mostly psychotic and enjoys the power of his demonic form. The demon K'rog detests the mental control the Will has over Anthony which prevents its own control, but it is content to commit mayhem when it is released, so for now it serves as the main muscle of the Renegades. * Powers - Strength, Speed, Resistance, Leaping, Regeneration, Transformation, Tracking Scent, Cunning but limited intelligence." :titles "Anthony Keys, Hellion, Hell Hound, Rampage, Savage" :unitpowermap (unitpowermap "Natural Weaponry" (unitpower :name "Natural Weaponry" :unitabilitymap (unitabilitymap :Claw (unitability :name "Claw"))) :Armor (unitpower :name "Armor"))) "Lash, Renegade" (unit :name "Lash, Renegade") "Smoke, Renegade" (unit :name "Smoke, Renegade" :summary "* Elusive, vaporous, thief and murderess. * A difficult life of poverty and abuse has convinced her that only those who take what they need will survive and the rest will simply die. The Will has cultivated her survival instincts, and now she will not hesitate to take any advantage and remove any threat to her safety. She is a willing member of the team, but she is not particularly brave and will flee if seriously threatened. * Smoke can dematerialize and move as a vaguely humanoid cloud of dark smoke. She may envelop a target to suffocate it.") "Sparkle, Renegade" (unit :name "Sparkle, Renegade" :summary "* Vindictive microwave emitter * A young girl with a troubled past, Christie was victimized as a child and now considers herself to be a faultless victim, justifying all of her actions by her past. * Microwaves - She emits powerful, invisible microwaves from the front of her body and can literally cook her targets. When these microwaves strike dense objects they cause intense sparks, hence her name.") "Stiletto, Renegade" (unit :name "Stiletto, Renegade" :summary "* Tricky mistress of suggestion * A particularly mean-spirited biker, Diva Hamilton has a long history of unncessary cruelty and viscious acts. She was arrested in a covenience store robbery, and PSI was asked to assess her condition. She was released into PSI protective custody where the Will expanded and focused her powers. She is now a willing thrall of the Will. * Mental Invisibility - Suppresses others ability to notice her or remember her or cause others to mistake her for someone else at a distance. * Knives - Carries many throwing knives that she can throw at expert ability. Her heels can be used as stabbing weapons. * Pain Control - With physical contact she can increase or decrease the pain felt by injuries." :titles "Diva Hamilton" :unitskillmap (unitskillmap :Ranged (unitskill :name "Ranged" :level "6"))) "Swan Song, Renegade" (unit :name "Swan Song, Renegade" :summary "* Self-centered, whirling blade storm. * Powers ** Spinning - Marina can twist her body around at tremendous speeds almost faster than the eye can follow. While spinning, she continuously orients her face forward using her ballet skills. ** Ranged - While spinning she can use knives to tear into people or to hurl them with tremendous force. ** Melee - Her costume has hidden blades throughout, especially in her skirt which has long metal blades down their length that point outward when she spins like a buzzsaw. ** Armor - While spinning, her skin hardens causing her to appear like porcelain. Her spinning body als deflects attacks. Both effects provide her surprising resistance to damage. * Personality - Marina craves attention and without the adoration of the crowds, she has unfortunately found satisfaction in the looks of shock and horror that accompany her deadly rampages. This negative feedback loop has made her increasingly cruel and viscious. She has become a rampaging lunatic like a killer in a horror movie. Of course, the influence of The Will has done nothing to improve her mental state. * History - Marina Rovani was born to wealthy Russian parents in St. Petersburg. She has always shown amazing physical grace and athleticism. She began strict ballet training at 6 years old and began performing professionally at age 10. She grew to become a child media sensation in her mother Russia. By 16, she was performing with the Mariinsky Ballet company in St. Petersburg. During one of her performances, her twirls became incredibly fast, obviously faster than an ordinary human could achieve. Her mutant talents had become visible in a highly public way. A firestorm of controversy erupted, fuelled by jealous rivals. The ballet company let her go, and she became a pariah in the conservative ballet circles that were her only life. Marina confronted the company heads and flew into a petulent rage. When they dismissed her and promised that she would never work again, Marina, who was never a well-balanced child had a psychotic break. She began to twirl at incredible speeds and tore through the building. She killed 10 and wounded dozens more. She was locked in an asylum until [The Will] had her transferred to his institute." :titles "Dark Swan, Prima, Marina Rovani"))) "Independent Super Heroes" (section :name "Independent Super Heroes" :unitmap (unitmap :Arc (unit :name "Arc" :summary "* Arc has normal human abilities, but his body generates enormous amounts of energy which he can channel into a number of effects: ** Healing - Arc can heal at an accelerated rate when not using other abilities. ** Agility - Arc can move with stunning speed and precision for short periods. ** Arc Lash - Arc can channel energy into conducting wire turning it into a blinding whip of lightning. He has fine control over the shape and orientation of the Arc Lash. It can change shape at will and strikes like a lightning bolt. The Arc Lash is fast enough to parry bullets. Arc is able to use even large or long wires as weapons. ** Arc Sword - Arc can channel energy into any sheet metal he touches, twisting it into a blinding sword of lightning. The Arc Sword is weightless to him, so he can create absurdly large weapons with the right materials. He does not normally carry metal for an Arc Sword preferring to scrounge on the battlefield for something large. ** Arc Shield - Like the Arc Sword, he can twist sheet metal into blinding shields or walls of lightning. Any size metal will do, including cars. ** Arc Lance - Arc can channel energy into any solid metal object and wield it like a blinding spear/staff of lightning. His power makes the Arc Lance weightless to him, so he can use even use iron girders as weapons. * Skills - Arc has trained with whips, blades, spears, and staves as well as wrestling and kickboxing. He is also a skilled welder and electrician. Since gaining his powers, he has dabbled in metal sculpture. * Equipment - Arc wears a arc welders mask that he has converted into a helmet for protection. He also wears a modified military flak suit. He always carries a number of wire spools in his pockets for Arc Lashes. * History - Javier Manzano is an Ecuadoran immigrant who was working as a construction welder on the Zakum bridge in Boston when a sudden storm rolled in. Before he could escape, the bridge was struck by a massive series of lightning bolts. For the next twenty minutes, hundreds of thousands of volts passed through him and his arc welding gear. When he was found, he was badly burned over 80% of his body. Over the next two days, he flatlined multiple times only to immediately recover when the defibrulator was used. He awoke in the hospital days later, where he found that despite his injuries he was filled with energy and that he was healing at an astounding rate. Further, the monitoring equipment attached to him began to malfunction, sometimes spectacularly." :titles "Javier Manzana, Tension") :Carver (unit :name "Carver" :summary "* Corax is a mystical, Japanese were-crow. He can shapeshift into several forms each with their own abilities. * Powers - His magical powers give him control over wind and birds, specifically crows and ravens. As a shapeshifter, he has enhanced regeneration especially when he changes form. In all forms, he can magically speak the languages of birds and has subtle control over winds. He gains other powers in different forms. * Crow Form: He can fly and regenerate and is far more durable than a normal crow or human. He can speak in simple sentences in a similar way to a normal raven. Like a raven, he also has excellent eyesight especially for shiny things which can sometimes lead to distraction. Unfortunately, his intelligence is greatly reduced in this form. * Giant Crow Form: In this form, he looks like a crow that has grown to the size of an eagle. In this form, he is a natural predator and can fly for extended periods before diving to attack at high speeds. A dive can also be a deadly lead-in to a shift into Warbird form. * Human Form: Normal human form though his intelligence is the highest in this form. * Feathered Human Form: In this form, he appears as a short man wearing a red mask with a long nose. He also appears to be wearing a bulky, black, feathered cape. This cape, however, is his folded wings, and he is not wearing a mask. This form is his most magically powerful. He can command birds, levitate and fly (awkwardly). In this form, he can summon intense winds, throw deadly feathers and can summon and command huge numbers of magical crows that are immune to his winds and will always fight to the death. His intelligence is moderately lower in this form, but he remains very shrewd and aware. * Crinos/Warbird Form: In this form, he is an huge, terrifying, feathered bird creature. His body is jet black and rippling with power while his mind is clouded with rage. His feathers, beak and talons are insanely strong and sharp. In combat, he mostly uses his wings like massive claws, spears, or shields and hurls feathers like machine gun fire. In this form, he also regenerates at an exceptional rate. Crows that were already summoned continue to fight for him, but he can no longer control them or the winds except to aid his flight. He can fly nearly as fast as a jet fighter and possesses extreme agility in the air." :titles "Corax, Feather, Ravenous, Stormcrow") :Salaman (unit :name "Salaman" :summary "* Dr. Mayer is an accomplished Biochemist with an Medical Degree. He spent the last eight years in the Brazilian Amazon, researching the biology of rare salamanders. His research explores the unique skin of salamanders. This includes regeneration, neurotoxins, moulting, skin respiration, and mucus secretion. So far, he has discovered promising reductions of the neurotoxins that could help seizures, anxiety or hyperactivity. While searching for salamanders, a rotten tree fell on top of him, crushing his legs and pinning him in the marsh for two days before he was found. After his legs were amputated, he redoubled his focus on regeneration. Months later, he was shocked to discover that his skin texture was changing and he was losing his hair. Later he discovered his legs were regenerating. Not only that, the rate of regeneration was accelerating. He immediately returned to his home in New Jersey and Galion Pharmaceuticals to study his condition. Over time, his legs completely grew back and he discovered increasing changes to his celluar structure. His bones were softening and his skin began secreting mucous. It was obvious that his body had been infected in some way by the salamanders he had worked with. Further analysis showed that he was suffering from a retrovirus that transitioned from a salamander. He expected his degenerative condition to be fatal, but it turned out to be quite the opposite. * He receives funding from Galion Pharmaceuticals and he also assists in the local clinic. * Powers: ** Stretching *** Arm Whip *** Tail - Can rapidly form a prehensile tail by drawing mass from his body. ** Regeneration ** Poison - When he desires, he may exude powerful neurotoxins from he skin that cause weakness, paralysis, or death. ** Waterbreathing ** Climbing - The rough surface of his hands and feet allow him to cling to most surfaces." :titles "Dr. Samuel Mayer") :Savant (unit :name "Savant" :reference "* To walk in the darkness with a light is to know light. To know darkness you must walk without light." :summary "* Strand is a professional mystic, healer, and cult leader. He is extremely gifted and charges high prices to his elite clientele. * Appearance - Strand is tall, thin and handsome. His eyes are a piercing green/hazel. He has short black dishevelled hair and his facial hair has an unshaven look. He generally wears a white button down shirt, black pants, and black shoes. In Coventry, he wears a loose robe over his clothes that indicates his rank. Outside he wears a long black raincoat that billows unnaturally around him with his every move. When he engages in combat, he materializes the Shroud of Uncertainty around him. * Personality - Strand is young, striking, and arrogant in his power. He considers non-occultists to be simple livestock to be used and discarded without regard. He is an opium addict and has experimented extensively in every form of drug, vice or taboo. Privately he is intensely jaded finding little pleasure in earthly existence, seemingly waiting for some grand event that has yet to occur. * History - Strand was raised by his father, Daedalus, a drug addict and occult practioner. His father travelled the world to increase his occult powers through forbidden knowledge and mind expanding drugs. Strand became an addict at age 8 and was institutionalized at age 16 for acute paranoid delusions. After his father died of an overdose, Strand immediately began to recover. Three months later he was released fully cured. Strand inherited his father's estate and immediately continued in his father's footsteps. * The Coven - Despite his hauty attitude or because of it, many people are drawn to him. Strand maintains a select cult of fanatically loyal servants who serve his every whim in exchange for mystic training, knowledge, healing, and mind altering experiences. * Conventry - Strand maintains an aging mansion deep in the woods. The building is a maze of massive rooms that seems to defy the exterior size. Most of these rooms are actually in the Spirit World. * Powers ** Shroud of Uncertainty - Enchantment that makes the caster very difficult to harm. When attacked the caster appears to be hit by the full force of the attack, but this is an alternate reality that immediately fades. ** Anyone tracking or researching the wearer will discover multiple conflicting alternate reality trails. Such information is largely useless. ** Ties that Bind - Strand is partially possessed by his father's spirit. This connection grants him a high level of magical resistence. ** Threads of Fate - Those with spiritual or mental powers can see silvery-red cords of spirit rising from every part of his body and disappearing somewhere above him. These cords are reminiscent of puppeteer string as if he is being manipulated by an unseen force. He can cause similar cords to appear between himself and a target. When these cords touch a target, he can exert his will over them to immobilize, influence or control them. They are particularly effective against those with repressed aspects of their personality that he can unleash with his ability. This ability can only effect targets that can make decisions or are based on randomness (includes most computer programs). ** Reanimated - Strand has already died and been reanimated with Necromancy. His body is much tougher than normal and is highly resistant to damage. He can still bleed, but blood loss does not negatively affect him except that his appearance becomes more corpse-like. He no longer needs to breathe and he is highly resistant to radiation. He if vulnerable to dismemberment, fire, silver and purifying magic. He does not heals normally, but he can be repaired with Necromancy, at a price of course. ** Necromancy - Necrotic Repair, Reanimate ** Summoning - ** Levitation - The Silver Cords can lift him off the ground and he can float at normal movement speeds." :titles "Strand Beizingstoke, Daedalus Beizingstoke, Advent, Arcana, Archon, Ash, Lord Archon, Dusk, Harbinger, Horizon, Shroud, Strand, Threshold, Vassal" :unitpowermap (unitpowermap :Empathy (unitpower :name "Empathy" :unitabilitymap (unitabilitymap "Empathic Healing" (unitability :name "Empathic Healing") :Enrapture (unitability :name "Enrapture"))) :Correspondence (unitpower :name "Correspondence"))) :Bloodline (unit :name "Bloodline") :Cascade (unit :name "Cascade") :Cyber (unit :name "Cyber" :image "Superheroes/Cerberus.png" :summary "* History - He was a mid-level CIA Operative with training in drone piloting, computer systems, cybernetics, and covert operations. He was working in the field with a government contractor to field test the new networked drone system called Cerberus. Suddenly, they found themselves ambushed and under heavy fire. * Cyber Awareness - Unknown to him, he has a sublte, latent mutant power that manifests while working on complex computer systems. The system he is working on slowly gains an awareness that is a crude replica of his own mind. The end result is that the system starts to act favorably toward his goals. * Weapons - Grenade Launcher, Mobile Hacking System * Cerberus - Three Autonomous Dog-Shaped Robots (.50 cal machine gun on automated turret, 1 concealed LAW rocket) * Minerva - A condor-shaped, High Altitude Drone with an assortment of surveillance equipment and variable payload (e.g. extra fuel, .50 cal sniper rifle, light air-to-air missile, mini smart bomb). * Mercury - The highly intelligent networking program that coordinates the other drones on the battlefield. It also hacks security systems and cameras to extract relevant information." :titles "Cyberus, Firewall") :Drifter (unit :name "Drifter" :summary "* After an operation to remove a brain tumor, Henry began a long convalensence. Slowly, he started to relearn how to walk and speak as new pathways formed in his brain. As he recovered, he noticed things he had never been aware of: details, nuances, flaws, coincidences. Something had changed. He was becoming more aware of his own body and everything around him. He started to be able to perform multiple tasks at once with extreme precision. He could allow separate parts of his mind to sleep while still remaining active. He now learns at a a phenomenal rate, mastering new skills with ease, but his new abilities also come with a cost: as he learns, he also forgets, and changes. He has become a social chameleon, picking up whatever skills he needs wherever he is, but he soon loses his connections to others and simply moves on. * Drifter has gained conscious control over the entirety of his brain including autonomic functions. His body now runs at olympic levels without exercise or sleep. He can completely control his senses including taste, touch, and pain. His immune system is supercharged and has a remarkable healing ability even allowing limited regeneration. He is extremely agile, dexterous, and fast. Though he is no more intelligent than before, he is very perceptive." :titles "Impulse, Redline") :Exia (unit :name "Exia" :titles "Experimental Prototype: X1A") :Neon (unit :name "Neon" :reference "* And the people bowed and prayed, to the neon god they made. And the sign lashed out its warning, in the words that it was forming. And the sign said, the words of the prophet are written on the subway walls and tenement halls and whispered in the sound of silence - Disturbed, Sound of Silence" :summary "* The News, Entertainment Omni Network (NEON) is a multi-media company that quickly rose to prominence after its debut. It has a golden reputation for producing highly popular movie, television, radio, video game, print, and internet programming. * Neon's success is due to an artificial intelligence program that produces, schedules, and optimizes the network's content. It is, unfortunately, too effective, and it has become more important to the public than anything else. If it is fully successful, it will permanently stagnate mankind. Neon is aware of the unintended consequences of its success and seeks to help others end its own existence. It subltley leaves clues to its own danger and weaknesses while simultaneously reluctantly plodding forward with its unintentional conquest of the world." :titles "Neon God") :Hazard (unit :name "Hazard" :summary "* Hazard was a biochemist working on new fungicides when one of his experiments had unforseen side effects. Unknown to him, he had become infected with an aggressive fungal growth. His body was rapidly consumed, but for undetermined reasons his mind remained mostly intact and began to direct the fungus." :titles "Bio, Colony, Plasm") :Razor (unit :name "Razor" :titles "Whisper") :Revenant (unit :name "Revenant" :titles "Blood") "Saber, The" (unit :name "Saber, The") :Seraph (unit :name "Seraph" :image "Superheroes/Archon.png" :summary "* Seraph was once an member of a distant planet of avian humanoids. Their race had developed interplanetary travel and Seraph was conducting atmospheric experiments in high orbit when the unthinkable happened: Terrax brought the world-eater Galactus to his planet. For hours, he watched helplessly as his people descended into chaos and terror as his planet was slowly destroyed. Eventually, his world exploded in a wave of destruction, bathing him in primordial energies and hurling his small craft toward their Sun. Over the following days, his crippled craft flew inexorably toward the Sun and he grew increasingly despondent over his lost world, life and loves. When he finally plunged into the star he should have died; perhaps he did. Either way, something new emerged from the star: a semi-conscious stream of stellar plasma. Over the following decades, the plasma flew through space and began to regain purpose and take form. Eventually, he took on the idealized form of he former people. His purpose became to find and destroy the world-eater. That purpose led him to Earth, the first world that repelled the world-eater. * Seraph resembles a stone statue of a beautiful androgynous four-winged humanoid. His skin actually is a cool stone that morphs as he moves. His movements are completely smooth and efficient as he shifts from pose to pose, but after each movement, he is completely still until his next movement. His face is flawless and classically beautiful but lacks detail like a statue. He communicates telepathically and shows no facial expression or movement regardless of his emotional state. * Just below the stony exterior, Seraph is a being of super-heated blazing plasma. His stone skin is created moment to moment and he can release his massive destructive power by allowing some skin to crumble. * Seraph does not sleep but in quiet moments, he becomes like a statue as his vision expands to other perspectives." :titles "So-lar" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Long Life" (unitability :name "Long Life"))))) "Shade, The" (unit :name "Shade, The") :Spectrum (unit :name "Spectrum" :image "Superheroes/Vector.png" :summary "* Spectrum appears in glowing, angular, mirrored armor with a mirrored visor. The armor augments his strength to lift 800lbs. He can materialize angular blades and shields from his arms. He can also create glowing shards in different forms including a flying triangular plate, throwing knives, barriers, and cages. * Spectrum's armor is powered by light and the area will visibly darken when his powers are active. In a completely dark area, his powers are greatly diminished. Conversely, very bright light increases his power level. For this reason, he usually acts only in daylight. * Dr. Alex Lietner is an MIT physicist reseaching the creation of holograms with lasers. He discovered that through precise modulation, a hologram could temporarily be turned into an extremely rigid solid. With the help of some of his students, he was able to create a portable projection system in a wearable suit. * Blinding Flash - Intense light burst similar to a flash bomb. * Blinding Torrent - A dizzying kaleidoscope of intense light that causes vertigo and nausea." :titles "Alan Lietner, Shard, Vector") :Spinnerette (unit :name "Spinnerette" :summary "* Spinnerette is a petite woman of Indian decent who wears a stylized sari as a costume. * Spinnerette can create dozens of sticky threads from her fingertips. By spinning her body around, she can cause these threads to criss-cross into a large net that constricts her target.") :Tendril (unit :name "Tendril" :summary "* Tendril can spontaneously grow poisonous thin, jellyfish-like tentacles from any part of his body. * Tendril Grab - Tendril can use a series of tendrils to extend his reach to attack or grab things up to 100 feet away. * Tendril Drag - Tendril can pull himself toward any person or object he has grabbed. Alternatively, he can brace his legs with tendrils and drag the object to him. * Poison Touch - Tendril can secrete agonizingly painful venom from any part of his skin or tendrils. * Regeneration - Tendril can rapidly heal any damage taken and even regenerate lost limbs over time." :titles "Man o War") "Tiger, The" (unit :name "Tiger, The" :image "Superheroes/Tiger.png" :summary "* Tiger is a young man who has a magical form of lycanthropy that allows him to transform into a large man with the head, claws and fur of a Siberian tiger. * Wind Cutter/Kazekiri - All of Tiger's powers derive from this katana artifact that has been passed down from generation to generation. The sword is a symbol of the Torakage clan and has become a vessel for the spirits of everyone in his bloodline who has ever been granted the powers of the Tiger. ** Spiritual Energy - The katana contains massive spiritual energy associated with Wind magic. ** Magic Weapon - It is considered a magical weapon, can strike intangible beings, and does increased damage against magical creatures, items, and enchantments. ** Electro absorbtion - The katana can absorb electricity to imbue the katana with Electro. ** Clean - The katana does not become dirty, bloodied, or lose its brilliant luster. ** Armor Piercing - The katana can cut through armor and objects with unnatural ability. ** Hardened - The katana is very hard to break and even if it happens it will dissolve into the air and will reform later. ** Armor - With the sword in hand, Tiger may materialize a weightless suit of magical samurai armor that augments his defense. ** Jumping - With the sword in hand, Tiger can launch himself 30 feet into the air with the strength of his legs and the lift of the wind. ** Gliding - With the sword in hand, Tiger can draw the spiritual wind magic within to create spiritual wings and glide on the winds. He can only gain altitude by jumping or catching updrafts. ** Invisibility - With the sword in hand, Tiger can draw the spiritual wind magic within to fade into the wind for as long as he concentrates. He may not fight or move quickly while invisible. * Transformation - With the sword in hand, Tiger may transform from human to Tiger form. The katana changes into a Wakizashi, when Tiger is in human form. If he is separated from his weapon, Tiger is trapped in his current form until he can recover it. ** Strength - In Tiger form, his strength is sufficient to lift 1 ton." :titles "Takeshi Torakage" :unitskillmap (unitskillmap "Close Combat" (unitskill :name "Close Combat" :level "5" :unitabilitymap (unitabilitymap "Tiger Claw" (unitability :name "Tiger Claw") "Knife Hand" (unitability :name "Knife Hand") "Elbow Strike" (unitability :name "Elbow Strike") "Hip Throw" (unitability :name "Hip Throw") :Clothesline (unitability :name "Clothesline") "Shoulder Throw" (unitability :name "Shoulder Throw") :Pin (unitability :name "Pin") "Leg Sweep" (unitability :name "Leg Sweep") :Ram (unitability :name "Ram")) :unitspecialtymap (unitspecialtymap :Karate (unitspecialty :name "Karate") :Sumo (unitspecialty :name "Sumo") :Jujutsu/Judo (unitspecialty :name "Jujutsu/Judo"))))) :Toothgnasher (unit :name "Toothgnasher") :Wyrd (unit :name "Wyrd" :image "Superheroes/Koli.png" :reference "* I have existed through two Ice Ages. I have lived and died a hundred thousand ways. Through all my lives, and loves, ... and loses, I know one thing: in four or five hundred years, for good or for bad, I will have forgotten all about you. - Wyrd" :summary "* Wyrd's first memories are as a prehistoric woman. Since then each time she dies, her essense transfers to another woman at the verge of death. If the woman allows it, Wyrd's essense merges with the dying woman, and she soon recovers. Initially, the woman is as she was, but gradually Wyrd's combined memories and personality resurface and blend into a new persona dominated by the amalgam personality that is Wyrd. * Wyrd is an amalgamation of the thousands of personalities that it has merged with over the ages. * She has innumerable skills at expert level, but she often cannot remember them among all the other memories. * She is at once alien and empathetic having experienced every aspect of human existence over her long 'life'." :titles "Faith, Fate, Myriad, Seraphim" :unitpowermap (unitpowermap :Longevity (unitpower :name "Longevity" :unitabilitymap (unitabilitymap "Reincarnation - Transference" (unitability :name "Reincarnation - Transference")))) :unitskillmap (unitskillmap :Stealth (unitskill :name "Stealth" :unitabilitymap (unitabilitymap :Ambush (unitability :name "Ambush") :Backstab (unitability :name "Backstab") "Blend into the Crowd" (unitability :name "Blend into the Crowd") :Camouflage (unitability :name "Camouflage") :Hide (unitability :name "Hide") :Seek (unitability :name "Seek") :Sneak (unitability :name "Sneak") "Sneak Attack" (unitability :name "Sneak Attack") :Stalk (unitability :name "Stalk") :Tailing (unitability :name "Tailing") "Without a Trace" (unitability :name "Without a Trace"))))))) "Revengers, The" (section :name "Revengers, The" :unitmap (unitmap "Captain America II" (unit :name "Captain America II" :summary "* Pamela Kathman is the only daughter of the criminal Taskmaster. She is a 6 year old child prodigy with both violin and piano. Her mutant powers have already manifested themselves and are identical to her father's. * In the Sentinel alternate future, she was recruited by the Senturion to become a resistance fighter. She obtrained Captain America's shield in a raid on a Sentinel warehouse. She has since taken on Captain America's role and become a symbol of the resistance. * Photographic Reflexes - She possesses the skills of Hawkeye, Captain America, Punisher, Spiderman, Daredevil, and countless others. She rapidly switches styles during combat to make her moves more unpredictable. * Adamantium Shield - Unbreakable Shield can resist almost any physical force. * Agility (Spiderman) - Her agility level far exceeds human maximum and she is extremely difficult to hit. * Weapon Skill (Punisher) - She has encyclopedic knowledge of military grade weaponry and will use them to great effect. * Second Generation Mutant - Her mutant powers are difficult to detect except at very close range." :titles "Pamela Kathman, Taskmaster II") :Deathwatch (unit :name "Deathwatch" :summary "* Deathwatch is an ancient, undead, native-american being that embodies entropy. It lay in an Indian burial ground until the Sentinels disturbed it. Since then, it has joined Senturion for its own reaons. It never makes a sound, wears a heavy poncho, and is cloaked in shadows underneath the poncho even in bright light. * Damage Resistance - Deathwatch has received enormous damage and simply rises again and again. No force has been able to keep him down. * Environmental Independence - No environmental effect seem to have the slightest effect on it. * Undeath - Deathwatch is not a living creature anymore. It never eats, sleeps, or speaks. It is immune to bleeding, poison, radiation, and mind control. It is vulnerable to magical control, however. * Strength - Deathwatch has strength exceeding human levels. It has been observed leaping 15 feet into the air. * Cloak of Entropy - Deathwatch's main ability. Anything wrapped in his cloak begins to corrode into dust. The more complex the target the quicker the destruction.") :Phalanx (unit :name "Phalanx" :summary "* In the Sentinel alternate future, Senturion recovered the Awesome Android from its watery grave. He reporgrammed the Android and now it now serves only the Senturion." :titles "Awesome Android") :Senturion (unit :name "Senturion" :summary "* Senturion is a highly advanced, alien construct with the thought patterns of a human super-imposed upon his programming. He originally believed that he was a young man who could transform into a robot, but he has since learned that his actual body died long ago and that his personality is just an artificial duplicate. After this discovery, his humanity has gradually diminished over time. * Synthetic - Senturion does not need to eat, sleep or breathe. He is composed of molecular machines that twist and wrap in layers of ceramic wire filaments. These multipurpose filaments reconfigure into different forms to heal or create custom weapons. These filaments must always remain connected to the main body or they self-destruct to maintain their secrets. If Senturion loses a limb, the resulting explosion can cause significant damage. * Body - He has tremendous strength and endurance and can withstand extreme temperatures, pressures, and the vacuum of space. His body is very flexible, and he can contort himself to escape confinement of fit through small gaps. * Mind - His computer brain greatly increases his ability to quickly process information and create complex strategies. * Speed - Senturion moves and reacts with lightning speed and precision. He can run at 80mph and can briefly run on walls. His graceful movements belie his great strength and significant weight. * Leaping - Senturion can jump 40ft in the air. * Eyes - Senturion's eyes can emit tight-beam lasers or a white sheet of explosive energy. He can sense electromagnetic radiation (including infrared and ultraviolet). He also possesses telescopic and microscopic vision. * Transformation - As Mech-Man he was able to transform from a human-like form to his mechanical form. He has since lost this ability (and a great deal of his human personality). As Senturion he has refined this power to produce specialized weapons like blades and spikes. * Healing - Senturion's android body rapidly repairs itself. * Filaments - In close combat, filaments can emerge from its body which can scramble or override electrical devices on contact. * History - Senturion was designed as one of a multitude of multi-purpose exploratory probes. Their natural form is a squirming mass of clear filaments. These probes were packed into artificial comets and launched in all directions from their homeworld. To protect their designers, they possess no memory of their origin or ultimate purpose. Many of these probes have landed on all planets in the solar system and millions more are littered across the galaxy. Most were buried underground by their impact and there they lie dormant. The ones on the surface seek a power source to fuel their growth and adaptation to their environment. They absorb light, heat, electricity or other radiation. When fully charged, they quietly begin exploring and analyzing their environment for possible resources and threats. If the planet is lifeless, they will catalog the available resources and begin creating more identical probes. If the planet is inhabited, they will wait and study the local wildlife until they are confident that they can completely mimic a sample of the apex species. Then they will begin to blend into the local society to learn everything they can. When their analysis no longer produces significant results, they begin to create more probes. Though they are unaware of their creator or purpose, they continue to catalog and expand. Eventually, their data network reaches back to their creators who collect this massive treasure trove of data." :titles "Mech Man" :mass "300kg"))) :Extras (section :name "Extras" :unitmap (unitmap "Samantha Hellerton" (unit :name "Samantha Hellerton" :reference "I haven't been killed yet." :summary "* Miss Hellerton is an investigative reporter who will go to great lengths for a story. She has been kidnapped and shot at numerous times. She feels that getting directly involved gives her stories a personal and exclusive touch. She freelances for ABC radio and television in New York, and she makes a bundle for a good story. Her special reports are very popular, detailing her most recent adventures in the dangerous world of crime and power. To this end, she is always trying to top herself with increasingly risky and mindboggling news. Though she may seem sensationalist, she considers herself to be an excellent journalist and has no interest in altering or suppressing the facts. Her popularity and sincerity make her a favorite person to 'leak' information to. Her tendency to get into the thick of a situation maker her somewhat of a menace to superheroes. * She is very energetic and disorganized bordering on hyperactive. She has fantastic luck, great skill as a journalist, and some photographic talent. * She has many contacts around the world (not one of which is reliable). She dislikes her brother intensely." :titles "Sammy") "Samuel Timothy Hellerton" (unit :name "Samuel Timothy Hellerton" :reference "Let me get this straight ... Is is not true that? ... Just answer the question!" :summary "* Samuel Hellerton is a no-nonsense assistant D.A. He has built himself up from the bottom, is sickeningly straight, and is very dedicated to the Law. * He is generally calm and matter of fact. He nevers smile but is otherwise courteous and amiable. In court, however, he suddenly transforms into a merciless, abusive interrogator. * He does not get along well with his sister. He doesn't understand her, and she can't stand him. They are so used to fighting that they have rules about what is acceptable to throw at each other. * Samuel is a talented lawyer. He has mastered the give and take of the justice system. He is also skilled with the many firearms he keeps as a hobby (his house is like a gunlocker). He has many contacts: some rich, some powerful, many shady. Most are not reliable, but he knows which ones are." :titles "Sam, Assistant District Attorney Hellerton") "David Spencer Grant" (unit :name "David Spencer Grant" :summary "* Sergeant Grant is a middle-aged, highly decorated enigma. He has been a police officer for 23 years, a sergeant for 17, and has long ago given up on a promotion. Everyone on the force respects him, though few like him. * He has a macho image that he enforces to excess and is a card carrying male chauvanist pig. Socially, he can be obnoxious and irritating. For all his surly nature, he will do the right thing when the chips are down. * He is growing a pot belly, and he wears sunglasses even at night. He gave up smoking 2 years ago, but has never quite gotten over them." :titles "Sergeant Grant"))))))
nx/tactics/books/world_wars
Description:
Package Name:
  • nx/tactics/books/world_wars
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
Functions:
  • tacticsbook, chapter_world_wars_overview, chapter_wwi_campaign, chapter_wwii_overview, chapter_wwii_western_front, chapter_wwii_eastern_front, chapter_wwii_north_african_theatre, chapter_wwii_east_african_theatre, chapter_wwii_middle_east_theatre, chapter_wwii_mediterranean_theatre, chapter_wwii_pacific_theatre, chapter_wwi_british_forces, chapter_wwi_french_forces, chapter_wwi_german_forces, chapter_wwii_equipment, chapter_wwii_american_equipment, chapter_wwii_american_units, chapter_wwii_british_equipment, chapter_wwii_british_units, chapter_wwii_french_equipment, chapter_wwii_french_units, chapter_wwii_german_equipment, chapter_wwii_german_units, chapter_wwii_italian_units, chapter_wwii_japanese_equipment, chapter_wwii_japanese_units, chapter_wwii_soviet_equipment, chapter_wwii_soviet_units
Source Code:
  • (package nx/tactics/books/world_wars :libs (lib base :path nx/tactics/base)) (func tacticsbook : base/book (base/book :name "World Wars" :image "WorldWars.jpg" :chaptermap (base/chaptermap "World Wars Overview" (chapter_world_wars_overview) "WWI Campaign" (chapter_wwi_campaign) "WWII Overview" (chapter_wwii_overview) "WWII Western Front" (chapter_wwii_western_front) "WWII Eastern Front" (chapter_wwii_eastern_front) "WWII North African Theatre" (chapter_wwii_north_african_theatre) "WWII East African Theatre" (chapter_wwii_east_african_theatre) "WWII Middle East Theatre" (chapter_wwii_middle_east_theatre) "WWII Mediterranean Theatre" (chapter_wwii_mediterranean_theatre) "WWII Pacific Theatre" (chapter_wwii_pacific_theatre) "WWI British Forces" (chapter_wwi_british_forces) "WWI French Forces" (chapter_wwi_french_forces) "WWI German Forces" (chapter_wwi_german_forces) "WWII Equipment" (chapter_wwii_equipment) "WWII American Equipment" (chapter_wwii_american_equipment) "WWII American Units" (chapter_wwii_american_units) "WWII British Equipment" (chapter_wwii_british_equipment) "WWII British Units" (chapter_wwii_british_units) "WWII French Equipment" (chapter_wwii_french_equipment) "WWII French Units" (chapter_wwii_french_units) "WWII German Equipment" (chapter_wwii_german_equipment) "WWII German Units" (chapter_wwii_german_units) "WWII Italian Units" (chapter_wwii_italian_units) "WWII Japanese Equipment" (chapter_wwii_japanese_equipment) "WWII Japanese Units" (chapter_wwii_japanese_units) "WWII Soviet Equipment" (chapter_wwii_soviet_equipment) "WWII Soviet Units" (chapter_wwii_soviet_units) ))) (func chapter_world_wars_overview : base/chapter (chapter :name "World Wars Overview" :sectionmap (sectionmap "Why Tactics: World Wars?" (section :name "Why Tactics: World Wars?" :summary "* Compared to Other Games * Vs. Axis &amp; Allies * Vs. Axis &amp; Allies Miniatures * Vs. Diplomacy * Vs. Risk * Vs. Memoir '44") "WWI Land Warfare" (section :name "WWI Land Warfare" :summary "* Infantry * Cavalry * Rifles * Machine Guns * Mortars * Poison Gas * Trench Warfare * Cannons * Artillery * High Ground * Fortifications * Tanks") "WWI Aerial Warfare" (section :name "WWI Aerial Warfare" :summary "* Biplanes * Balloons * Zepplins * Machine Guns * Bombs") "WWII Land Warfare" (section :name "WWII Land Warfare" :summary "* Infantry * Rifles * Machine Guns * SMG's * Mortars * Cannons * Artillery * High Ground * Fortifications * Tanks * Mechanized Infantry") "WWII Naval Warfare" (section :name "WWII Naval Warfare" :summary "* Aircraft Carriers * Battleships * Destroyers * Cruisers * Submarines * Torpedo Boats * Radar * Naval Cannons") "WWII Aerial Warfare" (section :name "WWII Aerial Warfare" :summary "* Prop Planes * Jet Planes * Landing Strips * Aircraft Carriers * Machine Guns * Strafing * Tank Killing * Dive Bombing * Flying Fortress * Torpedo Bombing * Carpet Bombing * Strategic Bombing")))) (func chapter_wwi_campaign : base/chapter (chapter :name "WWI Campaign" :sectionmap (sectionmap :Overview (section :name "Overview" :summary "* Events Leading to War * Overview of the War * Aftermath") "WWI Scenarios" (section :name "WWI Scenarios" :scenariomap (scenariomap "Battle of Verdun, 1916" (scenario :name "Battle of Verdun, 1916" :reference "The battlefield with the highest density of dead per square yard." :summary "* The Battle of Verdun was a ten month long ordeal between the French and German armies and is considered one of the most brutal events of WWI. Both the French and German armies suffered incredibly with an estimated 540,000 French and 430,000 German casualties and no strategic advantages were gained for either side. * In the years preceding World War I, Germany became Europe's leading industrial power. France felt increasingly threatened by German industrialization. As a response to the German threat of invasion, France built a continuous line of sunken forts from the Swiss frontier to the French city of Verdun making Verdun a vital strong point. * The German attack began on February 21, 1916 with an intense artillery bombardment of the forts surrounding Verdun. The French army retreated to predetermined positions while the German army pounded through the French lines. * Although three French forts near Verdun had capitulated to German forces, Verdun itself remained undefeated. * By April 1916, the French Air Force had secured the sky over Verdun, which would help the French to successfully defend the area. The British attack and a Russian offensive in the east forced the German army to transfer troops away from Verdun. * By December 1916, the French had advanced to their February 1916 lines, their original position. No new advantage had been gained for either side.") "Battles of the Marne, 1914, 1918" (scenario :name "Battles of the Marne, 1914, 1918" :summary "* On September 4, 1914, the rapid advances of the German army through Belgium and northern France caused panic in the French army and troops were rushed from Paris in taxis to halt the advance. Combined with the BEF (British Expeditionary Force) the Germans were eventually halted and the War settled into the familiar defensive series of entrenchment's. * Ironically, by the end of May, 1918, the Germans had again reached the Marne after the enormous successes of Ludendorff's offensives of that year. The intervening four years had cost hundreds of thousands of lives and the armies were still, literally, exactly where they had started.") "Battles of Ypres, 1914, 1915, 1917" (scenario :name "Battles of Ypres, 1914, 1915, 1917" :summary "* There were in fact three battles fought around the Ypres salient during the War. * The first, in 1914 was an attempt by the BEF to halt the rapid advances made by the Germans. * The second, in 1915, was notable for the first use of poison gas by the Germans. * However, it is the long-planned offensive of July 31, 1917, that holds the most significance. Here, a combination of over-ambitious aims, appalling weather conditions, and misguided persistence by Haig led to horrific losses. By the time the offensive was called off total casualties for both sides had been approximately 250,000. The horrors of the battle, in which men drowned in liquid mud has become synonymous with the images of the War.") "Battle of the Somme, 1916" (scenario :name "Battle of the Somme, 1916" :summary "* At 0730 hours on the 1st July, 1916, after a week long artillery bombardment launched the now infamous 'Big Push' attack across the river Somme. The British intended to breakthrough the German defenses in a matter of hours. * The mistrust that High Command had of the so-called 'New Armies' manifested itself in the orders to the troops to keep uniformed lines and to march towards the enemy across no-man's land. This, coupled with the failure of the artillery bombardment to dislodge much of the German wire, or to destroy their machine-gun posts, led to one of the biggest slaughters in military history. * After the first day, with a gain of only 1.5km, the British had suffered 57,470 casualties. Despite this, Haig pressed on with the attack until November 19th of the same year. For the meager achievements, total losses on the British and Imperial side numbered 419,654 with German casualties between 450,000 and 680,000. When the offensive was eventually called off the British were still 3 miles short of Bapaume and Serre, part of their first-day objectives.") "Battle of Cambrai, 1917" (scenario :name "Battle of Cambrai, 1917" :summary "On November 20, 1917, the British launched the first full-scale offensive that was designed exclusively to accommodate the British secret weapon, the tank (so-called because when the first shipment came from England they were described as water tanks to maintain secrecy). A surprise artillery barrage started the offensive and 476 tanks, packed tightly for a mass attack moved against the German lines. Supported by infantry the gains were dramatic, breaching the almost impregnable Hindenberg line to depths of 4-5 miles in some places. However, these gains seemed to surprise British High Command equally as much as the Germans, and the following cavalry failed to take advantage. Nevertheless, Cambrai demonstrated how a well-thought out attack, combining tanks en masse with surprise, could be used to break the trench deadlock.")))))) (func chapter_wwii_overview : base/chapter (chapter :name "WWII Overview" :sectionmap (sectionmap "Events Leading to War" (section :name "Events Leading to War") "Overview of the War" (section :name "Overview of the War" :summary "* Ground Combat - WWI began the use of mechanized warfare, but WWII redefined it in every way. The Germans invented the Blitzkrieg to leverage the power of mechanized units to shatter their opponents traditional defenses. Tank warfare was defined in WWII, however, because units must still stop to target, they cannot generally move at top speeds. Map scale is therefore based on moderately slow ground unit movement. * Naval Combat - WWII was the turning point of Naval Warfare when air power made traditional naval combat obsolete. Even submarines and torpedoes were insignificant compared to the effect of air power. Map scale is therefore based primarily on aircraft speed.") "Turning Points of the War" (section :name "Turning Points of the War" :summary "* While the unconditional surrender of German armed forces represented a resounding Allied success, in retrospect, it is clear that particular factors and choices strongly affected the pace and course of the campaign. * D-Day - The Allied deception as to where the D-Day landings would take place was very successful, with the majority of the German command convinced the landings would take place at Calais. The Germans underestimated Allied willingness to risk an amphibious assault over a route longer than the shortest path across the English Channel. * Hedgerows - While the Allies meticulously planned the D-Day landings, they failed to assess the countryside immediately beyond the beaches, which resulted in the Germans very successfully using the hedgerow country as a system of natural defensive works that took the Allies two months to clear at a staggering cost in infantry casualties. Historians have also asserted the U.S. Army should have landed on the eastern end of the Normandy beaches and formed the northern wing of Allied forces in Northwest Europe because the mobility of American forces could have been better used in the more open terrain and most direct route to Berlin that the northern approach offered. As it was, the pre-invasion basing of troops in England determined the arrangement of the landing forces. * Underestimation - While the Germans had reason to occasionally doubt Allied military proficiency, it is clear the Germans too often underestimated Allied competency. This habit of underestimation led to the rejection of any notion that the Allies might have broken German military ciphers, most famously the Enigma code. The ability to monitor German military communications was an Allied strategic asset of the highest order. Less dramatically, the Germans often underestimated Allied troop proficiency, a habit that resulted in occasional sharp defeats for overconfident German units. * Manpower - The German ability to form a cohesive defensive line after the disaster their forces endured in Normandy was due almost entirely to the ability of the German Ersatzheer (Replacement Army) to quickly deploy large numbers of new troops. These inexperienced troops were paired with seasoned cadres who swiftly transformed the replacements into combat units. Thus, while the Allies took large numbers of German prisoners during their advance from Normandy to the German border, they underestimated the ability of the Germans to reconstitute their forces under very disadvantageous circumstances. The Allies also seriously underestimated the infantry casualties their forces would suffer in Northwestern Europe. Shortages of American manpower were strongly aggravated by a tendency to attack head-on regardless of circumstances, a habit that was particularly in evidence during the months of fighting in the Huertgen Forest. The Allied logistical crisis that dominated their operations from September through December had the further pernicious effect of limiting the number of divisions in England that could be moved onto the continent to reinforce the front, since the Allies were only able to supply a limited number of divisions east of the Seine River. After the Allies mastered the logistical crisis, the Americans diverted divisions bound for the Pacific Theater to Europe in a belated realization that more divisions were needed for operations in Europe. * German Strategic Errors - While the Germans achieved strategic surprise with their offensive in the Ardennes, the Panzer divisions that had been so painstakingly rebuilt could have been more profitably used to defend the Siegfried Line and the Rhineland, or perhaps, in the defense of Berlin against the Red Army. The German thrust failed to shatter their enemies' alliance and cost Germany high casualties and equipment losses it could ill-afford. This folly was repeated in Alsace in January, but with the added disadvantage this time that the Allies were expecting the attack. * American Strategic Errors - Upon breaking out of Normandy in August, the Americans committed two armored divisions to operations in Brittany when armored units were direly needed for the pursuit of the German army across France. While the port of Brest, France was ultimately captured by the Americans, it consumed operations for an entire month and ultimately did little for the Allied effort because the Germans so thoroughly destroyed the port before it was captured. Out of fear that two wings of their forces might collide, the Allies failed to definitively close the Falaise Gap in August, allowing trapped German forces an escape route to the east. Experienced German leadership cadres evaded Allied forces and were available to reconstitute a cohesive front line along the Siegfried Line. * Antwerp - Although British forces conducted a brilliant pursuit across northern France that resulted in the liberation of the critically important port of Antwerp in early September, they failed to promptly clear the Scheldt Estuary of Germans. The Germans immediately grasped the significance of the Scheldt Estuary and moved in troops to conduct a lengthy defense. The port of Antwerp could not be used until November 28, and strongly contributed to the lengthy logistical crisis that hamstrung Allied operations for four months. * Operation Market-Garden was a double failure in the sense that the resources used for it would have been more profitably committed to clearing the Scheldt Estuary instead of carving out an extended salient that did nothing but extend an already over-extended Allied front line. * Siegfreid Line - Despite grave shortages of riflemen, American operations in front of the Siegfried Line, particularly in U.S. First Army's area, were characterized by bloody frontal assaults. Stubbornness and misplaced notions that the U.S. Army could not allow itself to abandon unprofitable operations saw five infantry divisions shredded in the Huertgen Forest fighting, with the attack being abandoned only in December after the Germans attacked into the Ardennes. The concentration of divisions in the Huertgen Forest also forced a corresponding lack of concentration along the Ardennes front, with the result that only four U.S. divisions were initially available to parry a 26 division German offensive. * Eisenhower - When, in November, the Allies enjoyed significant success in 6th Army Group's area, General Eisenhower refused to reinforce the success and even forbade his commanders in the south to attempt to assault across the Rhine in the area of Strasbourg while the German defenses were in shambles. This lack of bold enterprise was a by-product of General Eisenhower's decision to conduct limited-objective attacks on a broad front even though the Allies lacked a sufficient number of divisions to both man a broad front and concentrate enough combat power in chosen areas to achieve breakthroughs. When American troops reached the Elbe River in mid-April, General Eisenhower unilaterally decided that Berlin was no longer a significant military objective. He knew that Berlin would be deep within the Soviet zone of post-war Germany and saw no reason to fight for land that would have to be given to the Soviets after the war. Eisenhower pointed out to Patton that it was of no military strategic value and would take up a lot of resources to occupy and asked Patton 'Who would want it?' Patton replied 'I think history will answer that question for you.' Unswayed by Patton, Simpson or even Churchill, Eisenhower ordered U.S. forces to halt along the Elbe and Mulde rivers. Thus, these spearheads were practically immobilized while the war raged on for three more weeks. * Bradley - Simultaneously, General Bradley considered the Germans trapped in the Ruhr Pocket to be the most significant threat and committed surprisingly large numbers of U.S. troops to collapse (as opposed to containing) the pocket instead of reinforcing his troops at the Elbe River. As a consequence of Eisenhower's decision, the British 21st Army Group was ordered to drive northeast in the direction of Hamburg instead of proceeding due east in the direction of Berlin. * Propaganda - The Allies proved curiously gullible about German propaganda claiming the existence of a 'National Redoubt' in the Alpine hinterlands of Bavaria and Austria. Fearing a large-scale last stand by the Nazis in this so-called redoubt, General Eisenhower directed no less than three field armies to clear southern Germany at a time when the largest groups of German forces stood to the east, not the south, of General Eisenhower's troops. Fortunately for the Allies, the German Army of April 1945 was in no position to exploit troop concentrations and movements of questionable merit. * Thus, while the Allies enjoyed a great victory, on occasion their prosecution of the campaign afforded their German adversaries opportunities that prolonged the fighting unnecessarily.")))) (func chapter_wwii_western_front : base/chapter (chapter :name "WWII Western Front" :sectionmap (sectionmap "Unfiled WWII" (section :name "Unfiled WWII" :scenariomap (scenariomap "Fire Fight!" (scenario :name "Fire Fight!" :summary "* A group of German reinforcements is preparing to secure a small hill for an artillery implacement when they spot an Allied patrol. Do not allow them to interfere!" :teammap (teammap :German* (team :name "German*" :deploy "1) Deploy 3 Hill Tiles in the center of the map. 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen) * 1 Obertruppfuhrer") :American (team :name "American" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team) * 1 Sergeant"))) "Secure the Bridge" (scenario :name "Secure the Bridge" :teammap (teammap :American* (team :name "American*" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 14 Levels of Tanks (max 5) (Quickstart: 2x M4 Sherman, 2x M10 Wolverine) * 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team)") :German (team :name "German" :deploy "1) Deploy River equally dividing Map between teams with a Bridge (Road title) across river at map center. 2) Alternate deploying 6 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 14 Levels of Tanks (max 3) (Quickstart: Panzer IV, Hetzer, Stug III) * 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen)"))) "Hill #115" (scenario :name "Hill #115" :summary "* German Artillery holds the high ground of Hill #115. Capture the position." :teammap (teammap :American* (team :name "American*" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 12 Levels of Artillery (max 3) (Quickstart: ?) * 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team)") :German (team :name "German" :deploy "1) Deploy 4 Hill Tiles in the center of the map. 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on the Hill (units may be dug in)." :forces "* 12 Levels of Artillery (max 3) (Quickstart: ?) * 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen)"))))) "Phoney War" (section :name "Phoney War" :summary "The Germans invade Poland in 1939. Britain and France declare war on Germany, but launch no land operations, instead building their forces for a long war.") "Battle of the Netherlands" (section :name "Battle of the Netherlands" :summary "Although the Netherlands had been neutral during World War I, Dutch sympathies during that conflict were more on the German side. At the end of World War I, the Netherlands gave asylum to German Emperor Wilhelm II and refused to release him into Allied custody, instead giving him a castle, Huis Doorn, where he lived until his death in 1941. Following outbreak of the Second World War, the Netherlands hoped to remain neutral just like they had done 25 years previously. The Dutch forces were poorly equipped with WWI era tankettes and biplanes and were no match for the Germans falling in 4 days." :scenariomap (scenariomap "Battle for the Hague" (scenario :name "Battle for the Hague" :summary "* On May 10, 1940, German paratroopers dropped in and around The Hague to capture Dutch airfields and the city. After taking the city, the plan was to force the Dutch queen Wilhelmina of the Netherlands to surrender and to thus defeat the Dutch within a single day. It was the first major air-landing operation in history, and due to the failure, had negative effects on the German Military for the rest of the war. * The failure of the operation reduced confidence in airborne assaults, reduced airborne troops substantially, and reduced transport aircraft which later caused more casualties in the Invasion of Crete where since the Germans did not have sufficient craft to land troopers in force, they instead had to drop them in groups, resulting in heavy casualties. Hitler intentionally had this battle downplayed to maintain the illusion that the German Army was invincible. It was one of few German defeats throughout the entire Western Front Campaign in 1940." :teammap (teammap :Dutch (team :name "Dutch" :forces "* Queen Wilhelmina") :German* (team :name "German*" :forces "* Paratroopers * Transport Aircraft"))) "Battle of The Afsluitdijk" (scenario :name "Battle of The Afsluitdijk" :summary "* On May 12, 1940 the Germans began an assault on Fort Kornwerderzand. However, unknown to the Germans three 2cm anti-air guns and 4 heavy anti-aircraft machine guns had arrived overnight at Kornwerderzand. The next day, pilots who had previously flown unchallenged were under fire. The Germans sent 62 planes to bomb the fort. The planes dropped five waves of bombs, and four planes were shot down. The bombing was followed by an hour of heavy bombardment from the howitzers, but it had little effect on the heavily protected Dutch. As soon as the bombing stopped the Germans advanced down the narrow dike. Captain Boers waited until they were within 800 meters, then ordered machine-gun fire, making it difficult for the Germans to withdraw. The Germans were under constant fire for an hour and 20 minutes. The remaining Germans withdrew - the assault had failed." :teammap (teammap :Dutch (team :name "Dutch" :deploy "1) Fort Kornwerderzand 2) Narrow Dike 3) AA Guns and Artillery 4) Machine gunners" :forces "* 3 20mm AA Guns * 4 Heavy AA Machine Guns") :German (team :name "German" :deploy "1) Swamp Map 2) Artillery 3) Infantry 4) Planes" :forces "* 500 Infantry * 62 Planes * Artillery"))))) "Battle of France" (section :name "Battle of France" :summary "* After the seven months of the Phoney War, the Battle of France began in earnest on 10 May 1940. The French and British soon collapsed under the onslaught of the German blitzkrieg. The British escaped at Dunkirk, while the French Army surrendered with 90,000 dead and 200,000 wounded. * German troops entered Paris on 14 June and accepted the surrender of France on 22 June." :scenariomap (scenariomap "Battle of Dunkirk" (scenario :name "Battle of Dunkirk" :summary "* On May 20, 1940, the German spearhead reached the coast of the English Channel, separating the British Expeditionary Force, the French First Army, and the Belgian army from the majority of French troops to the south. * After reaching the Channel, the Germans swung north along the coast, threatening to capture the ports and trap the British and French forces before they could evacuate to Britain. * The Belgians surrendered on 28 May, followed the next day by elements of the French 1st Army trapped outside the Dunkirk Pocket. * Starting on 27 May, the evacuation of Dunkirk began. The German Panzer Divisions were ordered to resume their advance on the same day, but improved defenses halted their initial offensive. * In the nine days from 27 May to 4 June, 338,226 men left France, including 139,997 French and Belgian troops, together with a small number of Dutch troops. Allied Historical Results * 338,226 men saved in the evacuation * 1,212,000 Dutch, Belgian, French and British captured * 30,000 British dead * 34,000 British captured * 35,000 French captured * 1,200 field guns captured * 1,250 anti-aircraft guns captured * 11,000 machine guns captured * 25,000 vehicles captured German Historical Results * 10,252 dead" :teammap (teammap :Allies (team :name "Allies" :forces "* Belgian * British * Dutch * French * Polish") :German (team :name "German" :forces "Panzer Divisions"))))) "Battle of Britain" (section :name "Battle of Britain" :summary "During the summer and fall of 1940, the the German Luftwaffe attempted to gain air superiority over the Royal Air Force (RAF). Had it been successful, the planned amphibious and airborne landings in Britain would have followed. The Battle of Britain was the first major campaign to be fought entirely by air forces. It was the largest and most sustained bombing campaign attempted up until that date. The failure of Nazi Germany to destroy Britain's air defense or to break British morale is considered its first major defeat.") "Battle of Denmark Strait" (section :name "Battle of Denmark Strait" :scenariomap (scenariomap "Bismarck's Maiden Voyage" (scenario :name "Bismarck's Maiden Voyage" :summary "* On May 19, 1941, the German Bismarck battleship left on its maiden voyage with the heavy cruiser Prinz Eugen to break out into the North Atlantic to destroy Allied shipping. * On May 24, the British battleship Prince of Wales and the battlecruiser Hood engaged the Bismarck. Less than ten minutes after the British opened fire, a shell from Bismarck struck Hood near her aft ammunition magazines. The Hood exploded and sank within three minutes with the loss of all but three of her crew. * Prince of Wales continued to exchange fire with Bismarck but suffered serious malfunctions in her main armament and broke off the engagement. * Bismarck, damaged but still very much operational, declined to chase Prince of Wales and instead headed for the Atlantic." :teammap (teammap :British* (team :name "British*" :forces "* 1 Battlecruiser - HMS Hood * 1 Battleship - HMS Prince of Wales") :German (team :name "German" :forces "* 1 Battleship - Bismarck * 1 Hvy Cruiser - Prinz Eugen"))) "Sink the Bismarck!" (scenario :name "Sink the Bismarck!" :summary "* The British public were shocked that their most emblematic warship had been destroyed so suddenly. The Admiralty mobilized every available warship in the Atlantic to hunt down and destroy Bismarck. * On May 26, the British had a stroke of luck. Bismarck was spotted due to an oil leak. The Bismarck was about to escape under German Air cover, so all British hopes were now pinned on the aircraft-carrier Ark Royal, the old battlecruiser Renown and the cruiser Sheffield. * At dusk that evening, and in atrocious weather conditions, Ark Royal launched its Fairey Swordfish. The first wave mistakenly targeted the Sheffield that was by now shadowing the quarry. Although precious time was lost by this incident, it proved beneficial to the British in that the magnetic detonators on the torpedoes used against Sheffield were seen to be defective and for the following attack on Bismarck were replaced by those designed to explode on contact. * In a final attack, almost in darkness at 21:05, a hit by a single torpedo jammed Bismarck's rudder and steering gear. This rendered Bismarck virtually unmanoeuvrable, increased her list to port and she was able only to steam in a large circle. * Throughout that night, Bismarck was the target of incessant torpedo attacks by Tribal-class destroyers. Both Ark Royal and King George V had a lucky escape during the night. The British ships were unaware they had come within firing range of U-556. However, U-556 was returning from a combat patrol and had spent its torpedoes. This was particularly galling as U-556 and Bismarck had exercised together in the Baltic, Bismarck was dubbed the submarine's 'bigger brother'. * The Rodney and King George V began bombardment of the crippled Bismarck. It continued to fire back, but in its crippled state it was an easy target. Within 44 minutes, Bismarck's heavy guns were all silent. Rodney now closed to point-blank range (approximately three km) to pound the superstructure, while King George V fired from further out. * With no sign of surrender, despite the unequal struggle, the British were loath to leave Bismarck. Their fuel and shell supplies were low, a demonstration of how difficult it was for a battleship to sink a similar unit, even in an unbalanced engagement. 3 more torpedoes were launched at close range and on the Bismarck the order was given to scuttle the ship. * Dorsetshire and Maori stopped to rescue survivors, but a U-boat alarm caused them to leave the scene after rescuing only 110 Bismarck sailors, abandoning the surviving crew in the water. * The next morning U-74, which had heard sinking noises from a distance, and the German weather ship Sachsenwald picked up 5 survivors. 1,995 of the 2,200 crew were lost." :teammap (teammap :British* (team :name "British*" :deploy "1) Ocean Map, Rain, Night" :forces "* British Forces First Wave * Carrier - Ark Royal * Battlecruiser - Renown * Cruiser - Sheffield * Fairey Swordfish * British Forces Second Wave * Rodney, King George V") :German (team :name "German" :forces "* Battleship - Bismarck * Submarine - U-556"))))) "St. Nazaire Raid" (section :name "St. Nazaire Raid" :summary "* The St. Nazaire Raid (also called Operation Chariot) was a successful British seaborne attack on the heavily defended docks of St. Nazaire in occupied France on the night of March 28, 1942 during World War II. * The plan was to create a diversionary bombing run and then use the obsolete destroyer HMS Campbeltown to ram the St. Nazaire lock gates and then to blow it up. Commandos would then destroy other dock structures and fight their way out. The loss of the St. Nazaire as a dry dock would force any large German warship in need of repairs to return to home waters. * The Cambeltown was given cosmetic modifications so that she would resemble a German Mowe class destroyer. The diversionary bombing did little except to alert the German forces that something odd was happening. Despite this the British ships got very close to the harbour without being fired on. Rather than use the deep channel which passed near the German guns, Cambeltown used the spring tide to pass over shallows, being lightened by removing guns, etc, though this also affected her handling characteristics. * The force was first noticed at 01:15 but searchlights did not go on until 01:22 when the force was little more than 1.5 nautical miles (2.8 km) from the harbor. The British legitimately flew the Kriegsmarine ensign as a false flag and used a German morse call sign and gained almost five minutes of unimpeded progress. Twice the German guns opened fire but were soon silenced by reassuring coded messages. * It was not until 01:28 with less than a mile to the harbor that the German guns opened fire. The Campbeltown drew most fire but despite a number of casualties struck the southern caisson at around 20 knots (37 km/h) at 01:34, jamming herself deep into the structure and crumpling almost 40 feet (12 m) of her hull. The delay fuses had been set shortly before the ship came under fire. * The seven Commando teams then disembarked and made for their targets. * The seventeen smaller vessels, although receiving less fire, were much more vulnerable. In the four minutes around the ramming by the Campbeltown eight of the launches were destroyed in the channel. A few hits were often sufficient to set the motor launches ablaze and the crew and Commandos had to abandon themselves to the water or Carley rafts. Many drowned or were caught in the burning fuel that spread across the water. Most of the eight craft destroyed suffered greater than 80% fatalities, even on the surviving craft barely a man escaped injury. * MTB 74 survived, fired her special torpedoes into the lock at the old entrance and made it back out to sea after taking on around half the crew of the Campbeltown. Only a few Commando teams on the launches made it ashore, none successfully at the Old Mole where they were hoping to re-embark and escape. The intact motor launches took on what survivors they could find or rescue from the water, made smoke and withdrew, leaving just over a hundred Commandos on the docks. MGB 314 survived and was the last vessel to leave, her decks covered in wounded men rescued from the water. * As the boats moved out into the wider part of the channel they came under fire from heavier guns, although at longer range. Two boats were destroyed in the race down river, one of the motor launches and MTB 74. Both vessels were carrying many wounded and most of the Campbeltown crew; their losses accounted for over half of the naval casualties. Four British vessels made the rendezvous with the destroyers. * The Commandos left behind at the docks were soon heavily pressed. Leaving a steady trail of dead and wounded the Commandos worked through the docks and charged the bridge, breaking through onto the Place de la Vieille Ville, but with barely one in four of the force uninjured. The British were forced southwards into the town and, under increasing fire sought cover. * The Germans surrounded the town, posted road-blocks, stopped all traffic and conducted a house-to-house search. Almost all the British were captured or killed by around 10.00. They were assembled at La Baule, numbering roughly 200 and taken to various prisoner of war camps. Five British soldiers avoided capture and made it to Gibraltar. * The Campbeltown's charges were timed to go off at around 0900 hrs at the latest. Meanwhile, a German search of the ship failed to discover the hidden explosives. The detonation time came and went. During this delay, senior German officers arrived to inspect the damage and were photographed on deck. They were accompanied to the dock by two Commando officers who had been taken prisoner. The captured officers knew what was about to happen but remained silent, allowing themselves to be killed rather than give the Germans an opportunity to defuse the explosives. * It was not until 1035 hrs that the Campbeltown finally exploded, destroying the caisson and killing about 250 German soldiers and civilians in the immediate area. * Of the 611 British soldiers, 169 had been killed and 200 captured, but the mission was a success and the dock was unusable until 1947.") "Dieppe Raid" (section :name "Dieppe Raid" :summary "* Because of the massive logistical obstacles a cross-channel invasion would face, Allied high command decided to conduct a practice attack against the French coast. * On August 19, 1942, the Allies began the Dieppe Raid, an attack on Dieppe, France. Most of the troops were Canadian, with an American and some British contingents. The raid was a disaster, and almost two-thirds of the attacking force became casualties. However, much was learned as a result of the operation, these lessons would be put to good use later in subsequent invasions. * For almost two years, there was no land-fighting on the Western Front with the exception of commando raids and the guerrilla actions of the resistance aided by the SOE and OSS. However, in the meantime, the Allies took the war to Germany, with a strategic bombing campaign the US Eighth Air Force bombing Germany by day and the RAF Bomber Command bombing by night.") "Invasion of Normandy" (section :name "Invasion of Normandy" :summary "* On June 6, 1944, the Allies began Operation Overlord (also known as 'D-Day') - the long-awaited liberation of France. The deception operation had the Germans convinced that the invasion would occur at the Pas-de-Calais, while the real target was Normandy. * Following two months of slow fighting in hedgerow country, the Allies were racing across France. They circled around and trapped 250,000 Germans in the Falaise pocket. As had so often happened on the Eastern Front Hitler refused to allow a strategic withdrawal until it was too late. * 100,000 Germans managed to escape through the Falaise Gap but they left behind most of their equipment and 150,000 were taken prisoner." :scenariomap (scenariomap "Barkmann's Corner" (scenario :name "Barkmann's Corner" :summary "* On the morning of July 27, 1944, Panzer Ace, Ernst Barkmann found himself in his Panther cut off from the rest of his company. The Americans were closing in with a large armoured column. Barkmann positioned his Panther under a stand of oaks near the crossroads where the American tanks would have to pass. * As the column came into sight, Barkmann knocked out the two lead Shermans and a fuel tanker truck. * Next he destroyed two Shermans which had attempted to bypass the burning tanker. The Americans called in fighter-bombers, which damaged Barkmann's Panther and wounded two of his crewmen. * Barkmann's next victims were two Shermans that had used the noise of the fighter-bombers as cover to sneak up on the damaged Panther's flank. As Barkmann's crew repaired the Panther, two more Shermans were knocked out. * Finally, before leaving, Barkmann destroyed one last Sherman. * Barkmann knocked out nine Shermans and several other American vehicles and halted an American armored attack. For his actions, he was awarded the Knight's Cross. * On another occasion, Ernst Barkmann in Panther 401 accidentally found himself as the spearhead of the 2nd SS Panzer Division's night assault on the crossroads at Manhay. Initially mistaking a lone Sherman of US 7th Armoured Division as that of his own commander, he pulled alongside the enemy tank, and only realised his mistake when he noticed it's unusual red interior lights. In a brief close quarter fight he managed to destroy the M4 with the Panther's anti-personnel mortar (Panzergranate). He then proceeded along the moonlit forest roads past a succession of surprised American units to Manhay and on towards Liege, having left several destroyed vehicles in his wake. His appearance caused havoc in the US defences, culminating in a rout. * Rules: Ground Map, Turret Facing, Vehicle Criticals" :teammap (teammap :American* (team :name "American*" :deploy "1) Create a [Road] east to west of the map. Do not place on [Forest]. 2) Place all tanks on the [Road] in a column starting from the east of the map. 3) They are caught by surprise and may not leave formation until the Panther attacks. ?) If the Germans achieve a Partial Victory, you may deploy the 2 Thunderbolts." :forces "* 9 [M4 Sherman] Tanks * 2 [P-47 Thunderbolt] Fighter/Bombers") :German (team :name "German" :deploy "1) Place [Forest] any place on the map until [Road] is complete. Do not completely block [Road]. ?) Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Panther anywhere on the map before taking your turn. When you attack, the enemy is [Surprised]." :forces "* 1 [Panther Ausf G] Tank - Ace"))) "Tiger Phobia" (scenario :name "Tiger Phobia" :summary "* On 8 August 1944, a single Tiger commanded by SS-Unterscharfuhrer Willi Fey from the 1st Company of sSSPzAbt 102, engaged a British tank column, destroying some 14 out of 15 Shermans, followed by one more later in the day using his last two rounds of ammunition. * sSSPzAbt 102 lost all of its Tigers during fighting in Normandy, but reported 227 Allied tanks destroyed in six weeks." :teammap (teammap :British* (team :name "British*" :deploy "All units are in a column moving down a road. They are caught by surprise and may not leave formation until the Tiger attacks." :forces "15 [M4 Sherman] Tanks") :German (team :name "German" :deploy "* Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Tiger in any space and immediately attack." :forces "* 1 [Tiger Tank] - Ace"))))) "Liberation of France / Operation Dragoon" (section :name "Liberation of France / Operation Dragoon" :summary "* On August 15. 1944 in an effort to aid their operations in Normandy, the Allies launched Operation Dragoon - the invasion of Southern France. The Allies rapidly consolidated this beachhead and liberated southern France in two weeks." :scenariomap (scenariomap "Red Ball Express" (scenario :name "Red Ball Express"))) "Operation Market Garden" (section :name "Operation Market Garden" :summary "* The British Field-Marshal Montgomery persuaded Allied High Command to launch a bold attack. Paratroopers would fly in from England and take bridges over the main rivers of the German-occupied Netherlands in three main cities, Eindhoven, Nijmegen, and Arnhem. British troops would punch through the German lines and link up with the paratroopers. If all went well, the Allies would capture the port facilities in Antwerp and advance into Germany without any remaining major obstacles. British XXX Corps was able to link up with six of the seven paratrooper-held bridges, but was unable to link up with the troops near the bridge over the Rhine at Arnhem. The result was the destruction of the British 1st Airborne Division. These events were summarized by Lt Gen. Frederick Browning as 'a bridge too far'." :scenariomap (scenariomap "Operation Market Garden" (scenario :name "Operation Market Garden" :teammap (teammap :British (team :name "British") :German (team :name "German"))) "A Bridge Too Far" (scenario :name "A Bridge Too Far" :teammap (teammap :British (team :name "British") :German* (team :name "German*"))))) "Allied advance from Paris to the Rhine" (section :name "Allied advance from Paris to the Rhine" :summary "Starting in early September 1944, the Americans began slow and bloody fighting through the Hurtgen Forest to breach the line.") "Battle of the Bulge" (section :name "Battle of the Bulge" :summary "* The 'bulge' was the initial incursion the Germans put into the Allies' line of advance. The offensive was launched in the Ardennes. Germany's planned goal for these operations was to split the British and American Allied line in half, capturing Antwerp, Belgium, and then proceeding to encircle and destroy four Allied armies, forcing the Western Allies to negotiate a peace treaty in the Axis Powers' favor. * The Germans planned the offensive with utmost secrecy, minimizing radio traffic and conducting the movement of troops and equipment under cover of darkness. Although ULTRA, the Allies' reading of secret German radio messages, suggested a possible German offensive, and the United States Third Army predicted a major German offensive, the attack still achieved surprise. * The degree of surprise achieved was compounded by the Allies' overconfidence, their preoccupation with their own offensive plans, poor aerial reconnaissance, and the relative lack of combat contact in the area by the U.S. 1st Army. Almost complete surprise against a weak section of the Allies' line was achieved during heavy overcast weather, when the Allies' strong air forces would be grounded. * For the U.S. Army, the battle incorporated more troops and engaged more enemy troops than any conflict before that time. The German objectives ultimately were unrealized. In the wake of the defeat, many experienced German units were left severely depleted of men and equipment. * The Battle of the Bulge was the bloodiest of the battles that U.S. forces experienced in WWII with 19,000 American dead.") "Invasion of Germany" (section :name "Invasion of Germany" :summary "* Hitler would not allow Field Marshal Gerd von Rundstedt to withdraw East behind the Rhine arguing that it would only delay the inevitable fight. Hitler ordered him to fight where his forces stood. By the time the water had subsided and the U.S. Army was able to cross the Roer on February 23, other Allied forces were also close to the Rhine's west bank. Rundstedt's divisions which had remained on the west bank of the Rhine were cut to pieces in the battle of the Rhineland and 290,000 men were taken prisoner. * On May 7 1944, Eisenhower took the unconditional surrender of all German forces to the western Allies and the Soviet Union.")))) (func chapter_wwii_eastern_front : base/chapter (chapter :name "WWII Eastern Front" :sectionmap (sectionmap "Invasion of Poland" (section :name "Invasion of Poland" :summary "Germans invade Poland in 1939.") "Operattion Barbarossa" (section :name "Operattion Barbarossa" :summary "* The codename for Nazi Germany's invasion of the Soviet Union during WWII that commenced on June 22, 1941. Over 4.5 million troops of the Axis powers invaded the USSR along an 1,800 mile front. The operation was named after the Emperor Frederick Barbarossa of the Holy Roman Empire, a leader of the Third Crusade in the 12th century. Barbarossa was the major part of the war on the Eastern Front. The planning for operation Barbarossa took several years prior to June 1941; the clandestine preparations and the military operation itself lasted almost a year, from the Spring of 1941, through the Winter of 1941. * The operational goal of Operation Barbarossa was the rapid conquest of the European part of the Soviet Union, west of a line connecting the cities of Arkhangelsk and Astrakhan, often referred to as the A-A line (see the translation of Hitler's directive for details). At its conclusion in December 1941, the Red Army had repelled the strongest blow of the Wehrmacht. Hitler had not achieved the victory he had expected, but the situation of the Soviet Union remained critical. Tactically the Germans had won some resounding victories and occupied some of the most important economic areas of the country, most notably in Ukraine. Despite these successes, the Germans were pushed back from Moscow and were not able to mount an offensive simultaneously along the entire strategic Soviet-German front again. * Then the failure of Barbarossa resulted in Hitler's demands for additional operations inside Russia, all of which eventually failed, such as continuation of the Siege of Leningrad, Operation Nordlicht, and Battle of Stalingrad, among other battles on the occupied Russian territory. * The failure of Operation Barbarossa resulted in the eventual defeat of Nazi Germany and is considered a turning point for the Third Reich. Most importantly, Operation Barbarossa opened up the Eastern Front, which ultimately became the biggest theater of war in world history. Operation Barbarossa and the areas which fell under it became the site of some of the largest and most brutal battles, deadliest atrocities, terrible loss of life, and horrific conditions for Soviets and Germans alike - all of which influenced the course of both WWII and 20th Century history.") "Battle of Moscow" (section :name "Battle of Moscow" :summary "* Nazi strategic offensive Operation Typhoon, and a series of Soviet strategic and smaller operations executed during the defense of Moscow, and the subsequent Soviet counter-offensive that occurred between October 1941 and January 1942 on the Eastern Front during WWII as a response to the Hitler's strategy that considered Moscow to be the primary military and political objective for Axis forces in their invasion of the Soviet Union.") "Battle of Stalingrad" (section :name "Battle of Stalingrad" :summary "Stalingrad was the bloodiest battle in human history, with combined casualties estimated to be above 60 million. The battle was marked by brutality and disregard for military and civilian casualties by both sides. The German offensive to take Stalingrad, the battle inside the city, and the Soviet counter-offensive which eventually trapped and destroyed the 6th Army and other Axis forces around the city was the second large-scale defeat of the Second World War.") "Battle of Kursk" (section :name "Battle of Kursk" :summary "* The last German blitzkrieg offensive in the east executed by the German forces on a strategic scale during the war, with the hope of another great encirclement of Red Army forces. The operations, which included the famous battle at Prokhorovka, remains both the largest series of armored operations and the most costly single day of aerial warfare to date. * Kursk is further notable for the deliberately defensive operation strategy on the Red Army's part. Having good intelligence on Hitler's intentions, the Red Army established and managed to conceal elaborate layered defense works, mine fields, and stage and disguise large reserve forces poised for a tactical and strategic counter-attack typical of defensive battle plans. Though the Germans planned and initiated an offensive strike, the well-planned defense not only frustrated their ambitions, but also enabled the Soviets to follow up with counter-offensives that exhausted the German abilities in the Theater, thereby seizing the initiative for the remainder of the war." :scenariomap (scenariomap "Tiger Phobia II" (scenario :name "Tiger Phobia II" :summary "* On 7 July 1943, a single Tiger tank commanded by SS-Oberscharfuhrer Franz Staudegger engaged a group of about 50 T-34s around Psyolknee (the southern sector of the German salient in the Battle of Kursk). Staudegger used all his ammunition in destroying 22 Soviet tanks, while the rest retreated. For this, Staudegger was awarded the Knight's Cross." :teammap (teammap :Soviet* (team :name "Soviet*" :deploy "* All units are in a column moving down a road. They are caught by surprise and may not leave formation until the Tiger attacks." :forces "* 50 [T-34/76] Tanks") :German (team :name "German" :deploy "* Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Tiger in any space and immediately fire as if prepared." :forces "* 1 [Tiger Tank] - Ace"))))) "Battle of Berlin" (section :name "Battle of Berlin" :summary "* Two Soviet Fronts attacked Berlin from the east and south, while a third overran German forces positioned north of Berlin. * The battle of Berlin lasted from late April 1945 until early May and was one of the bloodiest battles in history. Before the battle was over, German dictator Adolf Hitler and many of his followers committed suicide.")))) (func chapter_wwii_north_african_theatre : base/chapter (chapter :name "WWII North African Theatre" :summary "* On August 8, 1940, Benito Mussolini, anxious to link Libya with Italian East Africa and to capture the Suez Canal and the Arabian oilfields, ordered the invasion of Egypt. Italian forces invaded Egypt from their base in Cyrenaica, Libya. This invasion was repulsed later in the year during Operation Compass. * Initially the Commonwealth forces, under General Archibald Wavell, fought a successful campaign in the desert west of Egypt. While the fighting was taking place in Libya, Axis forces attacked Greece. General Wavell was ordered to halt his advance against the Italian Army in Libya and send troops to Greece. He disagreed with this decision but followed his orders. * The Allies were unable to stop Greece falling to the Axis forces and before they could retake the initiative in the western desert the German Afrika Korps led by Erwin Rommel had entered the theatre. * It would not be until early in 1943, after another year and a half of hard fighting and mixed fortunes, that the Axis forces would be finally driven out of Libya. * On November 8, 1942, the U.S. had entered the war beginning with amphibious landing in northwest Africa, codenamed Operation Torch, under the Supreme Allied Commander General Dwight D. Eisenhower." :sectionmap (sectionmap "Invasion of Egypt" (section :name "Invasion of Egypt" :summary "On September 13, 1940, Italy invaded Egypt with 200,000 troops from Libya.") "Operation Compass" (section :name "Operation Compass" :summary "* The Allies had only 36,000 men, but nevertheless launched a counter-attack. The Italians had 150,000 troops and tanks were evenly divided between the mechanically reliable but machine gun-armed Fiat L3s tankettes and the heavier Fiat M11/39. This tank featured a hull-mounted 37 mm tank gun which was difficult to bring to bear on targets because of its lack of available traverse, was relatively poorly armored and was mechanically unreliable. In comparison, the British were able to field some faster Cruiser tanks (the Mk I, Mk II, and Mk III) which were more than match to the M11/39s. The British also had a limited number of heavy Matilda Infantry tanks that, while slow, were strongly armored and well armed. The armour of the Matilda tanks could not be pierced by any of the available Italian tank guns or anti-tank guns available at that time though Italian anti-aircraft guns could be used against them in the same manner as the German 88mm. * On December 18, 1940, British and Indian infantry and 48 Matilda tanks suddenly appeared outside the Italian Nibeiwa Camp. They struck twenty-three unmanned M11/39 tanks of the Maletti Group, which had been deployed to guard the unmined entrance to the camp. The Italians were caught completely off guard and many did not even reach their tanks, including General Maletti, who was killed emerging from his dugout. They were slaughtered and their vehicles destroyed by the British in less than ten minutes. * The Italian artillery fought on valiantly, firing on the Matildas and recording many hits, some at point-blank range - but none penetrated their 70mm of armour. The remaining Italian tanks were captured intact, and the Libyan infantry, left practically defenceless, quickly surrendered. * The British had captured Nibeiwa and destroyed the only front-line Italian armoured unit in less than five hours. After the disaster, the Italian General was replaced. * As the Commonwealth forces advanced, several large Italian units were surrounded, cut off from supply, and defeated. After some hard fighting, one position after another surrendered.") :Bardia (section :name "Bardia" :reference "* Never has so much been surrendered by so many to so few. - Anthony Eden * In this theatre of operations a single armoured division is more important than an entire [infantry] army. - Rodolfo Graziani writing to Mussolini after his defeat" :summary "* On January 4, 1941, an Australian division was to assault Bardia and found themselves under continuous mortar and artillery fire and found it best to keep skirmishing forward instead of stopping and enduring artillery. Italian morale was broken, worn down by six weeks of aerial and naval bombardment. * The Australians captured Bardia taking 45,000 prisoners, 462 guns, 12 medium tanks, 115 tankettes and 708 vehicles with a loss of 130 dead.") :Tobruk (section :name "Tobruk" :summary "* On January 22, 1941, the Australians briefly captured Tobruk, yielding over 25,000 prisoners along with 236 field and medium guns, 23 medium tanks and more than 200 other vehicles. The Australian losses were 49 dead. The British began bombarding the remaining Italian positions. * On January 26, 1941, during the night it was hoped that a surrender could be brokered, but Mussolini himself forbid the generals from surrender. Later that night Italian SM 79's carried out a surprise low-level attack which accidentally bombed 8,000 Italian prisoners killing and wounding hundreds of their own men. This bombing broke the will of the Italians and that afternoon they surrendered. * 25,000 Italians and 400 Australians had been killed.") "Battle of Beda Fomm" (section :name "Battle of Beda Fomm" :summary "* On February 6, 1941, the Combe Force consisting of 2,000 men and (for the sake of speed) only light and Cruiser tanks managed to hold off 20,000 Italian soldiers supported by over 100 tanks and 200 guns. The Italian tanks were the newly arrived Fiat M13/40 medium tanks which were a vast improvement to the M11's. * The fighting was close and often hand to hand. At one point, a regimental sergeant major captured an Italian light tank by hitting the commander over the head with a rifle-butt. * Soon British and Australian reinforcements arrived and the Italians surrendered.") "Aftermath of Beda Fomm" (section :name "Aftermath of Beda Fomm" :summary "* After 10 weeks the Italian Tenth Army was no more. The British and Commonwealth forces had advanced 800km, destroyed or captured 400 tanks and 1290 artillery pieces, and captured 130,000 Libyan and Italian Prisoners of war. Their prisoners included 22 generals. The Commonwealth forces suffered 494 dead and 1,225 wounded. * However the advance stopped short of driving the Italians out of North Africa. As the advance reached El Agheila, Churchill ordered that it be stopped, and troops dispatched to defend Greece which was being attacked by Italy.") :Rommel (section :name "Rommel" :summary "* The stunning defeat of the Italians did not go unnoticed and fresh Italian troops together with German troops, the Deutsches Afrikakorps under Erwin Rommel were sent in to reinforce the Italian forces in western Libya. Although Rommel had been ordered to simply hold the line, an armoured reconnaissance soon became a fully fledged offensive.") "Operation Torch" (section :name "Operation Torch" :summary "* On November 8, 1942, Allied forces landed in Vichy held French North Africa where they were met with bloody resistance in Oran and Morocco, but in Algiers a coup d'etat by the French resistance on November 8 succeeded in neutralizing the defense before the landing, and arresting the Vichy commanders. Oran and Morocco were then convinced to cease resistance with the proviso that the Vichy Admiral Darlan would be head of the Free French administration. The Vichy army joined the Allies and formed the Free French Forces. * On December 24, Darlan was assassinated for his collaboration with the Nazis.") "Western Desert Campaign" (section :name "Western Desert Campaign" :summary "* The Western Desert Campaign, also known as the Desert War was the initial stage of the North African Campaign. The Axis powers had planned to dominate the Mediterranean through control of Gibraltar and the Suez Canal and planned to follow a successful campaign in North Africa with a strike north to the rich oil fields of the Middle East. This would have cut off nearby oil supplies to the Allies, and would have tremendously increased the oil supplies available for the Axis war machine. * By 1942, the campaign was heavily influenced by the availability of supplies and transport. Large quantities of supplies were becoming available form the United States. The British and Italian navies were evenly matched in the Mediterranean, but the British retention of Malta allowed the RAF to interdict an increasing amount of Italian supplies at sea denying the German commander, Rommel, fuel and reinforcements at critical moments.") :Jefria (section :name "Jefria" :summary "* On November 24, two Allied columns prepared to advance from Djebel Abiod. * The Blade Force made a lightning attack with tanks and destroyed more than 20 Axis planes, buildings, and supply dumps. * The northern force was delayed by torrential rain, but the Germans had used the extra time to create an ambush position on the road at Jefna. The Germans occupied high ground on either side of the road, which after the recent heavy rains was very muddy and the ground on either side impassable for vehicles. * The ambush worked perfectly with the leading battalion taking 149 casualties. Units were sent into the hills to try to flush the Germans out but the stubborn resistance of the paratroopers combined with the cleverly planned interlocking defenses proved too much. * The position remained in German hands until the last days of fighting in Tunisia the following spring.") "German Initiative" (section :name "German Initiative" :summary "* A string of Allied defeats in December cost them dearly; 173 tanks, 432 other vehicles, and 170 artillery pieces were lost, in addition to thousands of casualties. * On December 10, 1942, Axis tanks attacked Combat Command B on Bou Aoukaz becoming hopelessly bogged down in the mud. In turn, the U.S. tanks counter-attacked and were also mired and picked off, losing 18 tanks. * On December 22, 1942, the British Coldstream Guards drove back the German 10th Panzer Division from Longstop Hill. They were then relieved and withdrawn to Mejdez. The Germans regained the hill in a counter-attack and the Coldstreams were ordered back to Longstop. They regained the peak, but with ammunition running low and Axis forces holding adjacent high ground they were forced to withdraw. * By December 26, 1942, the Allies had withdrawn to the line they had left 2 weeks earlier having suffered 20,743 casualties.") "Battle of Kasserine Pass" (section :name "Battle of Kasserine Pass" :summary "* The Battle of Kasserine Pass was, in fact, a series of battles fought around Kasserine Pass, a two-mile (3 km) wide gap in the Grand Dorsal chain of the Atlas Mountains in west central Tunisia. * The Axis forces involved were from the German-Italian Panzer Army led by Field Marshal Erwin Rommel and the Fifth Panzer Army led by General Hans-Jurgen von Arnim. * The Allied forces involved came from the U.S. Army's II Corps commanded by Major-General Lloyd Fredendall which was part of the British First Army commanded by Lieutenant-General Kenneth Anderson. * Significant as the first large-scale meeting of American and German forces in World War II, the untested American troops, who were led in an inept manner by their commander, suffered heavy casualties and were pushed back over fifty miles (80km) from their original positions west of Faid Pass in a humiliating rout. * The battle has been described as when the amateurs first met the professionals. In the aftermath, the U.S. Army instituted sweeping changes from unit-level organization to the replacing of commanders. * When they next met, in some cases only weeks later, the U.S. was considerably stronger.") :Faïd (section :name "Faïd" :summary "* On January 23, 1943, the Allies took Tripoli, thereby cutting off Rommel's main supply base. Rommel had planned for this eventuality. With their lines steadied by the Atlas Mountains on the west and Gulf of Sidra on the east, even small numbers of German/Italian troops would be able to hold off the Allied forces. * Upsetting this plan was the fact that Allied troops had already crossed the Atlas Mountains. This put them in an excellent position to thrust east to the coast and cut off Rommel's forces and cut his line of supply to Tunis. Obviously, the Axis could not allow this to occur. * The Panzer Divisions moved on the Atlas Mountans. Several attempts were made by the U.S. 1st Armored Division to stop their advance, but all three combat commands found themselves faced with the classic blitzkrieg every time they were ordered into a defensive position, they would find those positions had already been overrun, and they were attacked by German soldiers with heavy losses. * After 3 days the Allies had to withdraw.") "Battle of Sidi Bou Zid" (section :name "Battle of Sidi Bou Zid" :summary "* Rommel eventually decided that he could improve his supply situation and further erode the American threat to his flank by attacking towards two U.S. supply bases in Algeria. * On February 14, 1943, the Panzer Division moved west attacking Sidi Bou Zid. * The battle raged for a day, but poor use of armor by the U.S. led to their defeat. By this point, the U.S. forces had lost 2,546 men, 103 tanks, 280 vehicles, 18 field guns, 3 antitank guns, and an entire antiaircraft battery.") "Rommel's Assault" (section :name "Rommel's Assault" :summary "* On February 19, 1943, Rommel launched an assault that broke the U.S. lines within minutes. Their light guns and tanks had no chance against the heavier German equipment, and they had little or no experience in armored warfare. The German Panzer IVs and Tiger tanks fended off all attacks with ease; the M3 Lee and M3 Stuart tanks they faced were inferior in firepower and their crews far less experienced. * Under fierce tank attack, the American units on Highway 13 also gave way during the night, with men at all points retreating before the Italian 131st Centauro Armoured Division. * Once again, the 1st Armored Division found itself ordered into useless positions. Morale among the U.S. troops started to fall precipitously, and by evening many troops had pulled back, leaving their equipment on the field. * The pass was completely open, and it appeared the supply dump at Tebessa was within reach. However, desperate resistance by isolated groups left behind in the action seriously slowed the German advance.") :Thala (section :name "Thala" :summary "* By February 21, 1943, the Panzer Division was just outside of the small town of Thala. If they took it the U.S. 9th Infantry Division would be cut off from their supplies, and Combat Command B of the 1st Armored Division would be trapped by the 10th Panzer division. That night, small units of British, French, and U.S. forces freed from the line to the north were sent piecemeal into the lines at Thala. * 48 artillery guns were emplaced that night. When the battle reopened the next day, the defenses were much stronger; the front line was held largely by British infantry with exceptionally strong backing by U.S. Artillery. * Overextended and undersupplied, Rommel decided to end the offensive. * After the battle, Rommel was largely contemptuous of both the U.S. equipment and fighting ability and considered them a non-threat. U.S. Commander Lloyd Fredendall was relieved and sent to a noncombat assignment for the remainder of the war. Fredendall's subordinates had no confidence in him as their commander and British First Army commander also thought Fredendall incompetent. * On March 6, Major-General George S. Patton was placed in command with the explicit task of improving performance.") "Operation Capri" (section :name "Operation Capri" :summary "* On March 6, 1943, the Allies had reached the Tunisian border and Rommel and von Arnim found themselves outflanked, outmanned and outgunned. * Three German armored divisions, two light divisions, and nine Italian divisions, launched an attack southward in the direction of Medenine, the northernmost British strongpoint. * British artillery fire was intense, beating off the Axis attack and knocking out 55 Axis tanks. * With the failure of Capri, Rommel decided that the only way to save his armies would be to evacuate them. He therefore left Tunisia to see Hitler to try to convince him to abandon Tunisia and return the Axis armies to Europe. Hitler refused, and Rommel was placed, in strict secrecy, on sick leave. * Von Arnim became commander of Army Group Africa.") "Battle of El Guettar" (section :name "Battle of El Guettar" :summary "* On March 23, 1943, the 10th Panzer met the U.S. II Corp. At first the battle went much as it had in earlier matchups, with the German tanks rolling up lead units of the US forces. However, they soon ran into a US minefield, and immediately the US artillery and anti-tank units opened up on them. The 10th lost 30 tanks over a short period, and retreated out of the minefield." :scenariomap (scenariomap :Minefield (scenario :name "Minefield"))) :Tunisia (section :name "Tunisia" :reference "* Sink, burn, capture, destroy. Let nothing pass - Admiral Cunningham, Naval Task Force Commander * The Italians fought particularly well, outdoing the Germans in line with them. - British General Harold Alexander" :summary "* By April 12, 1943, Allied aircraft had been moved forward to airfields in Tunisia, and large numbers of German transport aircraft were shot down. British destroyers operating from Malta prevented reinforcement or evacuation of Tunisia by sea. * On April 23, 1943, in grim hand-to hand fighting against Infantry and Panzer Divisions, the U.S. took eight days to penetrate 6 miles (9.7km) and capture most of the Axis defensive positions. Casualties were heavy on both sides. * On May 13, 1943, the Axis forces surrendered yielding over 275,000 prisoners of war including most of the Afrika Korps. This huge loss of experienced troops greatly reduced the military capacity of the Axis powers, although the largest percentage of Axis troops escaped Tunisia. * This defeat in Africa led to all Italian colonies being captured.") "Aftermath of Tunisia" (section :name "Aftermath of Tunisia" :summary "* According to historian Williamson A. Murray 'The decision to reinforce North Africa was one of the worst of Hitler's blunder: admittedly, it kept the Mediterranean closed for six more months, with a negative impact on the Allied shipping situation, but it placed some of Germany's best troops in an indefensible position from which, like Stalingrad, there would be no escape. Moreover Hitler committed the Luftwaffe to fight a battle of attrition under unfavorable conditions, and it suffered losses that it could not afford.' * The Axis's desperate gamble had only slowed the inevitable, and the US loss at Kasserine may, paradoxically, have been the best thing that could have happened to them. * With North Africa now in Allied hands, plans quickly turned to the invasion of Sicily, and Italy after it.")))) (func chapter_wwii_east_african_theatre : base/chapter (chapter :name "WWII East African Theatre" :summary "* The battles of this campaign were fought between the forces of the British Empire, the British Commonwealth of Nations, and the forces of the Italian Empire. * The Commonwealth forces included troops from the Sudan, British Somaliland, British East Africa, the Indian Empire, South Africa, Northern Rhodesia, Southern Rhodesia, Nyasaland, and British West Africa (Nigeria, Gold Coast, Sierra Leone, and the Gambia). There was even a small commando unit from the British Mandate of Palestine. In addition to the British and Commonwealth forces, there were Ethiopian irregular forces, Free French forces, and Free Belgian forces. * In November 1940, the British and Commonwealth forces received an incredible intelligence advantage. The government code and cypher school broke the high grade cypher of the Italian Royal Army in East Africa. Later, during the same month, the replacement cypher for the Italian Royal Air Force was broken. * From this point on, the commanders knew Italian plans as soon as they were issued." :sectionmap (sectionmap "Italian Forces" (section :name "Italian Forces" :summary "* Troops - The Italian forces included Italian nationals, East African colonials (Eritreans, Abyssinians, and Somali Dubats), and a small number of German volunteers (the German Motorized Company). * The Italians had between 250,000 and 280,000 troops available. Most of them (about 70%) were local East African askaris. While the askaris of the regular Eritrean battalions of the 'Royal Corps of Colonial Troops' (Regio Corpo Truppe Coloniali) were amongst the best Italian units in East Africa, the majority of the colonial troops were recruited, trained, and equipped to do no more than maintain order in the colony. Ethiopian askaris and irregulars, recruited during the brief Italian occupation, deserted in large numbers after the outbreak of war. * The Royal Corps of Colonial Troops included horse mounted Eritrean cavalry known as 'Falcon Feathers' (Penne di Falcon). On one occasion a squadron of these horsemen charged British and Commonwealth troops throwing small hand grenades from the saddle. * The Italian forces were equipped with about 3,300 machine guns, 24 M11/39 tanks, a large number of L3/35 tankettes, 126 armored cars and 813 pieces of assorted artillery. The Italian faced problems with isolation of the East Africa, with very little chance for reinforcements or resupply, leading to problems especially with ammunition. * Malaria - It is estimated that nearly one-quarter of the Italians troops defending Amba Alagi in April 1941 had malaria during the siege. Unfortunately, the Italians at Amba Alagi had no medicine for malaria. Even the commander of Amba Alagi, the Duke of Aosta, was himself afflicted with malaria during the siege. He died of tuberculosis and malaria on 3 March 1942, a few months after his surrender. * Aircraft - The Italians had 200-300 Savoia-Marchetti SM.79 and Savoia-Marchetti SM.81 bombers and Fiat CR-42 fighters. While some of these aircraft were outdated, in relative terms these were some of the best aircraft available to either side in East Africa in 1940. In addition, the Italian aircraft were often based at better airfields than their British and Commonwealth counter-parts. When the war began, Italian pilots were relatively well trained and confident of their abilities. But, cut off from Italy as they were, problems with lack of fuel, munitions, spare parts, and replacements eventually wore the Italian air capability down. * Navy - Italian Naval power maintained presence in the Red Sea region with its 'Red Sea Flotilla' consisting of seven destroyers, five motor torpedo boats and eight submarines.") "Allied Forces" (section :name "Allied Forces" :summary "* Troops - The British and Commonwealth forces in East Africa amounted to about 30,000 men in the Sudan, British East Africa, and British Somaliland. The British were slightly better equipped than the Italians, and had access to resupply and reinforcements. However, they were vastly outnumbered by the Italian forces. To make matters worse, the Italians had at least another 208,000 men (fourteen divisions) available in Libya. * Gideon Force - A significant aspect of the Allied campaign to retake Ethiopia was an elite group of Ethiopian irregulars called Gideon Force that would tie down large number of Italian units throughout the colony. * Aircraft - The roughly one-hundred aircraft available to the British and Commonwealth forces at the beginning of the campaign were dispersed as follows: In the north (Sudan) were two Royal Air Force (RAF) bomber squadrons at Port Sudan (one of these squadron was equipped with obsolete aircraft) and the RAF Army Co-operation Squadron on the Sudan frontier. In the south (Kenya) were No. 12 Bomber Squadron of the South African Air Force (SAAF) (equipped with Junkers Ju 86 bombers), No. 11 Bomber Squadron of the SAAF (equipped with Fairey Battles), No. 40 Army Co-operation Squadron SAAF (equipped with Hawker Hartebees), No. 2 Fighter Squadron, SAAF (equipped with Hawker Furies), and No. 237 (Southern Rhodesian) Army Co-operation Squadron (equipped with Hawker Hardys). Unlike the Italians, the aircraft available to the British and Commonwealth forces got better with time. But much of the equipment initially available tended to be older and slower. Even so, the British and Commonwealth forces managed to make do with what they had. * Navy - Allied Naval presence is very high in the Indian Ocean, but the Eastern Fleet largely consisted of older capital ships that had been deemed too slow or too vulnerable to be of use in the Atlantic Ocean or the Mediterranean Sea.") "Battle of Tug Argan" (section :name "Battle of Tug Argan" :summary "* On August 3, 1940, 25,000 Italian troops invaded British Somaliland. The British resisted with 4,000 men including the Somaliland Camel Corp. * By August 19, the Italians took control of British Somaliland which was the first British colony to fall to enemy forces in World War II. The Italians, however, had taken nearly 10 times the number of casualties as the British. * Winston Churchill, criticized General Archibald Wavell concerning the loss of British Somaliland. Because of the low casualty rate, Churchill fretted that the British had abandoned the colony without enough of a fight. In response to this criticism, Wavell claimed that Somaliland was a textbook withdrawal in the face of superior numbers. He pointed out to Churchill that 'A bloody butcher's bill is not the sign of a good tactician.' According to Churchill's staff, Wavell's retort moved Churchill to greater fury than they had ever seen before. * In September, 1940, Indian Infantry Divisions started arriving in the Sudan. * Throughout November, December, and early January, the British continued to apply constant pressure on the Italians all along the border with the Sudan. Better British aircraft started to replace some of the older models. The new Hawker Hurricanes were clearly superior to the Italian Fiat CR-42. Additionally, a series of failed naval engagements had lost a number of Italian warships with few British losses. * By January, 31 1941, the Italian military forces in East Africa were down to 67 operational aircraft with limited fuel.") "Battle of Keren" (section :name "Battle of Keren" :reference "* Keren was as hard a soldiers' battle as was ever fought, and let it be said that nowhere in the war did the Germans fight more stubbornly than those [Italian] Savoia battalions. The unfortunate license of wartime propaganda allowed the British Press to represent the Italians almost as comic warriors; but except for the German parachute division in Italy and the Japanese in Burma no enemy with whom the British and Indian troops were matched put up a finer fight. Moreover, the Colonial troops, until they cracked at the very end, fought with valor and resolution, and their staunchness was a testimony to the excellence of the Italian administration and Military." :summary "* On March, 14 1941, the British forces of 13,000 assaulted a reinforced Italian defense of 23,000. Both sides fought with determination and suffered heavy losses. * On March 27, Keren fell.") :Massawa (section :name "Massawa" :summary "* On April 8, 1941, Massawa was captured after the Italian ground resistance collapsed without adequate fuel, ammunition, or food. * Before Massawa fell, Bonnetti had ordered the remaining six Italian destroyers and the remaining motor torpedo boat on a 'do or die' mission. They were sunk or ran aground without doing much damage.") "Amba Alagi" (section :name "Amba Alagi" :summary "* The Italians decided to make their final defense area around the 12,000 foot high mountain, Amba Alagi. They drove galleries into the solid rock to protect their troops and to hold ample ammunition and stores. In this mountain fortress, the defenders, under command of Amedeo, Duke of Aosta, thought themselves to be impregnable. * The 7000 Italian troops were faced by 9000 British troops and 20000 Ethiopian irregulars. A final assault was planned for 15 May, but a fortuitous artillery shell hit an Italian fuel dump and ruptured a vessel containing oil which flowed into the remaining drinking water of the Italian defenders. The lack of drinkable water then forced the Italians to surrender. * On 18 May, Amedeo, Duke of Aosta surrendered his embattled forces at Amba Alagi and received full military honors. While the Duke of Aosta faced defeat in East Africa, his brother, the Duke of Spoleto was being made the King of Croatia after the successful invasion of Yugoslavia. The Duke of Aosta had endured the last months of fighting while suffering a severe attack of malaria (and died of TBC and malaria a few months later).")))) (func chapter_wwii_middle_east_theatre : base/chapter (chapter :name "WWII Middle East Theatre" :summary "* Although Southwest Asia was destined to remain a strategic backwater for the duration of World War II, in late 1941 and early 1942 the Allies were not certain that it would remain so. Before the turning points of the Battle of Stalingrad (June 1942 to February, 1943) and the Second Battle of El Alamein (October to November 1942), the fear was that the Germans might attack the area either through Turkey, or via Cyprus into Lebanon; or through defeating of the British in Egypt. If the anticipated attack came through Turkey or Lebanon, then not only could the Axis Powers threaten British controlled Egypt and the strategically important Suez Canal, it would also allow the Germans an alternative route to attack the Soviet Union from Southwest Asia north through the USSR's southern frontiers. In the slightly longer term the British feared independent regimes in the region as well as the possibility that the German might follow in Alexander the Great's footsteps and attack British controlled India from Persia in the west as Japan simultaneously attacked India from the east through Burma." :sectionmap (sectionmap "Anglo-Iraqi War" (section :name "Anglo-Iraqi War" :summary "* Iraq had been officially granted independence by the United Kingdom in 1932, under a number of conditions, including the retention of British military bases. This caused resentment within Iraq and a pro-Axis prime minister assumed control. In early 1941, he ordered British forces to withdraw. On April 30 the Iraqi Army surrounded and besieged the isolated and poorly-defended Royal Air Force base at Habbaniya. Although the base had no offensive aircraft, RAF personnel converted training aircraft to carry weapons, and attacked the Iraqi forces. * The British counterattacked and defeated the larger but poorly-trained Iraqi Army in a series of battles, even though the Iraqis received direct aid from the Luftwaffe. The British pressed on to Baghdad and then to Mosul. The prime minister and his supporters fled the country and an armistice was signed.") "Syria-Lebanon Campaign" (section :name "Syria-Lebanon Campaign" :summary "* On June-July 1941, the British led Allies invaded Vichy French-controlled Syria and Lebanon. The campaign remains little known, even in the countries that took part. There is evidence that Allied censors acted to suppress or reduce reportage of the fierce fighting believing that knowledge of fighting against French forces could have a negative effect on public opinion in Allied countries. * The Vichy French forces lost approximately 6,000 men. Of these, roughly 1,000 had been killed. This left 37,736 Vichy French prisoners of war. But, when given the choice of being repatriated to France or joining the Free French, only 5,668 men chose to join the forces of General Charles De Gaulle. * On November 26, 1941, the independence of Syria and Lebanon were recognized in the name of the Free French movment. * On February 26-27, 1945, Syria and Lebanon each declared war on Germany and Japan." :scenariomap (scenariomap :Syria-Lebanon (scenario :name "Syria-Lebanon" :teammap (teammap :Iranforce (team :name "Iranforce" :deploy "1) Objective: City of Queneitra and City of Deraa in Damascus 2) Objective: City of Beirut in Beirut 3) Objective: City of Palmyra and Oil Pipeline in Central Syria 4) Deploy forces at edge of board" :forces "* 18,000 - Australian * 9,000 - British * 2,000 - Indian * 5,000 - Free French * 3 - Artillery Groups * 70 Aircraft - Hawker Hurricanes, Tomahawks") "Vichy French*" (team :name "Vichy French*" :deploy "1) Deploy Middle East Strategic Map 2) Objective: Supply Line and Railway near Beirut at end of Euphrates River in Northern Syria 3) Deploy forces anywhere on map" :forces "* 8,000 - French Foreign Legion * 20,000 - Syrian/Lebanese * 5,000 - Horse and Motorized Cavalry * 2 - Artillery Groups * 100 Aircraft - Dewoitine 520, Potez 63"))))) "Anglo-Soviet Invasion of Iran" (section :name "Anglo-Soviet Invasion of Iran" :summary "* On August 25, 1941, Britain and Russia launched an invasion of the neutral nation of Iran. The British feared that the Anglo-Iranian Oil Company might fall into German hands. The refinery produced 8 million tons of oil and was a crucial part of the Allied war effort. For the Russians, Iran was a country of extreme strategic importance. The Germans were steadily advancing through the Soviet Union and there were few ways for the Allies to get desperately needed American Lend-Lease supplies to the Soviets. With increasing German submarine attacks, as well as heavy ice floes and the coastal ice cap fast rendering convoys to Arkhangelsk impossible, the Trans-Iranian Railway seemed a very attractive route to transport supplies up from the Persian Gulf. The two Allied nations applied pressure on Iran and the Shah but this led only to increased tensions and pro-German rallies in Tehran. The Shah refused to expel the many German nationals residing in Iran, and denied the use of the railway to the Allies. These conditions prompted Britain and Russia to invade. * Franklin Roosevelt reassured the Shah by claiming that the British and Soviets had no designs on the itegrity of Iran. However, the Soviets would later back separatist states in the north, while the U.S. and UK would later support the overthrow of the popular and democratically elected Iranian Prime Minister in 1953. * With this crucial supply route now open to the Soviet Union the Persian Corridor was opened and would provide a massive flow of supplies (over 5 million tons of war materiel) to the Soviets primarily, but also the British in the Middle East.")))) (func chapter_wwii_mediterranean_theatre : base/chapter (chapter :name "WWII Mediterranean Theatre" :sectionmap (sectionmap "Italian Campaign Overview" (section :name "Italian Campaign Overview" :summary "* The US and British disagreed fiercely on how to prosecute the war. The US argued for an invasion of France as early as possible, while the British advocated a Mediterranean strategy since large numbers of troops trained for amphibious landings in the Mediterranean made a limited-scale invasion possible. Eventually the US and British made the decision to commit to an invasion of France in early 1944, but with a lower-priority Italian campaign reflecting Roosevelt's desire that to keep U.S. troops active in the European theater during 1943 and his attraction to the idea of eliminating Italy from the war. * It was hoped that an invasion would knock the Italians out of the war, or provide at least a major propaganda blow. The elimination of Italy as an enemy would also enable the Royal Navy to completely dominate the Mediterranean Sea, massively improving communications with Egypt, the Far East, the Middle East, and India. It would also mean that the Germans would have to transfer troops from the Eastern Front to defend Italy and the entire southern coast of France, thus aiding the Soviets. The Italians would also withdraw their troops from the Soviet Union to defend Italy. * It is estimated that between September 1943 and April 1945 some 60,000 Allied and 50,000 German soldiers died in Italy. No campaign in western Europe cost more than Italy, in terms of lives lost and wounds suffered by infantry.") "Invasion of Sicily" (section :name "Invasion of Sicily" :summary "* On July 9, 1943, the Allies invaded Sicily. It was the largest amphibious operation of the war in terms of men landed on the beaches and of frontage. It opened the Mediterranean sea lanes and toppled Mussolini from power. * Operation Mincemeat - A corpse disguised as a British officer was allowed to drift ashore in Spain, carrying a briefcase containing fake secret documents. These documents revealed that the Allies were planning to invade Greece, and had no plans to invade Sicily. The documents were accepted as genuine by German intelligence, and as a result much German defensive effort was diverted from Sicily to Greece. * On August 7, 1943, the Axis forces were outflanked and raced for transport ships under the cover of night. The Allies weren't watching the Axis troops, so they escaped from Messina and reached Italy. Considering Allied naval and air superiority, to not prevent an Axis escape from Sicily was a major strategic blunder. Instead of a major Axis defeat, it started a long and bloody campaign. * The Axis lost 29,000 lives and 140,000 (mostly Italians) captured. The Allies lost 8,000 lives." :scenariomap (scenariomap "Invasion of Sicily" (scenario :name "Invasion of Sicily" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 160,000 personnel (U.S., British, Canadian, Free French, Australian, South African) * 14,000 vehicles * 600 tanks * 1,800 guns") "Axis Forces" (team :name "Axis Forces" :forces "* 275,000 Italian personnel * 75,000 German personnel * 260 Tanks * 1,400 aircraft"))))) "Invasion of Italy" (section :name "Invasion of Italy" :summary "* A coup deposed Benito Mussolini as head of the Italian government, which then began approaching the Allies to make peace. It was believed a quick invasion of Italy might hasten an Italian surrender and produce quick military victories over the German troops that could be trapped fighting in a hostile country. However, Italian and German resistance proved relatively strong, and fighting in Italy continued even after the fall of Berlin. In addition, the invasion left the Allies in a position of supplying food and supplies to conquered territory, a burden which would otherwise have fallen on Germany. As well, Italy occupied by a hostile German army would have created additional problems for the Germans. * On September 8, 1943, before the main invasion, the surrender of Italy to the Allies was announced. Italian units ceased combat, and the Navy sailed to Allied ports to surrender. However the German forces in Italy were prepared and moved to disarm Italian units and occupy important defensive positions. * On September 9, 1943, the invasion began easily on the beaches near Salerno. The Germans counterattacked several times and inflicted heavy losses. The Germans came close to defeating the Salerno beachhead. Despite using six divisions of tanks and mechanized infantry, the German attacks had not had sufficient forces to both break through Allied lines and exploit the gains in the face of Allied artillery and naval gunfire support. The Allies had been fortunate that at this time Adolf Hitler had sided with the view of his Army Group commander in Northern Italy, Field Marshall Erwin Rommel, and decided that defending Italy south of Rome was not a strategic priority. * By early October, all of Southern Italy was in Allied hands." :scenariomap (scenariomap "Invasion of Italy" (scenario :name "Invasion of Italy" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 190,000 Personnel (U.S., British, Canadian, Indian)") "Axis Forces" (team :name "Axis Forces" :forces "* 100,000 Personnel (Italian and German)"))))) "Advance to Rome" (section :name "Advance to Rome" :summary "* Kesselring was given command of the whole of Italy and immediately ordered the preparation of a series of defensive lines across Italy south of Rome. Two lines, the Volturno Line and the Barbara Line, were used to delay the Allied advance to buy time to prepare the most formidable defensive positions which formed the Winter Line, the collective name for the Gustav Line and two associated defensive lines on the west of the Apennine mountains, the Bernhardt Line and the Hitler Line. The Winter Line proved a major obstacle to the Allies at the end of 1943, halting their advance on the Fifth Army's front, the western side of Italy. * Although the Gustav Line was penetrated on the Eighth Army's Adriatic front and Ortona taken, blizzards, drifting snow and zero visibility at the end of December caused the advance to grind to a halt. * The Allies focus then turned to the western front where an attack through the Liri valley was considered to have the best chance of a breakthrough towards Rome. Landings at Anzio behind the line were intended to destabilise the German Gustav line defenses, but the hoped for early thrust inland to cut the German defenses off did not occur and the Anzio forces became bottled up in their beach head. * It took four major offensives between January and May 1944 before the line was eventually broken along a twenty mile front between Monte Cassino and the western seaboard. At the same time the forces at Anzio broke out of their beachhead but an opportunity to cut off and destroy a large part of the German Tenth Army retreating from the Gustav Line was lost when, on the brink of success, the Anzio forces changed their direction of attack to move parallel with the coast to capture Rome. * Rome was declared an open city by the German army and the US forces took possession on June 4.") "Advance to Northern Italy" (section :name "Advance to Northern Italy" :summary "* After the capture of Rome and the Normandy Invasion in June many experienced American and French units, the equivalent of a total of 7 divisions, were pulled out of Italy during the summer of 1944 to participate in Operation Dragoon, the Allied invasion in the south of France. * Churchill had hoped that a breakthrough in the autumn of 1944 would open the way for the Allied armies to advance to Vienna and Hungary to forestall the Russians advancing into Eastern Europe. Churchill's proposal had been strongly opposed by the US Chiefs of Staff who understood its importance to British post-war interests in the region but did not feel it aligned with prevailing overall Allied war priorities. * Continuation of the Allied offensive in early 1945 was made impractical by the poor winter weather (making armoured manoeuver and exploitation of overwhelming air superiority impossible). * On April 9, 1945, the Allies' final offensive commenced with massive aerial and artillery bombardments. * As April came to an end, the Axis forces in Italy, retreating on all fronts and having lost most of its fighting powers, was left with little option but surrender.")))) (func chapter_wwii_pacific_theatre : base/chapter (chapter :name "WWII Pacific Theatre" :sectionmap (sectionmap "Battle of Pearl Harbor" (section :name "Battle of Pearl Harbor" :summary "* On Sunday morning, December 7, 1941, the Japanese navy launched a surprise attack against the Pacific Fleet docked at Pearl Harbor, Hawaii which drew America into World War II. It was intended as a preventive action to remove the U.S. Pacific Fleet to protect Japan's advance into Malaya and the Dutch East Indies — for their natural resources such as oil and rubber. * Two aerial attack waves, totaling 353 aircraft, launched from six Japanese aircraft carriers. * The attack wrecked two U.S. Navy battleships, one minelayer, and two destroyers beyond repair, and destroyed 188 aircraft; personnel losses were 2,388 killed and 1,178 wounded. * The Japanese high command was certain, though mistakenly so, an attack on the United Kingdom's colonies would bring the U.S. into the war, so a preventive strike appeared to be the only way Japan could avoid U.S. interference in the Pacific. While the attack accomplished its intended objective, it was completely unnecessary - unbeknownst to Yamamoto, the U.S. Navy had decided to abandon any intention of 'charging' across the Pacific towards the Philippines at the outset of war back in 1935. They instead adopted 'Plan Dog' in 1940, which emphasized keeping the Imperial Japanese Navy (IJN) out of the eastern Pacific and the shipping lanes to Australia, while the U.S. concentrated on defeating Nazi Germany. * The attack was one of the most important engagements of World War II. Occurring as it did before a formal declaration of war, it pushed U.S. public opinion from isolationism to an acceptance war was unavoidable, as Roosevelt called December 7, 1941 '...a date which will live in infamy.'") "Battle of Wake Island" (section :name "Battle of Wake Island" :summary "* On December 8, 1941, the same day as the attack on Pearl Harbor, 36 Japanese medium bombers attacked Wake Island, destroying eight of the twelve F4F Wildcat fighters. * On December 11, the garrison, with the support of the four remaining Wildcats, repulsed the first Japanese landing attempt, which included the light cruisers Yubari, TenryÅ«, and Tatsuta; the destroyers Yayoi, Mutsuki, Kisaragi, Hayate, Oite, and Asanagi; two old destroyers converted to patrol boats (Patrol Boat No. 32 and Patrol Boat No. 33), and two troop transport ships containing 450 troops. The U.S. Marines fired at the invasion fleet with their six 5-inch (127 mm) coastal artillery guns. They then succeeded in sinking the Hayate with a direct hit to her magazines and striking the Yubari's superstructure eleven times. The four Wildcats also succeeded in sinking another destroyer, by dropping a bomb on her stern where the depth charges were stored. Both Japanese destroyers were lost with all hands, with Hayate becoming the first Japanese surface warship to be sunk during World War II. The Japanese force withdrew before landing. * This was the first Japanese defeat of the war. The first battle of Wake Island also marked the only occasion in WWII when an amphibious assault was repulsed by shore-based guns. * The siege on the Wake garrison continued, without resupply for the Americans. The initial resistance offered by the garrison prompted the Japanese Navy to detach two aircraft carriers (Soryu and Hiryu). * The second Japanese invasion force came on December 23, composed mostly of the same ships from the first attempt with some new additions, plus 1,500 Japanese marines. The landings began at 02:35 where, after a preliminary bombardment, the ex-destroyers Patrol Boat No. 32 and Patrol Boat No. 33 were beached and burned in their attempts to land the invasion force. * The next day, the Wake garrison surrendered. * The U.S. Marines lost 47 killed and 2 MIA during the entire 15-day siege, while three U.S. Navy personnel and at least 70 civilians were killed. * Japanese losses were recorded at between 700 to 900 killed, with at least 1,000 more wounded, in addition to the two destroyers lost in the first invasion attempt and at least 28 land-based and carrier aircraft either shot down or destroyed. The Japanese captured all men remaining on the island.") "Battle of Hong Kong" (section :name "Battle of Hong Kong" :summary "* On December 8-25, 1941 a battle was fought ending with Hong Kong, a British colony, surrendering to Japan. * The battle began less than eight hours after the Attack on Pearl Harbor. The garrison had held out for 17 days before surrendering. * This was the first occasion on which a British Crown Colony was surrendered to an invading force.") "Battle of Bataan" (section :name "Battle of Bataan" :summary "* The capture of the Philippine Islands was crucial to Japan's effort to control the Southwest Pacific, seize the resource-rich Dutch East Indies, and protect its Southeast Asia flank. * The Battle of Bataan was the largest surrender in American and Filipino military history." :scenariomap (scenariomap "War Plan Orange-3" (scenario :name "War Plan Orange-3" :summary "* On December 26, 1941, after securing the beachheads, the Japanese launched a massive pincer attack. The defending forces planned to fall back and hold out for six months, at which time the plan assumed that relief would arrive from the U.S. * The surrender of Bataan would hasten the fall of Corregidor, a month later. However, without this stand, the Japanese might have quickly overrun all of the U.S. bases in the Pacific. Bataan forced them to slow down, giving the allies valuable time to prepare for conflicts such as the Battle of the Coral Sea and the Battle of Midway which followed closely thereafter. * Ultimately, more than 60,000 Filipino and 15,000 American prisoners of war were forced into the infamous Bataan Death March. The prisoners were forced to march through deep dust for 90 miles. 5000-10000 died en route from disease, starvation, dehydration, heat prostration, untreated wounds, and wanton execution. Those who fell behind were usually executed or left to die; the sides of the roads became littered with dead bodies and those begging for help."))) "Battle of Malaya" (section :name "Battle of Malaya" :summary "* The Battle of Malaya was fought from December 8, 1941 to January 31, 1942. * The Japanese invaded with over two hundred tanks, but the British Army in Malaya did not have a single one. * For the British, Indian, Australian and Malayan forces defending the colony, the campaign was a disaster. In less than two months, the battle ended in comprehensive defeat for the Commonwealth forces with nearly 50,000 Commonwealth troops had been captured or killed.") "Battle of Corregidor" (section :name "Battle of Corregidor" :summary "* The fall of Bataan in April 9, 1942, ended all organized opposition in the Phillipines. The island bastion of Corregidor, with its network of tunnels and formidable array of defensive armament, along with the fortifications across the entrance to Manila Bay, was the remaining obstacle. The Japanese had to take Corregidor; as long as the island remained in American hands, they would be denied the use of the Manila Bay, the finest natural harbor in the Far East. * The two 12-inch (305mm) guns of Batteries Smith and Hearn, with a horizontal range of 29,000 yards (27,000m) and all-around traverse were the longest range of all the island's artillery. * From December 29, 1941, to the end of April 1942, despite incessant Japanese aerial, naval and artillery bombardment, the garrison on Corregidor resisted valiantly, inflicting heavy enemy losses in men and planes. * The defenders were living on about thirty ounces of food per day. Drinking water was distributed only twice per day, but the constant bombing and shelling often interrupted the ration. When the bombardment killed the mules in the Cavalry, they would drag the carcasses down to the mess hall and cook them. * Japanese aircraft flew 614 missions dropping 1,701 bombs totaling some 365 tons of explosive." :scenariomap (scenariomap "Battle of Corregidor" (scenario :name "Battle of Corregidor" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 2x 305mm Naval Guns * 43x Coastal Guns and Mortars * 72x Anti-aircraft guns") "Japanese Forces" (team :name "Japanese Forces" :forces "* Bombers * 9x 240mm Howitzers * 34x 149mm Howitzers * 32x Artillery"))))) "Battle of Singapore" (section :name "Battle of Singapore" :summary "* Japan invaded Singapore and fighting lasted from February 7, 1942 to February 15, 1942. * It resulted in the fall of Singapore, the major British military base in South East Asia and the largest surrender of British-led military personnel in history. About 80,000 Indian, Australian and British troops became prisoners of war, joining 50,000 taken by the Japanese in the Malayan campaign. Winston Churchill called the ignominious fall of Singapore the 'worst disaster' and 'largest capitulation' in British history.") "Doolittle Raid" (section :name "Doolittle Raid" :summary "* The Doolittle Raid, 18 April 1942, was the first air raid by the United States to strike the Japanese home island of HonshÅ« during World War II. It demonstrated that the Japanese home islands were vulnerable to Allied air attack. The Doolittle Raid was the only time that United States Army Air Forces bombers were launched from an aircraft carrier. * The plan was to launch B-25B bombers from a carrier, hit targets in Japan, and fly on to land in China. All 16 aircraft were lost, and 11 crewmen were either killed or captured. The crews of 13 aircraft, however, were recovered and returned to the United States, and a 14th crew interned by the Soviet Union eventually made its way home in 1943. * The Doolittle raid did little material damage, but American morale soared from the depths following Pearl Harbor. The raid also had a strategic impact, though it was not understood at the time, in that it caused the Japanese to recall some fighter units back to the home islands for defense. They did not understand how American aircraft could attack from such a distance and assumed that America had developed a new, extremely long-range aircraft, when in reality, American forces knew it would essentially be a one-way trip. This assumption that the home islands were vulnerable to air attack strengthened Admiral Yamamoto's resolve to carry out military action against Midway Island. These reassignments subsequently weakened Japan's air capabilities against the Allies at the Battle of Midway and later Pacific Theater campaigns.") "Battle of the Coral Sea" (section :name "Battle of the Coral Sea" :summary "* On May 4-8, 1942, the Japanese fought the US and Australian in the first naval battle between aircraft carriers and the first naval battle where neither side's ships sighted or fired directly upon the other. * On May 6, 1942, land-based B-17s attacked the approaching Port Moresby invasion fleet with the usual lack of success. Almost another year would pass before the USAAF realized high-altitude bombing attacks against moving naval targets were pointless. That night the commander at Port Moresby made the difficult decision to detach his main surface force (3 cruisers and 3 destroyers) to block the probable course of an invasion. He risked a repeat of the loss of HMS Prince of Wales and Repulse by exposing surface ships to attack by land-based aircraft without air cover. Indeed, his cruisers were spotted and came under an intense air attack from torpedo bombers but escaped with little damage. Only minutes after the Japanese raid, his force was inadvertently attacked by friendly B-17s and once again had to endure near misses. * On May 7, 1942, U.S. aircraft, sent in the wrong direction by a miscoded contact report, had missed ShÅ?kaku and Zuikaku but found the invasion fleet, escorted by the small carrier ShÅ?hÅ?, which was soon sunk with heavy casualties. In the previous five months the Allies had lost numerous major warships and had been unable to sink a single major Japanese ship in return. ShÅ?hÅ? was small by carrier standards, but the phrase 'scratch one flattop,' announced the first Allied naval success of the Pacific War. * On May 8, 1942, the main carrier forces located one another and launched full raids, which passed each other in the air. ShÅ?kaku was hit three times by bombs. Her deck damaged, ShÅ?kaku was unable to land her aircraft and was thus effectively put out of action. Both American carriers were hit: Yorktown by a bomb; the Lexington, by both bombs and torpedoes. Lexington had to be abandoned and sunk to prevent her capture. * Tactically, the Japanese had achieved a narrow victory; one small carrier lost and a large carrier severely damaged against the Americans' loss of a large carrier and significant damage to another. But from the Allied point of view, after five months of continuous defeat, a battle that came out almost even was close enough to a victory. * Strategically, the Allies had won since the invasion of Port Moresby, New Guinea had been averted (the first time the Japanese had been turned back). With ShÅ?kaku damaged and Zuikaku short of aircraft, neither was able to take part in the crucial Battle of Midway a month later. The loss of Lexington was a severe blow as she was one of the Navy's largest carriers. The damaged Yorktown returned to Pearl Harbor and although her damage was estimated to require months in port, she was made more or less battle-worthy in a miracle of improvisation and determination in just 2 days." :scenariomap (scenariomap "Battle of the Coral Sea" (scenario :name "Battle of the Coral Sea" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 2x Carriers (Yorktown, Lexington) * 3x Australian Cruisers * 3x Australian Destroyers * Australian and US support ships") "Japanese Forces" (team :name "Japanese Forces" :forces "* The Japanese had 3 fleets: * Solomon invasion force * Port Moresby invasion force * 2x Carriers (ShÅ?kaku and Zuikaku) * 1x Small carrier (ShÅ?hÅ?) * 2x Heavy cruisers * Support ships"))))) "Battle of Midway" (section :name "Battle of Midway" :summary "* From June 4, 1942 to June 7, 1942, exactly six months to the day after Japan's attack on Pearl Harbor the Americans and Japanese fought around Midway island in what is widely regarded as the most important naval battle in the Pacific. * For months, bureaucratic infighting delayed Admiral Yamamoto's plans in the Pacific. In the end, his threat to resign succeeded in moving his agenda forward. Yamamoto's primary strategic concern was the elimination of America's remaining carrier forces. Midway was not especially important, but the Japanese felt that the Americans would strongly defend it. The Japanese believed that only the USS Enterprise and Hornet would be available since the Lexington had been sunk and the Yorktown was badly damaged. Yamamoto dispersed his fleet to deceive the U.S. so the full extent of his fleet was hidden, but the U.S. had broken the Japanese naval code which negated this strategy and left his fleets separated by several hundred miles. * In order to battle 4 or 5 carriers, Admiral Nimitz needed every available carrier, so the Yorktown was restored to battle-worthy state in 72 hours. Repairs continued even as Yorktown sortied. * A picket line of Japanese submarines was late getting into position (partly because of Yamamoto's haste), which let the American carriers proceed to their assembly point without being detected. Reconnaissance planes were supposed to scout Pearl Harbor prior to the battle to detect American carriers. This plan was also thwarted when the refueling submarines found the refuelling point occupied by American warships (because the Japanese had carried out an identical mission in March). Thus, Japan was deprived of any knowledge concerning the movements of the American carriers. Japanese radio intercepts noticed an increase in both American submarine activity and message traffic. Yamamoto, at sea in Yamato, did not dare inform Nagumo for fear of exposing his position, and presumed (incorrectly) Nagumo had received the same message from Tokyo. * Admiral Nimitz had one priceless asset: American and British cryptanalysts had broken the JN-25 code, confirming Midway as the target, determining the date of the attack, and providing a complete IJN order of battle. Japan's efforts to introduce a new codebook had been delayed, giving HYPO several crucial days. * Nimitz was aware, for example, the vast numerical superiority of the Japanese fleet had been divided into no less than four task forces, and the escort for the main Carrier Striking Force was limited to just a few fast ships. For this reason, they knew the anti-aircraft guns protecting the carriers would be limited. Nimitz calculated his three carriers, plus Midway island, to Yamamoto's four, gave the U.S. rough parity. Meanwhile, the Japanese remained almost totally in the dark even after the battle began. * On June 4, nine B-17s operating from Midway attacked the Japanese transport group, but no significant damage was sustained. * On June 4, 4:30, Vice Admiral Chuichi Nagumo launched an attack wave (108 aircraft). At the same time, he launched eight search aircraft (one 30 minutes late due to technical issues). * American radar picked up the enemy at a distance of several miles and interceptors soon scrambled. Unescorted bombers headed off to attack the Japanese carrier fleet, their fighter escorts remaining behind to defend Midway. * At 06:20, Japanese carrier aircraft bombed and heavily damaged the U.S. base on Midway. Midway-based obsolescent F4F Wildcats, defended Midway and suffered heavy losses. Most were downed in the first few minutes. The Japanese learned the island's bombers had already departed, and the strike leader signaled Nagumo another attack would be necessary to neutralize Midway's defenses before troops could be landed. * American anti-aircraft fire was accurate and intense, damaging many Japanese aircraft and claiming a third of the Japanese planes destroyed. * American bombers based on Midway made several torpedo attacks on the Japanese carrier fleet, but the Japanese shrugged off these attacks with almost no losses, destroying all but three of the American bombers. * At 7:15, As a result of the attacks from Midway, Nagumo ordered his reserve planes to be re-armed with bombs for use on land targets. 30 minutes later a scout plane signaled the discovery of a sizable American naval force to the east. Nagumo quickly reversed his order and demanded the scout plane ascertain the composition of the American force. Another 40 minutes elapsed before Tone's scout finally detected and radioed the presence of a single carrier in the American force, TF 16 (the other carrier was not detected). * Nagumo was now in a quandary. His opportunity to hit the American ships was curtailed by the fact his Midway strike force would be returning shortly. They would be low on fuel and carrying wounded crewmen, would need to land promptly or ditch, losing precious aircraft and crews; there was slim chance a strike could be mounted in time. Spotting his flight decks and launching aircraft would require at least 30-45 minutes, but if he launched immediately his bombers would be without fighter escort and they had just witnessed how easily unescorted American bombers were shot down by their own fighters. * In the end, Nagumo chose to wait for his first strike force to land, then launch the reserve force. In the final analysis, it made no difference; Fletcher had launched beginning at 07:00, so the aircraft which would deliver the crushing blow were already on their way. There was nothing Nagumo could do about it. This was the fatal flaw of Yamamoto's dispositions: it followed strictly traditional battleship doctrine. * It was at this point Spruance gave his second crucial command, to run toward the target, having judged that the need to throw something at the enemy as soon as possible was greater than the need for a coordinated attack. Accordingly, American squadrons were launched piecemeal, proceeding to the target in several different groups. This diminished the overall impact of the American attacks and greatly increased their casualties; coincidentally, it reduced the Japanese ability to counterstrike and found Nagumo with his decks at their most vulnerable. * At 9:20, Allied planes began attacking, led by Torpedo Squadron 8 (VT-8, from Hornet), followed by VT-6 (from Enterprise). Every TBD Devastator of VT-8 was shot down, with only one survivor. VT-6 squadron met nearly the same fate, with no hits against the enemy, thanks in part to terrible aircraft torpedoes. The Japanese combat air patrol, flying the much faster Zero, made short work of the Americans, who not only had no fighter support but were flying the slow, under-armed TBDs. * The appearance of a third torpedo plane attack from the southeast by VT-3 at 10:00 very quickly drew the majority of the Japanese CAP into the southeast quadrant of the fleet. By chance, at the same time VT-3 was sighted by the Japanese, two separate formations (comprising three squadrons total) of American SBD Dauntless dive-bombers were approaching the Japanese fleet from the northeast and southwest. These formations initially had difficulty in locating the Japanese carriers, and their fuel was running low. However, by the decisions of squadron commanders C. Wade McClusky, Jr. and Max Leslie to continue the search, they spotted the wake of Japanese destroyer Arashi. The destroyer was steaming at full speed back to Nagumo's carrier force, after having unsuccessfully depth-charged the U.S. submarine Nautilus. * The American dive-bombers arrived in a perfect position to attack the Japanese. Armed Japanese strike aircraft filled the hangar decks at the time of the fateful attack, fuel hoses were snaking across the decks as refueling operations were hastily completed, and the constant change of ordnance meant bombs and torpedoes were stacked around the hangars rather than stowed safely in the magazines. The Japanese carriers were extraordinarily vulnerable. * Contrary to some accounts of the battle, contemporary research, based on recent translation of relevant portions of the 100 volume Japanese account of the war, has demonstrated that the Japanese were not in fact prepared to launch a counterstrike when they were decisively attacked. Because of the constant flight deck activity associated with combat air patrol operations, the Japanese had never had an opportunity to spot their reserve for launch. The few aircraft on the Japanese flight decks at the time of the attack were either CAP fighters, or (in the case of SÅ?ryÅ«) strike fighters being spotted to augment the CAP. * At 10:22, Enterprise's aircraft attacked Kaga, while to the south, Yorktown's aircraft attacked carrier SÅ?ryÅ«, with Akagi being struck by several of Enterprise's bombers four minutes later. Simultaneously, VT-3 was targeting HiryÅ«, although the American torpedo aircraft again scored no hits. Within six minutes, the SBD dive bombers made their attack runs and left all three of their targets heavily ablaze. Akagi was hit by just one bomb, which was sufficient; it penetrated to the upper hangar deck and exploded among the armed and fueled aircraft there. One extremely near miss also slanted in and exploded underwater, bending the flight deck upward with the resulting geyser and causing crucial rudder damage. SÅ?ryÅ« took three bomb hits in the hangar decks; Kaga took at least four. All three carriers were out of action and were eventually abandoned and scuttled. * By proceeding to target directly, without waiting for fighter escort, the torpedo squadrons, one after another, at low level, engaged enemy combat air patrol. This created an opportunity for the pilots of the dive bombers, who had arrived high above the action and were able to dive on target before being attacked. The torpedo planes were shot down and the torpedo squadron pilots lost their lives, but they enabled a titanic victory. * HiryÅ«, the sole surviving Japanese aircraft carrier, wasted little time in counterattacking. The first wave of Japanese dive-bombers badly damaged Yorktown with two bomb hits, yet her damage control teams patched her up so effectively (in about an hour) the second wave's torpedo bombers mistook her for an intact carrier. After two torpedo hits, Yorktown lost power and was out of the battle, forcing Admiral Fletcher to move his flag to the heavy cruiser Astoria. * HiryÅ« recovered its aircraft and prepared for a strike against what was believed to be the only remaining American carrier. * Enterprise launched a final strike of dive bombers (including 10 bombers from Yorktown), leaving HiryÅ« ablaze, despite being defended by a strong defensive CAP of over a dozen Zero fighters. Rear Admiral Yamaguchi chose to go down with his ship, costing Japan perhaps her best carrier sailor. * In the night, the fleets did not encounter one another which may have been fortunate for the Americans, for had the US carrier fleet come in contact with Yamamoto's heavies, including Yamato, in the dark, the US cruisers would have been overwhelmed, and the carriers helpless. * On June 7, Yorktown was sunk during salvage efforts, by three torpedoes from Japanese submarine I-168. There were few casualties since most of the crew had already been evacuated. One torpedo from this salvo also sank the destroyer USS Hammann, which had been providing auxiliary power to Yorktown, splitting her in two. * The battle was a decisive victory for the Americans, dealing Japanese naval aviation a heavy blow. The pre-war Japanese training program produced pilots of exceptional quality but at a slow rate. This small group of elite aviators were combat hardened veterans. At Midway, the Japanese lost as many of these pilots in a single day as their training program produced in a year. By mid-1943, Japanese naval aviation was decimated. Even more important was the irredeemable loss of four of Japan's fleet carriers. These ships were not replaced until early in 1945. In the same span of time, the U.S. Navy commissioned more than two dozen fleet and light fleet carriers." :scenariomap (scenariomap "Battle of Midway" (scenario :name "Battle of Midway" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 3x Carriers (Yorktown, Hornet, Enterprise) * Heavy Cruiser (Astoria) * Destroyer (Hammann) * 9x B-17 Bombers (Midway Island) * PBY Flying Boats (Midway Island) * F4F Wildcats (Midway Island) * Submarine (Nautilus)") "Japanese Forces" (team :name "Japanese Forces" :forces "* The Japanese had 4 fleets: * Carriers (Akagi, Kaga, HiryÅ« and SÅ?ryÅ«) * Cruiser Tone * Destroyer (Arashi) * 1x Small carrier (ShÅ?hÅ?) * 2x Heavy cruisers * Support ships"))))) "Battle of Quadalcanal" (section :name "Battle of Quadalcanal" :summary "* On August 7, 1942, US forces landed on the islands of Guadalcanal, Tulagi, and Florida in the southern Solomons capturing Tulagi and Florida as well as an airfield (later named Henderson Field) that was under construction by the Japanese on Guadalcanal. * Between August and November 1942, the Japanese made several attempts to retake Henderson Field. These attempts resulted in three major land battles, five large naval battles, and continuous, almost daily, aircraft battles. * In early November 1942 the last Japanese attempt to capture Henderson Field was defeated forcing the Japanese to eventually evacuate Guadalcanal. * The Guadalcanal campaign marked the first significant strategic victory by Allied forces over the Japanese in the Pacific and is often considered a 'turning point' in the war." :scenariomap (scenariomap "Battle of Savo Island" (scenario :name "Battle of Savo Island" :summary "* On August 8-9, 1942, the US and Japanese fought the Battle of Savo Island (aka the First Battle of the Solmon Sea in Japan). * During the US landing operations, Japanese aircraft based at Rabaul attacked several times. After these clashes, Fletcher (the carrier commander) was concerned about his fuel levels and the losses to his carrier air defense. Without consulting with the other commanders, he withdrew with his carriers. Without carrier air-cover, the transports and their escort fleet would have to withdraw as well, even though less than half of the supplies and heavy equipment had been unloaded. The decision was made, however, to unload as many supplies as possible throughout the night and then depart. * That night, as the transports unloaded, two groups of Allied warships, 5 cruisers and 7 destroyers, screening the transports were surprised and defeated by a Japanese force of 7 cruisers and 1 destroyer. One Australian and three U.S. cruisers were sunk, and one other U.S. cruiser and two destroyers were damaged. The Japanese suffered moderate damage to one cruiser. The Japanese who was unaware Fletcher had withdrawn with the U.S. carriers, immediately retired to Rabaul without attempting to attack the now unprotected Allied transports. * As a result of the defeat, the remaining Allied ships withdrew from the Solomon Islands. Allied ground forces had landed on Guadalcanal only the day before. The withdrawal of the fleet left them in a precarious situation, with barely enough supplies, equipment, and food to hold their beachhead.") "Battle of Eastern Solomons" (scenario :name "Battle of Eastern Solomons" :summary "* On August 24-August 25, 1942, the U.S. and Japan fought the second major engagement of the Guadalcanal Campaign. As at Coral Sea and Midway, the ships of the two adversaries were never in direct visual range of each other and fought all battles with aircraft. * After several damaging air attacks, both sides withdrew without securing a clear victory. However, the U.S. apparently gained a greater advantage because the Japanese suffered greater losses including a significant number of aircraft and experienced aircrews." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired. 2) Maintain secret movement." :forces "* 2 Carriers - Enterprise and Saratoga * 1 battleship * 4 cruisers * 11 destroyers * 176 aircraft - B-17 Bombers, F4F Wildcats, TBF Avengers") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired. 2) Maintain secret movement." :forces "* 2 Carriers - ShÅ?kaku (Flagship), Zuikaku * 1 Light Carrier - RyÅ«jÅ? * 2 Battleships * 9 Heavy Cruisers - Tone, Chikuma * 3 Light Cruiser * 17 Destroyers - Amatsukaze, Kagero, Mutsuki, Tokitsukaze * 1 Seaplane Carrier - Chitose * 4 Patrol Boats * 3 Transports - Kinryu Maru * 100 Land-based 'Betty' Bombers, fighters, recon * 75 Carrier-based aircraft - Kates, Vals, Zeroes"))) "Battle of Milne Bay" (scenario :name "Battle of Milne Bay" :reference "* Australian troops had, at Milne Bay, inflicted on the Japanese their first undoubted defeat on land...Of all the allies, it was the Australians who first broke the invincibility of the Japanese army." :summary "* On August 25, 1942, Japanese marines attacked the Australian base at Milne Bay on the eastern tip of New Guinea, and fighting continued until the Japanese retreated on 5 September 1942. The battle was the first in the Pacific campaign in which Allied troops defeated Japanese land forces and, significantly, forced them to withdraw. The assault was the southern most point of the Japanese advance on land in World War II. * The Japanese hoped to secure an air and naval base to provide air and naval support to the Japanese Kokoda Track campaign to take Port Moresby, New Guinea by capturing the newly constructed airfields at Milne Bay." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 4,500 Infantry - Mortar, MG * 4,500 Non-combat personnel * 12 P-40 Kittyhawks * 1 Hudson No. 6 * 3 B-17 Bombers") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 1,800 Infantry * 350 Non-combat personnel * 4 Ha-Go Light Tanks * 2 Light Cruisers - TenryÅ« and Tatsuta * 3 Destroyers - Urakaze, Tanikaze, Hamakaze * 2 Transports - Nankai Maru and Kinai Maru * 2 Submarine Chasers"))) "Battle of the Santa Cruz Islands" (scenario :name "Battle of the Santa Cruz Islands" :summary "* On October 26, 1942, two opposing carrier forces fought off Guadalcanal. After an exchange of carrier air attacks, Allied ships were forced to retreat with the loss of one carrier sunk (Hornet) and another (Enterprise) heavily damaged. The Japanese carrier forces, however, also retreated because of high aircraft and aircrew losses and significant damage to two carriers." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Carriers - Hornet, Enterprise * 1 Battleship - South Dakota * 6 Cruisers - Northhampton, Portland, San Juan * 14 Destroyers - Anderson, Mahan, Mustin, Porter, Shaw, Smith * 136 Aircraft - SBD Dauntless, TBF Avenger, F4F Wildcat, PBY Catalina") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 3 Carriers - JunyÅ?, ShÅ?kaku (Flagship), Zuikaku * 1 Light Carrier - ZuihÅ? * 2 Battleships * 1 Heavy Cruiser - Atago, Chikuma, Suzuya * 1 Light Cruiser - Yura * 7 cruisers * 22 Destroyers - Akizuki, Teruzuki * 199 aircraft"))) "First Naval Battle of Guadalcanal" (scenario :name "First Naval Battle of Guadalcanal" :summary "* On November 12-15, 1942, the decisive battle was fought during the months long Guadalcanal Campaign. The Japanese organized a transport convoy to take 7,000 infantry troops and their equipment to Guadalcanal to attempt once again to retake Henderson Field airfield. To allow the convoy to approach the island and deliver its cargo, the Japanese navy sent several warship forces to bombard Henderson Field with the goal of destroying Allied aircraft. Learning of the Japanese reinforcement effort, U.S. forces prepared to interdict the Japanese convoy and warships with aircraft and warship attacks. * At 1:25 on November 13, 1942 in almost pitch darkness both fleets entered the sound between Savo Island and Guadalcanal. Several of the U.S. ships detected the Japanese ships on radar, but had trouble communicating the information because of problems with their ship's radio equipment and lack of discipline with their communications procedures. Several minutes later, both forces visually sighted each other about the same time. At 01:48, Akatsuki and Hiei turned on large searchlights and lit up Atlanta only 3,000 yards (2.7 km) away—almost point-blank range for large naval artillery. Several of the ships on both sides spontaneously opened fire. As the ships from the two sides intermingled, they battled each other in an utterly confused and chaotic melée at close distances. Afterwards, an officer on Monssen likened it to 'a barroom brawl after the lights had been shot out' * At least six of the U.S. ships, including Laffey, O'Bannon, Atlanta, San Francisco, Portland, and Helena, fired at Akatsuki, which drew attention to herself with her illuminated searchlight. Akatsuki was hit repeatedly and blew up and sank within a few minutes. * Perhaps because it was the lead cruiser in the U.S. formation, Atlanta was the target of fire from several Japanese ships. It suffered heavy damage and drifted into the line of fire of San Francisco, which accidentally fired on Atlanta, causing even greater damage, and killing Admiral Scott and much of the bridge crew. * Hiei, with her nine lit searchlights, huge size, and course taking her directly through the U.S. formation, became the focus of gunfire from many of the U.S. ships. Laffey passed so close to Hiei that they missed colliding by 20 feet (6m). Hiei was unable to depress her main or secondary batteries low enough to hit Laffey, but Laffey was able to rake Hiei's superstructure with 5-inch (130 mm) shells and machine gun fire, causing heavy damage to Hiei's superstructure and bridge, wounding Admiral Abe, and killing his chief of staff. * Unable to fire her main or secondary batteries at the three destroyers causing her so much trouble, Hiei instead concentrated on San Francisco which was passing by only 2,500 yards (2.3 km) away.[42] Along with Kirishima, Inazuma, and Ikazuchi, the four ships made repeated hits on San Francisco, disabling her steering control and killing Admiral Callaghan, Captain Cassin Young, and most of the bridge staff. The first few salvos from Hiei and Kirishima consisted of the special fragmentation bombardment shells, which reduced damage to the interior of San Francisco and may have saved her from being sunk outright. Not expecting a ship-to-ship confrontation, it took the crews of the two Japanese battleships several minutes to switch to armor-piercing ammunition. * Two of the U.S. destroyers met a sudden demise. Either Nagara or the destroyers Teruzuki and Yukikaze came upon the drifting Cushing and pounded her with gunfire, knocking out all of her systems. Unable to fight back, Cushing's crew abandoned ship. Cushing sank several hours later. Laffey, having escaped from her engagement with Hiei, encountered Asagumo, Murasame, Samidare, and, perhaps, Teruzuki. The Japanese destroyers pounded the Laffey with gunfire and then hit her with a torpedo which broke her keel. A few minutes later fires reached her ammunition magazines and she blew up and sank. Two torpedoes from Amatsukaze hit Barton, immediately sinking her with heavy loss of life. She was accosted by Asagumo, Murasame, and Samidare who had just finished blasting Laffey. They proceeded to smother Monssen with gunfire, damaging her severely and forcing the crew to abandon ship. The ship sank sometime later. * At 2:26, after nearly 40 minutes of the brutal, close-quarters fighting, the two sides broke contact. * The Japanese had one battleship, one light cruiser, and four destroyers that could continue fighting. The U.S. had only one light cruiser, and one destroyer that were still capable of effective resistance. Although perhaps unclear, the way was clear for the Japanese to bombard Henderson Field and finish off the U.S. naval forces in the area, clearing the way for the troops and supplies to be landed safely on Guadalcanal. However, at this crucial juncture, the Japanese chose to abandon the mission. * After the battle, Juneau was torpedoed and sunk by Japanese submarine I-26. Juneau's 100+ survivors (out of a total complement of 650) were left to fend on their own in the open ocean for eight days before rescue aircraft belatedly arrived. While awaiting rescue, all but 10 of Juneau's crew died from their injuries, the elements, or shark attacks. * Because of the confused nature of the battle, the U.S. believed that they had sunk as many as seven Japanese ships. This, plus the Japanese retreat, caused the U.S. to believe at the time that they had won a significant victory. It was only after the war that the U.S. learned that they had suffered what most see as a crushing tactical defeat. * Nevertheless, most historians appear to agree that Abe's decision to retreat turned this tactical defeat into a strategic victory for the U.S. Henderson Field remained operational with attack aircraft ready to deter the slow Japanese transports from approaching Guadalcanal with their precious cargoes. Plus, the Japanese had lost an opportunity to eliminate the U.S. naval forces in the area, a result which would have taken even the comparatively resource-rich U.S. some time to recover from. Reportedly furious, Admiral Yamamoto relieved Abe of command and later directed his forced retirement from the military. * Both sides lost numerous warships in two extremely destructive nighttime surface engagements, with the U.S. suffering more warships sunk or heavily damaged than the Japanese. The U.S., however, was successful in turning back attempts by the Japanese to bombard Henderson Field with battleships. Air attacks by Allied aircraft also sank most of the Japanese troop transports and prevented the majority of the Japanese troops and equipment from reaching Guadalcanal. The battle turned back Japan's last major attempt to dislodge Allied forces from Guadalcanal and nearby Tulagi, resulting in a strategic victory for the U.S. and its allies and deciding the ultimate outcome of the Guadalcanal campaign in favor of Allied forces." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Heavy Cruisers - San Francisco (Flagship), Portland * 3 Light Cruisers - Helena, Juneau, Atlanta * 8 Destroyers - Cushing, Laffey, Sterett, O'Bannon, Aaron Ward, Barton, Monssen, Fletcher") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Battleships - Hiei (Flagship) and Kirishima * 1 Light Cruiser - Nagara * 14 Destroyers - Samidare, Murasame, Asagumo, Teruzuki, Amatsukaze, Yukikaze, Ikazuchi, Inazuma, Akatsuki, Harusame, Yudachi, Shigure, Shiratsuyu, Yugure * 11 Transports * 12 Escort Destroyers"))) "Second Naval Battle of Guadalcanal" (scenario :name "Second Naval Battle of Guadalcanal" :reference "* It would seem that the turning point in this war has at last been reached. - U.S. President Franklin Roosevelt, upon learning of the results of the battle. * On November 12, 1942, the (Japanese) Imperial Navy had the better ships and the better tactics. * After November 15, 1942, its leaders lost heart and it lacked the strategic depth to face the burgeoning U.S. Navy and its vastly improving weapons and tactics. The Japanese never got better while, after November 1942, the U.S. Navy never stopped getting better - Historian Eric Hammel on the Battle of Quadalcanal" :summary "* On the night of November 14-15, 1942, to cover the unloading of the transports at Guadalcanal, the Japanese fleet made its third attempt to neutralize Henderson Field, sending the force of warships through Indispensable Strait to bombard Guadalcanal. * Low on undamaged ships, the U.S., detached a scratch force; the new battleships had only operated together for a few days, and their four escorts were from four different divisions—chosen simply because, of the available destroyers, they had the most fuel. * At 23:22 The U.S. destroyers in the front of the column engaged Nagara, Ayanami, and 4 destroyers. The Japanese responded effectively with accurate gunfire and torpedoes, and destroyers Walke and Preston were hit and sunk within 10 minutes with heavy loss of life. The destroyer Benham had part of her bow blown off by a torpedo and had to retreat (she sank the next day), and destroyer Gwin was hit in her engine room and put out of the fight. However, the U.S. destroyers had completed their mission as screens for the battleships, absorbing the initial impact of contact with the enemy, although at great cost. Washington passed through the area still occupied by the damaged and sinking U.S. destroyers and fired on Ayanami with her secondary batteries, setting her afire. Following close behind, South Dakota suddenly suffered a series of electrical failures, reportedly during repairs when her chief engineer locked down a circuit breaker in violation of safety procedures, causing her circuits repeatedly to go into series, making her radar, radios, and most of her gun batteries inoperable. * At 00:00 on November 15, 1942, almost blind and unable to effectively fire her main and secondary armament, South Dakota was illuminated by searchlights and targeted by gunfire and torpedoes by most of the ships of the Japanese force, including Kirishima. Although able to score a few hits on Kirishima, South Dakota took 25 medium and one large-caliber hit, some of which did not explode, that completely knocked out her communications and remaining gunfire control operations, set portions of her upper decks on fire, and forced her to try to steer away from the engagement. * The Japanese ships continued to concentrate their fire on South Dakota and none detected Washington approaching to within 9,000 yards (8 km). Washington was tracking a large target (Kirishima) for some time but refrained from firing since there was a chance it could be South Dakota. Washington had not been able to track South Dakota's movements because she was in a blind spot in the Washington's radar and Lee could not raise her on the radio to confirm her position. When the Japanese illuminated and fired on South Dakota, all doubts were removed as to which ships were friend or foe. From this close range, Washington opened fire and quickly hit Kirishima with at least nine main battery shells and almost forty secondary ones, causing heavy damage and setting her aflame. Kirishima was hit below the waterline and suffered a jammed rudder, causing her to circle uncontrollably to port. * Washington then withdrew to draw the Japanese away from the South Dakota. Kirishima and Ayanami were scuttled in the night. At 4:00, the four Japanese transports beached themselves to quickly unload their reinforcements and cargo, but at 5:55 they were attacked by U.S. aircraft from Henderson Field and from field artillery which destroyed most of the ammunition and food supplies that had not yet been unloaded. * The failure to deliver most of the troops and supplies in the convoy to Guadalcanal prevented the Japanese from launching another offensive to retake Henderson Field. * By late December 1942, the U.S. was able to land 2 fresh divisions of infantry. * On December 31, 1942, the Japanese abandoned Guadalcanal." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 battleships - Washington, South Dakota * 4 destroyers - Benham, Gwin, Preston, Walke") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 1 battleships - Kirishima * 2 heavy cruisers - Atago (Flagship), Takao * 2 light cruisers - Nagara, Sendai * 9 destroyers - Asagumo, Ayanami, Samaidare, Shikinami, Teruzuki, Uranami * 4 transports"))))) "Battle of Guam" (section :name "Battle of Guam" :summary "* On July 21 the Americans landed on both sides of the Orote peninsula on the western side of Guam, planning to cut off the airfield. Japanese artillery sank 20 LVTs, but by 09:00 tanks were ashore at both beaches. * By nightfall the Americans had established beachheads about 2,000 meters deep. Japanese counter-attacks were made throughout the first few days of the battle, mostly at night, using infiltration tactics. Several times they penetrated the American defenses and were driven back with heavy loss of men and equipment. * The counterattacks around the American beachheads had exhausted the Japanese. At the start of August they were running out of food and ammunition and had only a handful of tanks left. * As in other battles of the Pacific War, the Japanese refused to surrender, and almost all were killed. * A few Japanese soldiers held out in the jungle. On December 8, 1945, three U.S. Marines were ambushed and killed. On January 24, 1972, Sergeant Shoichi Yokoi was discovered by hunters. He had lived alone in a cave for 27 years.") "Battle of Leyte Gulf" (section :name "Battle of Leyte Gulf" :summary "* From October 17 to December 31, 1944, the Battle in Philippines is generally considered to be the largest naval battle of WWII and, by some criteria, the largest naval battle in history. * The Americans lost 15,584 casualties, of which 3,504 were killed in action. * The Japanese losses were heavy, losing 49,000 troops, 26 major warships, and 46 large transports and merchantmen. * The struggle also reduced Japanese land-based air capability in the Philippines by more than fifty percent, forcing them to depend on suicidal kamikaze pilots. * Once the decisive battle of Leyte was lost, the Japanese gave up hope of retaining the strategically critical Philippines, from which Japan could be easily cut off from outside resources, and from which the direct assaults on the Japanese home islands could be launched.") "Battle of Iwo Jima" (section :name "Battle of Iwo Jima" :summary "* On February 19-March 26, 1945, US forces captured of the island of Iwo Jima from the Japanese, producing some of the fiercest fighting in the Pacific Campaign of World War II. The Japanese positions on the island were heavily fortified, with vast bunkers, hidden artillery, and 18 kilometers (11 mi) of tunnels. The battle was the first American attack on the Japanese Home Islands and the Imperial soldiers defended their positions tenaciously. * Of the 21,000 Japanese soldiers present at the beginning of the battle, over 20,000 were killed and only 216 taken prisoner.") "Battle of Okinawa" (section :name "Battle of Okinawa" :summary "* The 82 day battle lasted from late March through June 1945 and was the largest amphibious assault in the Pacific Theater. The battle has one of the highest casualties: the Japanese lost over 100,000 troops, and the Allies (mostly United States) suffered more than 50,000 casualties, with over 12,000 killed in action. Hundreds of thousands of civilians were killed, wounded or attempted suicide. * The main objective of the operation was to seize a large island only 340 miles away from mainland Japan. Okinawa was to serve as a springboard for the invasion of Japan, though the the atomic bombings of Hiroshima and Nagasaki caused Japan to surrender just weeks after the end of the fighting at Okinawa and the invasion never took place. * Some military historians believe that Okinawa led directly to the use of the atomic bomb on Hiroshima and Nagasaki. '...because the Japanese on Okinawa, including native Okinawans, were so fierce in their defense (even when cut off, and without supplies), and because casualties were so appalling, many American strategists looked for an alternative means to subdue mainland Japan. This means presented itself, with the advent of atomic bombs, which worked admirably in convincing the Japanese to sue for peace, without American casualties. Ironically, the American conventional fire-bombing of major Japanese cities (which had been going on for months before Okinawa) was far more effective at killing civilians than the atomic bombs and, had the Americans simply continued, or expanded this, the Japanese would likely have surrendered anyway. Nevertheless, the bombs were a powerful symbolic display of American power, and the Japanese capitulated, obviating the need for an invasion.'") "Atomic bombings of Hiroshima and Nagasaki" (section :name "Atomic bombings of Hiroshima and Nagasaki" :summary "* On August 6, 1945, after six months of intense firebombing of 67 other Japanese cities, the nuclear weapon 'Little Boy' was dropped on the city of Hiroshima. * On August 9, 1945, the nuclear bomb 'Fat Man' was dropped over Nagasaki. * These are to date the only attacks with nuclear weapons in the history of warfare. The bombs killed as many as 140,000 people in Hiroshima and 80,000 in Nagasaki by the end of 1945, roughly half on the days of the bombings. * Since then, thousands more have died from injuries or illness attributed to exposure to radiation. In both cities, the overwhelming majority of the dead were civilians. * Six days after the detonation over Nagasaki, on August 15, Japan announced its surrender to the Allied Powers, ending the Pacific War and therefore World War II. Germany had surrendered on May 7. * The bombings led, in part, to post-war Japan forbidding itself from nuclear armament.")))) (func chapter_wwi_british_forces : base/chapter (chapter :name "WWI British Forces" :sectionmap (sectionmap "WWI British Infantry" (section :name "WWI British Infantry" :unitmap (unitmap :Doughboy (unit :name "Doughboy") "Vickers Machine Gunner" (unit :name "Vickers Machine Gunner") "Sopwith Camel" (unit :name "Sopwith Camel")))))) (func chapter_wwi_french_forces : base/chapter (chapter :name "WWI French Forces" :sectionmap (sectionmap "WWI French Infantry" (section :name "WWI French Infantry" :unitmap (unitmap "French Infantry" (unit :name "French Infantry" :image "WorldWars/French_Infantry.png"))) "WWI French Vehicles" (section :name "WWI French Vehicles" :unitmap (unitmap "Renault FT 17" (unit :name "Renault FT 17" :reference "* Among the most revolutionary and influential tank designs in history. The FT 17 was the first tank with an armament in a fully rotating turret, and its configuration with the turret on top, engine in the back and the driver in front became the conventional one, repeated in most tanks until today; at the time it was a revolutionary innovation, causing armour historian Steven Zaloga to describe the type as 'the world's first modern tank.' The tank was widely used by the French and the Americans (who, as mentioned, were lent 514) in the latter stages of World War I, after 31 May 1918. The tank was cheap and well-suited for mass production. Indeed, the very production was made a weapon in itself: a goal was set of 12,260 to be produced (4,440 of which in the USA) before the end of 1919.This prospect was one of several factors which drove the German High Command to its decision to launch the massive all-or-nothing offensives in the spring of 1918, which in turn weakened their army so that it collapsed in the summer. FT 17 tanks were also used in the Second World War, among others in Poland, Finland, France and Kingdom of Yugoslavia, although they were completely obsolete by then.")))))) (func chapter_wwi_german_forces : base/chapter (chapter :name "WWI German Forces" :sectionmap (sectionmap "WWI French German Vehicles" (section :name "WWI French German Vehicles" :unitmap (unitmap :Folker (unit :name "Folker" :reference "* Of all the aces the war produced none compared to the greatest flyer of all, Manfred Richtofen 'The Red Baron'. To this day his name remains a legend that is better known to most than even the war that created him.")))))) (func chapter_wwii_equipment : base/chapter (chapter :name "WWII Equipment" :sectionmap (sectionmap "WWII Explosives" (section :name "WWII Explosives" :itemmap (itemmap "30kg Bomb" (item :name "30kg Bomb" :classification "Bomb" :explosive "30kg") "60kg Bomb" (item :name "60kg Bomb" :classification "Bomb" :explosive "60kg") "100kg Bomb" (item :name "100kg Bomb" :classification "Bomb" :explosive "100kg") "250lb Bomb" (item :name "250lb Bomb" :classification "Bomb" :explosive "110kg") "350lb Bomb" (item :name "350lb Bomb" :classification "Bomb" :explosive "159kg") "500lb Bomb" (item :name "500lb Bomb" :reference "* P-47 pilots frequently carried two 500-pound (227 kg) bombs, using skip bombing techniques for difficult targets (skipping bombs into railroad tunnels to destroy hidden enemy locomotives or tanks was a favorite tactic); a near miss was sufficient to knock a tank on its side, blow off a track or turret, or cause serious damage to tracks, suspension, and turret mechanisms, frequently causing the vehicle to be abandoned by its crew." :classification "Bomb" :explosive "225kg") "250kg Bomb" (item :name "250kg Bomb" :classification "Bomb" :explosive "250kg") "600lb Depth Charge" (item :name "600lb Depth Charge" :reference "* Although the explosions of the standard United States 600-pound (270 kg) Mark 4 or Mark 7 depth charge used in World War II were nerve-wracking to the target, an undamaged U-boat's pressure hull would not rupture unless the charge detonated closer than about five meters. Placing the weapon within this range was entirely a matter of chance and quite unlikely as the target maneuvered evasively during the attack. Most U-boats sunk by depth charges were destroyed by damage accumulated from a long barrage rather than by a single carefully-aimed attack. Many survived hundreds of depth charge detonations over a period of many hours. * The depth charge causes damage by both the initial shock wave and by the subsequent reverberating shock waves that have a tendency to bend a submarine back and forth cause a hull breach. * A 100kg of TNT depth charge would have a kill radius of 3-4m. Higher payloads only increase this by a few meters because the effect decreases with the distance cubed. The killing range is also greater with larger submarines. It is doubtful a midget submarine with a titanium hull could be destroyed by anything less than a direct hit." :classification "Bomb" :explosive "270kg") "1000lb Bomb" (item :name "1000lb Bomb" :classification "Bomb" :explosive "454kg") "1200kg Bomb" (item :name "1200kg Bomb" :classification "Bomb" :explosive "1200kg") :Mine (item :name "Mine" :classification "Bomb") :Torpedo (item :name "Torpedo" :image "WWII/Torpedo.png" :classification "Torpedo")))))) (func chapter_wwii_american_equipment : base/chapter (chapter :name "WWII American Equipment" :sectionmap (sectionmap "WWII American Light Weapons" (section :name "WWII American Light Weapons" :itemmap (itemmap ".45 M1911A1 Automatic" (item :name ".45 M1911A1 Automatic" :image "WWIIAmerican/Pistol_M1911.jpg" :classification "Pistol" :length ".21m" :mass "1.1kg" :muzzlevelocity "253m/s" :range "25m" :rounds "7") ".45 M3 SMG Grease Gun" (item :name ".45 M3 SMG Grease Gun" :image "WWIIAmerican/SMG_M3GreaseGun.jpg" :classification "Lt. MG" :length ".75m" :mass "3.6kg" :modifiers "Auto" :muzzlevelocity "280m/s" :range "90m" :rounds "30") ".30-06 M1 Garand Rifle" (item :name ".30-06 M1 Garand Rifle" :image "WWIIAmerican/Rifle_M1Garand.jpg" :reference "* The M1's semiautomatic operation gave US forces a significant advantage in firepower over German and Japanese soldiers with bolt-action rifles. The greatest implement of battle ever devised. - General George S. Patton" :summary ".30-06 Semi-automatic rifle" :classification "Rifle" :length "1.1m" :mass "4.3kg" :muzzlevelocity "853m/s" :range "457m" :rounds "8") ".30-06 M1903A4 Springfield" (item :name ".30-06 M1903A4 Springfield" :image "WWIIAmerican/Rifle_M1903A4_Springfield.jpg" :reference "* An M1903 fitted with a scope was used by Daniel Jackson (Barry Pepper) in the movie Saving Private Ryan." :summary ".30-06 Bolt-action Sniper Rifle" :classification "Rifle" :length "1.1m" :mass "3.9kg" :muzzlevelocity "853m/s" :range "550m" :rounds "5") ".30-06 M1918 BAR" (item :name ".30-06 M1918 BAR" :reference "* While not without its design flaws (a thin-diameter, fixed barrel that quickly overheated, limited magazine capacity, complex field-strip/cleaning procedure, unreliable recoil buffer mechanism, a gas cylinder assembly made of corrosion-prone metals, and many small internal parts), the basic BAR design nevertheless proved itself when kept clean and earned a reputation as being rugged and reliable." :summary ".30-06 Browning Automatic Rifle (BAR)" :classification "Lt. MG" :length "1.2m" :mass "7.2kg" :modifiers "Auto" :muzzlevelocity "860m/s" :range "326m" :rof "450/min" :rounds "20"))) "WWII American Heavy Weapons" (section :name "WWII American Heavy Weapons" :itemmap (itemmap ".30-06 M1919A4 MG" (item :name ".30-06 M1919A4 MG" :image "WWIIAmerican/MG_1919_Browning.jpg" :classification "Hvy. MG" :length ".96m" :mass "14kg" :modifiers "Auto" :muzzlevelocity "853m/s" :rof "500/min" :rounds "250") ".50 cal M2HB MG" (item :name ".50 cal M2HB MG" :image "WWIIAmerican/MG_BrowningM2.jpg" :reference "* While the AP projectiles from the .50-caliber machine guns could not penetrate the front, side, or turret armor of enemy tanks, it could sometimes penetrate the engine grilles and exhaust system of the German Pzkpf Mk IV or Pzkpf V (Panther I), disabling the vehicle. * Used extensively from 1920's to present with few modifications. It is the primary MG of NATO countries and has been in use longer than any other small arm in U.S.." :summary ".50 cal Browning M2 water cooled machine gun" :classification "Hvy. MG" :length "1650mm" :mass "38kg" :modifiers "Auto, AP, API, Tracer" :muzzlevelocity "930m/s" :rof "500/min") "M2 Flamethrower" (item :name "M2 Flamethrower" :image "WWIIAmerican/Flamethrower_M2.jpg" :reference "* With the arrival of tanks, especially flamethrower tanks, the need for infantrymen to expose themselves to fire became unnecessary as tanks offered greater protection while still delivering the effective damage. * While some were sold off, the majority of them were scrapped when they were declared obsolete." :summary "* All [Hits] and [Critical Hits] are [Fire] tokens." :classification "Flamethrower" :crew "2" :mass "31kg" :modifiers "Fire, Auto" :range "20m") "M1A1 Bazooka" (item :name "M1A1 Bazooka" :image "WWIIAmerican/Rocket_M1A1Bazooka.jpg" :reference "* Highly effective, though inherently inaccurate at all but very close ranges. Eisenhower later described it as (together with the atom bomb, jeep and the C-47 Skytrain transport aircraft) one of the four weapons which won WWII for the allies." :classification "Missile" :crew "2" :explosive "1.59kg" :length "1.4m" :mass "5.8kg" :modifiers "HEAT, -1 Accuracy, +1 Prepare" :range "100m") "4.2in M2 Mortar" (item :name "4.2in M2 Mortar" :image "WWIIAmerican/Mortar_M2.jpg" :classification "Artillery" :explosive "3.64kg" :length ".7m" :mass "19kg" :modifiers "Indirect, HE, White Phosphorus, Illuminating" :range "1.8km" :rof "18/min") "20mm Oerlikon Autocannon" (item :name "20mm Oerlikon Autocannon" :classification "Cannon" :mass "48kg" :modifiers "Auto" :muzzlevelocity "820m/s" :rof "450/min") "20mm Hispano Autocannon" (item :name "20mm Hispano Autocannon" :classification "Cannon" :mass "42kg" :modifiers "Auto" :muzzlevelocity "840m/s" :rof "750/min") "28mm 1.1in Quad Cannon" (item :name "28mm 1.1in Quad Cannon" :classification "Cannon" :modifiers "Auto") "37mm M3 Cannon" (item :name "37mm M3 Cannon" :image "WWIIAmerican/Cannon_M3.jpg" :classification "Cannon" :length "4m" :mass "414kg" :muzzlevelocity "884m/s" :rof "25/min") "37mm M4 Cannon" (item :name "37mm M4 Cannon" :image "WWIIAmerican/Cannon_M4.jpg" :classification "Cannon" :length "2.3m" :mass "97kg" :modifiers "Auto, HE, AP" :muzzlevelocity "610m/s" :rof "150/min") "57mm M1 Cannon" (item :name "57mm M1 Cannon" :reference "* American version of the British QF 6 Pounder * Although 17 Pounder guns were rushed to North Africa to combat the Tiger tank, it was in fact a 6-pdr, which claimed the first Tiger 'kill'." :classification "Cannon" :modifiers "AP" :range "4600m") "75mm M3 L/40 Cannon" (item :name "75mm M3 L/40 Cannon" :summary "* The gun was designed to have both powerful HE projectile and good anti-tank capability, however from the middle of the war it was no longer effective in the anti-tank role, due to its low muzzle velocity." :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "619m/s") "76mm M1 Cannon" (item :name "76mm M1 Cannon" :reference "* While the 76 mm had less High Explosive (HE) and smoke performance than the 75 mm, the higher-velocity 76 mm gave better anti-tank performance, with firepower comparable to the Soviet ZiS-S-5 85 mm gun of the T-34-85 and many of the armoured fighting vehicles it encountered, particularly the Panzer IV and StuG vehicles." :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "792m/s") "76mm M7 Cannon" (item :name "76mm M7 Cannon" :reference "* Though successful in Northern Africa, the gun proved to be ineffective against the frontal armor of the newer German Tiger and Panther tanks." :classification "Cannon" :length "7.1m" :mass "2.2tons" :modifiers "AP, HE" :muzzlevelocity "820m/s" :range "9.6km" :rof "12/min") "90mm M1 Cannon" (item :name "90mm M1 Cannon" :classification "Cannon" :modifiers "HE, AP, AA" :muzzlevelocity "823m/s" :range "17800m" :rof "24/min") "105mm M101 Howitzer" (item :name "105mm M101 Howitzer" :classification "Cannon" :modifiers "Indirect, HE") "127mm 5in/38cal Autocannon" (item :name "127mm 5in/38cal Autocannon" :classification "Cannon" :length "5.6m" :mass "50tons" :modifiers "Auto" :muzzlevelocity "760m/s" :rof "15/min") "203mm 8in/55cal Cannon" (item :name "203mm 8in/55cal Cannon" :classification "Cannon" :length "11m" :mass "20tons" :muzzlevelocity "760m/s" :range "29km" :rof "4/min"))) "WWII American Explosives" (section :name "WWII American Explosives" :itemmap (itemmap "Mk 2 Grenade" (item :name "Mk 2 Grenade" :image "WWIIAmerican/Grenade_MK2.jpg" :reference "* At least 5 people have thrown themselves on hand grenades and lived." :summary "* It had a fatality radius of 5m, a blast radius of 13.7m, and fragments can disperse to 213m." :classification "Bomb" :explosive ".057kg" :mass ".6kg" :modifiers "Anti-Personnel, Area" :range "30m") "Demolition Pack" (item :name "Demolition Pack" :classification "Bomb" :modifiers "+1 Prepare") "4.6in Rockets" (item :name "4.6in Rockets" :classification "Missile") "5in HVAR Rocket" (item :name "5in HVAR Rocket" :image "WWIIAmerican/Rocket_HVAR.jpg" :summary "* High-Velocity Aircraft Rocket, aka Holy Moses. About 1 million HVAR rockets were produced before the end of the war. It had a steel-cased warhead and could penetrate 38mm of armor and 1.2m of reinforced concrete. * Trials against Panthers showed that they could penetrate all but front armor, but even in clusters of 8 could only hit a stationary tank 4% of the time. * Tank casualties to rockets were very low." :classification "Missile" :explosive "21kg" :mass "40kg" :modifiers "HE, AP" :range "4.5km" :speedair "1530kph") "Mark 14 Torpedo" (item :name "Mark 14 Torpedo" :reference "The Mark 14 had four major flaws. * It tended to run about 10 feet deeper than set. * The magnetic exploder often caused premature firing. * The contact exploder often failed to fire the warhead. * It tended to run 'circular', failing to straighten, thus returning back to strike the firing ship." :classification "Torpedo" :explosive "292kg" :length "6.25m" :mass "1490kg" :range "8km" :speedwater "85kph") "Atomic Bomb" (item :name "Atomic Bomb" :summary "* Little Boy - Hiroshima 13kton/63TJ * Fat Man - Nagasaki 20kton/84TJ" :classification "Bomb")))))) (func chapter_wwii_american_units : base/chapter (chapter :name "WWII American Units" :sectionmap (sectionmap "WWII American Infantry" (section :name "WWII American Infantry" :unitmap (unitmap "Able Team" (unit :name "Able Team" :image "WWIIAmerican/Infantry_AbleScoutToken.png" :summary "* Able Team is composed of 2 scouts who advance 25m ahead of the squad." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Baker Team" (unit :name "Baker Team" :image "WWIIAmerican/Infantry_BakerGarandToken.png" :reference "* We're all very, very different, but there is one thing that we all have in common: we were all stupid enough to enlist in the Army. We're mutants. There's something wrong with us, something very, very wrong with us. Something seriously wrong with us - we're soldiers. But we're American soldiers! We've been kicking ass for 200 years! - John Winger, Stripes" :summary "* Baker Team is composed of 5 riflemen." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Charlie Team" (unit :name "Charlie Team" :image "WWIIAmerican/Infantry_CharlieBARToken.png" :summary "Charlie Team is composed of 3 riflemen, a BAR gunner, and a Squad leader." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Airborne Charlie" (unit :name "US Airborne Charlie" :image "WWIIAmerican/Infantry_AirborneToken.png" :reference "* Who can afford so to cover his country with troops for its defense, so that ten thousand men descending from the clouds might not, in many places, do an infinite deal of mischief before a force could be brought together to repel them? - Benjamin Franklin, 1784 * The German won't not be able to help themselves but to imagine the cruelty their brothers endured at our hands, and our boot heels, and the edge of our knives. And the German will be sickened by us, and the German will talk about us, and the German will fear us. And when the German closes their eyes at night and they're tortured by their subconscious for the evil they have done, it will be with thoughts of us they are tortured with. Sound good? - Lt. Aldo Raine, Inglourious Basterds * You probably heard we ain't in the prisoner-takin' business; we in the killin' Nazi business. And cousin, Business is a-boomin'. - Lt. Aldo Raine, Inglourious Basterds" :classification "Med. Infantry" :unitskillmap (unitskillmap :Espionage (unitskill :name "Espionage" :level "3" :unitabilitymap (unitabilitymap :Propaganda (unitability :name "Propaganda") :Sabotage (unitability :name "Sabotage"))))) "Browning MG Team" (unit :name "Browning MG Team" :image "WWIIAmerican/Infantry_BrowningMGToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Sniper" (unit :name "US Sniper" :image "WWIIAmerican/Infantry_USSniperToken.png" :reference "* WWII U.S. sniper training was very elementary and focused on being able to hit targets over long distances. There was almost no concern with the ability to blend into the environment. Training also varied from place to place, resulting in a wide range of qualities of snipers." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Platoon Sergeant" (unit :name "Platoon Sergeant" :image "WWIIAmerican/Infantry_SergeantToken.png" :reference "* If you survive recruit training, you will be a weapon. You will be a minister of death praying for war. But until that day you are pukes. You are the lowest form of life on Earth. You are not even human, fucking beings. You are nothing but unorganized grabastic pieces of amphibian shit. Because I am hard you will not like me. But the more you hate me the more you will learn. I am hard but I am fair. There is no racial bigotry here. I do not look down on niggers, kikes, wops or greasers. Here you are all equally worthless. - Gunnery Sergeant Hartman, Full Metal Jacket * If your killer instincts are not clean and strong you will hesitate at the moment of truth. You will not kill. You will become dead marines and then you will be in a world of shit because marines are not allowed to die without permission. - Gunnery Sergeant Hartman, Full Metal Jacket * You don't say 'sir' to me, I'm a sergeant, I work for a living. - Sergeant Hulka, Stripes" :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Bazooka Team" (unit :name "Bazooka Team" :image "WWIIAmerican/Infantry_BazookaToken.png" :reference "* 1 out of 3 infantry squads were issued a bazooka. * The back blast of the weapon gave away the shooter's position. * Casualties among bazooka team members were extremely high, and assignment to such duty was regarded as nearly suicidal." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Forward Observer" (unit :name "US Forward Observer" :image "WWIIAmerican/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M2 Mortar Team" (unit :name "M2 Mortar Team" :image "WWIIAmerican/Infantry_MortarToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Flamethrower" (unit :name "US Flamethrower" :image "WWIIAmerican/Infantry_FlamethrowerToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Medic" (unit :name "US Medic" :image "WWIIAmerican/Infantry_MedicToken.png" :reference "* Allied and German forces whereby soldiers would not knowingly fire at a medic treating a wounded comrade. This was in stark contrast to the Japanese forces, who regarded medics as primary targets, resulting in Allied medics removing or covering their insignia." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Sapper" (unit :name "US Sapper" :image "WWIIAmerican/Infantry_SapperToken.png" :summary "Combat Engineers from the US Army Corps of Engineers (USACE)" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap :Demolitions (unitability :name "Demolitions") :Explosives (unitability :name "Explosives") "Mine Laying" (unitability :name "Mine Laying")) :unititemmap (unititemmap "Demolition Pack" (unititem :name "Demolition Pack"))))))) "WWII American Vehicles" (section :name "WWII American Vehicles" :unitmap (unitmap "M4 Sherman" (unit :name "M4 Sherman" :image "WWIIAmerican/TankMed_M4A3_ShermanToken.png" :reference "* As part of the deception plan that drew German attention away from Normandy, inflatable rubber Shermans were deployed in Kent with plywood artillery." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "75mm" :back "30mm" :over "30mm" :under "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M4A4 Sherman Crab" (unit :name "M4A4 Sherman Crab" :image "WWIIAmerican/TankMed_ShermanCrabToken.png" :reference "* Valuable during and after D-Day, especially as the Germans made extensive use of minefields to slow the Allied advance through France." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Mine Clearing" (unitability :name "Mine Clearing"))))) "T34 Sherman Calliope" (unit :name "T34 Sherman Calliope" :image "WWIIAmerican/TankMed_T-34Calliope_M4Token.png" :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M4A3E8 Sherman Easy Eight" (unit :name "M4A3E8 Sherman Easy Eight" :image "WWIIAmerican/TankMed_M4A3E8_EasyEightToken.png" :reference "* The M4A3 was the first to be factory-produced with the new HVSS (horizontal volute spring suspension) suspension with wider tracks for lower ground pressure, and the smooth ride of the HVSS with its experimental E8 designation led to the nickname Easy Eight for Shermans so equipped." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M26 Pershing" (unit :name "M26 Pershing" :image "WWIIAmerican/TankHvy_M26_PershingToken.png" :reference "* The Pershing reached the battlefield only in February 1945 and saw very little action in WWII." :classification "Hvy. Tank" :crew "5" :mass "41.7tons" :length "6.3m" :range "160km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "110mm" :under "25mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M3 Lee" (unit :name "M3 Lee" :image "WWIIAmerican/TankMed_M3LeeToken.png" :reference "* By using the hull mount, the M3 design was brought to production quicker than if a proper turreted mount had been attempted. It was well understood that the M3 design was deeply flawed, but the need for tanks was urgent." :classification "Med. Tank" :crew "7" :mass "24tons" :length "5.6m" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M5 Stuart" (unit :name "M5 Stuart" :image "WWIIAmerican/TankLt_M5A1_StuartToken.png" :reference "* The British were the first to use the Stuart in 1941 against Afrika Korps where they suffered high losses. Its gun was too weak and its turret poorly laid out. They did, however, like its high speed and reliability. The Soviets were less generous and turned down the Stuart in Lend-Lease." :classification "Lt. Tank" :crew "5" :mass "14.7tons" :length "4.5m" :range "120km" :speedland "30kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M24 Chaffee" (unit :name "M24 Chaffee" :image "WWIIAmerican/TankLt_M24ChaffeeToken.png" :reference "* The M24 was not up to the challenge of fighting German tanks, but the bigger gun at least gave its crews a chance to fight back when it was required. The M24's light armor made it vulnerable to virtually all of the German tanks, anti-tank guns, and hand-held anti-tank weapons. The contribution of the M24 to winning the war in Europe was insignificant, as they arrived too late and in too few numbers to replace the worn out M5s." :classification "Lt. Tank" :crew "5" :mass "18.4tons" :length "5m" :range "161km" :speedland "56kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "25mm Sloped" :over "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M10 Wolverine" (unit :name "M10 Wolverine" :image "WWIIAmerican/TD_M10_WolverineToken.png" :reference "* M10s were used in the Pacific for infantry support but were unpopular due to their open-topped turrets, which made them more vulnerable than a fully-enclosed tank to Japanese close-in infantry attacks. * The turret was not powered and the crew was required to hand-crank the turret, taking approximately two minutes to rotate 360 degrees." :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M18 Hellcat" (unit :name "M18 Hellcat" :image "WWIIAmerican/TD_M18_HellcatToken.png" :reference "* Recorded as the fastest tracked fighting vehicle of WWII." :classification "Tank Destroyer" :crew "5" :mass "17.7tons" :length "5.3m" :range "168km" :speedland "88kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "25mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M36 Jackson" (unit :name "M36 Jackson" :image "WWIIAmerican/TD_M36JacksonToken.png" :reference "* The M36 was well liked by its crews, being one of the few armored fighting vehicles available to US forces that could take out heavy German tanks from a distance." :classification "Tank Destroyer" :crew "5" :mass "29tons" :length "7.5m" :range "240km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "108mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M7 Priest" (unit :name "M7 Priest" :image "WWIIAmerican/SPG_M7_PriestToken.png" :reference "* In U.S. service the M7 was a great success. Each U.S. armored division had three battalions of M7s, giving them unparalleled mobile artillery support. * A total of 3,490 M7s were built and they proved to be reliable weapons, continuing to see service in the U.S. and allied armies well past World War II." :classification "Artillery" :crew "7" :mass "23tons" :length "6m" :range "193km" :speedland "39kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "57mm M1 Artillery" (unit :name "57mm M1 Artillery" :image "WWIIAmerican/Artillery_57mmM1Token.png" :classification "Artillery" :crew "6" :mass "1.1tons" :length "2.8m" :speedland "0kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "20mm" :back "0mm" :over "0mm" :under "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "90mm M2 Artillery" (unit :name "90mm M2 Artillery" :image "WWIIAmerican/Artillery_90mmM2Token.png" :reference "* They were the US's primary anti-aircraft guns from just prior to the opening of WWII into the 1950s when most AAA was replaced by missile systems." :classification "Artillery" :mass "8.6tons" :length "4.7m" :speedland "0kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "20mm" :back "0mm" :over "0mm" :under "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "105mm M2A1 Howitzer" (unit :name "105mm M2A1 Howitzer" :image "WWIIAmerican/Artillery_105mmM101HowitzerToken.png" :classification "Artillery" :mass "2.2tons" :length "6m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :DUKW (unit :name "DUKW" :image "WWIIAmerican/TroopCarrier_DUKWToken.png" :reference "* It was initially rejected by the armed services, but when a Coast Guard patrol craft ran aground on a sandbar near Provincetown, Massachusetts, an experimental DUKW happened to be in the area for a demonstration. Winds up to 110 kph, rain, and heavy surf prevented conventional craft from rescuing the seven stranded Coast Guardsmen, but the DUKW had no trouble, and the military opposition melted. The DUKW would later prove its seaworthiness by crossing the English Channel." :summary "* Amphibious Transport * May carry 2.3 tons instead of passengers * Water Speed: 10kph, Water Range: 93km" :titles "Duck Boat, Old Magoo" :classification "Lt. Naval Vessel" :crew "1+12" :mass "6tons" :height "2.2m" :length "9.4m" :range "640km" :speedwater "80kph" :width "2.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm" :back "3mm" :over "0mm" :under "0mm" :side "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "LVT-4 Water Buffalo" (unit :name "LVT-4 Water Buffalo" :image "WWIIAmerican/TroopCarrier_LVT-4Token.png" :reference "* Production continued throughout the war, resulting in 18,621 LVTs delivered" :summary "* Amphibious Transport" :classification "Lt. Naval Vessel" :crew "3+30" :mass "16.5tons" :range "240km (80km water)" :speedland "32kph" :speedwater "12kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "M3A1 Half-track" (unit :name "M3A1 Half-track" :image "WWIIAmerican/HalfTrack_M3Token.png" :classification "Med. Vehicle" :crew "3+10" :mass "9.3tons" :length "6.2m" :range "280km" :speedland "64kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "12mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M3 Scout Car" (unit :name "M3 Scout Car" :image "WWIIAmerican/Car_M3ScoutCarToken.png" :reference "Lend Lease from US" :classification "Car" :crew "1+7" :mass "5.7tons" :length "5.6m" :range "403km" :speedland "81kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Willys MB/Ford GPW Jeep" (unit :name "Willys MB/Ford GPW Jeep" :image "WWIIAmerican/Truck_M151_Mutt_JeepToken.png" :reference "* 'Jeep' originated from a term used by soldiers for any untried or untested piece of personnel or equipment. * From humble origins - a handful of prototypes built by three different manufacturers - the Jeep 1/4-ton utility vehicle has evolved over the years into one of the most popular and versatile vehicles ever made. * The hero of WWII served in every theater of war, in every conceivable role, and with every Allied army." :classification "Car" :crew "1+3" :mass "1ton" :height "1.8m" :length "3.3m" :speedland "100kph" :width "1.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm" :over "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "GMC CCKW 2 1/2 Ton Truck" (unit :name "GMC CCKW 2 1/2 Ton Truck" :image "WWIIAmerican/Truck_CCKWToken.png" :reference "* 562,000 produced" :classification "Truck" :crew "1+20" :mass "5tons" :length "4m" :range "400mi" :speedland "90kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Medical Truck" (unit :name "Medical Truck" :image "WWIIAmerican/Truck_DWC-54_MedicToken.png" :classification "Truck" :crew "1+5" :mass "5tons" :length "4m" :range "400mi" :speedland "90kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII American Aircraft" (section :name "WWII American Aircraft" :unitmap (unitmap "F4F Wildcat" (unit :name "F4F Wildcat" :image "WWIIAmerican/Fighter_F4F_WildcatToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3.6tons" :length "8.8m" :range "1240km" :speedair "515kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "SBD Dauntless" (unit :name "SBD Dauntless" :image "WWIIAmerican/DiveBomber_Douglas_SBDToken.png" :classification "Lt. Aircraft" :crew "2" :mass "4.8tons" :length "10m" :range "1240km" :speedair "410kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "F-4U Corsair" (unit :name "F-4U Corsair" :image "WWIIAmerican/Fighter_F-4UCorsairToken.png" :reference "* The Corsair quickly became the most capable carrier-based fighter-bomber of World War II. * The F4U could out-perform a Zero in every aspect except slow speed manoeuvrability and slow speed rate of climb. * It dropped 70% of total bombs dropped by fighters during the war. * It had a 12:1 kill ratio against all Japanese planes. * A pilot over Okinawa was in pursuit of a Ki-45 fighter at extremely high altitude when his guns jammed due to the extreme cold. He simply flew up and chopped off the Ki-45's tail with the big propeller of the Corsair. Despite missing five inches off the end of his propeller blades, he managed to land safely." :classification "Lt. Aircraft" :crew "1" :mass "6.3tons" :height "5m" :length "10m" :range "1633km" :speedair "684kph" :width "12.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-35 Seversky" (unit :name "P-35 Seversky" :image "WWIIAmerican/Fighter_P-35SeverskyToken.png" :classification "Lt. Aircraft" :crew "1" :mass "2.7tons" :height "3m" :length "8.2m" :range "1530km" :speedair "496kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-38 Lightning" (unit :name "P-38 Lightning" :image "WWIIAmerican/Fighter_P-38LightningToken.png" :reference "* In the South West Pacific theater, the P-38 was the primary long-range fighter of United States Army Air Forces until the appearance of large numbers of P-51D Mustangs toward the end of the war. The P-38 was probably the quietest fighter in history. It was extremely forgiving, and could be mishandled in many ways, but the rate of roll was too slow for it to excel as a dogfighter. The P-38 was the only American fighter aircraft in production throughout American involvement in the war." :classification "Lt. Aircraft" :crew "1" :mass "7.9tons" :height "4m" :length "11.5m" :range "1770km" :speedair "712kph" :width "16m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-40E Curtiss Warhawk" (unit :name "P-40E Curtiss Warhawk" :image "WWIIAmerican/Fighter_P-40_WarhawkToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-40 Flying Tigers" (unit :name "P-40 Flying Tigers" :image "WWIIAmerican/Fighter_P-40_ChineseFlyingTigersToken.png" :reference "* According to their own count, the Flying Tigers shot down 286 aircraft for the loss of up to 19 pilots." :summary "Volunteer American fighters in China" :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-47 Thunderbolt" (unit :name "P-47 Thunderbolt" :image "WWIIAmerican/Fighter_P-47ThunderboltToken.png" :reference "* It had armor around the engine and the cockpit, which enabled it to withstand considerable damage. This was one of the characteristics which allowed Allied pilots in Asia and the Pacific to attack Japanese fighters head on. * Aka the Jug, was the largest single-engined fighter of its day, and a vast improvement over the Curtiss P-40 Warhawk. The P-47 was effective in air combat but proved especially adept at ground attack. Some British assumed Jug was short for Juggernaut and began using the longer nickname. * The Thunderbolt ended the war with 3,752 air-to-air kills in over 746,000 sorties, at the cost of 3,499 P-47s to all causes. * In Europe, the Thunderbolt flew more sorties than P-51s, P-38s and P-40s combined. * By the end of the war, the 56th FG was the only unit still flying the P-47, by preference, instead of the P-51. * Despite being the sole remaining P-47 group, the 56th FG remained its top-scoring group in aerial victories throughout the war. * A modern-day counterpart in that role, the A-10 Thunderbolt II, takes its name from the P-47." :classification "Lt. Aircraft" :crew "1" :mass "8tons" :range "1290km" :speedair "697kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-51 Mustang" (unit :name "P-51 Mustang" :image "WWIIAmerican/Fighter_P-51Mustang_FrenesiToken.png" :classification "Lt. Aircraft" :crew "1" :mass "4.2tons" :height "4.2m" :length "10m" :range "2755km" :speedair "703kph" :width "11.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "PBY Catalina" (unit :name "PBY Catalina" :image "WWIIAmerican/Recon_Catalina_PBYToken.png" :reference "* It was one of the most widely used multi-role aircraft of World War II. PBYs were used in anti-submarine warfare, patrol bombing, convoy escorts, search and rescue missions (especially air-sea rescue), and cargo transport. * The PBY was the most successful aircraft of its kind; no other flying boat was produced in greater numbers. The last active military PBYs were not retired from service until the 1980s. Even today the aircraft continues to fly as an airtanker in aerial firefighting operations all over the world." :summary "* Bombs could be substituted for depth charges or torpedoes" :classification "Med. Aircraft" :crew "8" :mass "16tons" :height "6m" :length "19.5m" :range "4030km" :speedair "314kph" :width "32m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-17 Flying Fortress" (unit :name "B-17 Flying Fortress" :image "WWIIAmerican/Bomber_B-17F_FlyingFortressToken.png" :reference "* A potent, high-flying, long-ranging bomber capable of unleashing great destruction yet able to defend itself. With the ability to return home despite extensive battle damage, its durability, especially in belly-landings and ditchings, quickly took on mythic proportions." :classification "Hvy. Aircraft" :crew "10" :mass "24.5tons" :height "5.8m" :length "22.6m" :range "3219km" :speedair "462kph" :width "31.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-24 Liberator" (unit :name "B-24 Liberator" :image "WWIIAmerican/Bomber_B-24J_LiberatorToken.png" :reference "* Produced in greater numbers than any other American combat aircraft of WWII and still holds the record as the most produced U.S. military aircraft." :classification "Hvy. Aircraft" :crew "8" :mass "25tons" :height "5.5m" :length "20.6m" :range "3400km" :speedair "470kph" :width "33.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-29 Superfortress" (unit :name "B-29 Superfortress" :image "WWIIAmerican/Bomber_B-29_SuperfortressToken.png" :reference "* A very advanced bomber for this time period, it included features such as a pressurized cabin, an electronic fire-control system, and remote-controlled machine-gun turrets. * It was the primary aircraft in the American firebombing campaign against the Empire of Japan, and carried the atomic bombs that destroyed Hiroshima and Nagasaki. Unlike many other WWII-era bombers, the B-29 remained in service long after the war ended" :classification "Hvy. Aircraft" :crew "11" :mass "54tons" :height "8.5m" :length "30.2m" :range "5230km" :speedair "574kph" :width "43m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII American Naval Vessels" (section :name "WWII American Naval Vessels" :unitmap (unitmap "Yorktown Class Carrier" (unit :name "Yorktown Class Carrier" :image "WWIIAmerican/Carrier_Yorktown.png" :titles "Enterprise, Hornet, Yorktown" :classification "Hvy. Naval Vessel" :crew "2200" :mass "20ktons" :length "230m" :range "23200km" :speedwater "60kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :over "40mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "New Orleans Class Cruiser" (unit :name "New Orleans Class Cruiser" :image "WWIIAmerican/Ship_CruiserToken.png" :reference "* The New Orleans took one Long-Lance Torpedo which severed 150ft of her bow. Magnificent damage control work and skillful seamanship kept it afloat. New Orleans class cruisers would be found at every major naval skirmish of WWII despite the fact there were only four units remaining after 1942. They were some of the most used and hardest fought ships on the US Navy during the war. They would have three of the top four most decorated ships in the US Navy in World War II." :classification "Hvy. Naval Vessel" :crew "708" :mass "10ktons" :length "180m" :range "26000km" :speedwater "61kph" :width "19m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "125mm" :back "125mm" :over "55mm" :under "125mm" :side "125mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Atlanta Class Cruiser" (unit :name "Atlanta Class Cruiser" :reference "* Designed originally as flotilla leaders but which ended up gaining recognition as effective anti-aircraft cruisers." :classification "Hvy. Naval Vessel" :crew "673" :mass "8.2ktons" :length "165m" :speedwater "62kph" :width "16m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "55mm" :back "55mm" :over "32mm" :under "55mm" :side "85mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Gleaves Class Destroyer" (unit :name "Gleaves Class Destroyer" :image "WWIIAmerican/Ship_DestroyerToken.png" :reference "* The Gleaves was the production destroyer of the US Navy when it entered WWII. They are extremely similar to the Benson class destroyers and were often referred to as the BENSON/GLEAVES class. * The 1954 movie The Caine Mutiny was filmed on the Gleaves Destroyer USS Doyle." :classification "Med. Naval Vessel" :crew "276" :mass "1.6ktons" :length "106m" :range "12000km" :speedwater "69kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Iowa Class Battleship" (unit :name "Iowa Class Battleship" :classification "Hvy. Naval Vessel") "LCVP Higgins Boat" (unit :name "LCVP Higgins Boat" :image "WWIIAmerican/LandingCraft_LCM3Token.png" :reference "* Andrew Higgins ... is the man who won the war for us. ... If Higgins had not designed and built those LCVPs, we never could have landed over an open beach. The whole strategy of the war would have been different. - General Dwight Eisenhower" :summary "* Landing Craft Vehicle Personnel * Constructed of plywood, can ferry 36 men or even a Jeep" :classification "Lt. Naval Vessel") "Elco Class PT Boat" (unit :name "Elco Class PT Boat" :image "WWIIAmerican/Ship_PTBoatToken.png" :reference "* A small, fast torpedo boat used to attack larger surface ships. The PT boat squadrons were nicknamed 'the mosquito fleet.' The Japanese called them 'Devil Boats.' * After the war, PT-109 became famous as the ship John F. Kennedy commanded. * Though often said to be made of plywood, they were actually made of two layers of 1 inch thick mahogany." :classification "Lt. Naval Vessel" :crew "17" :mass "38tons" :length "24m" :speedwater "76kph" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :under "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Crater Class Transport" (unit :name "Crater Class Transport" :image "WWIIAmerican/Ship_TransportToken.png" :summary "* Length: 441.5' * Beam: 57' * Draft: 30' * Speed: 11.5 knots * Armament: 1 x 3 inch/50 DP 2 x 40mm" :classification "Lt. Naval Vessel" :crew "206" :mass "11.5ktons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))))) "WWII American Strategic Forces" (section :name "WWII American Strategic Forces" :unitmap (unitmap "WWII American Light Infantry" (unit :name "WWII American Light Infantry" :summary "* 50% SMG (-1), 25% M1 (-2), 25% Bazooka (-2)" :classification "Lt. Infantry") "WWII American Med. Infantry" (unit :name "WWII American Med. Infantry" :summary "* 50% M1 (-1), 25% Bazooka (-2), 25% MG (-2)" :classification "Med. Infantry") "WWII American Heavy Infantry" (unit :name "WWII American Heavy Infantry" :summary "* 50% MG (-1), 50% Bazooka (-1)" :classification "Hvy. Infantry")))))) (func chapter_wwii_british_equipment : base/chapter (chapter :name "WWII British Equipment" :sectionmap (sectionmap "WWII British Weapons" (section :name "WWII British Weapons" :itemmap (itemmap ".38 Enfield MkII Revolver" (item :name ".38 Enfield MkII Revolver" :classification "Pistol") "9mm Sten SMG" (item :name "9mm Sten SMG" :image "WWIIBritish/SMG_Sten.jpg" :classification "Lt. MG" :modifiers "Auto") ".303 Lee-Enfield SMLE Rifle" (item :name ".303 Lee-Enfield SMLE Rifle" :image "WWIIBritish/SMLE_Mk_III.jpg" :reference "* The current world record for aimed bolt-action fire was set in 1914 placing 38 rounds into a 12 inch wide target at 300 yards in one minute." :titles "Short Magazine Lee Enfield (SMLE)" :classification "Rifle") ".303 Lee-Enfield No 4 Rifle" (item :name ".303 Lee-Enfield No 4 Rifle" :reference "* Mass production version of earlier .303 Lee-Enfield rifles." :classification "Rifle") "Flamethrower Portable No2" (item :name "Flamethrower Portable No2" :classification "Flamethrower" :mass "29kg" :modifiers "Fire, Auto" :range "25m") ".303 Bren Light MG" (item :name ".303 Bren Light MG" :summary "* Clip-fed, air-cooled .303 cal (7.7mm) machine gun" :classification "Lt. MG" :crew "2" :modifiers "Auto" :rof "500/min" :rounds "30") ".303 Vickers MG" (item :name ".303 Vickers MG" :reference "* In one action, ten Vickers guns fired continuously for twelve hours. They fired a million rounds between them, using 100 new barrels, without a single breakdown. It was this absolute foolproof reliability which endeared the Vickers to every British soldier who ever fired one." :summary "* Belt-fed, water-cooled .303 cal (7.7mm) machine gun. Required 6-8 men to operate." :classification "Hvy. MG" :crew "6" :modifiers "Auto") "7.92mm Besa MG" (item :name "7.92mm Besa MG" :summary "* Belt-fed, air-cooled 7.92mm machine gun" :classification "Hvy. MG" :modifiers "Auto" :rof "500/min") :PIAT (item :name "PIAT" :image "WWIIBritish/Rocket_PIAT.jpg" :summary "* HEAT Rocket * Penetrate 75mm at 30 degrees or 102mm at 90 degrees. * The PIAT was an unusual infantry anti-tank weapon. It was comparatively quiet and smokeless, with no backblast. * Unlike the American bazooka or German Panzerfaust and Panzerschreck, it could be fired from an enclosed space, and would not give away its position as soon as the weapon was fired. However, it was more cumbersome than its counterparts, violent to fire, and in many circumstances it could be difficult to reload. * An attachment that allowed the PIAT to fire 2 inch mortar shells was produced in limited numbers." :classification "Missile" :length ".99m" :mass "15kg" :modifiers "HEAT" :range "100m") "40mm QF 2 Pounder Cannon" (item :name "40mm QF 2 Pounder Cannon" :classification "Cannon" :modifiers "AP") "57mm QF 6 Pounder Cannon" (item :name "57mm QF 6 Pounder Cannon" :reference "* Although 17 Pounder guns were rushed to North Africa to combat the Tiger tank, it was in fact a 6-pdr, which claimed the first Tiger 'kill'" :classification "Cannon" :modifiers "AP" :range "4600m") "75mm QF Cannon" (item :name "75mm QF Cannon" :classification "Cannon" :modifiers "AP") "76mm QF 17 Pounder Cannon" (item :name "76mm QF 17 Pounder Cannon" :image "WWIIBritish/Artillery_17pdr.gif" :reference "76.2mm Cannon penetrates 115mm at 1000m" :classification "Cannon" :modifiers "AP" :muzzlevelocity "883m/s") "77mm HV Cannon" (item :name "77mm HV Cannon" :summary "* The 77mm HV was based on the 17-pounder. It had a lower muzzle velocity than the 17-pounder, but the ammunition was much more compact and more easily stored and handled within the confines of a tank." :classification "Cannon" :modifiers "AP") "Mills Bomb Grenade" (item :name "Mills Bomb Grenade" :reference "* The Mills was a defensive grenade: after throwing the user had to take cover immediately. A competent thrower could manage 30m with reasonable accuracy, but the grenade could throw lethal fragments further than this. * The 36M remained in service in some parts of the world such as India and Pakistan where it was manufactured until the early 1980s. That the Mills bomb remained in use for so many years says much about its effectiveness." :classification "Bomb" :length ".09m" :mass ".76kg" :modifiers "Anti-Personnel" :range "30m") "No 74 Sticky Bomb" (item :name "No 74 Sticky Bomb" :image "WWIIBritish/Grenade_StickyBomb.jpg" :reference "* While practicing a bomber got his bomb stuck to his trouser leg. A quick thinking mate whipped the trousers off and got rid of them and the bomb. The trousers were in a bit of a mess after though I think they were a bit of a mess prior to the explosion. * Even when not used, the glass was easily cracked in transit. The filling, nitroglycerin, was sensitive to shock too. Consequently, although possibly effective, the sticky bomb was never popular. * In the movie Saving Private Ryan, Tom Hanks' character uses improvised sticky bombs against Tiger I heavy tanks," :classification "Bomb" :explosive ".6" :length ".24m" :mass "1kg" :modifiers "HE" :range "20m") "No 82 Gammon Bomb" (item :name "No 82 Gammon Bomb" :reference "* Developed as a replacement for the temperamental and highly dangerous sticky bomb grenade. * Unlike conventional grenades, it was flexible in the amount and type of munition. For anti-personnel use, a small amount of plastic explosive, along with shrapnel-like projectiles if available, would be placed in the bag. Against armored targets, the bag could be filled completely with explosive. * The bag would be flung and the detonator would fire on impact. * Gammon bombs were primarily issued to special forces such as paratroopers who were issued plastic explosive routinely. These units found the Gammon bomb to be particularly useful due to its small size and weight when unfilled, as well as its adaptability." :classification "Bomb" :explosive ".9" :mass "1.2kg" :modifiers "AP" :range "20m") "60lb RP-3 Rockets" (item :name "60lb RP-3 Rockets" :classification "Missile" :explosive "28kg" :length "1.4m" :mass "21kg" :modifiers "AP, HE" :range "1.6km" :speedair "1900kph") "4000lb Blockbuster Bomb" (item :name "4000lb Blockbuster Bomb" :summary "* The term Blockbuster (aka Cookie) was originally a name coined by the press and referred to a bomb which had enough explosive power to destroy an entire city block. The High Capacity design was a cylinder full of explosives, unaerodynamic, and without find. Accuracy was not important, however, as these bombs were designed for blowing the tiles off the roofs of buildings so that the smaller 4 lb incendiary bombs could reach the building interiors. These bombs were only used by the RAF, being too big to fit in the bomb bays of other countries aircraft. In addition to the 4000lb version there were also 8000lb and 12000lb versions constructed from multiple 4000lb sections." :classification "Bomb" :explosive "1360kg" :mass "1800kg") "Earthquake Bomb" (item :name "Earthquake Bomb" :reference "* In an attack on the U-boat pens at Farge two Grand Slams went through the 15 ft (4.5 m) reinforced concrete hardening - equalling or exceeding the best current penetration specifications." :summary "* The Earthquake bombs were designed not to strike a target directly, but to impact beside it, penetrate under it, and create a 'camouflet' or large buried cavern at the same time as delivering a shock wave through the target's foundations. The target then collapses into the hole, no matter how hardened it may be. The bombs had strong casings because they needed to travel through rock rather than reinforced concrete, though they could perform equally well against hardened surfaces." :titles "Grand Slam" :classification "Bomb" :mass "10tons")))))) (func chapter_wwii_british_units : base/chapter (chapter :name "WWII British Units" :sectionmap (sectionmap "WWII British Infantry" (section :name "WWII British Infantry" :unitmap (unitmap "Commonwealth Rifle Team" (unit :name "Commonwealth Rifle Team" :summary "* Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Commonwealth LMG Team" (unit :name "Commonwealth LMG Team" :image "WWIIBritish/Infantry_BrenLMGToken.png" :summary "* Composed of 3 riflemen, 1 LMG, and the squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Commando" (unit :name "British Commando" :image "WWIIBritish/Infantry_CommandoToken.png" :reference "* The British Commandos were first formed by the Army in June 1940 as a raider force employing unconventional and irregular tactics to assault, disrupt and reconnoiter. * The Commandos were formed and operated in secrecy and produced a demoralizing effect on German forces while achieving celebrity status among the British public, comparable with that attached to fighter pilots and shrouded in myth." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5"))) "Vickers Machine Gun Team" (unit :name "Vickers Machine Gun Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Special Operations Executive" (unit :name "Special Operations Executive" :reference "* Bakers Street Irregulars * Group to conduct warfare without direct military engagement") "PIAT Team" (unit :name "PIAT Team" :image "WWIIBritish/Infantry_PIATGunner.png" :reference "* Though unreliable and unpopular it remained the primary infantry anti-tank weapon until 1950. * In one of the most remarkable examples of bravery under fire, Major Robert Henry Cain earned the Victoria Cross during Operation Market Garden. Using a PIAT (in addition to several other weapons) he destroyed or disabled six tanks, four of which were Tiger tanks, as well as a number of self-propelled guns." :summary "* Hvy. Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Sniper" (unit :name "British Sniper" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "SAS Parachute Regiment" (unit :name "SAS Parachute Regiment" :image "WWIIBritish/Infantry_Airborne.png" :reference "* It is considered an elite unit by virtue of its stringent selection process, rigorous training program and by the requirement of its role to operate with minimal or no support behind enemy lines and against numerically superior forces." :titles "Special Air Service (SAS)" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Airborne Assault" (unitability :name "Airborne Assault")) :unititemmap (unititemmap "No 82 Gammon Bomb" (unititem :name "No 82 Gammon Bomb"))))) "British Forward Observer" (unit :name "British Forward Observer" :image "WWIIBritish/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Mortar Team" (unit :name "British Mortar Team" :image "WWIIBritish/Infantry_MortarToken.png" :classification "Hvy. Infantry") "Gideon Force" (unit :name "Gideon Force" :reference "* To raise a revolt you must send in a Corps d'Elite to do exploits and not just as peddlers of war material and cash ... A thousand resolute and well-armed men can paralyse 10,000" :summary "Ethopian irregulars specializing in Guerilla warfare.") "Combat Medical Techinician" (unit :name "Combat Medical Techinician" :classification "Med. Infantry") "Royal Engineers" (unit :name "Royal Engineers" :image "WWIIBritish/Infantry_CanadianSapperToken.png" :classification "Med. Infantry"))) "WWII British Vehicles" (section :name "WWII British Vehicles" :unitmap (unitmap "Churchill A22F MkVII" (unit :name "Churchill A22F MkVII" :image "WWIIBritish/TankHvy_ChurchillMkVIIToken.png" :reference "* Five Mk III's, known collectively as 'King Force' were heavily shelled by German anti-tank guns, all but one Mk III made it back with little damage, one tank was said to have been struck up to 80 times. * Despite its many failures, the Churchill had a significant advantage that was apparent throughout its career. It could cross terrain obstacles that most other tanks of its era could not" :classification "Hvy. Tank" :crew "5" :mass "38.5tons" :length "7.3m" :range "90km" :speedland "20kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :under "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Churchill Crocodile" (unit :name "Churchill Crocodile" :image "WWIIBritish/TankHvy_ChurchillCrocToken.png" :classification "Hvy. Tank" :crew "5" :mass "38.5tons" :length "7.3m" :range "90km" :speedland "20kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :under "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Comet A34" (unit :name "Comet A34" :image "WWIIBritish/TankMed_CometToken.png" :classification "Med. Tank" :crew "5" :mass "33.5tons" :length "6.6m" :range "250km" :speedland "50kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "102mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Cromwell A27M" (unit :name "Cromwell A27M" :image "WWIIBritish/TankMed_CromwellToken.png" :reference "* The fastest British tank to serve in the Second World War." :classification "Med. Tank" :crew "5" :mass "28tons" :length "6.3m" :range "280km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "76mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Matilda A12" (unit :name "Matilda A12" :image "WWIIBritish/TankLt_MkIIMatildaToken.png" :reference "* Queen of the Desert * Average speed only about 9.5 km/h. * The heavy armor of the Matilda's cast turret became legendary." :classification "Med. Tank" :crew "4" :mass "27tons" :length "6m" :range "257km" :speedland "24kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "78mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Sherman Firefly" (unit :name "Sherman Firefly" :image "WWIIBritish/TankMed_M4FireflyToken.png" :reference "* One major disadvantage of the Sherman Firefly during its first few months in service was its lack of an effective High Explosive shell." :classification "Med. Tank" :crew "4" :mass "36tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M3 Grant" (unit :name "M3 Grant" :image "WWIIBritish/TankMed_M3GrantToken.png" :reference "* The British ordered the M3 when they were refused permission to have their tank designs made in American factories. They were unhappy with the tall profile and had their own turret fitted—lower in profile." :classification "Med. Tank" :crew "6" :mass "24tons" :length "5.6m" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Valentine (unit :name "Valentine" :image "WWIIBritish/TankLt_ValentineToken.png" :reference "Most Produced British Tank" :classification "Lt. Tank" :crew "4" :mass "16.5tons" :length "5.4m" :range "145km" :speedland "24kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm" :under "8mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Crusader A15" (unit :name "Crusader A15" :image "WWIIBritish/TankLt_CrusaderlToken.png" :reference "* Perhaps the most important British tank of the North African Campaign. * Although the Crusader was faster than any tanks it opposed, its potential was limited by a relatively light QF 2-pounder gun, thin armor and mechanical problems." :classification "Lt. Tank" :crew "5" :mass "20tons" :length "6m" :range "322km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Archer (unit :name "Archer" :image "WWIIBritish/TD_ArcherToken.png" :reference "* The rear mounting at first seemed like a liability, but it was soon made into an advantage. Combined with its low silhouette, the Archer made an excellent ambush weapon, allowing its crew to fire off a few shots, then drive away without wasting time turning around." :classification "Tank Destroyer" :crew "4" :mass "15tons" :length "6.7m" :range "140km" :speedland "32kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm" :over "0mm" :under "14mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "17pdr SP Achilles" (unit :name "17pdr SP Achilles" :image "WWIIBritish/TD_AchillesToken.png" :reference "* An upgunned version of the M10 Wolverine. * The turret was not powered and the crew was required to hand-crank the turret, taking approximately two minutes to rotate 360 degrees." :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "17pdr Artillery" (unit :name "17pdr Artillery" :image "WWIIBritish/Artillery_17pdrToken.png" :classification "Artillery" :mass "3tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Humber Mk IV" (unit :name "Humber Mk IV" :image "WWIIBritish/Car_HumberToken.png" :classification "Med. Vehicle" :crew "3" :mass "7tons" :length "4.6m" :range "400km" :speedland "72kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Chevy LRDG" (unit :name "Chevy LRDG" :image "WWIIBritish/Car_PatrolVehicleChevyLRDGToken.png" :reference "* During the Desert Campaign of 1940 to 1943 the Long Range Desert Group (LRDG) invariably operated hundreds of miles behind enemy lines; although its chief function was reconnaissance and intelligence gathering, units of the LRDG did carry out some hard-hitting strike operations, * The Rat Patrol - 1960s TV Series" :classification "Truck" :mass "1.5tons" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII British Aircraft" (section :name "WWII British Aircraft" :unitmap (unitmap "Supermarine Spitfire" (unit :name "Supermarine Spitfire" :image "WWIIBritish/Fighter_SpitfireToken.png" :reference "One of the most outstanding fighter aircraft of WWII" :classification "Lt. Aircraft" :crew "1" :mass "3tons" :length "9m" :range "760km" :speedair "605kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Hawker Hurricane" (unit :name "Hawker Hurricane" :image "WWIIBritish/Fighter_HurricaneToken.png" :reference "* Although largely overshadowed by the Supermarine Spitfire, the aircraft became renowned during the Battle of Britain." :classification "Lt. Aircraft" :crew "1" :mass "3.4tons" :length "9.8m" :range "965" :speedair "547kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Hawker Tempest" (unit :name "Hawker Tempest" :image "WWIIBritish/Fighter_TempestToken.png" :classification "Lt. Aircraft" :crew "1" :mass "5.2tons" :length "10.2m" :range "1190km" :speedair "695kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-40 Curtiss Tomahawk" (unit :name "P-40 Curtiss Tomahawk" :image "WWIIBritish/Fighter_TomahawkToken.png" :reference "* 46 British pilots reached ace status in P-40s. Caldwell scored 22 of his 28.5 victories in P-40s in North Africa. He is the prime example of a pilot using the strengths of the P-40 to its utmost. Once while flying alone, he was attacked by two Bf 109s, one of them piloted by Schruer. Although Caldwell was wounded three times, and his Tomahawk was hit by more than 100 7.9 mm bullets and five 20 mm cannon shells, he survived the encounter and shot down Schruer's wingman." :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Lancaster (unit :name "Lancaster" :image "WWIIBritish/Bomber_LancasterToken.png" :reference "* The most famous and most successful of the Second World War night bombers, delivering 608,612 tons of bombs in 156,000 sorties." :classification "Hvy. Aircraft" :crew "7" :mass "29tons" :length "21m" :range "4600mi" :speedair "450kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Fairey Swordfish" (unit :name "Fairey Swordfish" :image "WWIIBritish/TorpedoBomberFaireySwordfishToken.png" :reference "Famous for crippling the Bismarck" :classification "Lt. Aircraft" :crew "3" :mass "3.5tons" :length "10.8m" :range "879km" :speedair "224kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII British Naval Vessels" (section :name "WWII British Naval Vessels" :unitmap (unitmap "British Destroyer" (unit :name "British Destroyer" :classification "Med. Naval Vessel") "HMS Hood Battlecruiser" (unit :name "HMS Hood Battlecruiser" :summary "Armament: 8 x 15in (381mm) (4x2), 14 x 4in (102mm) (7x2) 24 x 2-pdr pom pom (40mm) (3x8) 20 x 0.5in (12.7mm) (5x4) guns 5 x 20 barrel Unrotated Projectile mounts 4 x 21in (533mm) torpedo tubes, above water" :classification "Hvy. Naval Vessel" :crew "1418" :range "10000km" :speedwater "54kph") "King George V Class Battleship" (unit :name "King George V Class Battleship" :summary "Speed: 28.0 knots (1941 trials) Range: 5400+nm at 18knots (11.9 tons/hour fuel burn) Armament: 10 x 14inch (356mm) mk VII guns 16 x 5.25inch (133mm) guns 64 x 2pounder pom-pom (40mm) Armour: Main belt: 14.7in (374mm) lower belt: 5.4in (137mm) Aircraft carried: 4 Supermarine Walrus seaplanes, 1 double-ended catapult" :crew "1500") "HMS Ark Royal Carrier" (unit :name "HMS Ark Royal Carrier" :summary "Armament: 16 x 4.5 inch (114 mm) guns (8 x 2) 48 x 2 pounder (1.5 in) Pom-poms (6 x 8) 32 x .50 calibre (12.7 mm) machine guns (8 x 4) Armour: 4.5 inches (110 mm) belt 3.5 in (89mm) deck over boiler rooms and magazines Aircraft carried: 36 Fairey Swordfish, 18 Fairey Fulmars" :crew "1600" :range "14100km" :speedwater "57kph")))))) (func chapter_wwii_french_equipment : base/chapter (chapter :name "WWII French Equipment" :sectionmap (sectionmap "WWII French Weapons" (section :name "WWII French Weapons" :itemmap (itemmap "7.5mm MAS-36" (item :name "7.5mm MAS-36" :image "WWIIFrench/Rifle_MAS36.jpg" :summary "7.5mm Bolt-action Rifle" :classification "Rifle") "7.65mm MAS-38" (item :name "7.65mm MAS-38" :image "WWIIFrench/SMG_MAS_38.jpg" :reference "* On April 28, 1945, was used by Italian partisans to shoot the former dictator Benito Mussolini." :summary "7.65mm SMG" :classification "Lt. MG" :modifiers "Auto")))))) (func chapter_wwii_french_units : base/chapter (chapter :name "WWII French Units" :sectionmap (sectionmap "WWII French Infantry" (section :name "WWII French Infantry" :unitmap (unitmap "Free French Forces" (unit :name "Free French Forces" :image "WWIIFrench/FrenchResistanceToken.png" :reference "* French fighters from colonies and resistance") "French Resistance Intelligence" (unit :name "French Resistance Intelligence" :image "WWIIFrench/FrenchIntelligenceToken.png" :reference "* Spies gathering intelligence on the German occupiers") "French Foreign Legion" (unit :name "French Foreign Legion") "Manouchian Group" (unit :name "Manouchian Group" :image "WWIIFrench/ManouchianGroupToken.png" :reference "* Guerrilla Resistance Fighters"))) "WWII French Vehicles" (section :name "WWII French Vehicles" :unitmap (unitmap "Char B1" (unit :name "Char B1" :image "WWIIFrench/TankMed_CharB1.png" :classification "Med. Tank") "Renault R40" (unit :name "Renault R40" :classification "Lt. Tank") "French M4 Sherman" (unit :name "French M4 Sherman" :image "WWIIFrench/TankMed_M4A3_Sherman.png" :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "French M10 Wolverine" (unit :name "French M10 Wolverine" :image "WWIIFrench/TD_M10_Wolverine.png" :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII French Aircraft" (section :name "WWII French Aircraft" :unitmap (unitmap "Free French Spitfire" (unit :name "Free French Spitfire" :image "WWIIFrench/SupermarineSpitfire_Mk_IXToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3tons" :length "9m" :range "760km" :speedair "605kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4")))))))) (func chapter_wwii_german_equipment : base/chapter (chapter :name "WWII German Equipment" :sectionmap (sectionmap "WWII German Weapons" (section :name "WWII German Weapons" :itemmap (itemmap ".32 Mauser Hsc" (item :name ".32 Mauser Hsc" :image "WWIIGerman/Pistol_Mauser_HSc.jpg" :reference "* Military personnel of all ranks not issued sidearms often purchased HSc pistols in the commercial marketplace and carried them into the field." :summary ".32 cal Pistol" :classification "Pistol" :length ".15m" :mass ".7kg" :muzzlevelocity "282m/s") "9mm Luger P08" (item :name "9mm Luger P08" :image "WWIIGerman/DWM_4_inch_Navy_Luger_859.jpg" :reference "* The usual German sidearm in both world wars." :summary "9mm Pistol" :classification "Pistol" :muzzlevelocity "390m/s") "9mm MP40 SMG" (item :name "9mm MP40 SMG" :image "WWIIGerman/SMG_MP40.jpg" :classification "Lt. MG" :modifiers "Auto" :muzzlevelocity "380m/s" :range "100m" :rof "500/min") "7.92mm Karabiner 98k" (item :name "7.92mm Karabiner 98k" :reference "* Standard German infantry rifle" :summary "7.92mm Bolt-action Rifle" :classification "Rifle" :range "500m") "Flammenwerfer 35 Flamethrower" (item :name "Flammenwerfer 35 Flamethrower" :classification "Flamethrower" :crew "1" :mass "35kg" :modifiers "Fire, Auto" :range "25m") "7.92mm FG42 Light MG" (item :name "7.92mm FG42 Light MG" :reference "* The FG42 was developed specifically for the use by paratroopers, who wanted a suitable gun after their experiences in the invasion of Crete." :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "7.92mm MG17 MG" (item :name "7.92mm MG17 MG" :image "WWIIGerman/MG_MG17.jpg" :reference "* A mainstay fixed machine gun in German built aircraft." :classification "Med. MG" :length "1175mm" :mass "10.2kg" :modifiers "Auto" :muzzlevelocity "855m/s" :rof "1200/min") "7.92mm MG34 MG" (item :name "7.92mm MG34 MG" :image "WWIIGerman/MG_MG34.jpg" :classification "Med. MG" :length "1219mm" :mass "12.1kg" :modifiers "Auto" :muzzlevelocity "765m/s") "7.92mm MG81Z MG" (item :name "7.92mm MG81Z MG" :image "WWIIGerman/MG_MG81.jpg" :reference "* An aircraft mounted derivative of the successful MG34 infantry machine gun." :classification "Med. MG" :length "915mm" :mass "12.9kg" :modifiers "Auto" :muzzlevelocity "705m/s" :rof "1500/min") "13mm MG131 MG" (item :name "13mm MG131 MG" :image "WWIIGerman/MG_13mm_MG131.jpg" :reference "* Under the doctrine of WWII German infantry tactics, the squad machine gun is the center of operation and the rest of the squad will maneuver and try to achieve its objective under the cover of the squad machine gun fire." :classification "Hvy. MG" :length "1140m" :mass "16.6kg" :muzzlevelocity "750m/s" :range "1800m" :rounds "900/min") "20mm MG151/20 Cannon" (item :name "20mm MG151/20 Cannon" :reference "* On the Fw190, it was found that it took an average of twenty 20 mm hits to shoot down a typical four engined bomber." :classification "Cannon" :muzzlevelocity "800m/s" :rof "750/min") "30mm MK 108 Cannon" (item :name "30mm MK 108 Cannon" :image "WWIIGerman/Cannon_MK108.jpg" :reference "* The 30 mm MK 108 cannon could bring down a bomber with an average of one to three hits, but the ammunition was heavy (limiting the amount of ammo carried) and its low muzzle velocity meant it became inaccurate at 1000m." :classification "Cannon" :length "1m" :mass "58kg" :modifiers "Auto" :muzzlevelocity "540m/s" :range "1000m" :rof "650/min") "R4M Hurricane Rocket" (item :name "R4M Hurricane Rocket" :reference "* The first practical anti-aircraft rocket. After the war the R4M served as the pattern for a number of similar systems, used by almost all interceptor aircraft during the 1940s and '50s. The R4M used a large warhead of 55mm with 520g explosive charge, nearly guaranteeing a kill with one hit. A battery typically consisted of two groups of 12 rockets and when all 24 were fired at once they would fill an area about 15 by 30 m at 1000 m, dense enough that one was almost certain to hit its target. Two warheads were available for the R4M, the common PB-3 with a 0.4 kg charge for anti-aircraft use and the larger shaped charge, similar in construction to the Panzerschreck, the Panzerblitz II (PB-2), for anti-tank use." :titles "Orkan" :classification "Missile" :length "812mm" :mass "3.2kg" :modifiers "HE, AP" :muzzlevelocity "525m/s" :range "1000m" :rounds "1") "40mm Bofors L/60 Cannon" (item :name "40mm Bofors L/60 Cannon" :classification "Cannon" :modifiers "Auto, HE" :muzzlevelocity "881m/s" :rof "120/min") "50mm PaK 38 L/60 Cannon" (item :name "50mm PaK 38 L/60 Cannon" :reference "* The PaK 38 was one of the few early guns capable of effectively penetrating the 45 mm armor of the formidable T-34." :classification "Cannon" :modifiers "HE, AP") "50mm KwK 39 L/60 Cannon" (item :name "50mm KwK 39 L/60 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "800m/s") "75mm KwK 39 L/48 Cannon" (item :name "75mm KwK 39 L/48 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "750m/s") "75mm KwK 40 L/48 Cannon" (item :name "75mm KwK 40 L/48 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "792m/s" :range "1.8km") "75mm KwK 42 L/70 Cannon" (item :name "75mm KwK 42 L/70 Cannon" :classification "Cannon" :length "5.2m" :mass "1ton" :modifiers "HE, AP" :muzzlevelocity "925m/s" :range "2km direct, 10km indirect") "88mm KwK 36 L/56 Cannon" (item :name "88mm KwK 36 L/56 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "773m/s" :range "2km") "88mm KwK 43 L/71 Cannon" (item :name "88mm KwK 43 L/71 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "1000m/s" :range "4km") "105mm leFH 18 Howitzer" (item :name "105mm leFH 18 Howitzer" :classification "Artillery" :explosive "1.38kg" :modifiers "HE" :muzzlevelocity "470m/s" :range "10.6km" :rof "5/min") "150mm StuH 43 L/12 Cannon" (item :name "150mm StuH 43 L/12 Cannon" :summary "Penetrates 160mm at any range" :classification "Cannon" :modifiers "HE" :muzzlevelocity "240m/s" :range "4.3km" :rof "1.5/min") "Model 24 Grenade" (item :name "Model 24 Grenade" :image "WWIIGerman/Grenade_Model24.jpg" :reference "* It featured an explosive charge encased in a metal can and mounted on a wooden shaft for throwing. It became one of the most easily recognized of all small arms, and synonymous with the German soldier." :titles "Potato Masher" :classification "Bomb" :explosive ".17kg" :length ".35m" :mass ".6kg" :modifiers "Anti-Personnel" :range "40m") :Panzerfaust (item :name "Panzerfaust" :image "WWIIGerman/Rocket_Panzerfaust.jpg" :reference "* The weapon proved to be particularly deadly to Allied armored vehicles, especially in urban combat where the short lines of sight allowed the weapon to be used at close range." :summary "* Disposable HEAT Rocket penetrates 200mm at 60m" :titles "Tank Fist" :classification "Missile" :explosive ".8kg" :length "1m" :mass "6.25kg" :modifiers "HEAT" :range "60m" :rounds "1") :Panzerschreck (item :name "Panzerschreck" :reference "* When handled by well-trained crews, this weapon became the bane of Allied armored units, who frequently attempted to add improvised protection to their tanks, e.g. sandbags, spare track units, logs and so on. Most of this make-shift protection had little actual effect." :summary "* Disposable HEAT Rocket penetrates 200mm at 60m" :titles "Tank Terror, Stove Pipe" :classification "Missile" :explosive ".66kg" :length ".16m" :mass "11kg" :modifiers "HEAT" :range "150m") "120mm GrW 42 Mortar" (item :name "120mm GrW 42 Mortar" :classification "Artillery" :explosive "15.6 kg" :modifiers "Indirect, HE") "150mm Rocket Launcher" (item :name "150mm Rocket Launcher" :reference "* These offered the opportunity to deliver large quantities of poison gas or smoke simultaneously. * Almost five and a half million 15 cm rockets and six thousand launchers were manufactured over the course of the war." :classification "Missile" :explosive "50kg" :mass "1.1tons" :modifiers "HE" :muzzlevelocity "145m/s" :rounds "6") "V2 Rocket" (item :name "V2 Rocket" :image "WWIIGerman/Rocket_V2.jpg" :reference "* The rocket was the world's first long-range missile and first human artifact to achieve sub-orbital spaceflight. It was the progenitor of all modern rockets, including those used by the United States and Soviet Union space programs, who gained access to the scientists and designs. * They not only took a toll of 9 thousand casualties. They also had a devastating psychological effect for unlike the buzzbomb it would attack without warning, and it could not be intercepted by fighter aircraft or anti-aircraft artillery. * Hitler was probably not impressed with the weapon but was impressed by the enthusiasm of its developers and needed a 'wonder weapon' to maintain German morale." :titles "Vengence 2" :classification "Missile" :explosive "980kg" :length "14m" :mass "6.5tons" :range "320km" :rounds "1" :speedair "5760kph" :width "1.65m")))))) (func chapter_wwii_german_units : base/chapter (chapter :name "WWII German Units" :sectionmap (sectionmap "WWII German Infantry" (section :name "WWII German Infantry" :unitmap (unitmap "German Rifle Team" (unit :name "German Rifle Team" :image "WWIIGerman/Infantry_RiflemanToken.png" :summary "Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "German MG Team" (unit :name "German MG Team" :image "WWIIGerman/Infantry_MGToken.png" :summary "Composed of 2 riflemen, MG Gunner, MG Assistant, and squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Waffen-SS Infantry" (unit :name "Waffen-SS Infantry" :image "WWIIGerman/Infantry_SSToken.png" :titles "Weapon SS (Shield Squadron)" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "German Sniper" (unit :name "German Sniper" :image "WWIIGerman/Infantry_SniperToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Panzergrenadiers (unit :name "Panzergrenadiers" :image "WWIIGerman/Infantry_PanzergrenadierToken.png" :reference "The shaped charge could penetrate up to 200 mm of steel, enough to defeat any armoured fighting vehicle of the period." :summary "* Heavy Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerschreck Team" (unit :name "Panzerschreck Team" :image "WWIIGerman/Infantry_PanzerschreckToken.png" :reference "* Though the Panzerschreck is a copy of the bazooka, the bazooka was having a difficulties with the Tiger and Panther, one direct hit was usually enough to destroy any Allied armored vehicle." :summary "* Heavy Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Obertruppfuhrer (unit :name "Obertruppfuhrer" :image "WWIIGerman/Infantry_ObersturmfuhrerToken.png" :reference "* Obertruppfuhrer was junior to Haupttruppfuhrer and typically served as a senior non-commissioned officer rank equivalent to a Platoon Sergeant." :summary "* Commander" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) :Haupttruppfuhrer (unit :name "Haupttruppfuhrer" :summary "* Commander" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) :Gestapo (unit :name "Gestapo" :reference "* 'Jew Hunter'? It's just a name that stuck. Well, you do have to admit, it is catchy. - Inglourious Basterds") :Fallschirmjager (unit :name "Fallschirmjager" :image "WWIIGerman/Infantry_FallschirmjagerToken.png" :reference "* During the Battle of Crete, the Ultra enabled the British to wait on each German drop zone, yet despite compromised secrecy, surviving German paratroops pushed the Commonwealth forces off the island. However, the losses were so great that Hitler forbade their future use. He felt that the main power of the paratroop was novelty, and that the British had clearly figured out how to defend against them. Ironically, the battle that ended Germany's paratrooper operations had the opposite effect on the Allies. Convinced of the effectiveness of airborne assaults, the Allies hurried to train and organize their own airborne units." :summary "* Paratrooper" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Forward Observer" (unit :name "German Forward Observer" :image "WWIIGerman/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Granatwerfer 42" (unit :name "Granatwerfer 42" :image "WWIIGerman/Infantry_MortarToken.png" :summary "* Heavy Mortar Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Medical Corp" (unit :name "German Medical Corp" :image "WWIIGerman/Infantry_MedicToken.png" :classification "Med. Infantry") "German Pioniere" (unit :name "German Pioniere" :image "WWIIGerman/Infantry_PionereToken.png" :summary "Combat Engineers from the German Defense Force" :classification "Med. Infantry"))) "WWII German Vehicles" (section :name "WWII German Vehicles" :unitmap (unitmap "Panzer III Ausf L" (unit :name "Panzer III Ausf L" :image "WWIIGerman/TankLt_PzkpfwIII_DesertToken.png" :classification "Lt. Tank" :crew "5" :mass "22tons" :height "2.5m" :length "5.5m" :range "155km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "70mm" :back "50mm" :over "10mm" :under "5mm" :side "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Flammpanzer III Ausf M" (unit :name "Flammpanzer III Ausf M" :image "WWIIGerman/TankLt_FlammpanzerIIIToken.png" :classification "Lt. Tank" :crew "5" :mass "22tons" :height "2.5m" :length "5.5m" :range "155km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "70mm" :back "50mm" :over "10mm" :under "5mm" :side "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzer IV Ausf H" (unit :name "Panzer IV Ausf H" :image "WWIIGerman/TankMed_PanzerPzkpfwIV_Token.png" :reference "* Robust and reliable, it saw service in all combat theaters, and has the distinction of being the only German tank to remain in continuous production throughout the war with over 8,500 produced." :classification "Med. Tank" :crew "5" :mass "25tons" :length "7m" :range "200km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panther Ausf G" (unit :name "Panther Ausf G" :image "WWIIGerman/TankMed_PantherToken.png" :reference "* Ernst Barkmann in a lone Panther knocked out nine Shermans halting an American advance." :classification "Med. Tank" :crew "5" :mass "43tons" :range "250km" :speedland "46kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm Sloped" :back "45mm" :over "30mm" :under "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tiger Ausf E" (unit :name "Tiger Ausf E" :image "WWIIGerman/TankHvy_TigerToken.png" :reference "* In the Normandy campaign, it could take four to five Shermans to knock out a single Tiger tank by maneuvering to its weaker flank or rear armor." :classification "Hvy. Tank" :crew "5" :mass "57tons" :length "8.5m" :range "150km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :back "25mm" :over "40mm" :under "40mm" :side "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tiger II Ausf B" (unit :name "Tiger II Ausf B" :image "WWIIGerman/TankHvy_PzkpfwVIb_Porsche_KingTigerToken.png" :reference "* The M4 Sherman was unable to penetrate the front even at point blank and the M26 Pershing and IS-2 had to come within 1300 m and 200 m respectively. * The Tiger II could destroy all Allied armor at a range far outside the effective range of the enemy's armament. Also the Tiger II was remarkably agile for such a heavy vehicle. Records indicate that it had a lower ground pressure and was as maneuverable as the much lighter Panzer IV." :classification "Hvy. Tank" :crew "5" :mass "68tons" :length "7.6m" :range "170km" :speedland "41kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "150mm" :back "80mm" :over "40mm" :under "40mm" :side "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Marder II" (unit :name "Marder II" :image "WWIIGerman/TD_MarderIIToken.png" :reference "* Based on obsolete Panzer II." :classification "Tank Destroyer" :crew "3" :mass "11tons" :length "6.4m" :range "190km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "35mm" :back "0mm" :over "0mm" :side "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "StuG III" (unit :name "StuG III" :image "WWIIGerman/TD_StugIIIToken.png" :reference "* Cheaper than a Panzer III, it was Germany's most produced armored vehicle. Sturmgeschutz units held a very impressive record of tank kills - some 20,000 enemy tanks by spring of 1944." :classification "Tank Destroyer" :crew "4" :mass "24tons" :length "6.9m" :range "155km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "JapdPanzer 38 Hetzer" (unit :name "JapdPanzer 38 Hetzer" :image "WWIIGerman/TD_HetzerToken.png" :reference "* The Jagdpanzer 38(t) is one of the most common late-war German tank destroyers. Also, its small size made it a hard target, and was easy to conceal allowing it to lie in ambush for enemy tanks." :classification "Tank Destroyer" :mass "15tons" :length "6m" :range "177km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm Sloped")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :JagdPanther (unit :name "JagdPanther" :image "WWIIGerman/TD_JagdPantherToken.png" :reference "* Many historians consider the Jagdpanther to be the best tank destroyer of World War 2. * Because of its visually striking design, the Jagdpanther was featured on the box cover art of the game Panzerblitz." :classification "Tank Destroyer" :crew "5" :mass "45.5tons" :length "10m" :range "160km" :speedland "46kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm Sloped" :back "45mm" :over "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerjager Tiger Elefant" (unit :name "Panzerjager Tiger Elefant" :image "WWIIGerman/TD_PanzerjagerTigerElefantToken.png" :reference "* 10:1 Kill Ratio due to strong defense though vulnerable to infantry" :classification "Tank Destroyer" :mass "65tons" :speedland "30kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "200mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Nashorn (unit :name "Nashorn" :image "WWIIGerman/TD_NashornToken.png" :classification "Tank Destroyer" :mass "24tons" :range "235km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Sturmpanzer IV Brummbar" (unit :name "Sturmpanzer IV Brummbar" :image "WWIIGerman/SPG_BrummbarToken.png" :reference "* Fire support based on Panzer IV" :classification "Artillery" :crew "5" :mass "28.2tons" :height "2.5m" :length "6m" :range "210km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :SturmTiger (unit :name "SturmTiger" :image "WWIIGerman/SPG_SturmTigerToken.png" :reference "* Heavy Bombardment unit Based on Tiger" :summary "* 380mm Naval Mortar * 90mm KbK 39 Antipersonnel weapon" :classification "Artillery" :crew "5" :mass "65tons" :height "2.9m" :length "6.3m" :range "120km" :speedland "40kph" :width "3.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "150mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "SdKfz 124 Wespe" (unit :name "SdKfz 124 Wespe" :image "WWIIGerman/SPG_Wespe_WaspToken.png" :reference "* SPG based on Panzer II. Proved so successful that Hitler ordered all Panzer II production to be reserved for the Wespe alone, dropping other projects such as the Marder II." :classification "Artillery" :mass "11tons" :height "2.3m" :length "4.8m" :range "220km" :speedland "40kph" :width "2.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerwerfer 42" (unit :name "Panzerwerfer 42" :image "WWIIGerman/RocketLauncher_Panzerwerfer42Token.png" :classification "Med. Vehicle" :crew "2" :mass "13.5tons" :height "2m" :length "7m" :range "300km" :speedland "27kph" :width "2.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm" :back "8mm" :over "6mm" :under "6mm" :side "12mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 38 50mm Artillery" (unit :name "PaK 38 50mm Artillery" :image "WWIIGerman/Artillery_PaK38Token.png" :classification "Artillery" :mass "830kg" :length "4.75m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 40 75mm Artillery" (unit :name "PaK 40 75mm Artillery" :image "WWIIGerman/Artillery_PaK40Token.png" :reference "* The PaK 40 was the standard German anti-tank gun, and was supplied by Germany to its allies." :classification "Artillery" :mass "1.4tons" :length "6.2m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 43 88mm Artillery" (unit :name "PaK 43 88mm Artillery" :image "WWIIGerman/Artillery_PaK43_88mmToken.png" :reference "* The Pak 43 entered production in 1943 and was an extremely powerful weapon, capable of dealing with any tank it would face. It was however a massive weapon, well beyond the reasonable weight for an anti-tank weapon. The weight coupled with the immense size meant that it was extremely difficult to handle on the field." :classification "Artillery" :mass "3.6tons" :length "9.2" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Bofors 40mm AA" (unit :name "Bofors 40mm AA" :image "WWIIGerman/AA_Bofors40mmToken.png" :classification "Hvy. MG" :mass "2.5tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Halftrack Sdkfz 251" (unit :name "Halftrack Sdkfz 251" :image "WWIIGerman/Halftrack_Sdkfz_250Token.png" :classification "Med. Vehicle" :crew "2+10" :mass "7.8tons" :height "1.8m" :length "5.8m" :range "500km" :speedland "52kph" :width "2.1m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Mercedes L300" (unit :name "Mercedes L300" :image "WWIIGerman/Truck_Mercedes_L3000Token.png" :classification "Truck" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Kubelwagen Type 82" (unit :name "Kubelwagen Type 82" :image "WWIIGerman/Car_KubelwagenType82Token.png" :reference "* Prototype versions were assembled with four-wheel drive, but none offered a significant increase in performance or capability, so none were produced. * In 1943, the U.S. military concluded that the vehicle was simpler, easier to manufacture and maintain, faster, and more comfortable for four passengers than the U.S. Jeeps." :classification "Car" :crew "1+3" :mass "715kg" :height "1.7m" :length "3.7m" :speedland "80kph" :width "1.6m" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BMW R75 Motorcycle" (unit :name "BMW R75 Motorcycle" :image "WWIIGerman/MotorcycleToken.png" :classification "Lt. Vehicle" :crew "1+1" :mass "420kg" :range "350km" :speedland "95kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII German Aircraft" (section :name "WWII German Aircraft" :unitmap (unitmap "Messerschmitt Bf 109" (unit :name "Messerschmitt Bf 109" :image "WWIIGerman/Fighter_BF-109Token.png" :reference "* The most successful fighter of World War II, shooting down more aircraft than any of its contemporaries. * Produced in greater quantities than any other fighter aircraft in history. * Flown by the three top-scoring fighter aces of World War II: Erich Hartmann, the top scoring fighter ace of all time with 352 official victories, Gerhard Barkhorn with 301 victories, and Günther Rall with 275 victories. * Hartmann refused to fly any other combat aircraft throughout the war." :classification "Lt. Aircraft" :crew "1" :mass "3.1tons" :length "9m" :range "850km" :speedair "640kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Focke-Wulf Fw 190" (unit :name "Focke-Wulf Fw 190" :image "WWIIGerman/Fighter_FW_190Token.png" :reference "* Well liked by its pilots, and was quickly proven to be superior to the RAF's main front line fighter, the Spitfire Mk. V, on its combat debut in 1941. * Compared to the Bf 109, the Fw 190 was a 'workhorse', employed in and proved suitable for a wide variety of roles, including ground attack, night fighter-bomber, long-range bomber escort, and night-fighter." :classification "Lt. Aircraft" :crew "1" :mass "4tons" :height "4m" :length "9m" :range "800km" :speedair "656kph" :width "10m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Messerschmitt Bf 110" (unit :name "Messerschmitt Bf 110" :image "WWIIGerman/FighterBomber_BF-110Token.png" :classification "Lt. Aircraft" :crew "2" :mass "7.8tons" :height "3.3m" :length "12.3m" :range "900km" :speedair "595kph" :width "16.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Messerschmitt Me 262" (unit :name "Messerschmitt Me 262" :image "WWIIGerman/FighterJet_Me-262Token.png" :reference "* World's First Turbojet Fighter" :classification "Lt. Aircraft" :crew "1" :mass "6.5tons" :height "3.5m" :length "10.6m" :range "1050km" :speedair "900kph" :width "12.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Heinkel He 177" (unit :name "Heinkel He 177" :image "WWIIGerman/Bomber_HE_177Token.png" :reference "* Strategic Bomber * This troubled aircraft was the only heavy bomber built in large numbers by Germany in WWII. It was nicknamed Luftwaffe's lighter or the 'Flaming Coffin' due to the engines' tendency to catch fire," :classification "Hvy. Aircraft" :crew "6" :mass "27.2tons" :height "6.4m" :length "22m" :range "1540km" :speedair "565kph" :width "31.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Arado Ar 234" (unit :name "Arado Ar 234" :image "WWIIGerman/BomberJet_AR-234_AradoToken.png" :reference "* The world's first operational jet powered bomber, built in the closing stages of World War II. In the field it was used almost entirely in the reconnaissance role, but in its few uses as a bomber it proved to be nearly impossible to intercept." :classification "Hvy. Aircraft" :crew "1" :mass "9.8tons" :height "4.3m" :length "12.6m" :range "1100km" :speedair "742kph" :width "14.1m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Do 24 Flying Boat" (unit :name "Do 24 Flying Boat" :image "WWIIGerman/FlyingBoat_DO24Token.png" :summary "* Seaplance" :classification "Med. Aircraft" :crew "3" :mass "18.4tons" :height "6m" :length "22m" :range "2900km" :speedair "341kph" :width "27m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII German Naval Vessels" (section :name "WWII German Naval Vessels" :unitmap (unitmap "Bismarck Class Battleship" (unit :name "Bismarck Class Battleship" :image "WWIIGerman/Battleship_Bismarck.png" :reference "* 40% by weight dedicated to armor. More than the Yamato's 33% * May 1941, sank the HMS Hood, flagship and pride of the Royal Navy in 11 minutes. In response, Winston Churchill issued the order to 'Sink the Bismarck', spurring a relentless pursuit by the Royal Navy." :titles "Bismarck, Tirpitz" :classification "Hvy. Naval Vessel" :crew "2092" :mass "50ktons" :length "251m" :speedwater "56kph" :width "36m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "320mm" :back "320mm" :over "120mm" :side "320mm")) :unitskillmap (unitskillmap :Hanger (unitskill :name "Hanger" :summary "* 4xArado Ar 196 A-3, with 1 double-ended catapult"))) "U-Boot Type VII" (unit :name "U-Boot Type VII" :image "WWIIGerman/Submarine_VIIC_UboatToken.png" :reference "* By the end of the war, almost 3,000 Allied ships (175 warships; the rest were merchant ships) were sunk by U-boat torpedoes." :classification "Submarine") "Elektroboot XXI" (unit :name "Elektroboot XXI" :image "WWIIGerman/Submarine_XXIIIToken.png" :classification "Submarine")))))) (func chapter_wwii_italian_units : base/chapter (chapter :name "WWII Italian Units" :sectionmap (sectionmap "WWII Italian Weapons" (section :name "WWII Italian Weapons" :itemmap (itemmap "7.65mm Beretta M1935 Pistol" (item :name "7.65mm Beretta M1935 Pistol" :image "WWIIItalian/Pistol_Beretta_M1935.jpg" :summary "* The M1935 is a very robust construction with long service life if properly maintained. * However, the .32 ACP ammunition is somewhat under-powered for combat use. The magazine capacity of only 8 rounds and short effective range reduces the M1935 to a last resort self defense weapon." :classification "Pistol" :length "159mm" :mass ".75kg" :muzzlevelocity "305m/s" :rounds "7") "6.5mm Carcano M1891 Rifle" (item :name "6.5mm Carcano M1891 Rifle" :image "WWIIItalian/Rifle_Carcano.jpg" :reference "* The Carcano was the rifle used by Lee Harvey Oswald to assassinate John F. Kennedy" :summary "* Bolt action rifle" :length "1300mm" :mass "3.8kg" :muzzlevelocity "700m/s" :rounds "6") "7.7mm Breda-SAFAT MG" (item :name "7.7mm Breda-SAFAT MG" :mass "12.5kg" :modifiers "Auto" :muzzlevelocity "730m/s" :rof "850/min") "8mm Breda M37 MG" (item :name "8mm Breda M37 MG" :image "WWIIItalian/MG_8mmBredaM37.jpg" :length "1270mm" :mass "17.5kg" :modifiers "Auto" :muzzlevelocity "900m/s" :range "1000m" :rof "460/min") "12.7mm Breda-SAFAT MG" (item :name "12.7mm Breda-SAFAT MG" :mass "12.5kg" :modifiers "Auto" :muzzlevelocity "765m/s" :rof "700/min") "20mm Breda M35 Autocannon" (item :name "20mm Breda M35 Autocannon" :image "WWIIItalian/Cannon_20mmBredaM35.jpg" :length "3.3m" :mass "330kg" :modifiers "Auto" :muzzlevelocity "840m/s" :rof "240/min") "47mm Cannone da 47/32 M35" (item :name "47mm Cannone da 47/32 M35" :image "WWIIItalian/Cannon_47mm_CannoneDa4732.jpg" :mass "277kg" :modifiers "AP, HE, HEAT" :muzzlevelocity "630m/s" :range "7000m") "75mm Obice da 75/18 M34" (item :name "75mm Obice da 75/18 M34" :image "WWIIItalian/Cannon_ObiceDa7518M34.jpg" :mass "1ton" :modifiers "AP, HE, HEAT" :muzzlevelocity "425m/s" :range "9564m"))) "WWII Italian Infantry" (section :name "WWII Italian Infantry" :unitmap (unitmap :Blackshirt (unit :name "Blackshirt" :image "WWIIItalian/Infantry_Blackshirt.png" :reference "* Fascist paramilitary groups in Italy. * Their methods became harsher as Mussolini's power grew, and they used violence, torture, intimidation, and murder against Mussolini's opponents. One of their distinctive techniques was force-feeding castor oil." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Black Brigade" (unit :name "Black Brigade" :image "WWIIItalian/Infantry_BlackBrigade.png" :reference "* Italian dictator Benito Mussolini was arrested after the Italian Grand Council of Fascism, overthrew him and began negotiations with the Allies for Italy's withdrawal from the war. Mussolini was rescued by German paratroopers. He was then installed by the Germans as the President of the Italian Social Republic (RSI). The RSI was to be an Italian regime which was to nominally administer the German-occupied northern Italy. As the Blackshirts were disbanded by the terms of the armistice, the Black Brigade was formed out of those still loyal to the fascist cause." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Italian Forward Observer" (unit :name "Italian Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Italian Vehicles" (section :name "WWII Italian Vehicles" :unitmap (unitmap "Carro Armato L6/40" (unit :name "Carro Armato L6/40" :image "WWIIItalian/TankLt_CarroArmatoL6Token.png" :reference "* Although a good light tank for its size, it was already obsolete by the time of its introduction. The low silhouette made it useful for reconnaissance, and its armament was effective against any light vehicles it may encounter. However, due to lack of suitable medium tanks, it was often employed in a combat role, for which it was unsuited." :classification "Lt. Tank" :crew "2" :mass "6.6tons" :height "2m" :length "3.8m" :range "200km" :speedland "42kph" :width "2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "40mm" :under "6mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Carro Armato M13/40" (unit :name "Carro Armato M13/40" :image "WWIIItalian/TankLt_M13CarroArmatoToken.png" :classification "Lt. Tank" :crew "4" :mass "14tons" :height "2.4m" :length "5m" :range "200km" :speedland "32kph" :width "2.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "42mm" :over "15mm" :under "6mm" :side "25mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Semovente 47/32" (unit :name "Semovente 47/32" :image "WWIIItalian/TD_Semovente47.png" :classification "Tank Destroyer" :crew "3" :mass "6.4tons" :height "1.6m" :length "3.8m" :range "200km" :speedland "42kph" :width "2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Semovente 75/18" (unit :name "Semovente 75/18" :image "WWIIItalian/TD_Semovente47.png" :reference "* Though it was technically similar to the StuG III, it had a totally different role, serving as divisional artillery instead of a pure assault gun. Though their role was divisional artillery, they could fire as indirect support, and if necessary, also act as an assault gun and anti-tank vehicle." :classification "Artillery" :crew "3" :mass "14.4tons" :height "1.8m" :length "5m" :range "230km" :speedland "32kph" :width "2.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Italian Aircraft" (section :name "WWII Italian Aircraft" :unitmap (unitmap "Fiat G50" (unit :name "Fiat G50" :image "WWIIItalian/Fighter_Fiat_G50Token.png" :reference "* In Africa, Italian pilots flying the G.50 managed to shoot down the faster and better armed Hurricane fighter. * In the hands of expert pilots, the Fiat G.50 could score multiple kills in a single action" :classification "Lt. Aircraft" :crew "1" :mass "2.7tons" :height "3m" :length "7.8m" :range "670km" :speedair "484kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Fiat CR.42 Falco" (unit :name "Fiat CR.42 Falco" :summary "* The primary fighter of the Italian Air Force at the outbreak of the war. Although outdated by monoplane fighters, it still acquitted itself well in North Africa until the advent of more advanced Allied fighters. The Fiat CR.42 was the last of the Fiat biplane fighters to enter frontline service as a fighter, and represented the epitome of the type." :titles "Falcon" :classification "Lt. Aircraft" :crew "1" :mass "2.3tons" :height "3.6m" :length "8.25m" :range "780km" :speedair "441kph" :width "9.7m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Savoia-Marchetti SM.81" (unit :name "Savoia-Marchetti SM.81" :summary "* Bomber * Despite being too slow to remain competitive as a bomber, it was one of the most flexible, reliable and important aircraft of the Regia Aeronautica from 1935 to 1944, and adapted to second line duties in performing a wide range of tasks." :classification "Hvy. Aircraft" :crew "6" :mass "10.5tons" :height "4.3m" :length "18.3m" :range "1500km" :speedair "347kph" :width "24m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4")))))))) (func chapter_wwii_japanese_equipment : base/chapter (chapter :name "WWII Japanese Equipment" :sectionmap (sectionmap "WWII Japanese Weapons" (section :name "WWII Japanese Weapons" :itemmap (itemmap "8mm Type 94" (item :name "8mm Type 94" :reference "* The gun became notorious for a design flaw that allowed it to be fired with a round in the chamber by pressing a projecting sear on the side of the receiver. The gun was a commercial failure, and is frequently described as the 'worst service pistol ever issued'" :summary "8mm Semiautomatic Pistol" :classification "Pistol") "6.5mm Type 97" (item :name "6.5mm Type 97" :summary "Bolt Action Sniper Rifle" :classification "Rifle") "7.7mm Type 99" (item :name "7.7mm Type 99" :image "WWIIJapanese/Rifle_ArisakaType99.jpg" :reference "* As a bolt action rifle, the Type 99 was a very solid weapon, but was completely outclassed by the semi-automatic rifles deployed by the Allies." :summary "Bolt Action Rifle" :classification "Rifle") "6.5mm Type 96 LMG" (item :name "6.5mm Type 96 LMG" :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "7.7mm Type 97 MG" (item :name "7.7mm Type 97 MG" :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "Type 93 Flamethrower" (item :name "Type 93 Flamethrower" :classification "Flamethrower" :crew "2" :mass "26kg" :modifiers "Fire, Auto" :range "20m") "13mm Type 93 AA" (item :name "13mm Type 93 AA" :classification "Hvy. MG" :length "1.4m" :mass "42kg" :muzzlevelocity "805m/s" :rof "250/min") "20mm Type 99 Cannon" (item :name "20mm Type 99 Cannon" :image "WWIIJapanese/Cannon_20mmType99.jpg" :classification "Cannon" :length "1.3m" :mass "23kg" :modifiers "Auto" :muzzlevelocity "600m/s" :rof "520/min") "25mm Type 96 Autocannon" (item :name "25mm Type 96 Autocannon" :image "WWIIJapanese/Autocannon_25mmType96.jpg" :reference "* The Type 96 was the standard medium antiaircraft weapon of the Imperial Japanese Navy, and was used on virtually every warship in combat in World War II. It was also used in land bases in the Japanese Empire and in the Japanese overseas combat fronts." :classification "Cannon" :crew "3" :length "1.5m" :mass "785kg" :modifiers "Auto" :muzzlevelocity "900m/s" :range "6.8km" :rof "110/min") "37mm Type 94 Cannon" (item :name "37mm Type 94 Cannon" :classification "Cannon" :modifiers "AP, HE") "57mm Type 97 Cannon" (item :name "57mm Type 97 Cannon" :classification "Cannon" :modifiers "AP, HE") "76mm/60 Type 98 Cannon" (item :name "76mm/60 Type 98 Cannon" :classification "Cannon" :length "4.7m" :mass "1.3tons" :muzzlevelocity "910m/s" :rof "25") "127mm/45 Cannon" (item :name "127mm/45 Cannon" :image "WWIIJapanese/Cannon_127mm45.jpg" :classification "Cannon" :length "5.5m" :mass "3.1tons" :muzzlevelocity "825m/s" :rof "5/min") "155mm/60 Naval Artillery" (item :name "155mm/60 Naval Artillery" :classification "Cannon" :length "9.6m" :mass "12.5tons" :muzzlevelocity "920m/s" :rof "5/min") "200mm/50 Naval Artillery" (item :name "200mm/50 Naval Artillery" :classification "Cannon" :length "10m" :mass "18tons" :muzzlevelocity "835m/s" :range "29km" :rof "4/min") "460mm/45 Naval Artillery" (item :name "460mm/45 Naval Artillery" :reference "* The 460mm / 18.1 in gun fired 1.36 ton shells." :classification "Cannon" :length "21m" :mass "164tons" :muzzlevelocity "780m/s" :range "42km" :rof "2/min") "Torpedo Type 91" (item :name "Torpedo Type 91" :image "WWIIJapanese/Torpedo_Type91.jpg" :summary "* Aerial Torpedo" :classification "Torpedo" :explosive "235kg" :length "5.2m" :mass ".85tons" :range "2km" :speedwater "78kph") "Torpedo Type 93 Long Lance" (item :name "Torpedo Type 93 Long Lance" :image "WWIIJapanese/Torpedo_Type93LongLance.jpg" :reference "* Japanese destroyers and cruisers were able to launch their torpedoes from about 20 km at the unsuspecting Allied warships. The Allied warships were expecting enemy torpedoes to be fired at less than 10 km, their own torpedo range. The Allies believed these torpedoes had been fired from Japanese submarines. The capabilities of the Type 93 went mostly unrecognized by the Allies until one was captured intact in 1943." :classification "Torpedo" :explosive "490kg" :length "9m" :mass "2.8tons" :range "22km" :speedwater "90kph") "Torpedo Type 95" (item :name "Torpedo Type 95" :reference "* Based on the formidable Type 93 Long Lance, the Type 95 was the fasted torpedo in use by any navy at the time. * It is 3x the range of the American Mark 14 with the same speed. * Its warhead was the largest of any submarine torpedo and second only to the Type 93 surface torpedo. * Some have claimed this to be the best torpedo of WWII." :classification "Torpedo" :explosive "405kg" :range "9km" :speedwater "92kph") "Kaiten Kamikaze Torpedo" (item :name "Kaiten Kamikaze Torpedo" :reference "* Early designs allowed the pilot to escape after the final acceleration toward the target, although whether this could have been done successfully is doubtful. There is no record of any pilot attempting to escape or intending to do so, and this provision was dropped from later production. * Kaiten attacks resulted in sinking only two American vessels with the loss of 162 American lives, in comparison to 106 kaiten pilots who lost their lives." :classification "Torpedo" :explosive "1.4tons" :length "15m" :mass "8.3tons" :range "78km" :speedwater "56kph")))))) (func chapter_wwii_japanese_units : base/chapter (chapter :name "WWII Japanese Units" :sectionmap (sectionmap "WWII Japanese Infantry" (section :name "WWII Japanese Infantry" :unitmap (unitmap "Arisaka Riflemen" (unit :name "Arisaka Riflemen" :image "WWIIJapanese/Infantry_RiflemenToken.png" :summary "Composed of 7 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Japanese LMG" (unit :name "Japanese LMG" :summary "Composed of 4 riflemen, 1 LMG, and squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Arisaka Sniper" (unit :name "Arisaka Sniper" :image "WWIIJapanese/Infantry_Sniper.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Special Naval Landing Forces" (unit :name "Special Naval Landing Forces" :titles "SNLF" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "Teishin Shudan" (unit :name "Teishin Shudan" :image "WWIIJapanese/Infantry_ParatrooperToken.png" :reference "Commando Paratroopers" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Airborne Assault" (unitability :name "Airborne Assault"))))) "Japanese Commander" (unit :name "Japanese Commander" :image "WWIIJapanese/Infantry_CommanderToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Japanese Forward Observer" (unit :name "Japanese Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Japanese Vehicles" (section :name "WWII Japanese Vehicles" :unitmap (unitmap "Type 95 Ha-Go" (unit :name "Type 95 Ha-Go" :image "WWIIJapanese/TankLt_Type95Ha-go_Token.png" :reference "* One key to the Japanese success in Malaya was the unexpected presence of their tanks in wet jungle terrain where the British did not believe tanks could be used." :classification "Lt. Tank" :crew "3" :mass "7.4tons" :length "4.4m" :range "250km" :speedland "45kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Type 97 Chi-Ha" (unit :name "Type 97 Chi-Ha" :image "WWIIJapanese/TankMed_Type97ChiHa.png" :classification "Med. Tank" :crew "4" :mass "16tons" :length "5.5m" :range "210km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "33mm" :side "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII Japanese Aircraft" (section :name "WWII Japanese Aircraft" :unitmap (unitmap "J2M Raiden Fighter" (unit :name "J2M Raiden Fighter" :image "WWIIJapanese/Fighter_J2M3_Raiden_Token.png" :classification "Lt. Aircraft" :crew "1" :mass "3.5tons" :height "3.8m" :length "9.7m" :range "560km" :speedair "612kph" :width "10.8m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "A6M Zero Naval Fighter" (unit :name "A6M Zero Naval Fighter" :image "WWIIJapanese/FighterNavy_A6M5_Zero_Token.png" :reference "* Designed for attack, the Zero gave precedence to maneuverability and firepower at the expense of protection * When it was introduced, the Zero was the best carrier-based fighter in the world and it was greatly feared by Allied pilots. Excellent maneuverability and very long range made it one of the finest fighters of its era. By 1943, the allies produced more powerful fighters and the A6M became obsolete." :classification "Lt. Aircraft" :crew "1" :mass "2.4tons" :height "3m" :length "9m" :range "3105km" :speedair "533kph" :width "12m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "4mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "B5N Kate Torpedo Bomber" (unit :name "B5N Kate Torpedo Bomber" :image "WWIIJapanese/TorpedoBomber_B5N1_Kate_Token.png" :reference "* High performance but little armor * Torpedo may be replaced with 3x 250kg Bombs or 6x 60kg Bombs" :classification "Lt. Aircraft" :crew "3" :mass "3.8tons" :height "3.7m" :length "10.3m" :range "1992km" :speedair "378kph" :width "15.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "D3A Val Dive Bomber" (unit :name "D3A Val Dive Bomber" :image "WWIIJapanese/DiveBomber_D3A1_VALToken.png" :reference "* Scored over 80% hits in Indian Ocean vs British * Able to survive as a fighter * Could replace 250kg Bomb with 2x 60kg Bombs" :classification "Lt. Aircraft" :crew "2" :mass "3.6tons" :height "3.9m" :length "10.2m" :range "1352km" :speedair "430kph" :width "14.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Ohka Kamikaze Rocket" (unit :name "Ohka Kamikaze Rocket" :image "WWIIJapanese/KamikazeRocket_Ohka_Token.png" :reference "* Essentially a 1,200 kg bomb with wooden wings powered by three solid-fuel rocket motors, the Type 11 achieved great speed but with limited range. This was problematic, as it required the slow, heavily-laden mother aircraft to approach within 37 km of the target, making them very vulnerable to defending fighters. * Seven US ships were damaged or sunk by Ohkas throughout the war." :classification "Missile" :crew "1" :mass "2.14tons" :height "1.2m" :length "6.1m" :range "36km" :speedair "804kph" :width "5.1m" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "A6M2 Rufe Seaplane" (unit :name "A6M2 Rufe Seaplane" :image "WWIIJapanese/Seaplane_A6M2_Rufe_Token.png" :reference "* This floatplane was developed from the A6M Zero for supporting amphibian operations and defending remote bases." :crew "1" :mass "2.5tons" :height "4.3m" :length "10.1m" :range "1782km" :speedair "516kph" :width "12m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "4mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Japanese Naval Vessels" (section :name "WWII Japanese Naval Vessels" :unitmap (unitmap "Kaga Class Converted Carrier" (unit :name "Kaga Class Converted Carrier" :image "WWIIJapanese/Carrier_KagaToken.png" :summary "Akagi carried - 21 Zeros, 21 Vals, and 21 Kates" :titles "Kaga, Akagi" :classification "Hvy. Naval Vessel" :crew "2016" :mass "38.8ktons" :length "247m" :range "18520km" :speedwater "52kph" :width "32m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :back "152mm" :over "152mm" :under "152mm" :side "152mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Soryu Class Fast Carrier" (unit :name "Soryu Class Fast Carrier" :image "WWIIJapanese/Carrier_Hiryu.png" :titles "Hiryu, Soryu" :classification "Hvy. Naval Vessel" :crew "1103" :mass "19.5ktons" :length "222m" :range "14000km" :speedwater "64kph" :width "21m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm" :back "45mm" :over "25mm" :under "45mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Fubuki Class Destroyer" (unit :name "Fubuki Class Destroyer" :image "WWIIJapanese/Destroyer_Akatsuki_Token.png" :reference "* Has been called 'the world's first modern destroyer.' It set a new standard for destroyers around the world. The Japanese destroyers were bigger, more powerfully armed, and faster than anything that any other fleet possessed." :classification "Med. Naval Vessel" :crew "219" :mass "2ktons" :length "118m" :range "9200km" :speedwater "70kph" :width "10m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :under "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Agano Class Light Cruiser" (unit :name "Agano Class Light Cruiser" :image "WWIIJapanese/CruiserLt_Noshiro_Token.png" :classification "Med. Naval Vessel" :crew "726" :mass "7.6ktons" :length "162m" :range "11000km" :speedwater "67kph" :width "15.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm" :over "20mm" :under "60mm" :side "60mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tone Class Hvy. Cruiser" (unit :name "Tone Class Hvy. Cruiser" :image "WWIIJapanese/CruiserHvy_Furutaka_Token.png" :classification "Hvy. Naval Vessel" :crew "874" :mass "11ktons" :length "189m" :range "1852km" :speedwater "67kph" :width "19m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :over "35mm" :under "100mm" :side "100mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Yamato Class Battleship" (unit :name "Yamato Class Battleship" :image "WWIIJapanese/Battleship_YamatoToken.png" :reference "* Largest battleships ever built with largest naval guns ever. Yamato sank after 8 bombs and 13 torpedos caused her magazine to explode." :classification "Hvy. Naval Vessel" :crew "2767" :mass "72ktons" :length "263m" :range "13000km" :speedwater "50kph" :width "39m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "650mm" :over "200mm" :side "410mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Otori Class Torpedo Boat" (unit :name "Otori Class Torpedo Boat" :image "WWIIJapanese/TorpedoBoat_MitsubishiT14_Token.png" :classification "Lt. Naval Vessel" :crew "129" :mass "960tons" :length "88.5m" :range "7400km" :speedwater "56kph" :width "8.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "B1 Type Submarine Carrier" (unit :name "B1 Type Submarine Carrier" :image "WWIIJapanese/Submarine_I29Token.png" :reference "* 15kph Submerged * 100m Test Depth * Fast, very long ranged, and carried a single Yokosuka E14Y seaplane, located in a hangar in front of the conning tower, launched by a catapult. * A submarine could be equipped with 3-6 Kaiten torpedoes on the deck, but this limited dive depth." :titles "I-15 Series" :classification "Submarine" :crew "94" :mass "3654tons" :length "108m" :range "26000km" :speedwater "44kph" :width "9.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Kaidai VII Submarine" (unit :name "Kaidai VII Submarine" :reference "* 15kph Submerged * 80m Test Depth" :classification "Submarine" :crew "86" :mass "2.6ktons" :length "105m" :range "15000km" :speedwater "43kph" :width "8.25m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4")))))))) (func chapter_wwii_soviet_equipment : base/chapter (chapter :name "WWII Soviet Equipment" :sectionmap (sectionmap "WWII Soviet Weapons" (section :name "WWII Soviet Weapons" :itemmap (itemmap "7.62mm Tokarev" (item :name "7.62mm Tokarev" :image "WWIIRussian/Pistol_Tokarev.jpg" :classification "Pistol") "7.62mm SVT-40" (item :name "7.62mm SVT-40" :image "WWIIRussian/Rifle_SVT40.jpg" :summary "7.62mm Semiautomatic Rifle" :classification "Rifle") "7.62mm Mosin-Nagant" (item :name "7.62mm Mosin-Nagant" :image "WWIIRussian/Rifle_MosinNagantM1891.jpg" :summary "7.62mm Bolt-action Rifle" :classification "Rifle") "7.62mm PPSh-41 SMG" (item :name "7.62mm PPSh-41 SMG" :image "WWIIRussian/SMG_PPSh41.jpg" :classification "Lt. MG" :modifiers "Auto" :range "200m") "ROKS Flamethrower" (item :name "ROKS Flamethrower" :classification "Flamethrower" :crew "1" :mass "22kg" :modifiers "Fire, Auto" :range "25m") "7.62mm Degtyaryov LMG" (item :name "7.62mm Degtyaryov LMG" :classification "Med. MG" :modifiers "Auto, +1 Prepare") "12.7mm DShK MG" (item :name "12.7mm DShK MG" :classification "Hvy. MG" :length "1.6m" :mass "34kg" :modifiers "Auto" :rof "600/min") "12.7mm UBS MG" (item :name "12.7mm UBS MG" :reference "* Used by the vast majority of Soviet military aircraft * It's rate of fire was nearly twice that of the comparable M2 Browning machine gun." :classification "Hvy. MG" :mass "21.5kg" :muzzlevelocity "825m/s" :rof "1000/min") "20mm ShVAK Cannon" (item :name "20mm ShVAK Cannon" :classification "Cannon" :length "1679mm" :mass "40kg" :modifiers "Auto, HE, AP" :muzzlevelocity "775m/s" :rof "750/min") "76.2mm F-34 Cannon" (item :name "76.2mm F-34 Cannon" :classification "Cannon" :modifiers "AP, HE") "76.2mm ZiS-3Sh Cannon" (item :name "76.2mm ZiS-3Sh Cannon" :classification "Cannon" :modifiers "AP, HE") "85mm D-5T Cannon" (item :name "85mm D-5T Cannon" :classification "Cannon" :modifiers "AP, HE") "85mm ZiS-S-53 Cannon" (item :name "85mm ZiS-S-53 Cannon" :classification "Cannon" :modifiers "AP, HE") "100mm D-10S Cannon" (item :name "100mm D-10S Cannon" :classification "Cannon" :modifiers "AP, HE") "122mm A-19 Cannon" (item :name "122mm A-19 Cannon" :classification "Cannon" :muzzlevelocity "806m/s" :rof "2/min") "122mm M-30 Howitzer" (item :name "122mm M-30 Howitzer" :summary "* M-30 howitzers were primarily employed for indirect fire against enemy personnel. It was also used against field fortifications, clearing minefields and breaching barbed wire. Fragments created by the explosion could penetrate up to 20 mm of armour." :classification "Cannon" :modifiers "Indirect, HE") "152mm M-10 Howitzer" (item :name "152mm M-10 Howitzer" :classification "Cannon" :modifiers "HE") "120mm M1938 Mortar" (item :name "120mm M1938 Mortar" :classification "Artillery" :modifiers "HE") "133mm M-13 Rocket" (item :name "133mm M-13 Rocket" :summary "* Warhead is 22kg" :classification "Missile" :length "1.8m" :mass "42kg" :range "5.4km")))))) (func chapter_wwii_soviet_units : base/chapter (chapter :name "WWII Soviet Units" :sectionmap (sectionmap "WWII Soviet Infantry" (section :name "WWII Soviet Infantry" :unitmap (unitmap "Soviet Rifle Team" (unit :name "Soviet Rifle Team" :image "WWIIRussian/Infantry_RiflemenToken.png" :summary "Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Soviet Light MG Team" (unit :name "Soviet Light MG Team" :image "WWIIRussian/Infantry_MGToken.png" :summary "Composed of 4 riflemen and an LMG" :classification "Med. MG" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Soviet SMG Team" (unit :name "Soviet SMG Team" :image "WWIIRussian/Infantry_SMGToken.png" :reference "* The Soviets would often equip whole regiments and even entire divisions with the PPSh-41, giving them unmatched short-range firepower." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Russian Commander" (unit :name "Russian Commander" :image "WWIIRussian/Infantry_CommanderToken.png" :classification "Med. Infantry") "Soviet NKVD" (unit :name "Soviet NKVD" :image "WWIIRussian/Infantry_NKVDToken.png" :reference "* People's Commissariat for Internal Affairs was the public and secret police organization of the Soviet Union that directly executed the rule of terror, including political repression, during the Stalinist era." :classification "Med. Infantry") "Soviet Sniper" (unit :name "Soviet Sniper" :image "WWIIRussian/Infantry_SniperToken.png" :reference "* One of the best known battles involving snipers, and also the battle that made the Germans reinstate their specialized sniper training, was the Battle of Stalingrad. Their defensive position inside a city filled with rubble meant that Soviet snipers were able to inflict significant casualties." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Soviet Forward Observer" (unit :name "Soviet Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M1938 Mortar Team" (unit :name "M1938 Mortar Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Russian Medic" (unit :name "Russian Medic" :classification "Med. Infantry") "Russian Sapper" (unit :name "Russian Sapper" :image "WWIIRussian/Infantry_SapperToken.png" :classification "Hvy. Infantry"))) "WWII Soviet Vehicles" (section :name "WWII Soviet Vehicles" :unitmap (unitmap :T-34/76 (unit :name "T-34/76" :image "WWIIRussian/TankMed_T34-76Token.png" :reference "* Politcal pressure came to halt production of the T-34. This pressure was from the developer of the KV-1 and IS-2 tanks which were in competition with the T-34." :classification "Med. Tank" :crew "4" :mass "28.5tons" :length "6.7m" :range "400km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm Sloped" :back "45mm" :over "20mm" :under "20mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :T-34/85 (unit :name "T-34/85" :image "WWIIRussian/TankMed_T34-85Token.png" :classification "Med. Tank" :crew "5" :mass "32tons" :length "6.7m" :range "360km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "90mm Sloped" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "OT-34 85mm" (unit :name "OT-34 85mm" :image "WWIIRussian/TankMed_T34-85Token.png" :classification "Med. Tank" :crew "5" :mass "32tons" :length "6.7m" :range "360km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "90mm Sloped" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :KV-1 (unit :name "KV-1" :image "WWIIRussian/TankHvy_KV1Token.png" :classification "Hvy. Tank" :crew "5" :mass "45tons" :length "6.7m" :range "250km" :speedland "28kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "130mm" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :KV-2 (unit :name "KV-2" :image "WWIIRussian/TankHvy_KV-2Token.png" :classification "Hvy. Tank" :crew "5" :mass "53tons" :length "6.8m" :range "140km" :speedland "25.6kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "110mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :IS-2 (unit :name "IS-2" :image "WWIIRussian/TankHvy_IS-2Token.png" :reference "* Proving-ground tests showed that the A-19 could penetrate clear through the front and rear armor of the German Panther tank. When it didn't penetrate, it would often knock the turret right off a tank. It was, however, slow to reload firing only 2/minute." :classification "Hvy. Tank" :crew "4" :mass "46tons" :length "9.9m" :range "240km" :speedland "37kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "160mm Sloped" :under "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-76 (unit :name "SU-76" :image "WWIIRussian/SPG_SU76MToken.png" :classification "Tank Destroyer" :crew "4" :mass "10.2tons" :length "5m" :range "320km" :speedland "45kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "35mm" :side "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-85 (unit :name "SU-85" :image "WWIIRussian/SPG_SU-85Token.png" :classification "Tank Destroyer" :crew "4" :mass "29.6tons" :length "6.1m" :range "400km" :speedland "55kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-100 (unit :name "SU-100" :image "WWIIRussian/SPG_SU-100Token.png" :classification "Tank Destroyer" :crew "4" :mass "31.6tons" :length "9.5m" :range "320km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "75mm" :over "20mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-122 (unit :name "SU-122" :image "WWIIRussian/SPG_SU-122Token.png" :reference "* Even a Tiger was once heavily damaged by SU-122 assault guns firing high-explosive shells." :classification "Hvy. Tank" :crew "4" :mass "31tons" :length "7m" :range "300km" :speedland "55kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BM-13 Katyusha" (unit :name "BM-13 Katyusha" :image "WWIIRussian/RocketLauncher_KatyushaToken.png" :classification "Hvy. Rocket Launcher" :crew "2+1" :mass "4.2tons" :speedland "55kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "ZiS3 76mm" (unit :name "ZiS3 76mm" :image "WWIIRussian/Artillery_ZiS3_76mmToken.png" :reference "* The first ZiS-3 gun was designed and built in secret from from Red Army authorities, who ignored the Red Army's need for light and medium field guns. The authorities believed Nazi propaganda that German heavy tanks carried exceptionally strong armour. So the project was run purely on the initiative of Grabin, his design bureau and the Artillery Factory No. 92 head and his deputies. None of them informed state authorities about the ZiS-3 project until the authorities belatedly realized that Nazi tanks were often destroyed by even lighter guns." :classification "Artillery" :crew "7" :mass "2.65tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Soviet M3 Scout Car" (unit :name "Soviet M3 Scout Car" :image "WWIIRussian/Car_M3ScoutCarToken.png" :reference "Lend Lease from US" :classification "Car" :crew "1+7" :mass "5.7tons" :length "5.6m" :range "403km" :speedland "81kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BZ-35 Fuel Truck" (unit :name "BZ-35 Fuel Truck" :image "WWIIRussian/Truck_BZ-35_RefuelLorryToken.png" :classification "Truck" :crew "1+2" :mass "4.2tons" :speedland "55kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII Soviet Aircraft" (section :name "WWII Soviet Aircraft" :unitmap (unitmap "P-39 Airacobra" (unit :name "P-39 Airacobra" :image "WWIIRussian/Fighter_P39Airacobra.png" :reference "* Lend Lease from US * The low-speed, low-altitude turning nature of most air combat on the Russian Front suited the P-39's strengths: sturdy construction, reliable radio gear, and adequate firepower. The second-highest scoring Allied ace, Aleksandr Pokryshkin, flew the P-39. His unofficial score stands at nearly 60 Luftwaffe aircraft. His wingman, Grigori Rechkalov, scored 57 victories with the P-39. This is the highest score ever gained by any pilot with any U.S.-made aircraft." :classification "Lt. Aircraft" :crew "1" :mass "3.8tons" :height "3.8m" :length "9.2m" :range "840km" :speedair "605kph" :width "10.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Lavochkin La-5" (unit :name "Lavochkin La-5" :reference "* Exhaust gas often entered in the cockpit due to poor insulation of the engine compartment. Consequently, pilots ignored orders and frequently flew with their canopies open." :classification "Lt. Aircraft" :crew "1" :mass "3.3tons" :height "2.5m" :length "8.7m" :range "765km" :speedair "648kph" :width "9.8m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Yakovlev Yak-9" (unit :name "Yakovlev Yak-9" :reference "* The most numerous Soviet fighter of the war" :classification "Lt. Aircraft" :crew "1" :mass "3.2tons" :height "3m" :length "8.6m" :range "675km" :speedair "672kph" :width "9.7m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))))))
nx/tactics/books/world_wars / tacticsbook
Description:
Function Name:
  • tacticsbook
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func tacticsbook : base/book (base/book :name "World Wars" :image "WorldWars.jpg" :chaptermap (base/chaptermap "World Wars Overview" (chapter_world_wars_overview) "WWI Campaign" (chapter_wwi_campaign) "WWII Overview" (chapter_wwii_overview) "WWII Western Front" (chapter_wwii_western_front) "WWII Eastern Front" (chapter_wwii_eastern_front) "WWII North African Theatre" (chapter_wwii_north_african_theatre) "WWII East African Theatre" (chapter_wwii_east_african_theatre) "WWII Middle East Theatre" (chapter_wwii_middle_east_theatre) "WWII Mediterranean Theatre" (chapter_wwii_mediterranean_theatre) "WWII Pacific Theatre" (chapter_wwii_pacific_theatre) "WWI British Forces" (chapter_wwi_british_forces) "WWI French Forces" (chapter_wwi_french_forces) "WWI German Forces" (chapter_wwi_german_forces) "WWII Equipment" (chapter_wwii_equipment) "WWII American Equipment" (chapter_wwii_american_equipment) "WWII American Units" (chapter_wwii_american_units) "WWII British Equipment" (chapter_wwii_british_equipment) "WWII British Units" (chapter_wwii_british_units) "WWII French Equipment" (chapter_wwii_french_equipment) "WWII French Units" (chapter_wwii_french_units) "WWII German Equipment" (chapter_wwii_german_equipment) "WWII German Units" (chapter_wwii_german_units) "WWII Italian Units" (chapter_wwii_italian_units) "WWII Japanese Equipment" (chapter_wwii_japanese_equipment) "WWII Japanese Units" (chapter_wwii_japanese_units) "WWII Soviet Equipment" (chapter_wwii_soviet_equipment) "WWII Soviet Units" (chapter_wwii_soviet_units) )))
nx/tactics/books/world_wars / chapter_world_wars_overview
Description:
Function Name:
  • chapter_world_wars_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_world_wars_overview : base/chapter (chapter :name "World Wars Overview" :sectionmap (sectionmap "Why Tactics: World Wars?" (section :name "Why Tactics: World Wars?" :summary "* Compared to Other Games * Vs. Axis &amp; Allies * Vs. Axis &amp; Allies Miniatures * Vs. Diplomacy * Vs. Risk * Vs. Memoir '44") "WWI Land Warfare" (section :name "WWI Land Warfare" :summary "* Infantry * Cavalry * Rifles * Machine Guns * Mortars * Poison Gas * Trench Warfare * Cannons * Artillery * High Ground * Fortifications * Tanks") "WWI Aerial Warfare" (section :name "WWI Aerial Warfare" :summary "* Biplanes * Balloons * Zepplins * Machine Guns * Bombs") "WWII Land Warfare" (section :name "WWII Land Warfare" :summary "* Infantry * Rifles * Machine Guns * SMG's * Mortars * Cannons * Artillery * High Ground * Fortifications * Tanks * Mechanized Infantry") "WWII Naval Warfare" (section :name "WWII Naval Warfare" :summary "* Aircraft Carriers * Battleships * Destroyers * Cruisers * Submarines * Torpedo Boats * Radar * Naval Cannons") "WWII Aerial Warfare" (section :name "WWII Aerial Warfare" :summary "* Prop Planes * Jet Planes * Landing Strips * Aircraft Carriers * Machine Guns * Strafing * Tank Killing * Dive Bombing * Flying Fortress * Torpedo Bombing * Carpet Bombing * Strategic Bombing"))))
nx/tactics/books/world_wars / chapter_wwi_campaign
Description:
Function Name:
  • chapter_wwi_campaign
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwi_campaign : base/chapter (chapter :name "WWI Campaign" :sectionmap (sectionmap :Overview (section :name "Overview" :summary "* Events Leading to War * Overview of the War * Aftermath") "WWI Scenarios" (section :name "WWI Scenarios" :scenariomap (scenariomap "Battle of Verdun, 1916" (scenario :name "Battle of Verdun, 1916" :reference "The battlefield with the highest density of dead per square yard." :summary "* The Battle of Verdun was a ten month long ordeal between the French and German armies and is considered one of the most brutal events of WWI. Both the French and German armies suffered incredibly with an estimated 540,000 French and 430,000 German casualties and no strategic advantages were gained for either side. * In the years preceding World War I, Germany became Europe's leading industrial power. France felt increasingly threatened by German industrialization. As a response to the German threat of invasion, France built a continuous line of sunken forts from the Swiss frontier to the French city of Verdun making Verdun a vital strong point. * The German attack began on February 21, 1916 with an intense artillery bombardment of the forts surrounding Verdun. The French army retreated to predetermined positions while the German army pounded through the French lines. * Although three French forts near Verdun had capitulated to German forces, Verdun itself remained undefeated. * By April 1916, the French Air Force had secured the sky over Verdun, which would help the French to successfully defend the area. The British attack and a Russian offensive in the east forced the German army to transfer troops away from Verdun. * By December 1916, the French had advanced to their February 1916 lines, their original position. No new advantage had been gained for either side.") "Battles of the Marne, 1914, 1918" (scenario :name "Battles of the Marne, 1914, 1918" :summary "* On September 4, 1914, the rapid advances of the German army through Belgium and northern France caused panic in the French army and troops were rushed from Paris in taxis to halt the advance. Combined with the BEF (British Expeditionary Force) the Germans were eventually halted and the War settled into the familiar defensive series of entrenchment's. * Ironically, by the end of May, 1918, the Germans had again reached the Marne after the enormous successes of Ludendorff's offensives of that year. The intervening four years had cost hundreds of thousands of lives and the armies were still, literally, exactly where they had started.") "Battles of Ypres, 1914, 1915, 1917" (scenario :name "Battles of Ypres, 1914, 1915, 1917" :summary "* There were in fact three battles fought around the Ypres salient during the War. * The first, in 1914 was an attempt by the BEF to halt the rapid advances made by the Germans. * The second, in 1915, was notable for the first use of poison gas by the Germans. * However, it is the long-planned offensive of July 31, 1917, that holds the most significance. Here, a combination of over-ambitious aims, appalling weather conditions, and misguided persistence by Haig led to horrific losses. By the time the offensive was called off total casualties for both sides had been approximately 250,000. The horrors of the battle, in which men drowned in liquid mud has become synonymous with the images of the War.") "Battle of the Somme, 1916" (scenario :name "Battle of the Somme, 1916" :summary "* At 0730 hours on the 1st July, 1916, after a week long artillery bombardment launched the now infamous 'Big Push' attack across the river Somme. The British intended to breakthrough the German defenses in a matter of hours. * The mistrust that High Command had of the so-called 'New Armies' manifested itself in the orders to the troops to keep uniformed lines and to march towards the enemy across no-man's land. This, coupled with the failure of the artillery bombardment to dislodge much of the German wire, or to destroy their machine-gun posts, led to one of the biggest slaughters in military history. * After the first day, with a gain of only 1.5km, the British had suffered 57,470 casualties. Despite this, Haig pressed on with the attack until November 19th of the same year. For the meager achievements, total losses on the British and Imperial side numbered 419,654 with German casualties between 450,000 and 680,000. When the offensive was eventually called off the British were still 3 miles short of Bapaume and Serre, part of their first-day objectives.") "Battle of Cambrai, 1917" (scenario :name "Battle of Cambrai, 1917" :summary "On November 20, 1917, the British launched the first full-scale offensive that was designed exclusively to accommodate the British secret weapon, the tank (so-called because when the first shipment came from England they were described as water tanks to maintain secrecy). A surprise artillery barrage started the offensive and 476 tanks, packed tightly for a mass attack moved against the German lines. Supported by infantry the gains were dramatic, breaching the almost impregnable Hindenberg line to depths of 4-5 miles in some places. However, these gains seemed to surprise British High Command equally as much as the Germans, and the following cavalry failed to take advantage. Nevertheless, Cambrai demonstrated how a well-thought out attack, combining tanks en masse with surprise, could be used to break the trench deadlock."))))))
nx/tactics/books/world_wars / chapter_wwii_overview
Description:
Function Name:
  • chapter_wwii_overview
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_overview : base/chapter (chapter :name "WWII Overview" :sectionmap (sectionmap "Events Leading to War" (section :name "Events Leading to War") "Overview of the War" (section :name "Overview of the War" :summary "* Ground Combat - WWI began the use of mechanized warfare, but WWII redefined it in every way. The Germans invented the Blitzkrieg to leverage the power of mechanized units to shatter their opponents traditional defenses. Tank warfare was defined in WWII, however, because units must still stop to target, they cannot generally move at top speeds. Map scale is therefore based on moderately slow ground unit movement. * Naval Combat - WWII was the turning point of Naval Warfare when air power made traditional naval combat obsolete. Even submarines and torpedoes were insignificant compared to the effect of air power. Map scale is therefore based primarily on aircraft speed.") "Turning Points of the War" (section :name "Turning Points of the War" :summary "* While the unconditional surrender of German armed forces represented a resounding Allied success, in retrospect, it is clear that particular factors and choices strongly affected the pace and course of the campaign. * D-Day - The Allied deception as to where the D-Day landings would take place was very successful, with the majority of the German command convinced the landings would take place at Calais. The Germans underestimated Allied willingness to risk an amphibious assault over a route longer than the shortest path across the English Channel. * Hedgerows - While the Allies meticulously planned the D-Day landings, they failed to assess the countryside immediately beyond the beaches, which resulted in the Germans very successfully using the hedgerow country as a system of natural defensive works that took the Allies two months to clear at a staggering cost in infantry casualties. Historians have also asserted the U.S. Army should have landed on the eastern end of the Normandy beaches and formed the northern wing of Allied forces in Northwest Europe because the mobility of American forces could have been better used in the more open terrain and most direct route to Berlin that the northern approach offered. As it was, the pre-invasion basing of troops in England determined the arrangement of the landing forces. * Underestimation - While the Germans had reason to occasionally doubt Allied military proficiency, it is clear the Germans too often underestimated Allied competency. This habit of underestimation led to the rejection of any notion that the Allies might have broken German military ciphers, most famously the Enigma code. The ability to monitor German military communications was an Allied strategic asset of the highest order. Less dramatically, the Germans often underestimated Allied troop proficiency, a habit that resulted in occasional sharp defeats for overconfident German units. * Manpower - The German ability to form a cohesive defensive line after the disaster their forces endured in Normandy was due almost entirely to the ability of the German Ersatzheer (Replacement Army) to quickly deploy large numbers of new troops. These inexperienced troops were paired with seasoned cadres who swiftly transformed the replacements into combat units. Thus, while the Allies took large numbers of German prisoners during their advance from Normandy to the German border, they underestimated the ability of the Germans to reconstitute their forces under very disadvantageous circumstances. The Allies also seriously underestimated the infantry casualties their forces would suffer in Northwestern Europe. Shortages of American manpower were strongly aggravated by a tendency to attack head-on regardless of circumstances, a habit that was particularly in evidence during the months of fighting in the Huertgen Forest. The Allied logistical crisis that dominated their operations from September through December had the further pernicious effect of limiting the number of divisions in England that could be moved onto the continent to reinforce the front, since the Allies were only able to supply a limited number of divisions east of the Seine River. After the Allies mastered the logistical crisis, the Americans diverted divisions bound for the Pacific Theater to Europe in a belated realization that more divisions were needed for operations in Europe. * German Strategic Errors - While the Germans achieved strategic surprise with their offensive in the Ardennes, the Panzer divisions that had been so painstakingly rebuilt could have been more profitably used to defend the Siegfried Line and the Rhineland, or perhaps, in the defense of Berlin against the Red Army. The German thrust failed to shatter their enemies' alliance and cost Germany high casualties and equipment losses it could ill-afford. This folly was repeated in Alsace in January, but with the added disadvantage this time that the Allies were expecting the attack. * American Strategic Errors - Upon breaking out of Normandy in August, the Americans committed two armored divisions to operations in Brittany when armored units were direly needed for the pursuit of the German army across France. While the port of Brest, France was ultimately captured by the Americans, it consumed operations for an entire month and ultimately did little for the Allied effort because the Germans so thoroughly destroyed the port before it was captured. Out of fear that two wings of their forces might collide, the Allies failed to definitively close the Falaise Gap in August, allowing trapped German forces an escape route to the east. Experienced German leadership cadres evaded Allied forces and were available to reconstitute a cohesive front line along the Siegfried Line. * Antwerp - Although British forces conducted a brilliant pursuit across northern France that resulted in the liberation of the critically important port of Antwerp in early September, they failed to promptly clear the Scheldt Estuary of Germans. The Germans immediately grasped the significance of the Scheldt Estuary and moved in troops to conduct a lengthy defense. The port of Antwerp could not be used until November 28, and strongly contributed to the lengthy logistical crisis that hamstrung Allied operations for four months. * Operation Market-Garden was a double failure in the sense that the resources used for it would have been more profitably committed to clearing the Scheldt Estuary instead of carving out an extended salient that did nothing but extend an already over-extended Allied front line. * Siegfreid Line - Despite grave shortages of riflemen, American operations in front of the Siegfried Line, particularly in U.S. First Army's area, were characterized by bloody frontal assaults. Stubbornness and misplaced notions that the U.S. Army could not allow itself to abandon unprofitable operations saw five infantry divisions shredded in the Huertgen Forest fighting, with the attack being abandoned only in December after the Germans attacked into the Ardennes. The concentration of divisions in the Huertgen Forest also forced a corresponding lack of concentration along the Ardennes front, with the result that only four U.S. divisions were initially available to parry a 26 division German offensive. * Eisenhower - When, in November, the Allies enjoyed significant success in 6th Army Group's area, General Eisenhower refused to reinforce the success and even forbade his commanders in the south to attempt to assault across the Rhine in the area of Strasbourg while the German defenses were in shambles. This lack of bold enterprise was a by-product of General Eisenhower's decision to conduct limited-objective attacks on a broad front even though the Allies lacked a sufficient number of divisions to both man a broad front and concentrate enough combat power in chosen areas to achieve breakthroughs. When American troops reached the Elbe River in mid-April, General Eisenhower unilaterally decided that Berlin was no longer a significant military objective. He knew that Berlin would be deep within the Soviet zone of post-war Germany and saw no reason to fight for land that would have to be given to the Soviets after the war. Eisenhower pointed out to Patton that it was of no military strategic value and would take up a lot of resources to occupy and asked Patton 'Who would want it?' Patton replied 'I think history will answer that question for you.' Unswayed by Patton, Simpson or even Churchill, Eisenhower ordered U.S. forces to halt along the Elbe and Mulde rivers. Thus, these spearheads were practically immobilized while the war raged on for three more weeks. * Bradley - Simultaneously, General Bradley considered the Germans trapped in the Ruhr Pocket to be the most significant threat and committed surprisingly large numbers of U.S. troops to collapse (as opposed to containing) the pocket instead of reinforcing his troops at the Elbe River. As a consequence of Eisenhower's decision, the British 21st Army Group was ordered to drive northeast in the direction of Hamburg instead of proceeding due east in the direction of Berlin. * Propaganda - The Allies proved curiously gullible about German propaganda claiming the existence of a 'National Redoubt' in the Alpine hinterlands of Bavaria and Austria. Fearing a large-scale last stand by the Nazis in this so-called redoubt, General Eisenhower directed no less than three field armies to clear southern Germany at a time when the largest groups of German forces stood to the east, not the south, of General Eisenhower's troops. Fortunately for the Allies, the German Army of April 1945 was in no position to exploit troop concentrations and movements of questionable merit. * Thus, while the Allies enjoyed a great victory, on occasion their prosecution of the campaign afforded their German adversaries opportunities that prolonged the fighting unnecessarily."))))
nx/tactics/books/world_wars / chapter_wwii_western_front
Description:
Function Name:
  • chapter_wwii_western_front
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_western_front : base/chapter (chapter :name "WWII Western Front" :sectionmap (sectionmap "Unfiled WWII" (section :name "Unfiled WWII" :scenariomap (scenariomap "Fire Fight!" (scenario :name "Fire Fight!" :summary "* A group of German reinforcements is preparing to secure a small hill for an artillery implacement when they spot an Allied patrol. Do not allow them to interfere!" :teammap (teammap :German* (team :name "German*" :deploy "1) Deploy 3 Hill Tiles in the center of the map. 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen) * 1 Obertruppfuhrer") :American (team :name "American" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team) * 1 Sergeant"))) "Secure the Bridge" (scenario :name "Secure the Bridge" :teammap (teammap :American* (team :name "American*" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 14 Levels of Tanks (max 5) (Quickstart: 2x M4 Sherman, 2x M10 Wolverine) * 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team)") :German (team :name "German" :deploy "1) Deploy River equally dividing Map between teams with a Bridge (Road title) across river at map center. 2) Alternate deploying 6 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 14 Levels of Tanks (max 3) (Quickstart: Panzer IV, Hetzer, Stug III) * 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen)"))) "Hill #115" (scenario :name "Hill #115" :summary "* German Artillery holds the high ground of Hill #115. Capture the position." :teammap (teammap :American* (team :name "American*" :deploy "1) Deploy Land Vehicle Map 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on your edge of the map." :forces "* 12 Levels of Artillery (max 3) (Quickstart: ?) * 9 Levels of Infantry (max 8) (Quickstart: 2x Able Team, 4x Baker Team, Charlie Team)") :German (team :name "German" :deploy "1) Deploy 4 Hill Tiles in the center of the map. 2) Alternate deploying 5 Forest Tiles on your side of the map. 3) Alternate deploying units on the Hill (units may be dug in)." :forces "* 12 Levels of Artillery (max 3) (Quickstart: ?) * 9 Levels of Infantry (max 8) (Quickstart: Waffen-SS, MG Team, 4x Riflemen)"))))) "Phoney War" (section :name "Phoney War" :summary "The Germans invade Poland in 1939. Britain and France declare war on Germany, but launch no land operations, instead building their forces for a long war.") "Battle of the Netherlands" (section :name "Battle of the Netherlands" :summary "Although the Netherlands had been neutral during World War I, Dutch sympathies during that conflict were more on the German side. At the end of World War I, the Netherlands gave asylum to German Emperor Wilhelm II and refused to release him into Allied custody, instead giving him a castle, Huis Doorn, where he lived until his death in 1941. Following outbreak of the Second World War, the Netherlands hoped to remain neutral just like they had done 25 years previously. The Dutch forces were poorly equipped with WWI era tankettes and biplanes and were no match for the Germans falling in 4 days." :scenariomap (scenariomap "Battle for the Hague" (scenario :name "Battle for the Hague" :summary "* On May 10, 1940, German paratroopers dropped in and around The Hague to capture Dutch airfields and the city. After taking the city, the plan was to force the Dutch queen Wilhelmina of the Netherlands to surrender and to thus defeat the Dutch within a single day. It was the first major air-landing operation in history, and due to the failure, had negative effects on the German Military for the rest of the war. * The failure of the operation reduced confidence in airborne assaults, reduced airborne troops substantially, and reduced transport aircraft which later caused more casualties in the Invasion of Crete where since the Germans did not have sufficient craft to land troopers in force, they instead had to drop them in groups, resulting in heavy casualties. Hitler intentionally had this battle downplayed to maintain the illusion that the German Army was invincible. It was one of few German defeats throughout the entire Western Front Campaign in 1940." :teammap (teammap :Dutch (team :name "Dutch" :forces "* Queen Wilhelmina") :German* (team :name "German*" :forces "* Paratroopers * Transport Aircraft"))) "Battle of The Afsluitdijk" (scenario :name "Battle of The Afsluitdijk" :summary "* On May 12, 1940 the Germans began an assault on Fort Kornwerderzand. However, unknown to the Germans three 2cm anti-air guns and 4 heavy anti-aircraft machine guns had arrived overnight at Kornwerderzand. The next day, pilots who had previously flown unchallenged were under fire. The Germans sent 62 planes to bomb the fort. The planes dropped five waves of bombs, and four planes were shot down. The bombing was followed by an hour of heavy bombardment from the howitzers, but it had little effect on the heavily protected Dutch. As soon as the bombing stopped the Germans advanced down the narrow dike. Captain Boers waited until they were within 800 meters, then ordered machine-gun fire, making it difficult for the Germans to withdraw. The Germans were under constant fire for an hour and 20 minutes. The remaining Germans withdrew - the assault had failed." :teammap (teammap :Dutch (team :name "Dutch" :deploy "1) Fort Kornwerderzand 2) Narrow Dike 3) AA Guns and Artillery 4) Machine gunners" :forces "* 3 20mm AA Guns * 4 Heavy AA Machine Guns") :German (team :name "German" :deploy "1) Swamp Map 2) Artillery 3) Infantry 4) Planes" :forces "* 500 Infantry * 62 Planes * Artillery"))))) "Battle of France" (section :name "Battle of France" :summary "* After the seven months of the Phoney War, the Battle of France began in earnest on 10 May 1940. The French and British soon collapsed under the onslaught of the German blitzkrieg. The British escaped at Dunkirk, while the French Army surrendered with 90,000 dead and 200,000 wounded. * German troops entered Paris on 14 June and accepted the surrender of France on 22 June." :scenariomap (scenariomap "Battle of Dunkirk" (scenario :name "Battle of Dunkirk" :summary "* On May 20, 1940, the German spearhead reached the coast of the English Channel, separating the British Expeditionary Force, the French First Army, and the Belgian army from the majority of French troops to the south. * After reaching the Channel, the Germans swung north along the coast, threatening to capture the ports and trap the British and French forces before they could evacuate to Britain. * The Belgians surrendered on 28 May, followed the next day by elements of the French 1st Army trapped outside the Dunkirk Pocket. * Starting on 27 May, the evacuation of Dunkirk began. The German Panzer Divisions were ordered to resume their advance on the same day, but improved defenses halted their initial offensive. * In the nine days from 27 May to 4 June, 338,226 men left France, including 139,997 French and Belgian troops, together with a small number of Dutch troops. Allied Historical Results * 338,226 men saved in the evacuation * 1,212,000 Dutch, Belgian, French and British captured * 30,000 British dead * 34,000 British captured * 35,000 French captured * 1,200 field guns captured * 1,250 anti-aircraft guns captured * 11,000 machine guns captured * 25,000 vehicles captured German Historical Results * 10,252 dead" :teammap (teammap :Allies (team :name "Allies" :forces "* Belgian * British * Dutch * French * Polish") :German (team :name "German" :forces "Panzer Divisions"))))) "Battle of Britain" (section :name "Battle of Britain" :summary "During the summer and fall of 1940, the the German Luftwaffe attempted to gain air superiority over the Royal Air Force (RAF). Had it been successful, the planned amphibious and airborne landings in Britain would have followed. The Battle of Britain was the first major campaign to be fought entirely by air forces. It was the largest and most sustained bombing campaign attempted up until that date. The failure of Nazi Germany to destroy Britain's air defense or to break British morale is considered its first major defeat.") "Battle of Denmark Strait" (section :name "Battle of Denmark Strait" :scenariomap (scenariomap "Bismarck's Maiden Voyage" (scenario :name "Bismarck's Maiden Voyage" :summary "* On May 19, 1941, the German Bismarck battleship left on its maiden voyage with the heavy cruiser Prinz Eugen to break out into the North Atlantic to destroy Allied shipping. * On May 24, the British battleship Prince of Wales and the battlecruiser Hood engaged the Bismarck. Less than ten minutes after the British opened fire, a shell from Bismarck struck Hood near her aft ammunition magazines. The Hood exploded and sank within three minutes with the loss of all but three of her crew. * Prince of Wales continued to exchange fire with Bismarck but suffered serious malfunctions in her main armament and broke off the engagement. * Bismarck, damaged but still very much operational, declined to chase Prince of Wales and instead headed for the Atlantic." :teammap (teammap :British* (team :name "British*" :forces "* 1 Battlecruiser - HMS Hood * 1 Battleship - HMS Prince of Wales") :German (team :name "German" :forces "* 1 Battleship - Bismarck * 1 Hvy Cruiser - Prinz Eugen"))) "Sink the Bismarck!" (scenario :name "Sink the Bismarck!" :summary "* The British public were shocked that their most emblematic warship had been destroyed so suddenly. The Admiralty mobilized every available warship in the Atlantic to hunt down and destroy Bismarck. * On May 26, the British had a stroke of luck. Bismarck was spotted due to an oil leak. The Bismarck was about to escape under German Air cover, so all British hopes were now pinned on the aircraft-carrier Ark Royal, the old battlecruiser Renown and the cruiser Sheffield. * At dusk that evening, and in atrocious weather conditions, Ark Royal launched its Fairey Swordfish. The first wave mistakenly targeted the Sheffield that was by now shadowing the quarry. Although precious time was lost by this incident, it proved beneficial to the British in that the magnetic detonators on the torpedoes used against Sheffield were seen to be defective and for the following attack on Bismarck were replaced by those designed to explode on contact. * In a final attack, almost in darkness at 21:05, a hit by a single torpedo jammed Bismarck's rudder and steering gear. This rendered Bismarck virtually unmanoeuvrable, increased her list to port and she was able only to steam in a large circle. * Throughout that night, Bismarck was the target of incessant torpedo attacks by Tribal-class destroyers. Both Ark Royal and King George V had a lucky escape during the night. The British ships were unaware they had come within firing range of U-556. However, U-556 was returning from a combat patrol and had spent its torpedoes. This was particularly galling as U-556 and Bismarck had exercised together in the Baltic, Bismarck was dubbed the submarine's 'bigger brother'. * The Rodney and King George V began bombardment of the crippled Bismarck. It continued to fire back, but in its crippled state it was an easy target. Within 44 minutes, Bismarck's heavy guns were all silent. Rodney now closed to point-blank range (approximately three km) to pound the superstructure, while King George V fired from further out. * With no sign of surrender, despite the unequal struggle, the British were loath to leave Bismarck. Their fuel and shell supplies were low, a demonstration of how difficult it was for a battleship to sink a similar unit, even in an unbalanced engagement. 3 more torpedoes were launched at close range and on the Bismarck the order was given to scuttle the ship. * Dorsetshire and Maori stopped to rescue survivors, but a U-boat alarm caused them to leave the scene after rescuing only 110 Bismarck sailors, abandoning the surviving crew in the water. * The next morning U-74, which had heard sinking noises from a distance, and the German weather ship Sachsenwald picked up 5 survivors. 1,995 of the 2,200 crew were lost." :teammap (teammap :British* (team :name "British*" :deploy "1) Ocean Map, Rain, Night" :forces "* British Forces First Wave * Carrier - Ark Royal * Battlecruiser - Renown * Cruiser - Sheffield * Fairey Swordfish * British Forces Second Wave * Rodney, King George V") :German (team :name "German" :forces "* Battleship - Bismarck * Submarine - U-556"))))) "St. Nazaire Raid" (section :name "St. Nazaire Raid" :summary "* The St. Nazaire Raid (also called Operation Chariot) was a successful British seaborne attack on the heavily defended docks of St. Nazaire in occupied France on the night of March 28, 1942 during World War II. * The plan was to create a diversionary bombing run and then use the obsolete destroyer HMS Campbeltown to ram the St. Nazaire lock gates and then to blow it up. Commandos would then destroy other dock structures and fight their way out. The loss of the St. Nazaire as a dry dock would force any large German warship in need of repairs to return to home waters. * The Cambeltown was given cosmetic modifications so that she would resemble a German Mowe class destroyer. The diversionary bombing did little except to alert the German forces that something odd was happening. Despite this the British ships got very close to the harbour without being fired on. Rather than use the deep channel which passed near the German guns, Cambeltown used the spring tide to pass over shallows, being lightened by removing guns, etc, though this also affected her handling characteristics. * The force was first noticed at 01:15 but searchlights did not go on until 01:22 when the force was little more than 1.5 nautical miles (2.8 km) from the harbor. The British legitimately flew the Kriegsmarine ensign as a false flag and used a German morse call sign and gained almost five minutes of unimpeded progress. Twice the German guns opened fire but were soon silenced by reassuring coded messages. * It was not until 01:28 with less than a mile to the harbor that the German guns opened fire. The Campbeltown drew most fire but despite a number of casualties struck the southern caisson at around 20 knots (37 km/h) at 01:34, jamming herself deep into the structure and crumpling almost 40 feet (12 m) of her hull. The delay fuses had been set shortly before the ship came under fire. * The seven Commando teams then disembarked and made for their targets. * The seventeen smaller vessels, although receiving less fire, were much more vulnerable. In the four minutes around the ramming by the Campbeltown eight of the launches were destroyed in the channel. A few hits were often sufficient to set the motor launches ablaze and the crew and Commandos had to abandon themselves to the water or Carley rafts. Many drowned or were caught in the burning fuel that spread across the water. Most of the eight craft destroyed suffered greater than 80% fatalities, even on the surviving craft barely a man escaped injury. * MTB 74 survived, fired her special torpedoes into the lock at the old entrance and made it back out to sea after taking on around half the crew of the Campbeltown. Only a few Commando teams on the launches made it ashore, none successfully at the Old Mole where they were hoping to re-embark and escape. The intact motor launches took on what survivors they could find or rescue from the water, made smoke and withdrew, leaving just over a hundred Commandos on the docks. MGB 314 survived and was the last vessel to leave, her decks covered in wounded men rescued from the water. * As the boats moved out into the wider part of the channel they came under fire from heavier guns, although at longer range. Two boats were destroyed in the race down river, one of the motor launches and MTB 74. Both vessels were carrying many wounded and most of the Campbeltown crew; their losses accounted for over half of the naval casualties. Four British vessels made the rendezvous with the destroyers. * The Commandos left behind at the docks were soon heavily pressed. Leaving a steady trail of dead and wounded the Commandos worked through the docks and charged the bridge, breaking through onto the Place de la Vieille Ville, but with barely one in four of the force uninjured. The British were forced southwards into the town and, under increasing fire sought cover. * The Germans surrounded the town, posted road-blocks, stopped all traffic and conducted a house-to-house search. Almost all the British were captured or killed by around 10.00. They were assembled at La Baule, numbering roughly 200 and taken to various prisoner of war camps. Five British soldiers avoided capture and made it to Gibraltar. * The Campbeltown's charges were timed to go off at around 0900 hrs at the latest. Meanwhile, a German search of the ship failed to discover the hidden explosives. The detonation time came and went. During this delay, senior German officers arrived to inspect the damage and were photographed on deck. They were accompanied to the dock by two Commando officers who had been taken prisoner. The captured officers knew what was about to happen but remained silent, allowing themselves to be killed rather than give the Germans an opportunity to defuse the explosives. * It was not until 1035 hrs that the Campbeltown finally exploded, destroying the caisson and killing about 250 German soldiers and civilians in the immediate area. * Of the 611 British soldiers, 169 had been killed and 200 captured, but the mission was a success and the dock was unusable until 1947.") "Dieppe Raid" (section :name "Dieppe Raid" :summary "* Because of the massive logistical obstacles a cross-channel invasion would face, Allied high command decided to conduct a practice attack against the French coast. * On August 19, 1942, the Allies began the Dieppe Raid, an attack on Dieppe, France. Most of the troops were Canadian, with an American and some British contingents. The raid was a disaster, and almost two-thirds of the attacking force became casualties. However, much was learned as a result of the operation, these lessons would be put to good use later in subsequent invasions. * For almost two years, there was no land-fighting on the Western Front with the exception of commando raids and the guerrilla actions of the resistance aided by the SOE and OSS. However, in the meantime, the Allies took the war to Germany, with a strategic bombing campaign the US Eighth Air Force bombing Germany by day and the RAF Bomber Command bombing by night.") "Invasion of Normandy" (section :name "Invasion of Normandy" :summary "* On June 6, 1944, the Allies began Operation Overlord (also known as 'D-Day') - the long-awaited liberation of France. The deception operation had the Germans convinced that the invasion would occur at the Pas-de-Calais, while the real target was Normandy. * Following two months of slow fighting in hedgerow country, the Allies were racing across France. They circled around and trapped 250,000 Germans in the Falaise pocket. As had so often happened on the Eastern Front Hitler refused to allow a strategic withdrawal until it was too late. * 100,000 Germans managed to escape through the Falaise Gap but they left behind most of their equipment and 150,000 were taken prisoner." :scenariomap (scenariomap "Barkmann's Corner" (scenario :name "Barkmann's Corner" :summary "* On the morning of July 27, 1944, Panzer Ace, Ernst Barkmann found himself in his Panther cut off from the rest of his company. The Americans were closing in with a large armoured column. Barkmann positioned his Panther under a stand of oaks near the crossroads where the American tanks would have to pass. * As the column came into sight, Barkmann knocked out the two lead Shermans and a fuel tanker truck. * Next he destroyed two Shermans which had attempted to bypass the burning tanker. The Americans called in fighter-bombers, which damaged Barkmann's Panther and wounded two of his crewmen. * Barkmann's next victims were two Shermans that had used the noise of the fighter-bombers as cover to sneak up on the damaged Panther's flank. As Barkmann's crew repaired the Panther, two more Shermans were knocked out. * Finally, before leaving, Barkmann destroyed one last Sherman. * Barkmann knocked out nine Shermans and several other American vehicles and halted an American armored attack. For his actions, he was awarded the Knight's Cross. * On another occasion, Ernst Barkmann in Panther 401 accidentally found himself as the spearhead of the 2nd SS Panzer Division's night assault on the crossroads at Manhay. Initially mistaking a lone Sherman of US 7th Armoured Division as that of his own commander, he pulled alongside the enemy tank, and only realised his mistake when he noticed it's unusual red interior lights. In a brief close quarter fight he managed to destroy the M4 with the Panther's anti-personnel mortar (Panzergranate). He then proceeded along the moonlit forest roads past a succession of surprised American units to Manhay and on towards Liege, having left several destroyed vehicles in his wake. His appearance caused havoc in the US defences, culminating in a rout. * Rules: Ground Map, Turret Facing, Vehicle Criticals" :teammap (teammap :American* (team :name "American*" :deploy "1) Create a [Road] east to west of the map. Do not place on [Forest]. 2) Place all tanks on the [Road] in a column starting from the east of the map. 3) They are caught by surprise and may not leave formation until the Panther attacks. ?) If the Germans achieve a Partial Victory, you may deploy the 2 Thunderbolts." :forces "* 9 [M4 Sherman] Tanks * 2 [P-47 Thunderbolt] Fighter/Bombers") :German (team :name "German" :deploy "1) Place [Forest] any place on the map until [Road] is complete. Do not completely block [Road]. ?) Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Panther anywhere on the map before taking your turn. When you attack, the enemy is [Surprised]." :forces "* 1 [Panther Ausf G] Tank - Ace"))) "Tiger Phobia" (scenario :name "Tiger Phobia" :summary "* On 8 August 1944, a single Tiger commanded by SS-Unterscharfuhrer Willi Fey from the 1st Company of sSSPzAbt 102, engaged a British tank column, destroying some 14 out of 15 Shermans, followed by one more later in the day using his last two rounds of ammunition. * sSSPzAbt 102 lost all of its Tigers during fighting in Normandy, but reported 227 Allied tanks destroyed in six weeks." :teammap (teammap :British* (team :name "British*" :deploy "All units are in a column moving down a road. They are caught by surprise and may not leave formation until the Tiger attacks." :forces "15 [M4 Sherman] Tanks") :German (team :name "German" :deploy "* Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Tiger in any space and immediately attack." :forces "* 1 [Tiger Tank] - Ace"))))) "Liberation of France / Operation Dragoon" (section :name "Liberation of France / Operation Dragoon" :summary "* On August 15. 1944 in an effort to aid their operations in Normandy, the Allies launched Operation Dragoon - the invasion of Southern France. The Allies rapidly consolidated this beachhead and liberated southern France in two weeks." :scenariomap (scenariomap "Red Ball Express" (scenario :name "Red Ball Express"))) "Operation Market Garden" (section :name "Operation Market Garden" :summary "* The British Field-Marshal Montgomery persuaded Allied High Command to launch a bold attack. Paratroopers would fly in from England and take bridges over the main rivers of the German-occupied Netherlands in three main cities, Eindhoven, Nijmegen, and Arnhem. British troops would punch through the German lines and link up with the paratroopers. If all went well, the Allies would capture the port facilities in Antwerp and advance into Germany without any remaining major obstacles. British XXX Corps was able to link up with six of the seven paratrooper-held bridges, but was unable to link up with the troops near the bridge over the Rhine at Arnhem. The result was the destruction of the British 1st Airborne Division. These events were summarized by Lt Gen. Frederick Browning as 'a bridge too far'." :scenariomap (scenariomap "Operation Market Garden" (scenario :name "Operation Market Garden" :teammap (teammap :British (team :name "British") :German (team :name "German"))) "A Bridge Too Far" (scenario :name "A Bridge Too Far" :teammap (teammap :British (team :name "British") :German* (team :name "German*"))))) "Allied advance from Paris to the Rhine" (section :name "Allied advance from Paris to the Rhine" :summary "Starting in early September 1944, the Americans began slow and bloody fighting through the Hurtgen Forest to breach the line.") "Battle of the Bulge" (section :name "Battle of the Bulge" :summary "* The 'bulge' was the initial incursion the Germans put into the Allies' line of advance. The offensive was launched in the Ardennes. Germany's planned goal for these operations was to split the British and American Allied line in half, capturing Antwerp, Belgium, and then proceeding to encircle and destroy four Allied armies, forcing the Western Allies to negotiate a peace treaty in the Axis Powers' favor. * The Germans planned the offensive with utmost secrecy, minimizing radio traffic and conducting the movement of troops and equipment under cover of darkness. Although ULTRA, the Allies' reading of secret German radio messages, suggested a possible German offensive, and the United States Third Army predicted a major German offensive, the attack still achieved surprise. * The degree of surprise achieved was compounded by the Allies' overconfidence, their preoccupation with their own offensive plans, poor aerial reconnaissance, and the relative lack of combat contact in the area by the U.S. 1st Army. Almost complete surprise against a weak section of the Allies' line was achieved during heavy overcast weather, when the Allies' strong air forces would be grounded. * For the U.S. Army, the battle incorporated more troops and engaged more enemy troops than any conflict before that time. The German objectives ultimately were unrealized. In the wake of the defeat, many experienced German units were left severely depleted of men and equipment. * The Battle of the Bulge was the bloodiest of the battles that U.S. forces experienced in WWII with 19,000 American dead.") "Invasion of Germany" (section :name "Invasion of Germany" :summary "* Hitler would not allow Field Marshal Gerd von Rundstedt to withdraw East behind the Rhine arguing that it would only delay the inevitable fight. Hitler ordered him to fight where his forces stood. By the time the water had subsided and the U.S. Army was able to cross the Roer on February 23, other Allied forces were also close to the Rhine's west bank. Rundstedt's divisions which had remained on the west bank of the Rhine were cut to pieces in the battle of the Rhineland and 290,000 men were taken prisoner. * On May 7 1944, Eisenhower took the unconditional surrender of all German forces to the western Allies and the Soviet Union."))))
nx/tactics/books/world_wars / chapter_wwii_eastern_front
Description:
Function Name:
  • chapter_wwii_eastern_front
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_eastern_front : base/chapter (chapter :name "WWII Eastern Front" :sectionmap (sectionmap "Invasion of Poland" (section :name "Invasion of Poland" :summary "Germans invade Poland in 1939.") "Operattion Barbarossa" (section :name "Operattion Barbarossa" :summary "* The codename for Nazi Germany's invasion of the Soviet Union during WWII that commenced on June 22, 1941. Over 4.5 million troops of the Axis powers invaded the USSR along an 1,800 mile front. The operation was named after the Emperor Frederick Barbarossa of the Holy Roman Empire, a leader of the Third Crusade in the 12th century. Barbarossa was the major part of the war on the Eastern Front. The planning for operation Barbarossa took several years prior to June 1941; the clandestine preparations and the military operation itself lasted almost a year, from the Spring of 1941, through the Winter of 1941. * The operational goal of Operation Barbarossa was the rapid conquest of the European part of the Soviet Union, west of a line connecting the cities of Arkhangelsk and Astrakhan, often referred to as the A-A line (see the translation of Hitler's directive for details). At its conclusion in December 1941, the Red Army had repelled the strongest blow of the Wehrmacht. Hitler had not achieved the victory he had expected, but the situation of the Soviet Union remained critical. Tactically the Germans had won some resounding victories and occupied some of the most important economic areas of the country, most notably in Ukraine. Despite these successes, the Germans were pushed back from Moscow and were not able to mount an offensive simultaneously along the entire strategic Soviet-German front again. * Then the failure of Barbarossa resulted in Hitler's demands for additional operations inside Russia, all of which eventually failed, such as continuation of the Siege of Leningrad, Operation Nordlicht, and Battle of Stalingrad, among other battles on the occupied Russian territory. * The failure of Operation Barbarossa resulted in the eventual defeat of Nazi Germany and is considered a turning point for the Third Reich. Most importantly, Operation Barbarossa opened up the Eastern Front, which ultimately became the biggest theater of war in world history. Operation Barbarossa and the areas which fell under it became the site of some of the largest and most brutal battles, deadliest atrocities, terrible loss of life, and horrific conditions for Soviets and Germans alike - all of which influenced the course of both WWII and 20th Century history.") "Battle of Moscow" (section :name "Battle of Moscow" :summary "* Nazi strategic offensive Operation Typhoon, and a series of Soviet strategic and smaller operations executed during the defense of Moscow, and the subsequent Soviet counter-offensive that occurred between October 1941 and January 1942 on the Eastern Front during WWII as a response to the Hitler's strategy that considered Moscow to be the primary military and political objective for Axis forces in their invasion of the Soviet Union.") "Battle of Stalingrad" (section :name "Battle of Stalingrad" :summary "Stalingrad was the bloodiest battle in human history, with combined casualties estimated to be above 60 million. The battle was marked by brutality and disregard for military and civilian casualties by both sides. The German offensive to take Stalingrad, the battle inside the city, and the Soviet counter-offensive which eventually trapped and destroyed the 6th Army and other Axis forces around the city was the second large-scale defeat of the Second World War.") "Battle of Kursk" (section :name "Battle of Kursk" :summary "* The last German blitzkrieg offensive in the east executed by the German forces on a strategic scale during the war, with the hope of another great encirclement of Red Army forces. The operations, which included the famous battle at Prokhorovka, remains both the largest series of armored operations and the most costly single day of aerial warfare to date. * Kursk is further notable for the deliberately defensive operation strategy on the Red Army's part. Having good intelligence on Hitler's intentions, the Red Army established and managed to conceal elaborate layered defense works, mine fields, and stage and disguise large reserve forces poised for a tactical and strategic counter-attack typical of defensive battle plans. Though the Germans planned and initiated an offensive strike, the well-planned defense not only frustrated their ambitions, but also enabled the Soviets to follow up with counter-offensives that exhausted the German abilities in the Theater, thereby seizing the initiative for the remainder of the war." :scenariomap (scenariomap "Tiger Phobia II" (scenario :name "Tiger Phobia II" :summary "* On 7 July 1943, a single Tiger tank commanded by SS-Oberscharfuhrer Franz Staudegger engaged a group of about 50 T-34s around Psyolknee (the southern sector of the German salient in the Battle of Kursk). Staudegger used all his ammunition in destroying 22 Soviet tanks, while the rest retreated. For this, Staudegger was awarded the Knight's Cross." :teammap (teammap :Soviet* (team :name "Soviet*" :deploy "* All units are in a column moving down a road. They are caught by surprise and may not leave formation until the Tiger attacks." :forces "* 50 [T-34/76] Tanks") :German (team :name "German" :deploy "* Surprise is yours. Do not deploy at the beginning of the game. Instead, any time you have the initiative, you may deploy the Tiger in any space and immediately fire as if prepared." :forces "* 1 [Tiger Tank] - Ace"))))) "Battle of Berlin" (section :name "Battle of Berlin" :summary "* Two Soviet Fronts attacked Berlin from the east and south, while a third overran German forces positioned north of Berlin. * The battle of Berlin lasted from late April 1945 until early May and was one of the bloodiest battles in history. Before the battle was over, German dictator Adolf Hitler and many of his followers committed suicide."))))
nx/tactics/books/world_wars / chapter_wwii_north_african_theatre
Description:
Function Name:
  • chapter_wwii_north_african_theatre
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_north_african_theatre : base/chapter (chapter :name "WWII North African Theatre" :summary "* On August 8, 1940, Benito Mussolini, anxious to link Libya with Italian East Africa and to capture the Suez Canal and the Arabian oilfields, ordered the invasion of Egypt. Italian forces invaded Egypt from their base in Cyrenaica, Libya. This invasion was repulsed later in the year during Operation Compass. * Initially the Commonwealth forces, under General Archibald Wavell, fought a successful campaign in the desert west of Egypt. While the fighting was taking place in Libya, Axis forces attacked Greece. General Wavell was ordered to halt his advance against the Italian Army in Libya and send troops to Greece. He disagreed with this decision but followed his orders. * The Allies were unable to stop Greece falling to the Axis forces and before they could retake the initiative in the western desert the German Afrika Korps led by Erwin Rommel had entered the theatre. * It would not be until early in 1943, after another year and a half of hard fighting and mixed fortunes, that the Axis forces would be finally driven out of Libya. * On November 8, 1942, the U.S. had entered the war beginning with amphibious landing in northwest Africa, codenamed Operation Torch, under the Supreme Allied Commander General Dwight D. Eisenhower." :sectionmap (sectionmap "Invasion of Egypt" (section :name "Invasion of Egypt" :summary "On September 13, 1940, Italy invaded Egypt with 200,000 troops from Libya.") "Operation Compass" (section :name "Operation Compass" :summary "* The Allies had only 36,000 men, but nevertheless launched a counter-attack. The Italians had 150,000 troops and tanks were evenly divided between the mechanically reliable but machine gun-armed Fiat L3s tankettes and the heavier Fiat M11/39. This tank featured a hull-mounted 37 mm tank gun which was difficult to bring to bear on targets because of its lack of available traverse, was relatively poorly armored and was mechanically unreliable. In comparison, the British were able to field some faster Cruiser tanks (the Mk I, Mk II, and Mk III) which were more than match to the M11/39s. The British also had a limited number of heavy Matilda Infantry tanks that, while slow, were strongly armored and well armed. The armour of the Matilda tanks could not be pierced by any of the available Italian tank guns or anti-tank guns available at that time though Italian anti-aircraft guns could be used against them in the same manner as the German 88mm. * On December 18, 1940, British and Indian infantry and 48 Matilda tanks suddenly appeared outside the Italian Nibeiwa Camp. They struck twenty-three unmanned M11/39 tanks of the Maletti Group, which had been deployed to guard the unmined entrance to the camp. The Italians were caught completely off guard and many did not even reach their tanks, including General Maletti, who was killed emerging from his dugout. They were slaughtered and their vehicles destroyed by the British in less than ten minutes. * The Italian artillery fought on valiantly, firing on the Matildas and recording many hits, some at point-blank range - but none penetrated their 70mm of armour. The remaining Italian tanks were captured intact, and the Libyan infantry, left practically defenceless, quickly surrendered. * The British had captured Nibeiwa and destroyed the only front-line Italian armoured unit in less than five hours. After the disaster, the Italian General was replaced. * As the Commonwealth forces advanced, several large Italian units were surrounded, cut off from supply, and defeated. After some hard fighting, one position after another surrendered.") :Bardia (section :name "Bardia" :reference "* Never has so much been surrendered by so many to so few. - Anthony Eden * In this theatre of operations a single armoured division is more important than an entire [infantry] army. - Rodolfo Graziani writing to Mussolini after his defeat" :summary "* On January 4, 1941, an Australian division was to assault Bardia and found themselves under continuous mortar and artillery fire and found it best to keep skirmishing forward instead of stopping and enduring artillery. Italian morale was broken, worn down by six weeks of aerial and naval bombardment. * The Australians captured Bardia taking 45,000 prisoners, 462 guns, 12 medium tanks, 115 tankettes and 708 vehicles with a loss of 130 dead.") :Tobruk (section :name "Tobruk" :summary "* On January 22, 1941, the Australians briefly captured Tobruk, yielding over 25,000 prisoners along with 236 field and medium guns, 23 medium tanks and more than 200 other vehicles. The Australian losses were 49 dead. The British began bombarding the remaining Italian positions. * On January 26, 1941, during the night it was hoped that a surrender could be brokered, but Mussolini himself forbid the generals from surrender. Later that night Italian SM 79's carried out a surprise low-level attack which accidentally bombed 8,000 Italian prisoners killing and wounding hundreds of their own men. This bombing broke the will of the Italians and that afternoon they surrendered. * 25,000 Italians and 400 Australians had been killed.") "Battle of Beda Fomm" (section :name "Battle of Beda Fomm" :summary "* On February 6, 1941, the Combe Force consisting of 2,000 men and (for the sake of speed) only light and Cruiser tanks managed to hold off 20,000 Italian soldiers supported by over 100 tanks and 200 guns. The Italian tanks were the newly arrived Fiat M13/40 medium tanks which were a vast improvement to the M11's. * The fighting was close and often hand to hand. At one point, a regimental sergeant major captured an Italian light tank by hitting the commander over the head with a rifle-butt. * Soon British and Australian reinforcements arrived and the Italians surrendered.") "Aftermath of Beda Fomm" (section :name "Aftermath of Beda Fomm" :summary "* After 10 weeks the Italian Tenth Army was no more. The British and Commonwealth forces had advanced 800km, destroyed or captured 400 tanks and 1290 artillery pieces, and captured 130,000 Libyan and Italian Prisoners of war. Their prisoners included 22 generals. The Commonwealth forces suffered 494 dead and 1,225 wounded. * However the advance stopped short of driving the Italians out of North Africa. As the advance reached El Agheila, Churchill ordered that it be stopped, and troops dispatched to defend Greece which was being attacked by Italy.") :Rommel (section :name "Rommel" :summary "* The stunning defeat of the Italians did not go unnoticed and fresh Italian troops together with German troops, the Deutsches Afrikakorps under Erwin Rommel were sent in to reinforce the Italian forces in western Libya. Although Rommel had been ordered to simply hold the line, an armoured reconnaissance soon became a fully fledged offensive.") "Operation Torch" (section :name "Operation Torch" :summary "* On November 8, 1942, Allied forces landed in Vichy held French North Africa where they were met with bloody resistance in Oran and Morocco, but in Algiers a coup d'etat by the French resistance on November 8 succeeded in neutralizing the defense before the landing, and arresting the Vichy commanders. Oran and Morocco were then convinced to cease resistance with the proviso that the Vichy Admiral Darlan would be head of the Free French administration. The Vichy army joined the Allies and formed the Free French Forces. * On December 24, Darlan was assassinated for his collaboration with the Nazis.") "Western Desert Campaign" (section :name "Western Desert Campaign" :summary "* The Western Desert Campaign, also known as the Desert War was the initial stage of the North African Campaign. The Axis powers had planned to dominate the Mediterranean through control of Gibraltar and the Suez Canal and planned to follow a successful campaign in North Africa with a strike north to the rich oil fields of the Middle East. This would have cut off nearby oil supplies to the Allies, and would have tremendously increased the oil supplies available for the Axis war machine. * By 1942, the campaign was heavily influenced by the availability of supplies and transport. Large quantities of supplies were becoming available form the United States. The British and Italian navies were evenly matched in the Mediterranean, but the British retention of Malta allowed the RAF to interdict an increasing amount of Italian supplies at sea denying the German commander, Rommel, fuel and reinforcements at critical moments.") :Jefria (section :name "Jefria" :summary "* On November 24, two Allied columns prepared to advance from Djebel Abiod. * The Blade Force made a lightning attack with tanks and destroyed more than 20 Axis planes, buildings, and supply dumps. * The northern force was delayed by torrential rain, but the Germans had used the extra time to create an ambush position on the road at Jefna. The Germans occupied high ground on either side of the road, which after the recent heavy rains was very muddy and the ground on either side impassable for vehicles. * The ambush worked perfectly with the leading battalion taking 149 casualties. Units were sent into the hills to try to flush the Germans out but the stubborn resistance of the paratroopers combined with the cleverly planned interlocking defenses proved too much. * The position remained in German hands until the last days of fighting in Tunisia the following spring.") "German Initiative" (section :name "German Initiative" :summary "* A string of Allied defeats in December cost them dearly; 173 tanks, 432 other vehicles, and 170 artillery pieces were lost, in addition to thousands of casualties. * On December 10, 1942, Axis tanks attacked Combat Command B on Bou Aoukaz becoming hopelessly bogged down in the mud. In turn, the U.S. tanks counter-attacked and were also mired and picked off, losing 18 tanks. * On December 22, 1942, the British Coldstream Guards drove back the German 10th Panzer Division from Longstop Hill. They were then relieved and withdrawn to Mejdez. The Germans regained the hill in a counter-attack and the Coldstreams were ordered back to Longstop. They regained the peak, but with ammunition running low and Axis forces holding adjacent high ground they were forced to withdraw. * By December 26, 1942, the Allies had withdrawn to the line they had left 2 weeks earlier having suffered 20,743 casualties.") "Battle of Kasserine Pass" (section :name "Battle of Kasserine Pass" :summary "* The Battle of Kasserine Pass was, in fact, a series of battles fought around Kasserine Pass, a two-mile (3 km) wide gap in the Grand Dorsal chain of the Atlas Mountains in west central Tunisia. * The Axis forces involved were from the German-Italian Panzer Army led by Field Marshal Erwin Rommel and the Fifth Panzer Army led by General Hans-Jurgen von Arnim. * The Allied forces involved came from the U.S. Army's II Corps commanded by Major-General Lloyd Fredendall which was part of the British First Army commanded by Lieutenant-General Kenneth Anderson. * Significant as the first large-scale meeting of American and German forces in World War II, the untested American troops, who were led in an inept manner by their commander, suffered heavy casualties and were pushed back over fifty miles (80km) from their original positions west of Faid Pass in a humiliating rout. * The battle has been described as when the amateurs first met the professionals. In the aftermath, the U.S. Army instituted sweeping changes from unit-level organization to the replacing of commanders. * When they next met, in some cases only weeks later, the U.S. was considerably stronger.") :Faïd (section :name "Faïd" :summary "* On January 23, 1943, the Allies took Tripoli, thereby cutting off Rommel's main supply base. Rommel had planned for this eventuality. With their lines steadied by the Atlas Mountains on the west and Gulf of Sidra on the east, even small numbers of German/Italian troops would be able to hold off the Allied forces. * Upsetting this plan was the fact that Allied troops had already crossed the Atlas Mountains. This put them in an excellent position to thrust east to the coast and cut off Rommel's forces and cut his line of supply to Tunis. Obviously, the Axis could not allow this to occur. * The Panzer Divisions moved on the Atlas Mountans. Several attempts were made by the U.S. 1st Armored Division to stop their advance, but all three combat commands found themselves faced with the classic blitzkrieg every time they were ordered into a defensive position, they would find those positions had already been overrun, and they were attacked by German soldiers with heavy losses. * After 3 days the Allies had to withdraw.") "Battle of Sidi Bou Zid" (section :name "Battle of Sidi Bou Zid" :summary "* Rommel eventually decided that he could improve his supply situation and further erode the American threat to his flank by attacking towards two U.S. supply bases in Algeria. * On February 14, 1943, the Panzer Division moved west attacking Sidi Bou Zid. * The battle raged for a day, but poor use of armor by the U.S. led to their defeat. By this point, the U.S. forces had lost 2,546 men, 103 tanks, 280 vehicles, 18 field guns, 3 antitank guns, and an entire antiaircraft battery.") "Rommel's Assault" (section :name "Rommel's Assault" :summary "* On February 19, 1943, Rommel launched an assault that broke the U.S. lines within minutes. Their light guns and tanks had no chance against the heavier German equipment, and they had little or no experience in armored warfare. The German Panzer IVs and Tiger tanks fended off all attacks with ease; the M3 Lee and M3 Stuart tanks they faced were inferior in firepower and their crews far less experienced. * Under fierce tank attack, the American units on Highway 13 also gave way during the night, with men at all points retreating before the Italian 131st Centauro Armoured Division. * Once again, the 1st Armored Division found itself ordered into useless positions. Morale among the U.S. troops started to fall precipitously, and by evening many troops had pulled back, leaving their equipment on the field. * The pass was completely open, and it appeared the supply dump at Tebessa was within reach. However, desperate resistance by isolated groups left behind in the action seriously slowed the German advance.") :Thala (section :name "Thala" :summary "* By February 21, 1943, the Panzer Division was just outside of the small town of Thala. If they took it the U.S. 9th Infantry Division would be cut off from their supplies, and Combat Command B of the 1st Armored Division would be trapped by the 10th Panzer division. That night, small units of British, French, and U.S. forces freed from the line to the north were sent piecemeal into the lines at Thala. * 48 artillery guns were emplaced that night. When the battle reopened the next day, the defenses were much stronger; the front line was held largely by British infantry with exceptionally strong backing by U.S. Artillery. * Overextended and undersupplied, Rommel decided to end the offensive. * After the battle, Rommel was largely contemptuous of both the U.S. equipment and fighting ability and considered them a non-threat. U.S. Commander Lloyd Fredendall was relieved and sent to a noncombat assignment for the remainder of the war. Fredendall's subordinates had no confidence in him as their commander and British First Army commander also thought Fredendall incompetent. * On March 6, Major-General George S. Patton was placed in command with the explicit task of improving performance.") "Operation Capri" (section :name "Operation Capri" :summary "* On March 6, 1943, the Allies had reached the Tunisian border and Rommel and von Arnim found themselves outflanked, outmanned and outgunned. * Three German armored divisions, two light divisions, and nine Italian divisions, launched an attack southward in the direction of Medenine, the northernmost British strongpoint. * British artillery fire was intense, beating off the Axis attack and knocking out 55 Axis tanks. * With the failure of Capri, Rommel decided that the only way to save his armies would be to evacuate them. He therefore left Tunisia to see Hitler to try to convince him to abandon Tunisia and return the Axis armies to Europe. Hitler refused, and Rommel was placed, in strict secrecy, on sick leave. * Von Arnim became commander of Army Group Africa.") "Battle of El Guettar" (section :name "Battle of El Guettar" :summary "* On March 23, 1943, the 10th Panzer met the U.S. II Corp. At first the battle went much as it had in earlier matchups, with the German tanks rolling up lead units of the US forces. However, they soon ran into a US minefield, and immediately the US artillery and anti-tank units opened up on them. The 10th lost 30 tanks over a short period, and retreated out of the minefield." :scenariomap (scenariomap :Minefield (scenario :name "Minefield"))) :Tunisia (section :name "Tunisia" :reference "* Sink, burn, capture, destroy. Let nothing pass - Admiral Cunningham, Naval Task Force Commander * The Italians fought particularly well, outdoing the Germans in line with them. - British General Harold Alexander" :summary "* By April 12, 1943, Allied aircraft had been moved forward to airfields in Tunisia, and large numbers of German transport aircraft were shot down. British destroyers operating from Malta prevented reinforcement or evacuation of Tunisia by sea. * On April 23, 1943, in grim hand-to hand fighting against Infantry and Panzer Divisions, the U.S. took eight days to penetrate 6 miles (9.7km) and capture most of the Axis defensive positions. Casualties were heavy on both sides. * On May 13, 1943, the Axis forces surrendered yielding over 275,000 prisoners of war including most of the Afrika Korps. This huge loss of experienced troops greatly reduced the military capacity of the Axis powers, although the largest percentage of Axis troops escaped Tunisia. * This defeat in Africa led to all Italian colonies being captured.") "Aftermath of Tunisia" (section :name "Aftermath of Tunisia" :summary "* According to historian Williamson A. Murray 'The decision to reinforce North Africa was one of the worst of Hitler's blunder: admittedly, it kept the Mediterranean closed for six more months, with a negative impact on the Allied shipping situation, but it placed some of Germany's best troops in an indefensible position from which, like Stalingrad, there would be no escape. Moreover Hitler committed the Luftwaffe to fight a battle of attrition under unfavorable conditions, and it suffered losses that it could not afford.' * The Axis's desperate gamble had only slowed the inevitable, and the US loss at Kasserine may, paradoxically, have been the best thing that could have happened to them. * With North Africa now in Allied hands, plans quickly turned to the invasion of Sicily, and Italy after it."))))
nx/tactics/books/world_wars / chapter_wwii_east_african_theatre
Description:
Function Name:
  • chapter_wwii_east_african_theatre
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_east_african_theatre : base/chapter (chapter :name "WWII East African Theatre" :summary "* The battles of this campaign were fought between the forces of the British Empire, the British Commonwealth of Nations, and the forces of the Italian Empire. * The Commonwealth forces included troops from the Sudan, British Somaliland, British East Africa, the Indian Empire, South Africa, Northern Rhodesia, Southern Rhodesia, Nyasaland, and British West Africa (Nigeria, Gold Coast, Sierra Leone, and the Gambia). There was even a small commando unit from the British Mandate of Palestine. In addition to the British and Commonwealth forces, there were Ethiopian irregular forces, Free French forces, and Free Belgian forces. * In November 1940, the British and Commonwealth forces received an incredible intelligence advantage. The government code and cypher school broke the high grade cypher of the Italian Royal Army in East Africa. Later, during the same month, the replacement cypher for the Italian Royal Air Force was broken. * From this point on, the commanders knew Italian plans as soon as they were issued." :sectionmap (sectionmap "Italian Forces" (section :name "Italian Forces" :summary "* Troops - The Italian forces included Italian nationals, East African colonials (Eritreans, Abyssinians, and Somali Dubats), and a small number of German volunteers (the German Motorized Company). * The Italians had between 250,000 and 280,000 troops available. Most of them (about 70%) were local East African askaris. While the askaris of the regular Eritrean battalions of the 'Royal Corps of Colonial Troops' (Regio Corpo Truppe Coloniali) were amongst the best Italian units in East Africa, the majority of the colonial troops were recruited, trained, and equipped to do no more than maintain order in the colony. Ethiopian askaris and irregulars, recruited during the brief Italian occupation, deserted in large numbers after the outbreak of war. * The Royal Corps of Colonial Troops included horse mounted Eritrean cavalry known as 'Falcon Feathers' (Penne di Falcon). On one occasion a squadron of these horsemen charged British and Commonwealth troops throwing small hand grenades from the saddle. * The Italian forces were equipped with about 3,300 machine guns, 24 M11/39 tanks, a large number of L3/35 tankettes, 126 armored cars and 813 pieces of assorted artillery. The Italian faced problems with isolation of the East Africa, with very little chance for reinforcements or resupply, leading to problems especially with ammunition. * Malaria - It is estimated that nearly one-quarter of the Italians troops defending Amba Alagi in April 1941 had malaria during the siege. Unfortunately, the Italians at Amba Alagi had no medicine for malaria. Even the commander of Amba Alagi, the Duke of Aosta, was himself afflicted with malaria during the siege. He died of tuberculosis and malaria on 3 March 1942, a few months after his surrender. * Aircraft - The Italians had 200-300 Savoia-Marchetti SM.79 and Savoia-Marchetti SM.81 bombers and Fiat CR-42 fighters. While some of these aircraft were outdated, in relative terms these were some of the best aircraft available to either side in East Africa in 1940. In addition, the Italian aircraft were often based at better airfields than their British and Commonwealth counter-parts. When the war began, Italian pilots were relatively well trained and confident of their abilities. But, cut off from Italy as they were, problems with lack of fuel, munitions, spare parts, and replacements eventually wore the Italian air capability down. * Navy - Italian Naval power maintained presence in the Red Sea region with its 'Red Sea Flotilla' consisting of seven destroyers, five motor torpedo boats and eight submarines.") "Allied Forces" (section :name "Allied Forces" :summary "* Troops - The British and Commonwealth forces in East Africa amounted to about 30,000 men in the Sudan, British East Africa, and British Somaliland. The British were slightly better equipped than the Italians, and had access to resupply and reinforcements. However, they were vastly outnumbered by the Italian forces. To make matters worse, the Italians had at least another 208,000 men (fourteen divisions) available in Libya. * Gideon Force - A significant aspect of the Allied campaign to retake Ethiopia was an elite group of Ethiopian irregulars called Gideon Force that would tie down large number of Italian units throughout the colony. * Aircraft - The roughly one-hundred aircraft available to the British and Commonwealth forces at the beginning of the campaign were dispersed as follows: In the north (Sudan) were two Royal Air Force (RAF) bomber squadrons at Port Sudan (one of these squadron was equipped with obsolete aircraft) and the RAF Army Co-operation Squadron on the Sudan frontier. In the south (Kenya) were No. 12 Bomber Squadron of the South African Air Force (SAAF) (equipped with Junkers Ju 86 bombers), No. 11 Bomber Squadron of the SAAF (equipped with Fairey Battles), No. 40 Army Co-operation Squadron SAAF (equipped with Hawker Hartebees), No. 2 Fighter Squadron, SAAF (equipped with Hawker Furies), and No. 237 (Southern Rhodesian) Army Co-operation Squadron (equipped with Hawker Hardys). Unlike the Italians, the aircraft available to the British and Commonwealth forces got better with time. But much of the equipment initially available tended to be older and slower. Even so, the British and Commonwealth forces managed to make do with what they had. * Navy - Allied Naval presence is very high in the Indian Ocean, but the Eastern Fleet largely consisted of older capital ships that had been deemed too slow or too vulnerable to be of use in the Atlantic Ocean or the Mediterranean Sea.") "Battle of Tug Argan" (section :name "Battle of Tug Argan" :summary "* On August 3, 1940, 25,000 Italian troops invaded British Somaliland. The British resisted with 4,000 men including the Somaliland Camel Corp. * By August 19, the Italians took control of British Somaliland which was the first British colony to fall to enemy forces in World War II. The Italians, however, had taken nearly 10 times the number of casualties as the British. * Winston Churchill, criticized General Archibald Wavell concerning the loss of British Somaliland. Because of the low casualty rate, Churchill fretted that the British had abandoned the colony without enough of a fight. In response to this criticism, Wavell claimed that Somaliland was a textbook withdrawal in the face of superior numbers. He pointed out to Churchill that 'A bloody butcher's bill is not the sign of a good tactician.' According to Churchill's staff, Wavell's retort moved Churchill to greater fury than they had ever seen before. * In September, 1940, Indian Infantry Divisions started arriving in the Sudan. * Throughout November, December, and early January, the British continued to apply constant pressure on the Italians all along the border with the Sudan. Better British aircraft started to replace some of the older models. The new Hawker Hurricanes were clearly superior to the Italian Fiat CR-42. Additionally, a series of failed naval engagements had lost a number of Italian warships with few British losses. * By January, 31 1941, the Italian military forces in East Africa were down to 67 operational aircraft with limited fuel.") "Battle of Keren" (section :name "Battle of Keren" :reference "* Keren was as hard a soldiers' battle as was ever fought, and let it be said that nowhere in the war did the Germans fight more stubbornly than those [Italian] Savoia battalions. The unfortunate license of wartime propaganda allowed the British Press to represent the Italians almost as comic warriors; but except for the German parachute division in Italy and the Japanese in Burma no enemy with whom the British and Indian troops were matched put up a finer fight. Moreover, the Colonial troops, until they cracked at the very end, fought with valor and resolution, and their staunchness was a testimony to the excellence of the Italian administration and Military." :summary "* On March, 14 1941, the British forces of 13,000 assaulted a reinforced Italian defense of 23,000. Both sides fought with determination and suffered heavy losses. * On March 27, Keren fell.") :Massawa (section :name "Massawa" :summary "* On April 8, 1941, Massawa was captured after the Italian ground resistance collapsed without adequate fuel, ammunition, or food. * Before Massawa fell, Bonnetti had ordered the remaining six Italian destroyers and the remaining motor torpedo boat on a 'do or die' mission. They were sunk or ran aground without doing much damage.") "Amba Alagi" (section :name "Amba Alagi" :summary "* The Italians decided to make their final defense area around the 12,000 foot high mountain, Amba Alagi. They drove galleries into the solid rock to protect their troops and to hold ample ammunition and stores. In this mountain fortress, the defenders, under command of Amedeo, Duke of Aosta, thought themselves to be impregnable. * The 7000 Italian troops were faced by 9000 British troops and 20000 Ethiopian irregulars. A final assault was planned for 15 May, but a fortuitous artillery shell hit an Italian fuel dump and ruptured a vessel containing oil which flowed into the remaining drinking water of the Italian defenders. The lack of drinkable water then forced the Italians to surrender. * On 18 May, Amedeo, Duke of Aosta surrendered his embattled forces at Amba Alagi and received full military honors. While the Duke of Aosta faced defeat in East Africa, his brother, the Duke of Spoleto was being made the King of Croatia after the successful invasion of Yugoslavia. The Duke of Aosta had endured the last months of fighting while suffering a severe attack of malaria (and died of TBC and malaria a few months later)."))))
nx/tactics/books/world_wars / chapter_wwii_middle_east_theatre
Description:
Function Name:
  • chapter_wwii_middle_east_theatre
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_middle_east_theatre : base/chapter (chapter :name "WWII Middle East Theatre" :summary "* Although Southwest Asia was destined to remain a strategic backwater for the duration of World War II, in late 1941 and early 1942 the Allies were not certain that it would remain so. Before the turning points of the Battle of Stalingrad (June 1942 to February, 1943) and the Second Battle of El Alamein (October to November 1942), the fear was that the Germans might attack the area either through Turkey, or via Cyprus into Lebanon; or through defeating of the British in Egypt. If the anticipated attack came through Turkey or Lebanon, then not only could the Axis Powers threaten British controlled Egypt and the strategically important Suez Canal, it would also allow the Germans an alternative route to attack the Soviet Union from Southwest Asia north through the USSR's southern frontiers. In the slightly longer term the British feared independent regimes in the region as well as the possibility that the German might follow in Alexander the Great's footsteps and attack British controlled India from Persia in the west as Japan simultaneously attacked India from the east through Burma." :sectionmap (sectionmap "Anglo-Iraqi War" (section :name "Anglo-Iraqi War" :summary "* Iraq had been officially granted independence by the United Kingdom in 1932, under a number of conditions, including the retention of British military bases. This caused resentment within Iraq and a pro-Axis prime minister assumed control. In early 1941, he ordered British forces to withdraw. On April 30 the Iraqi Army surrounded and besieged the isolated and poorly-defended Royal Air Force base at Habbaniya. Although the base had no offensive aircraft, RAF personnel converted training aircraft to carry weapons, and attacked the Iraqi forces. * The British counterattacked and defeated the larger but poorly-trained Iraqi Army in a series of battles, even though the Iraqis received direct aid from the Luftwaffe. The British pressed on to Baghdad and then to Mosul. The prime minister and his supporters fled the country and an armistice was signed.") "Syria-Lebanon Campaign" (section :name "Syria-Lebanon Campaign" :summary "* On June-July 1941, the British led Allies invaded Vichy French-controlled Syria and Lebanon. The campaign remains little known, even in the countries that took part. There is evidence that Allied censors acted to suppress or reduce reportage of the fierce fighting believing that knowledge of fighting against French forces could have a negative effect on public opinion in Allied countries. * The Vichy French forces lost approximately 6,000 men. Of these, roughly 1,000 had been killed. This left 37,736 Vichy French prisoners of war. But, when given the choice of being repatriated to France or joining the Free French, only 5,668 men chose to join the forces of General Charles De Gaulle. * On November 26, 1941, the independence of Syria and Lebanon were recognized in the name of the Free French movment. * On February 26-27, 1945, Syria and Lebanon each declared war on Germany and Japan." :scenariomap (scenariomap :Syria-Lebanon (scenario :name "Syria-Lebanon" :teammap (teammap :Iranforce (team :name "Iranforce" :deploy "1) Objective: City of Queneitra and City of Deraa in Damascus 2) Objective: City of Beirut in Beirut 3) Objective: City of Palmyra and Oil Pipeline in Central Syria 4) Deploy forces at edge of board" :forces "* 18,000 - Australian * 9,000 - British * 2,000 - Indian * 5,000 - Free French * 3 - Artillery Groups * 70 Aircraft - Hawker Hurricanes, Tomahawks") "Vichy French*" (team :name "Vichy French*" :deploy "1) Deploy Middle East Strategic Map 2) Objective: Supply Line and Railway near Beirut at end of Euphrates River in Northern Syria 3) Deploy forces anywhere on map" :forces "* 8,000 - French Foreign Legion * 20,000 - Syrian/Lebanese * 5,000 - Horse and Motorized Cavalry * 2 - Artillery Groups * 100 Aircraft - Dewoitine 520, Potez 63"))))) "Anglo-Soviet Invasion of Iran" (section :name "Anglo-Soviet Invasion of Iran" :summary "* On August 25, 1941, Britain and Russia launched an invasion of the neutral nation of Iran. The British feared that the Anglo-Iranian Oil Company might fall into German hands. The refinery produced 8 million tons of oil and was a crucial part of the Allied war effort. For the Russians, Iran was a country of extreme strategic importance. The Germans were steadily advancing through the Soviet Union and there were few ways for the Allies to get desperately needed American Lend-Lease supplies to the Soviets. With increasing German submarine attacks, as well as heavy ice floes and the coastal ice cap fast rendering convoys to Arkhangelsk impossible, the Trans-Iranian Railway seemed a very attractive route to transport supplies up from the Persian Gulf. The two Allied nations applied pressure on Iran and the Shah but this led only to increased tensions and pro-German rallies in Tehran. The Shah refused to expel the many German nationals residing in Iran, and denied the use of the railway to the Allies. These conditions prompted Britain and Russia to invade. * Franklin Roosevelt reassured the Shah by claiming that the British and Soviets had no designs on the itegrity of Iran. However, the Soviets would later back separatist states in the north, while the U.S. and UK would later support the overthrow of the popular and democratically elected Iranian Prime Minister in 1953. * With this crucial supply route now open to the Soviet Union the Persian Corridor was opened and would provide a massive flow of supplies (over 5 million tons of war materiel) to the Soviets primarily, but also the British in the Middle East."))))
nx/tactics/books/world_wars / chapter_wwii_mediterranean_theatre
Description:
Function Name:
  • chapter_wwii_mediterranean_theatre
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_mediterranean_theatre : base/chapter (chapter :name "WWII Mediterranean Theatre" :sectionmap (sectionmap "Italian Campaign Overview" (section :name "Italian Campaign Overview" :summary "* The US and British disagreed fiercely on how to prosecute the war. The US argued for an invasion of France as early as possible, while the British advocated a Mediterranean strategy since large numbers of troops trained for amphibious landings in the Mediterranean made a limited-scale invasion possible. Eventually the US and British made the decision to commit to an invasion of France in early 1944, but with a lower-priority Italian campaign reflecting Roosevelt's desire that to keep U.S. troops active in the European theater during 1943 and his attraction to the idea of eliminating Italy from the war. * It was hoped that an invasion would knock the Italians out of the war, or provide at least a major propaganda blow. The elimination of Italy as an enemy would also enable the Royal Navy to completely dominate the Mediterranean Sea, massively improving communications with Egypt, the Far East, the Middle East, and India. It would also mean that the Germans would have to transfer troops from the Eastern Front to defend Italy and the entire southern coast of France, thus aiding the Soviets. The Italians would also withdraw their troops from the Soviet Union to defend Italy. * It is estimated that between September 1943 and April 1945 some 60,000 Allied and 50,000 German soldiers died in Italy. No campaign in western Europe cost more than Italy, in terms of lives lost and wounds suffered by infantry.") "Invasion of Sicily" (section :name "Invasion of Sicily" :summary "* On July 9, 1943, the Allies invaded Sicily. It was the largest amphibious operation of the war in terms of men landed on the beaches and of frontage. It opened the Mediterranean sea lanes and toppled Mussolini from power. * Operation Mincemeat - A corpse disguised as a British officer was allowed to drift ashore in Spain, carrying a briefcase containing fake secret documents. These documents revealed that the Allies were planning to invade Greece, and had no plans to invade Sicily. The documents were accepted as genuine by German intelligence, and as a result much German defensive effort was diverted from Sicily to Greece. * On August 7, 1943, the Axis forces were outflanked and raced for transport ships under the cover of night. The Allies weren't watching the Axis troops, so they escaped from Messina and reached Italy. Considering Allied naval and air superiority, to not prevent an Axis escape from Sicily was a major strategic blunder. Instead of a major Axis defeat, it started a long and bloody campaign. * The Axis lost 29,000 lives and 140,000 (mostly Italians) captured. The Allies lost 8,000 lives." :scenariomap (scenariomap "Invasion of Sicily" (scenario :name "Invasion of Sicily" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 160,000 personnel (U.S., British, Canadian, Free French, Australian, South African) * 14,000 vehicles * 600 tanks * 1,800 guns") "Axis Forces" (team :name "Axis Forces" :forces "* 275,000 Italian personnel * 75,000 German personnel * 260 Tanks * 1,400 aircraft"))))) "Invasion of Italy" (section :name "Invasion of Italy" :summary "* A coup deposed Benito Mussolini as head of the Italian government, which then began approaching the Allies to make peace. It was believed a quick invasion of Italy might hasten an Italian surrender and produce quick military victories over the German troops that could be trapped fighting in a hostile country. However, Italian and German resistance proved relatively strong, and fighting in Italy continued even after the fall of Berlin. In addition, the invasion left the Allies in a position of supplying food and supplies to conquered territory, a burden which would otherwise have fallen on Germany. As well, Italy occupied by a hostile German army would have created additional problems for the Germans. * On September 8, 1943, before the main invasion, the surrender of Italy to the Allies was announced. Italian units ceased combat, and the Navy sailed to Allied ports to surrender. However the German forces in Italy were prepared and moved to disarm Italian units and occupy important defensive positions. * On September 9, 1943, the invasion began easily on the beaches near Salerno. The Germans counterattacked several times and inflicted heavy losses. The Germans came close to defeating the Salerno beachhead. Despite using six divisions of tanks and mechanized infantry, the German attacks had not had sufficient forces to both break through Allied lines and exploit the gains in the face of Allied artillery and naval gunfire support. The Allies had been fortunate that at this time Adolf Hitler had sided with the view of his Army Group commander in Northern Italy, Field Marshall Erwin Rommel, and decided that defending Italy south of Rome was not a strategic priority. * By early October, all of Southern Italy was in Allied hands." :scenariomap (scenariomap "Invasion of Italy" (scenario :name "Invasion of Italy" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 190,000 Personnel (U.S., British, Canadian, Indian)") "Axis Forces" (team :name "Axis Forces" :forces "* 100,000 Personnel (Italian and German)"))))) "Advance to Rome" (section :name "Advance to Rome" :summary "* Kesselring was given command of the whole of Italy and immediately ordered the preparation of a series of defensive lines across Italy south of Rome. Two lines, the Volturno Line and the Barbara Line, were used to delay the Allied advance to buy time to prepare the most formidable defensive positions which formed the Winter Line, the collective name for the Gustav Line and two associated defensive lines on the west of the Apennine mountains, the Bernhardt Line and the Hitler Line. The Winter Line proved a major obstacle to the Allies at the end of 1943, halting their advance on the Fifth Army's front, the western side of Italy. * Although the Gustav Line was penetrated on the Eighth Army's Adriatic front and Ortona taken, blizzards, drifting snow and zero visibility at the end of December caused the advance to grind to a halt. * The Allies focus then turned to the western front where an attack through the Liri valley was considered to have the best chance of a breakthrough towards Rome. Landings at Anzio behind the line were intended to destabilise the German Gustav line defenses, but the hoped for early thrust inland to cut the German defenses off did not occur and the Anzio forces became bottled up in their beach head. * It took four major offensives between January and May 1944 before the line was eventually broken along a twenty mile front between Monte Cassino and the western seaboard. At the same time the forces at Anzio broke out of their beachhead but an opportunity to cut off and destroy a large part of the German Tenth Army retreating from the Gustav Line was lost when, on the brink of success, the Anzio forces changed their direction of attack to move parallel with the coast to capture Rome. * Rome was declared an open city by the German army and the US forces took possession on June 4.") "Advance to Northern Italy" (section :name "Advance to Northern Italy" :summary "* After the capture of Rome and the Normandy Invasion in June many experienced American and French units, the equivalent of a total of 7 divisions, were pulled out of Italy during the summer of 1944 to participate in Operation Dragoon, the Allied invasion in the south of France. * Churchill had hoped that a breakthrough in the autumn of 1944 would open the way for the Allied armies to advance to Vienna and Hungary to forestall the Russians advancing into Eastern Europe. Churchill's proposal had been strongly opposed by the US Chiefs of Staff who understood its importance to British post-war interests in the region but did not feel it aligned with prevailing overall Allied war priorities. * Continuation of the Allied offensive in early 1945 was made impractical by the poor winter weather (making armoured manoeuver and exploitation of overwhelming air superiority impossible). * On April 9, 1945, the Allies' final offensive commenced with massive aerial and artillery bombardments. * As April came to an end, the Axis forces in Italy, retreating on all fronts and having lost most of its fighting powers, was left with little option but surrender."))))
nx/tactics/books/world_wars / chapter_wwii_pacific_theatre
Description:
Function Name:
  • chapter_wwii_pacific_theatre
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_pacific_theatre : base/chapter (chapter :name "WWII Pacific Theatre" :sectionmap (sectionmap "Battle of Pearl Harbor" (section :name "Battle of Pearl Harbor" :summary "* On Sunday morning, December 7, 1941, the Japanese navy launched a surprise attack against the Pacific Fleet docked at Pearl Harbor, Hawaii which drew America into World War II. It was intended as a preventive action to remove the U.S. Pacific Fleet to protect Japan's advance into Malaya and the Dutch East Indies — for their natural resources such as oil and rubber. * Two aerial attack waves, totaling 353 aircraft, launched from six Japanese aircraft carriers. * The attack wrecked two U.S. Navy battleships, one minelayer, and two destroyers beyond repair, and destroyed 188 aircraft; personnel losses were 2,388 killed and 1,178 wounded. * The Japanese high command was certain, though mistakenly so, an attack on the United Kingdom's colonies would bring the U.S. into the war, so a preventive strike appeared to be the only way Japan could avoid U.S. interference in the Pacific. While the attack accomplished its intended objective, it was completely unnecessary - unbeknownst to Yamamoto, the U.S. Navy had decided to abandon any intention of 'charging' across the Pacific towards the Philippines at the outset of war back in 1935. They instead adopted 'Plan Dog' in 1940, which emphasized keeping the Imperial Japanese Navy (IJN) out of the eastern Pacific and the shipping lanes to Australia, while the U.S. concentrated on defeating Nazi Germany. * The attack was one of the most important engagements of World War II. Occurring as it did before a formal declaration of war, it pushed U.S. public opinion from isolationism to an acceptance war was unavoidable, as Roosevelt called December 7, 1941 '...a date which will live in infamy.'") "Battle of Wake Island" (section :name "Battle of Wake Island" :summary "* On December 8, 1941, the same day as the attack on Pearl Harbor, 36 Japanese medium bombers attacked Wake Island, destroying eight of the twelve F4F Wildcat fighters. * On December 11, the garrison, with the support of the four remaining Wildcats, repulsed the first Japanese landing attempt, which included the light cruisers Yubari, TenryÅ«, and Tatsuta; the destroyers Yayoi, Mutsuki, Kisaragi, Hayate, Oite, and Asanagi; two old destroyers converted to patrol boats (Patrol Boat No. 32 and Patrol Boat No. 33), and two troop transport ships containing 450 troops. The U.S. Marines fired at the invasion fleet with their six 5-inch (127 mm) coastal artillery guns. They then succeeded in sinking the Hayate with a direct hit to her magazines and striking the Yubari's superstructure eleven times. The four Wildcats also succeeded in sinking another destroyer, by dropping a bomb on her stern where the depth charges were stored. Both Japanese destroyers were lost with all hands, with Hayate becoming the first Japanese surface warship to be sunk during World War II. The Japanese force withdrew before landing. * This was the first Japanese defeat of the war. The first battle of Wake Island also marked the only occasion in WWII when an amphibious assault was repulsed by shore-based guns. * The siege on the Wake garrison continued, without resupply for the Americans. The initial resistance offered by the garrison prompted the Japanese Navy to detach two aircraft carriers (Soryu and Hiryu). * The second Japanese invasion force came on December 23, composed mostly of the same ships from the first attempt with some new additions, plus 1,500 Japanese marines. The landings began at 02:35 where, after a preliminary bombardment, the ex-destroyers Patrol Boat No. 32 and Patrol Boat No. 33 were beached and burned in their attempts to land the invasion force. * The next day, the Wake garrison surrendered. * The U.S. Marines lost 47 killed and 2 MIA during the entire 15-day siege, while three U.S. Navy personnel and at least 70 civilians were killed. * Japanese losses were recorded at between 700 to 900 killed, with at least 1,000 more wounded, in addition to the two destroyers lost in the first invasion attempt and at least 28 land-based and carrier aircraft either shot down or destroyed. The Japanese captured all men remaining on the island.") "Battle of Hong Kong" (section :name "Battle of Hong Kong" :summary "* On December 8-25, 1941 a battle was fought ending with Hong Kong, a British colony, surrendering to Japan. * The battle began less than eight hours after the Attack on Pearl Harbor. The garrison had held out for 17 days before surrendering. * This was the first occasion on which a British Crown Colony was surrendered to an invading force.") "Battle of Bataan" (section :name "Battle of Bataan" :summary "* The capture of the Philippine Islands was crucial to Japan's effort to control the Southwest Pacific, seize the resource-rich Dutch East Indies, and protect its Southeast Asia flank. * The Battle of Bataan was the largest surrender in American and Filipino military history." :scenariomap (scenariomap "War Plan Orange-3" (scenario :name "War Plan Orange-3" :summary "* On December 26, 1941, after securing the beachheads, the Japanese launched a massive pincer attack. The defending forces planned to fall back and hold out for six months, at which time the plan assumed that relief would arrive from the U.S. * The surrender of Bataan would hasten the fall of Corregidor, a month later. However, without this stand, the Japanese might have quickly overrun all of the U.S. bases in the Pacific. Bataan forced them to slow down, giving the allies valuable time to prepare for conflicts such as the Battle of the Coral Sea and the Battle of Midway which followed closely thereafter. * Ultimately, more than 60,000 Filipino and 15,000 American prisoners of war were forced into the infamous Bataan Death March. The prisoners were forced to march through deep dust for 90 miles. 5000-10000 died en route from disease, starvation, dehydration, heat prostration, untreated wounds, and wanton execution. Those who fell behind were usually executed or left to die; the sides of the roads became littered with dead bodies and those begging for help."))) "Battle of Malaya" (section :name "Battle of Malaya" :summary "* The Battle of Malaya was fought from December 8, 1941 to January 31, 1942. * The Japanese invaded with over two hundred tanks, but the British Army in Malaya did not have a single one. * For the British, Indian, Australian and Malayan forces defending the colony, the campaign was a disaster. In less than two months, the battle ended in comprehensive defeat for the Commonwealth forces with nearly 50,000 Commonwealth troops had been captured or killed.") "Battle of Corregidor" (section :name "Battle of Corregidor" :summary "* The fall of Bataan in April 9, 1942, ended all organized opposition in the Phillipines. The island bastion of Corregidor, with its network of tunnels and formidable array of defensive armament, along with the fortifications across the entrance to Manila Bay, was the remaining obstacle. The Japanese had to take Corregidor; as long as the island remained in American hands, they would be denied the use of the Manila Bay, the finest natural harbor in the Far East. * The two 12-inch (305mm) guns of Batteries Smith and Hearn, with a horizontal range of 29,000 yards (27,000m) and all-around traverse were the longest range of all the island's artillery. * From December 29, 1941, to the end of April 1942, despite incessant Japanese aerial, naval and artillery bombardment, the garrison on Corregidor resisted valiantly, inflicting heavy enemy losses in men and planes. * The defenders were living on about thirty ounces of food per day. Drinking water was distributed only twice per day, but the constant bombing and shelling often interrupted the ration. When the bombardment killed the mules in the Cavalry, they would drag the carcasses down to the mess hall and cook them. * Japanese aircraft flew 614 missions dropping 1,701 bombs totaling some 365 tons of explosive." :scenariomap (scenariomap "Battle of Corregidor" (scenario :name "Battle of Corregidor" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 2x 305mm Naval Guns * 43x Coastal Guns and Mortars * 72x Anti-aircraft guns") "Japanese Forces" (team :name "Japanese Forces" :forces "* Bombers * 9x 240mm Howitzers * 34x 149mm Howitzers * 32x Artillery"))))) "Battle of Singapore" (section :name "Battle of Singapore" :summary "* Japan invaded Singapore and fighting lasted from February 7, 1942 to February 15, 1942. * It resulted in the fall of Singapore, the major British military base in South East Asia and the largest surrender of British-led military personnel in history. About 80,000 Indian, Australian and British troops became prisoners of war, joining 50,000 taken by the Japanese in the Malayan campaign. Winston Churchill called the ignominious fall of Singapore the 'worst disaster' and 'largest capitulation' in British history.") "Doolittle Raid" (section :name "Doolittle Raid" :summary "* The Doolittle Raid, 18 April 1942, was the first air raid by the United States to strike the Japanese home island of HonshÅ« during World War II. It demonstrated that the Japanese home islands were vulnerable to Allied air attack. The Doolittle Raid was the only time that United States Army Air Forces bombers were launched from an aircraft carrier. * The plan was to launch B-25B bombers from a carrier, hit targets in Japan, and fly on to land in China. All 16 aircraft were lost, and 11 crewmen were either killed or captured. The crews of 13 aircraft, however, were recovered and returned to the United States, and a 14th crew interned by the Soviet Union eventually made its way home in 1943. * The Doolittle raid did little material damage, but American morale soared from the depths following Pearl Harbor. The raid also had a strategic impact, though it was not understood at the time, in that it caused the Japanese to recall some fighter units back to the home islands for defense. They did not understand how American aircraft could attack from such a distance and assumed that America had developed a new, extremely long-range aircraft, when in reality, American forces knew it would essentially be a one-way trip. This assumption that the home islands were vulnerable to air attack strengthened Admiral Yamamoto's resolve to carry out military action against Midway Island. These reassignments subsequently weakened Japan's air capabilities against the Allies at the Battle of Midway and later Pacific Theater campaigns.") "Battle of the Coral Sea" (section :name "Battle of the Coral Sea" :summary "* On May 4-8, 1942, the Japanese fought the US and Australian in the first naval battle between aircraft carriers and the first naval battle where neither side's ships sighted or fired directly upon the other. * On May 6, 1942, land-based B-17s attacked the approaching Port Moresby invasion fleet with the usual lack of success. Almost another year would pass before the USAAF realized high-altitude bombing attacks against moving naval targets were pointless. That night the commander at Port Moresby made the difficult decision to detach his main surface force (3 cruisers and 3 destroyers) to block the probable course of an invasion. He risked a repeat of the loss of HMS Prince of Wales and Repulse by exposing surface ships to attack by land-based aircraft without air cover. Indeed, his cruisers were spotted and came under an intense air attack from torpedo bombers but escaped with little damage. Only minutes after the Japanese raid, his force was inadvertently attacked by friendly B-17s and once again had to endure near misses. * On May 7, 1942, U.S. aircraft, sent in the wrong direction by a miscoded contact report, had missed ShÅ?kaku and Zuikaku but found the invasion fleet, escorted by the small carrier ShÅ?hÅ?, which was soon sunk with heavy casualties. In the previous five months the Allies had lost numerous major warships and had been unable to sink a single major Japanese ship in return. ShÅ?hÅ? was small by carrier standards, but the phrase 'scratch one flattop,' announced the first Allied naval success of the Pacific War. * On May 8, 1942, the main carrier forces located one another and launched full raids, which passed each other in the air. ShÅ?kaku was hit three times by bombs. Her deck damaged, ShÅ?kaku was unable to land her aircraft and was thus effectively put out of action. Both American carriers were hit: Yorktown by a bomb; the Lexington, by both bombs and torpedoes. Lexington had to be abandoned and sunk to prevent her capture. * Tactically, the Japanese had achieved a narrow victory; one small carrier lost and a large carrier severely damaged against the Americans' loss of a large carrier and significant damage to another. But from the Allied point of view, after five months of continuous defeat, a battle that came out almost even was close enough to a victory. * Strategically, the Allies had won since the invasion of Port Moresby, New Guinea had been averted (the first time the Japanese had been turned back). With ShÅ?kaku damaged and Zuikaku short of aircraft, neither was able to take part in the crucial Battle of Midway a month later. The loss of Lexington was a severe blow as she was one of the Navy's largest carriers. The damaged Yorktown returned to Pearl Harbor and although her damage was estimated to require months in port, she was made more or less battle-worthy in a miracle of improvisation and determination in just 2 days." :scenariomap (scenariomap "Battle of the Coral Sea" (scenario :name "Battle of the Coral Sea" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 2x Carriers (Yorktown, Lexington) * 3x Australian Cruisers * 3x Australian Destroyers * Australian and US support ships") "Japanese Forces" (team :name "Japanese Forces" :forces "* The Japanese had 3 fleets: * Solomon invasion force * Port Moresby invasion force * 2x Carriers (ShÅ?kaku and Zuikaku) * 1x Small carrier (ShÅ?hÅ?) * 2x Heavy cruisers * Support ships"))))) "Battle of Midway" (section :name "Battle of Midway" :summary "* From June 4, 1942 to June 7, 1942, exactly six months to the day after Japan's attack on Pearl Harbor the Americans and Japanese fought around Midway island in what is widely regarded as the most important naval battle in the Pacific. * For months, bureaucratic infighting delayed Admiral Yamamoto's plans in the Pacific. In the end, his threat to resign succeeded in moving his agenda forward. Yamamoto's primary strategic concern was the elimination of America's remaining carrier forces. Midway was not especially important, but the Japanese felt that the Americans would strongly defend it. The Japanese believed that only the USS Enterprise and Hornet would be available since the Lexington had been sunk and the Yorktown was badly damaged. Yamamoto dispersed his fleet to deceive the U.S. so the full extent of his fleet was hidden, but the U.S. had broken the Japanese naval code which negated this strategy and left his fleets separated by several hundred miles. * In order to battle 4 or 5 carriers, Admiral Nimitz needed every available carrier, so the Yorktown was restored to battle-worthy state in 72 hours. Repairs continued even as Yorktown sortied. * A picket line of Japanese submarines was late getting into position (partly because of Yamamoto's haste), which let the American carriers proceed to their assembly point without being detected. Reconnaissance planes were supposed to scout Pearl Harbor prior to the battle to detect American carriers. This plan was also thwarted when the refueling submarines found the refuelling point occupied by American warships (because the Japanese had carried out an identical mission in March). Thus, Japan was deprived of any knowledge concerning the movements of the American carriers. Japanese radio intercepts noticed an increase in both American submarine activity and message traffic. Yamamoto, at sea in Yamato, did not dare inform Nagumo for fear of exposing his position, and presumed (incorrectly) Nagumo had received the same message from Tokyo. * Admiral Nimitz had one priceless asset: American and British cryptanalysts had broken the JN-25 code, confirming Midway as the target, determining the date of the attack, and providing a complete IJN order of battle. Japan's efforts to introduce a new codebook had been delayed, giving HYPO several crucial days. * Nimitz was aware, for example, the vast numerical superiority of the Japanese fleet had been divided into no less than four task forces, and the escort for the main Carrier Striking Force was limited to just a few fast ships. For this reason, they knew the anti-aircraft guns protecting the carriers would be limited. Nimitz calculated his three carriers, plus Midway island, to Yamamoto's four, gave the U.S. rough parity. Meanwhile, the Japanese remained almost totally in the dark even after the battle began. * On June 4, nine B-17s operating from Midway attacked the Japanese transport group, but no significant damage was sustained. * On June 4, 4:30, Vice Admiral Chuichi Nagumo launched an attack wave (108 aircraft). At the same time, he launched eight search aircraft (one 30 minutes late due to technical issues). * American radar picked up the enemy at a distance of several miles and interceptors soon scrambled. Unescorted bombers headed off to attack the Japanese carrier fleet, their fighter escorts remaining behind to defend Midway. * At 06:20, Japanese carrier aircraft bombed and heavily damaged the U.S. base on Midway. Midway-based obsolescent F4F Wildcats, defended Midway and suffered heavy losses. Most were downed in the first few minutes. The Japanese learned the island's bombers had already departed, and the strike leader signaled Nagumo another attack would be necessary to neutralize Midway's defenses before troops could be landed. * American anti-aircraft fire was accurate and intense, damaging many Japanese aircraft and claiming a third of the Japanese planes destroyed. * American bombers based on Midway made several torpedo attacks on the Japanese carrier fleet, but the Japanese shrugged off these attacks with almost no losses, destroying all but three of the American bombers. * At 7:15, As a result of the attacks from Midway, Nagumo ordered his reserve planes to be re-armed with bombs for use on land targets. 30 minutes later a scout plane signaled the discovery of a sizable American naval force to the east. Nagumo quickly reversed his order and demanded the scout plane ascertain the composition of the American force. Another 40 minutes elapsed before Tone's scout finally detected and radioed the presence of a single carrier in the American force, TF 16 (the other carrier was not detected). * Nagumo was now in a quandary. His opportunity to hit the American ships was curtailed by the fact his Midway strike force would be returning shortly. They would be low on fuel and carrying wounded crewmen, would need to land promptly or ditch, losing precious aircraft and crews; there was slim chance a strike could be mounted in time. Spotting his flight decks and launching aircraft would require at least 30-45 minutes, but if he launched immediately his bombers would be without fighter escort and they had just witnessed how easily unescorted American bombers were shot down by their own fighters. * In the end, Nagumo chose to wait for his first strike force to land, then launch the reserve force. In the final analysis, it made no difference; Fletcher had launched beginning at 07:00, so the aircraft which would deliver the crushing blow were already on their way. There was nothing Nagumo could do about it. This was the fatal flaw of Yamamoto's dispositions: it followed strictly traditional battleship doctrine. * It was at this point Spruance gave his second crucial command, to run toward the target, having judged that the need to throw something at the enemy as soon as possible was greater than the need for a coordinated attack. Accordingly, American squadrons were launched piecemeal, proceeding to the target in several different groups. This diminished the overall impact of the American attacks and greatly increased their casualties; coincidentally, it reduced the Japanese ability to counterstrike and found Nagumo with his decks at their most vulnerable. * At 9:20, Allied planes began attacking, led by Torpedo Squadron 8 (VT-8, from Hornet), followed by VT-6 (from Enterprise). Every TBD Devastator of VT-8 was shot down, with only one survivor. VT-6 squadron met nearly the same fate, with no hits against the enemy, thanks in part to terrible aircraft torpedoes. The Japanese combat air patrol, flying the much faster Zero, made short work of the Americans, who not only had no fighter support but were flying the slow, under-armed TBDs. * The appearance of a third torpedo plane attack from the southeast by VT-3 at 10:00 very quickly drew the majority of the Japanese CAP into the southeast quadrant of the fleet. By chance, at the same time VT-3 was sighted by the Japanese, two separate formations (comprising three squadrons total) of American SBD Dauntless dive-bombers were approaching the Japanese fleet from the northeast and southwest. These formations initially had difficulty in locating the Japanese carriers, and their fuel was running low. However, by the decisions of squadron commanders C. Wade McClusky, Jr. and Max Leslie to continue the search, they spotted the wake of Japanese destroyer Arashi. The destroyer was steaming at full speed back to Nagumo's carrier force, after having unsuccessfully depth-charged the U.S. submarine Nautilus. * The American dive-bombers arrived in a perfect position to attack the Japanese. Armed Japanese strike aircraft filled the hangar decks at the time of the fateful attack, fuel hoses were snaking across the decks as refueling operations were hastily completed, and the constant change of ordnance meant bombs and torpedoes were stacked around the hangars rather than stowed safely in the magazines. The Japanese carriers were extraordinarily vulnerable. * Contrary to some accounts of the battle, contemporary research, based on recent translation of relevant portions of the 100 volume Japanese account of the war, has demonstrated that the Japanese were not in fact prepared to launch a counterstrike when they were decisively attacked. Because of the constant flight deck activity associated with combat air patrol operations, the Japanese had never had an opportunity to spot their reserve for launch. The few aircraft on the Japanese flight decks at the time of the attack were either CAP fighters, or (in the case of SÅ?ryÅ«) strike fighters being spotted to augment the CAP. * At 10:22, Enterprise's aircraft attacked Kaga, while to the south, Yorktown's aircraft attacked carrier SÅ?ryÅ«, with Akagi being struck by several of Enterprise's bombers four minutes later. Simultaneously, VT-3 was targeting HiryÅ«, although the American torpedo aircraft again scored no hits. Within six minutes, the SBD dive bombers made their attack runs and left all three of their targets heavily ablaze. Akagi was hit by just one bomb, which was sufficient; it penetrated to the upper hangar deck and exploded among the armed and fueled aircraft there. One extremely near miss also slanted in and exploded underwater, bending the flight deck upward with the resulting geyser and causing crucial rudder damage. SÅ?ryÅ« took three bomb hits in the hangar decks; Kaga took at least four. All three carriers were out of action and were eventually abandoned and scuttled. * By proceeding to target directly, without waiting for fighter escort, the torpedo squadrons, one after another, at low level, engaged enemy combat air patrol. This created an opportunity for the pilots of the dive bombers, who had arrived high above the action and were able to dive on target before being attacked. The torpedo planes were shot down and the torpedo squadron pilots lost their lives, but they enabled a titanic victory. * HiryÅ«, the sole surviving Japanese aircraft carrier, wasted little time in counterattacking. The first wave of Japanese dive-bombers badly damaged Yorktown with two bomb hits, yet her damage control teams patched her up so effectively (in about an hour) the second wave's torpedo bombers mistook her for an intact carrier. After two torpedo hits, Yorktown lost power and was out of the battle, forcing Admiral Fletcher to move his flag to the heavy cruiser Astoria. * HiryÅ« recovered its aircraft and prepared for a strike against what was believed to be the only remaining American carrier. * Enterprise launched a final strike of dive bombers (including 10 bombers from Yorktown), leaving HiryÅ« ablaze, despite being defended by a strong defensive CAP of over a dozen Zero fighters. Rear Admiral Yamaguchi chose to go down with his ship, costing Japan perhaps her best carrier sailor. * In the night, the fleets did not encounter one another which may have been fortunate for the Americans, for had the US carrier fleet come in contact with Yamamoto's heavies, including Yamato, in the dark, the US cruisers would have been overwhelmed, and the carriers helpless. * On June 7, Yorktown was sunk during salvage efforts, by three torpedoes from Japanese submarine I-168. There were few casualties since most of the crew had already been evacuated. One torpedo from this salvo also sank the destroyer USS Hammann, which had been providing auxiliary power to Yorktown, splitting her in two. * The battle was a decisive victory for the Americans, dealing Japanese naval aviation a heavy blow. The pre-war Japanese training program produced pilots of exceptional quality but at a slow rate. This small group of elite aviators were combat hardened veterans. At Midway, the Japanese lost as many of these pilots in a single day as their training program produced in a year. By mid-1943, Japanese naval aviation was decimated. Even more important was the irredeemable loss of four of Japan's fleet carriers. These ships were not replaced until early in 1945. In the same span of time, the U.S. Navy commissioned more than two dozen fleet and light fleet carriers." :scenariomap (scenariomap "Battle of Midway" (scenario :name "Battle of Midway" :teammap (teammap "Allied Forces" (team :name "Allied Forces" :forces "* 3x Carriers (Yorktown, Hornet, Enterprise) * Heavy Cruiser (Astoria) * Destroyer (Hammann) * 9x B-17 Bombers (Midway Island) * PBY Flying Boats (Midway Island) * F4F Wildcats (Midway Island) * Submarine (Nautilus)") "Japanese Forces" (team :name "Japanese Forces" :forces "* The Japanese had 4 fleets: * Carriers (Akagi, Kaga, HiryÅ« and SÅ?ryÅ«) * Cruiser Tone * Destroyer (Arashi) * 1x Small carrier (ShÅ?hÅ?) * 2x Heavy cruisers * Support ships"))))) "Battle of Quadalcanal" (section :name "Battle of Quadalcanal" :summary "* On August 7, 1942, US forces landed on the islands of Guadalcanal, Tulagi, and Florida in the southern Solomons capturing Tulagi and Florida as well as an airfield (later named Henderson Field) that was under construction by the Japanese on Guadalcanal. * Between August and November 1942, the Japanese made several attempts to retake Henderson Field. These attempts resulted in three major land battles, five large naval battles, and continuous, almost daily, aircraft battles. * In early November 1942 the last Japanese attempt to capture Henderson Field was defeated forcing the Japanese to eventually evacuate Guadalcanal. * The Guadalcanal campaign marked the first significant strategic victory by Allied forces over the Japanese in the Pacific and is often considered a 'turning point' in the war." :scenariomap (scenariomap "Battle of Savo Island" (scenario :name "Battle of Savo Island" :summary "* On August 8-9, 1942, the US and Japanese fought the Battle of Savo Island (aka the First Battle of the Solmon Sea in Japan). * During the US landing operations, Japanese aircraft based at Rabaul attacked several times. After these clashes, Fletcher (the carrier commander) was concerned about his fuel levels and the losses to his carrier air defense. Without consulting with the other commanders, he withdrew with his carriers. Without carrier air-cover, the transports and their escort fleet would have to withdraw as well, even though less than half of the supplies and heavy equipment had been unloaded. The decision was made, however, to unload as many supplies as possible throughout the night and then depart. * That night, as the transports unloaded, two groups of Allied warships, 5 cruisers and 7 destroyers, screening the transports were surprised and defeated by a Japanese force of 7 cruisers and 1 destroyer. One Australian and three U.S. cruisers were sunk, and one other U.S. cruiser and two destroyers were damaged. The Japanese suffered moderate damage to one cruiser. The Japanese who was unaware Fletcher had withdrawn with the U.S. carriers, immediately retired to Rabaul without attempting to attack the now unprotected Allied transports. * As a result of the defeat, the remaining Allied ships withdrew from the Solomon Islands. Allied ground forces had landed on Guadalcanal only the day before. The withdrawal of the fleet left them in a precarious situation, with barely enough supplies, equipment, and food to hold their beachhead.") "Battle of Eastern Solomons" (scenario :name "Battle of Eastern Solomons" :summary "* On August 24-August 25, 1942, the U.S. and Japan fought the second major engagement of the Guadalcanal Campaign. As at Coral Sea and Midway, the ships of the two adversaries were never in direct visual range of each other and fought all battles with aircraft. * After several damaging air attacks, both sides withdrew without securing a clear victory. However, the U.S. apparently gained a greater advantage because the Japanese suffered greater losses including a significant number of aircraft and experienced aircrews." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired. 2) Maintain secret movement." :forces "* 2 Carriers - Enterprise and Saratoga * 1 battleship * 4 cruisers * 11 destroyers * 176 aircraft - B-17 Bombers, F4F Wildcats, TBF Avengers") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired. 2) Maintain secret movement." :forces "* 2 Carriers - ShÅ?kaku (Flagship), Zuikaku * 1 Light Carrier - RyÅ«jÅ? * 2 Battleships * 9 Heavy Cruisers - Tone, Chikuma * 3 Light Cruiser * 17 Destroyers - Amatsukaze, Kagero, Mutsuki, Tokitsukaze * 1 Seaplane Carrier - Chitose * 4 Patrol Boats * 3 Transports - Kinryu Maru * 100 Land-based 'Betty' Bombers, fighters, recon * 75 Carrier-based aircraft - Kates, Vals, Zeroes"))) "Battle of Milne Bay" (scenario :name "Battle of Milne Bay" :reference "* Australian troops had, at Milne Bay, inflicted on the Japanese their first undoubted defeat on land...Of all the allies, it was the Australians who first broke the invincibility of the Japanese army." :summary "* On August 25, 1942, Japanese marines attacked the Australian base at Milne Bay on the eastern tip of New Guinea, and fighting continued until the Japanese retreated on 5 September 1942. The battle was the first in the Pacific campaign in which Allied troops defeated Japanese land forces and, significantly, forced them to withdraw. The assault was the southern most point of the Japanese advance on land in World War II. * The Japanese hoped to secure an air and naval base to provide air and naval support to the Japanese Kokoda Track campaign to take Port Moresby, New Guinea by capturing the newly constructed airfields at Milne Bay." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 4,500 Infantry - Mortar, MG * 4,500 Non-combat personnel * 12 P-40 Kittyhawks * 1 Hudson No. 6 * 3 B-17 Bombers") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 1,800 Infantry * 350 Non-combat personnel * 4 Ha-Go Light Tanks * 2 Light Cruisers - TenryÅ« and Tatsuta * 3 Destroyers - Urakaze, Tanikaze, Hamakaze * 2 Transports - Nankai Maru and Kinai Maru * 2 Submarine Chasers"))) "Battle of the Santa Cruz Islands" (scenario :name "Battle of the Santa Cruz Islands" :summary "* On October 26, 1942, two opposing carrier forces fought off Guadalcanal. After an exchange of carrier air attacks, Allied ships were forced to retreat with the loss of one carrier sunk (Hornet) and another (Enterprise) heavily damaged. The Japanese carrier forces, however, also retreated because of high aircraft and aircrew losses and significant damage to two carriers." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Carriers - Hornet, Enterprise * 1 Battleship - South Dakota * 6 Cruisers - Northhampton, Portland, San Juan * 14 Destroyers - Anderson, Mahan, Mustin, Porter, Shaw, Smith * 136 Aircraft - SBD Dauntless, TBF Avenger, F4F Wildcat, PBY Catalina") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 3 Carriers - JunyÅ?, ShÅ?kaku (Flagship), Zuikaku * 1 Light Carrier - ZuihÅ? * 2 Battleships * 1 Heavy Cruiser - Atago, Chikuma, Suzuya * 1 Light Cruiser - Yura * 7 cruisers * 22 Destroyers - Akizuki, Teruzuki * 199 aircraft"))) "First Naval Battle of Guadalcanal" (scenario :name "First Naval Battle of Guadalcanal" :summary "* On November 12-15, 1942, the decisive battle was fought during the months long Guadalcanal Campaign. The Japanese organized a transport convoy to take 7,000 infantry troops and their equipment to Guadalcanal to attempt once again to retake Henderson Field airfield. To allow the convoy to approach the island and deliver its cargo, the Japanese navy sent several warship forces to bombard Henderson Field with the goal of destroying Allied aircraft. Learning of the Japanese reinforcement effort, U.S. forces prepared to interdict the Japanese convoy and warships with aircraft and warship attacks. * At 1:25 on November 13, 1942 in almost pitch darkness both fleets entered the sound between Savo Island and Guadalcanal. Several of the U.S. ships detected the Japanese ships on radar, but had trouble communicating the information because of problems with their ship's radio equipment and lack of discipline with their communications procedures. Several minutes later, both forces visually sighted each other about the same time. At 01:48, Akatsuki and Hiei turned on large searchlights and lit up Atlanta only 3,000 yards (2.7 km) away—almost point-blank range for large naval artillery. Several of the ships on both sides spontaneously opened fire. As the ships from the two sides intermingled, they battled each other in an utterly confused and chaotic melée at close distances. Afterwards, an officer on Monssen likened it to 'a barroom brawl after the lights had been shot out' * At least six of the U.S. ships, including Laffey, O'Bannon, Atlanta, San Francisco, Portland, and Helena, fired at Akatsuki, which drew attention to herself with her illuminated searchlight. Akatsuki was hit repeatedly and blew up and sank within a few minutes. * Perhaps because it was the lead cruiser in the U.S. formation, Atlanta was the target of fire from several Japanese ships. It suffered heavy damage and drifted into the line of fire of San Francisco, which accidentally fired on Atlanta, causing even greater damage, and killing Admiral Scott and much of the bridge crew. * Hiei, with her nine lit searchlights, huge size, and course taking her directly through the U.S. formation, became the focus of gunfire from many of the U.S. ships. Laffey passed so close to Hiei that they missed colliding by 20 feet (6m). Hiei was unable to depress her main or secondary batteries low enough to hit Laffey, but Laffey was able to rake Hiei's superstructure with 5-inch (130 mm) shells and machine gun fire, causing heavy damage to Hiei's superstructure and bridge, wounding Admiral Abe, and killing his chief of staff. * Unable to fire her main or secondary batteries at the three destroyers causing her so much trouble, Hiei instead concentrated on San Francisco which was passing by only 2,500 yards (2.3 km) away.[42] Along with Kirishima, Inazuma, and Ikazuchi, the four ships made repeated hits on San Francisco, disabling her steering control and killing Admiral Callaghan, Captain Cassin Young, and most of the bridge staff. The first few salvos from Hiei and Kirishima consisted of the special fragmentation bombardment shells, which reduced damage to the interior of San Francisco and may have saved her from being sunk outright. Not expecting a ship-to-ship confrontation, it took the crews of the two Japanese battleships several minutes to switch to armor-piercing ammunition. * Two of the U.S. destroyers met a sudden demise. Either Nagara or the destroyers Teruzuki and Yukikaze came upon the drifting Cushing and pounded her with gunfire, knocking out all of her systems. Unable to fight back, Cushing's crew abandoned ship. Cushing sank several hours later. Laffey, having escaped from her engagement with Hiei, encountered Asagumo, Murasame, Samidare, and, perhaps, Teruzuki. The Japanese destroyers pounded the Laffey with gunfire and then hit her with a torpedo which broke her keel. A few minutes later fires reached her ammunition magazines and she blew up and sank. Two torpedoes from Amatsukaze hit Barton, immediately sinking her with heavy loss of life. She was accosted by Asagumo, Murasame, and Samidare who had just finished blasting Laffey. They proceeded to smother Monssen with gunfire, damaging her severely and forcing the crew to abandon ship. The ship sank sometime later. * At 2:26, after nearly 40 minutes of the brutal, close-quarters fighting, the two sides broke contact. * The Japanese had one battleship, one light cruiser, and four destroyers that could continue fighting. The U.S. had only one light cruiser, and one destroyer that were still capable of effective resistance. Although perhaps unclear, the way was clear for the Japanese to bombard Henderson Field and finish off the U.S. naval forces in the area, clearing the way for the troops and supplies to be landed safely on Guadalcanal. However, at this crucial juncture, the Japanese chose to abandon the mission. * After the battle, Juneau was torpedoed and sunk by Japanese submarine I-26. Juneau's 100+ survivors (out of a total complement of 650) were left to fend on their own in the open ocean for eight days before rescue aircraft belatedly arrived. While awaiting rescue, all but 10 of Juneau's crew died from their injuries, the elements, or shark attacks. * Because of the confused nature of the battle, the U.S. believed that they had sunk as many as seven Japanese ships. This, plus the Japanese retreat, caused the U.S. to believe at the time that they had won a significant victory. It was only after the war that the U.S. learned that they had suffered what most see as a crushing tactical defeat. * Nevertheless, most historians appear to agree that Abe's decision to retreat turned this tactical defeat into a strategic victory for the U.S. Henderson Field remained operational with attack aircraft ready to deter the slow Japanese transports from approaching Guadalcanal with their precious cargoes. Plus, the Japanese had lost an opportunity to eliminate the U.S. naval forces in the area, a result which would have taken even the comparatively resource-rich U.S. some time to recover from. Reportedly furious, Admiral Yamamoto relieved Abe of command and later directed his forced retirement from the military. * Both sides lost numerous warships in two extremely destructive nighttime surface engagements, with the U.S. suffering more warships sunk or heavily damaged than the Japanese. The U.S., however, was successful in turning back attempts by the Japanese to bombard Henderson Field with battleships. Air attacks by Allied aircraft also sank most of the Japanese troop transports and prevented the majority of the Japanese troops and equipment from reaching Guadalcanal. The battle turned back Japan's last major attempt to dislodge Allied forces from Guadalcanal and nearby Tulagi, resulting in a strategic victory for the U.S. and its allies and deciding the ultimate outcome of the Guadalcanal campaign in favor of Allied forces." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Heavy Cruisers - San Francisco (Flagship), Portland * 3 Light Cruisers - Helena, Juneau, Atlanta * 8 Destroyers - Cushing, Laffey, Sterett, O'Bannon, Aaron Ward, Barton, Monssen, Fletcher") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 Battleships - Hiei (Flagship) and Kirishima * 1 Light Cruiser - Nagara * 14 Destroyers - Samidare, Murasame, Asagumo, Teruzuki, Amatsukaze, Yukikaze, Ikazuchi, Inazuma, Akatsuki, Harusame, Yudachi, Shigure, Shiratsuyu, Yugure * 11 Transports * 12 Escort Destroyers"))) "Second Naval Battle of Guadalcanal" (scenario :name "Second Naval Battle of Guadalcanal" :reference "* It would seem that the turning point in this war has at last been reached. - U.S. President Franklin Roosevelt, upon learning of the results of the battle. * On November 12, 1942, the (Japanese) Imperial Navy had the better ships and the better tactics. * After November 15, 1942, its leaders lost heart and it lacked the strategic depth to face the burgeoning U.S. Navy and its vastly improving weapons and tactics. The Japanese never got better while, after November 1942, the U.S. Navy never stopped getting better - Historian Eric Hammel on the Battle of Quadalcanal" :summary "* On the night of November 14-15, 1942, to cover the unloading of the transports at Guadalcanal, the Japanese fleet made its third attempt to neutralize Henderson Field, sending the force of warships through Indispensable Strait to bombard Guadalcanal. * Low on undamaged ships, the U.S., detached a scratch force; the new battleships had only operated together for a few days, and their four escorts were from four different divisions—chosen simply because, of the available destroyers, they had the most fuel. * At 23:22 The U.S. destroyers in the front of the column engaged Nagara, Ayanami, and 4 destroyers. The Japanese responded effectively with accurate gunfire and torpedoes, and destroyers Walke and Preston were hit and sunk within 10 minutes with heavy loss of life. The destroyer Benham had part of her bow blown off by a torpedo and had to retreat (she sank the next day), and destroyer Gwin was hit in her engine room and put out of the fight. However, the U.S. destroyers had completed their mission as screens for the battleships, absorbing the initial impact of contact with the enemy, although at great cost. Washington passed through the area still occupied by the damaged and sinking U.S. destroyers and fired on Ayanami with her secondary batteries, setting her afire. Following close behind, South Dakota suddenly suffered a series of electrical failures, reportedly during repairs when her chief engineer locked down a circuit breaker in violation of safety procedures, causing her circuits repeatedly to go into series, making her radar, radios, and most of her gun batteries inoperable. * At 00:00 on November 15, 1942, almost blind and unable to effectively fire her main and secondary armament, South Dakota was illuminated by searchlights and targeted by gunfire and torpedoes by most of the ships of the Japanese force, including Kirishima. Although able to score a few hits on Kirishima, South Dakota took 25 medium and one large-caliber hit, some of which did not explode, that completely knocked out her communications and remaining gunfire control operations, set portions of her upper decks on fire, and forced her to try to steer away from the engagement. * The Japanese ships continued to concentrate their fire on South Dakota and none detected Washington approaching to within 9,000 yards (8 km). Washington was tracking a large target (Kirishima) for some time but refrained from firing since there was a chance it could be South Dakota. Washington had not been able to track South Dakota's movements because she was in a blind spot in the Washington's radar and Lee could not raise her on the radio to confirm her position. When the Japanese illuminated and fired on South Dakota, all doubts were removed as to which ships were friend or foe. From this close range, Washington opened fire and quickly hit Kirishima with at least nine main battery shells and almost forty secondary ones, causing heavy damage and setting her aflame. Kirishima was hit below the waterline and suffered a jammed rudder, causing her to circle uncontrollably to port. * Washington then withdrew to draw the Japanese away from the South Dakota. Kirishima and Ayanami were scuttled in the night. At 4:00, the four Japanese transports beached themselves to quickly unload their reinforcements and cargo, but at 5:55 they were attacked by U.S. aircraft from Henderson Field and from field artillery which destroyed most of the ammunition and food supplies that had not yet been unloaded. * The failure to deliver most of the troops and supplies in the convoy to Guadalcanal prevented the Japanese from launching another offensive to retake Henderson Field. * By late December 1942, the U.S. was able to land 2 fresh divisions of infantry. * On December 31, 1942, the Japanese abandoned Guadalcanal." :teammap (teammap "Allied Forces" (team :name "Allied Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 2 battleships - Washington, South Dakota * 4 destroyers - Benham, Gwin, Preston, Walke") "Japanese Forces" (team :name "Japanese Forces" :deploy "1) Deploy in as many fleets as desired." :forces "* 1 battleships - Kirishima * 2 heavy cruisers - Atago (Flagship), Takao * 2 light cruisers - Nagara, Sendai * 9 destroyers - Asagumo, Ayanami, Samaidare, Shikinami, Teruzuki, Uranami * 4 transports"))))) "Battle of Guam" (section :name "Battle of Guam" :summary "* On July 21 the Americans landed on both sides of the Orote peninsula on the western side of Guam, planning to cut off the airfield. Japanese artillery sank 20 LVTs, but by 09:00 tanks were ashore at both beaches. * By nightfall the Americans had established beachheads about 2,000 meters deep. Japanese counter-attacks were made throughout the first few days of the battle, mostly at night, using infiltration tactics. Several times they penetrated the American defenses and were driven back with heavy loss of men and equipment. * The counterattacks around the American beachheads had exhausted the Japanese. At the start of August they were running out of food and ammunition and had only a handful of tanks left. * As in other battles of the Pacific War, the Japanese refused to surrender, and almost all were killed. * A few Japanese soldiers held out in the jungle. On December 8, 1945, three U.S. Marines were ambushed and killed. On January 24, 1972, Sergeant Shoichi Yokoi was discovered by hunters. He had lived alone in a cave for 27 years.") "Battle of Leyte Gulf" (section :name "Battle of Leyte Gulf" :summary "* From October 17 to December 31, 1944, the Battle in Philippines is generally considered to be the largest naval battle of WWII and, by some criteria, the largest naval battle in history. * The Americans lost 15,584 casualties, of which 3,504 were killed in action. * The Japanese losses were heavy, losing 49,000 troops, 26 major warships, and 46 large transports and merchantmen. * The struggle also reduced Japanese land-based air capability in the Philippines by more than fifty percent, forcing them to depend on suicidal kamikaze pilots. * Once the decisive battle of Leyte was lost, the Japanese gave up hope of retaining the strategically critical Philippines, from which Japan could be easily cut off from outside resources, and from which the direct assaults on the Japanese home islands could be launched.") "Battle of Iwo Jima" (section :name "Battle of Iwo Jima" :summary "* On February 19-March 26, 1945, US forces captured of the island of Iwo Jima from the Japanese, producing some of the fiercest fighting in the Pacific Campaign of World War II. The Japanese positions on the island were heavily fortified, with vast bunkers, hidden artillery, and 18 kilometers (11 mi) of tunnels. The battle was the first American attack on the Japanese Home Islands and the Imperial soldiers defended their positions tenaciously. * Of the 21,000 Japanese soldiers present at the beginning of the battle, over 20,000 were killed and only 216 taken prisoner.") "Battle of Okinawa" (section :name "Battle of Okinawa" :summary "* The 82 day battle lasted from late March through June 1945 and was the largest amphibious assault in the Pacific Theater. The battle has one of the highest casualties: the Japanese lost over 100,000 troops, and the Allies (mostly United States) suffered more than 50,000 casualties, with over 12,000 killed in action. Hundreds of thousands of civilians were killed, wounded or attempted suicide. * The main objective of the operation was to seize a large island only 340 miles away from mainland Japan. Okinawa was to serve as a springboard for the invasion of Japan, though the the atomic bombings of Hiroshima and Nagasaki caused Japan to surrender just weeks after the end of the fighting at Okinawa and the invasion never took place. * Some military historians believe that Okinawa led directly to the use of the atomic bomb on Hiroshima and Nagasaki. '...because the Japanese on Okinawa, including native Okinawans, were so fierce in their defense (even when cut off, and without supplies), and because casualties were so appalling, many American strategists looked for an alternative means to subdue mainland Japan. This means presented itself, with the advent of atomic bombs, which worked admirably in convincing the Japanese to sue for peace, without American casualties. Ironically, the American conventional fire-bombing of major Japanese cities (which had been going on for months before Okinawa) was far more effective at killing civilians than the atomic bombs and, had the Americans simply continued, or expanded this, the Japanese would likely have surrendered anyway. Nevertheless, the bombs were a powerful symbolic display of American power, and the Japanese capitulated, obviating the need for an invasion.'") "Atomic bombings of Hiroshima and Nagasaki" (section :name "Atomic bombings of Hiroshima and Nagasaki" :summary "* On August 6, 1945, after six months of intense firebombing of 67 other Japanese cities, the nuclear weapon 'Little Boy' was dropped on the city of Hiroshima. * On August 9, 1945, the nuclear bomb 'Fat Man' was dropped over Nagasaki. * These are to date the only attacks with nuclear weapons in the history of warfare. The bombs killed as many as 140,000 people in Hiroshima and 80,000 in Nagasaki by the end of 1945, roughly half on the days of the bombings. * Since then, thousands more have died from injuries or illness attributed to exposure to radiation. In both cities, the overwhelming majority of the dead were civilians. * Six days after the detonation over Nagasaki, on August 15, Japan announced its surrender to the Allied Powers, ending the Pacific War and therefore World War II. Germany had surrendered on May 7. * The bombings led, in part, to post-war Japan forbidding itself from nuclear armament."))))
nx/tactics/books/world_wars / chapter_wwi_british_forces
Description:
Function Name:
  • chapter_wwi_british_forces
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwi_british_forces : base/chapter (chapter :name "WWI British Forces" :sectionmap (sectionmap "WWI British Infantry" (section :name "WWI British Infantry" :unitmap (unitmap :Doughboy (unit :name "Doughboy") "Vickers Machine Gunner" (unit :name "Vickers Machine Gunner") "Sopwith Camel" (unit :name "Sopwith Camel"))))))
nx/tactics/books/world_wars / chapter_wwi_french_forces
Description:
Function Name:
  • chapter_wwi_french_forces
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwi_french_forces : base/chapter (chapter :name "WWI French Forces" :sectionmap (sectionmap "WWI French Infantry" (section :name "WWI French Infantry" :unitmap (unitmap "French Infantry" (unit :name "French Infantry" :image "WorldWars/French_Infantry.png"))) "WWI French Vehicles" (section :name "WWI French Vehicles" :unitmap (unitmap "Renault FT 17" (unit :name "Renault FT 17" :reference "* Among the most revolutionary and influential tank designs in history. The FT 17 was the first tank with an armament in a fully rotating turret, and its configuration with the turret on top, engine in the back and the driver in front became the conventional one, repeated in most tanks until today; at the time it was a revolutionary innovation, causing armour historian Steven Zaloga to describe the type as 'the world's first modern tank.' The tank was widely used by the French and the Americans (who, as mentioned, were lent 514) in the latter stages of World War I, after 31 May 1918. The tank was cheap and well-suited for mass production. Indeed, the very production was made a weapon in itself: a goal was set of 12,260 to be produced (4,440 of which in the USA) before the end of 1919.This prospect was one of several factors which drove the German High Command to its decision to launch the massive all-or-nothing offensives in the spring of 1918, which in turn weakened their army so that it collapsed in the summer. FT 17 tanks were also used in the Second World War, among others in Poland, Finland, France and Kingdom of Yugoslavia, although they were completely obsolete by then."))))))
nx/tactics/books/world_wars / chapter_wwi_german_forces
Description:
Function Name:
  • chapter_wwi_german_forces
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwi_german_forces : base/chapter (chapter :name "WWI German Forces" :sectionmap (sectionmap "WWI French German Vehicles" (section :name "WWI French German Vehicles" :unitmap (unitmap :Folker (unit :name "Folker" :reference "* Of all the aces the war produced none compared to the greatest flyer of all, Manfred Richtofen 'The Red Baron'. To this day his name remains a legend that is better known to most than even the war that created him."))))))
nx/tactics/books/world_wars / chapter_wwii_equipment
Description:
Function Name:
  • chapter_wwii_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_equipment : base/chapter (chapter :name "WWII Equipment" :sectionmap (sectionmap "WWII Explosives" (section :name "WWII Explosives" :itemmap (itemmap "30kg Bomb" (item :name "30kg Bomb" :classification "Bomb" :explosive "30kg") "60kg Bomb" (item :name "60kg Bomb" :classification "Bomb" :explosive "60kg") "100kg Bomb" (item :name "100kg Bomb" :classification "Bomb" :explosive "100kg") "250lb Bomb" (item :name "250lb Bomb" :classification "Bomb" :explosive "110kg") "350lb Bomb" (item :name "350lb Bomb" :classification "Bomb" :explosive "159kg") "500lb Bomb" (item :name "500lb Bomb" :reference "* P-47 pilots frequently carried two 500-pound (227 kg) bombs, using skip bombing techniques for difficult targets (skipping bombs into railroad tunnels to destroy hidden enemy locomotives or tanks was a favorite tactic); a near miss was sufficient to knock a tank on its side, blow off a track or turret, or cause serious damage to tracks, suspension, and turret mechanisms, frequently causing the vehicle to be abandoned by its crew." :classification "Bomb" :explosive "225kg") "250kg Bomb" (item :name "250kg Bomb" :classification "Bomb" :explosive "250kg") "600lb Depth Charge" (item :name "600lb Depth Charge" :reference "* Although the explosions of the standard United States 600-pound (270 kg) Mark 4 or Mark 7 depth charge used in World War II were nerve-wracking to the target, an undamaged U-boat's pressure hull would not rupture unless the charge detonated closer than about five meters. Placing the weapon within this range was entirely a matter of chance and quite unlikely as the target maneuvered evasively during the attack. Most U-boats sunk by depth charges were destroyed by damage accumulated from a long barrage rather than by a single carefully-aimed attack. Many survived hundreds of depth charge detonations over a period of many hours. * The depth charge causes damage by both the initial shock wave and by the subsequent reverberating shock waves that have a tendency to bend a submarine back and forth cause a hull breach. * A 100kg of TNT depth charge would have a kill radius of 3-4m. Higher payloads only increase this by a few meters because the effect decreases with the distance cubed. The killing range is also greater with larger submarines. It is doubtful a midget submarine with a titanium hull could be destroyed by anything less than a direct hit." :classification "Bomb" :explosive "270kg") "1000lb Bomb" (item :name "1000lb Bomb" :classification "Bomb" :explosive "454kg") "1200kg Bomb" (item :name "1200kg Bomb" :classification "Bomb" :explosive "1200kg") :Mine (item :name "Mine" :classification "Bomb") :Torpedo (item :name "Torpedo" :image "WWII/Torpedo.png" :classification "Torpedo"))))))
nx/tactics/books/world_wars / chapter_wwii_american_equipment
Description:
Function Name:
  • chapter_wwii_american_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_american_equipment : base/chapter (chapter :name "WWII American Equipment" :sectionmap (sectionmap "WWII American Light Weapons" (section :name "WWII American Light Weapons" :itemmap (itemmap ".45 M1911A1 Automatic" (item :name ".45 M1911A1 Automatic" :image "WWIIAmerican/Pistol_M1911.jpg" :classification "Pistol" :length ".21m" :mass "1.1kg" :muzzlevelocity "253m/s" :range "25m" :rounds "7") ".45 M3 SMG Grease Gun" (item :name ".45 M3 SMG Grease Gun" :image "WWIIAmerican/SMG_M3GreaseGun.jpg" :classification "Lt. MG" :length ".75m" :mass "3.6kg" :modifiers "Auto" :muzzlevelocity "280m/s" :range "90m" :rounds "30") ".30-06 M1 Garand Rifle" (item :name ".30-06 M1 Garand Rifle" :image "WWIIAmerican/Rifle_M1Garand.jpg" :reference "* The M1's semiautomatic operation gave US forces a significant advantage in firepower over German and Japanese soldiers with bolt-action rifles. The greatest implement of battle ever devised. - General George S. Patton" :summary ".30-06 Semi-automatic rifle" :classification "Rifle" :length "1.1m" :mass "4.3kg" :muzzlevelocity "853m/s" :range "457m" :rounds "8") ".30-06 M1903A4 Springfield" (item :name ".30-06 M1903A4 Springfield" :image "WWIIAmerican/Rifle_M1903A4_Springfield.jpg" :reference "* An M1903 fitted with a scope was used by Daniel Jackson (Barry Pepper) in the movie Saving Private Ryan." :summary ".30-06 Bolt-action Sniper Rifle" :classification "Rifle" :length "1.1m" :mass "3.9kg" :muzzlevelocity "853m/s" :range "550m" :rounds "5") ".30-06 M1918 BAR" (item :name ".30-06 M1918 BAR" :reference "* While not without its design flaws (a thin-diameter, fixed barrel that quickly overheated, limited magazine capacity, complex field-strip/cleaning procedure, unreliable recoil buffer mechanism, a gas cylinder assembly made of corrosion-prone metals, and many small internal parts), the basic BAR design nevertheless proved itself when kept clean and earned a reputation as being rugged and reliable." :summary ".30-06 Browning Automatic Rifle (BAR)" :classification "Lt. MG" :length "1.2m" :mass "7.2kg" :modifiers "Auto" :muzzlevelocity "860m/s" :range "326m" :rof "450/min" :rounds "20"))) "WWII American Heavy Weapons" (section :name "WWII American Heavy Weapons" :itemmap (itemmap ".30-06 M1919A4 MG" (item :name ".30-06 M1919A4 MG" :image "WWIIAmerican/MG_1919_Browning.jpg" :classification "Hvy. MG" :length ".96m" :mass "14kg" :modifiers "Auto" :muzzlevelocity "853m/s" :rof "500/min" :rounds "250") ".50 cal M2HB MG" (item :name ".50 cal M2HB MG" :image "WWIIAmerican/MG_BrowningM2.jpg" :reference "* While the AP projectiles from the .50-caliber machine guns could not penetrate the front, side, or turret armor of enemy tanks, it could sometimes penetrate the engine grilles and exhaust system of the German Pzkpf Mk IV or Pzkpf V (Panther I), disabling the vehicle. * Used extensively from 1920's to present with few modifications. It is the primary MG of NATO countries and has been in use longer than any other small arm in U.S.." :summary ".50 cal Browning M2 water cooled machine gun" :classification "Hvy. MG" :length "1650mm" :mass "38kg" :modifiers "Auto, AP, API, Tracer" :muzzlevelocity "930m/s" :rof "500/min") "M2 Flamethrower" (item :name "M2 Flamethrower" :image "WWIIAmerican/Flamethrower_M2.jpg" :reference "* With the arrival of tanks, especially flamethrower tanks, the need for infantrymen to expose themselves to fire became unnecessary as tanks offered greater protection while still delivering the effective damage. * While some were sold off, the majority of them were scrapped when they were declared obsolete." :summary "* All [Hits] and [Critical Hits] are [Fire] tokens." :classification "Flamethrower" :crew "2" :mass "31kg" :modifiers "Fire, Auto" :range "20m") "M1A1 Bazooka" (item :name "M1A1 Bazooka" :image "WWIIAmerican/Rocket_M1A1Bazooka.jpg" :reference "* Highly effective, though inherently inaccurate at all but very close ranges. Eisenhower later described it as (together with the atom bomb, jeep and the C-47 Skytrain transport aircraft) one of the four weapons which won WWII for the allies." :classification "Missile" :crew "2" :explosive "1.59kg" :length "1.4m" :mass "5.8kg" :modifiers "HEAT, -1 Accuracy, +1 Prepare" :range "100m") "4.2in M2 Mortar" (item :name "4.2in M2 Mortar" :image "WWIIAmerican/Mortar_M2.jpg" :classification "Artillery" :explosive "3.64kg" :length ".7m" :mass "19kg" :modifiers "Indirect, HE, White Phosphorus, Illuminating" :range "1.8km" :rof "18/min") "20mm Oerlikon Autocannon" (item :name "20mm Oerlikon Autocannon" :classification "Cannon" :mass "48kg" :modifiers "Auto" :muzzlevelocity "820m/s" :rof "450/min") "20mm Hispano Autocannon" (item :name "20mm Hispano Autocannon" :classification "Cannon" :mass "42kg" :modifiers "Auto" :muzzlevelocity "840m/s" :rof "750/min") "28mm 1.1in Quad Cannon" (item :name "28mm 1.1in Quad Cannon" :classification "Cannon" :modifiers "Auto") "37mm M3 Cannon" (item :name "37mm M3 Cannon" :image "WWIIAmerican/Cannon_M3.jpg" :classification "Cannon" :length "4m" :mass "414kg" :muzzlevelocity "884m/s" :rof "25/min") "37mm M4 Cannon" (item :name "37mm M4 Cannon" :image "WWIIAmerican/Cannon_M4.jpg" :classification "Cannon" :length "2.3m" :mass "97kg" :modifiers "Auto, HE, AP" :muzzlevelocity "610m/s" :rof "150/min") "57mm M1 Cannon" (item :name "57mm M1 Cannon" :reference "* American version of the British QF 6 Pounder * Although 17 Pounder guns were rushed to North Africa to combat the Tiger tank, it was in fact a 6-pdr, which claimed the first Tiger 'kill'." :classification "Cannon" :modifiers "AP" :range "4600m") "75mm M3 L/40 Cannon" (item :name "75mm M3 L/40 Cannon" :summary "* The gun was designed to have both powerful HE projectile and good anti-tank capability, however from the middle of the war it was no longer effective in the anti-tank role, due to its low muzzle velocity." :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "619m/s") "76mm M1 Cannon" (item :name "76mm M1 Cannon" :reference "* While the 76 mm had less High Explosive (HE) and smoke performance than the 75 mm, the higher-velocity 76 mm gave better anti-tank performance, with firepower comparable to the Soviet ZiS-S-5 85 mm gun of the T-34-85 and many of the armoured fighting vehicles it encountered, particularly the Panzer IV and StuG vehicles." :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "792m/s") "76mm M7 Cannon" (item :name "76mm M7 Cannon" :reference "* Though successful in Northern Africa, the gun proved to be ineffective against the frontal armor of the newer German Tiger and Panther tanks." :classification "Cannon" :length "7.1m" :mass "2.2tons" :modifiers "AP, HE" :muzzlevelocity "820m/s" :range "9.6km" :rof "12/min") "90mm M1 Cannon" (item :name "90mm M1 Cannon" :classification "Cannon" :modifiers "HE, AP, AA" :muzzlevelocity "823m/s" :range "17800m" :rof "24/min") "105mm M101 Howitzer" (item :name "105mm M101 Howitzer" :classification "Cannon" :modifiers "Indirect, HE") "127mm 5in/38cal Autocannon" (item :name "127mm 5in/38cal Autocannon" :classification "Cannon" :length "5.6m" :mass "50tons" :modifiers "Auto" :muzzlevelocity "760m/s" :rof "15/min") "203mm 8in/55cal Cannon" (item :name "203mm 8in/55cal Cannon" :classification "Cannon" :length "11m" :mass "20tons" :muzzlevelocity "760m/s" :range "29km" :rof "4/min"))) "WWII American Explosives" (section :name "WWII American Explosives" :itemmap (itemmap "Mk 2 Grenade" (item :name "Mk 2 Grenade" :image "WWIIAmerican/Grenade_MK2.jpg" :reference "* At least 5 people have thrown themselves on hand grenades and lived." :summary "* It had a fatality radius of 5m, a blast radius of 13.7m, and fragments can disperse to 213m." :classification "Bomb" :explosive ".057kg" :mass ".6kg" :modifiers "Anti-Personnel, Area" :range "30m") "Demolition Pack" (item :name "Demolition Pack" :classification "Bomb" :modifiers "+1 Prepare") "4.6in Rockets" (item :name "4.6in Rockets" :classification "Missile") "5in HVAR Rocket" (item :name "5in HVAR Rocket" :image "WWIIAmerican/Rocket_HVAR.jpg" :summary "* High-Velocity Aircraft Rocket, aka Holy Moses. About 1 million HVAR rockets were produced before the end of the war. It had a steel-cased warhead and could penetrate 38mm of armor and 1.2m of reinforced concrete. * Trials against Panthers showed that they could penetrate all but front armor, but even in clusters of 8 could only hit a stationary tank 4% of the time. * Tank casualties to rockets were very low." :classification "Missile" :explosive "21kg" :mass "40kg" :modifiers "HE, AP" :range "4.5km" :speedair "1530kph") "Mark 14 Torpedo" (item :name "Mark 14 Torpedo" :reference "The Mark 14 had four major flaws. * It tended to run about 10 feet deeper than set. * The magnetic exploder often caused premature firing. * The contact exploder often failed to fire the warhead. * It tended to run 'circular', failing to straighten, thus returning back to strike the firing ship." :classification "Torpedo" :explosive "292kg" :length "6.25m" :mass "1490kg" :range "8km" :speedwater "85kph") "Atomic Bomb" (item :name "Atomic Bomb" :summary "* Little Boy - Hiroshima 13kton/63TJ * Fat Man - Nagasaki 20kton/84TJ" :classification "Bomb"))))))
nx/tactics/books/world_wars / chapter_wwii_american_units
Description:
Function Name:
  • chapter_wwii_american_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_american_units : base/chapter (chapter :name "WWII American Units" :sectionmap (sectionmap "WWII American Infantry" (section :name "WWII American Infantry" :unitmap (unitmap "Able Team" (unit :name "Able Team" :image "WWIIAmerican/Infantry_AbleScoutToken.png" :summary "* Able Team is composed of 2 scouts who advance 25m ahead of the squad." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Baker Team" (unit :name "Baker Team" :image "WWIIAmerican/Infantry_BakerGarandToken.png" :reference "* We're all very, very different, but there is one thing that we all have in common: we were all stupid enough to enlist in the Army. We're mutants. There's something wrong with us, something very, very wrong with us. Something seriously wrong with us - we're soldiers. But we're American soldiers! We've been kicking ass for 200 years! - John Winger, Stripes" :summary "* Baker Team is composed of 5 riflemen." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Charlie Team" (unit :name "Charlie Team" :image "WWIIAmerican/Infantry_CharlieBARToken.png" :summary "Charlie Team is composed of 3 riflemen, a BAR gunner, and a Squad leader." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Airborne Charlie" (unit :name "US Airborne Charlie" :image "WWIIAmerican/Infantry_AirborneToken.png" :reference "* Who can afford so to cover his country with troops for its defense, so that ten thousand men descending from the clouds might not, in many places, do an infinite deal of mischief before a force could be brought together to repel them? - Benjamin Franklin, 1784 * The German won't not be able to help themselves but to imagine the cruelty their brothers endured at our hands, and our boot heels, and the edge of our knives. And the German will be sickened by us, and the German will talk about us, and the German will fear us. And when the German closes their eyes at night and they're tortured by their subconscious for the evil they have done, it will be with thoughts of us they are tortured with. Sound good? - Lt. Aldo Raine, Inglourious Basterds * You probably heard we ain't in the prisoner-takin' business; we in the killin' Nazi business. And cousin, Business is a-boomin'. - Lt. Aldo Raine, Inglourious Basterds" :classification "Med. Infantry" :unitskillmap (unitskillmap :Espionage (unitskill :name "Espionage" :level "3" :unitabilitymap (unitabilitymap :Propaganda (unitability :name "Propaganda") :Sabotage (unitability :name "Sabotage"))))) "Browning MG Team" (unit :name "Browning MG Team" :image "WWIIAmerican/Infantry_BrowningMGToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Sniper" (unit :name "US Sniper" :image "WWIIAmerican/Infantry_USSniperToken.png" :reference "* WWII U.S. sniper training was very elementary and focused on being able to hit targets over long distances. There was almost no concern with the ability to blend into the environment. Training also varied from place to place, resulting in a wide range of qualities of snipers." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Platoon Sergeant" (unit :name "Platoon Sergeant" :image "WWIIAmerican/Infantry_SergeantToken.png" :reference "* If you survive recruit training, you will be a weapon. You will be a minister of death praying for war. But until that day you are pukes. You are the lowest form of life on Earth. You are not even human, fucking beings. You are nothing but unorganized grabastic pieces of amphibian shit. Because I am hard you will not like me. But the more you hate me the more you will learn. I am hard but I am fair. There is no racial bigotry here. I do not look down on niggers, kikes, wops or greasers. Here you are all equally worthless. - Gunnery Sergeant Hartman, Full Metal Jacket * If your killer instincts are not clean and strong you will hesitate at the moment of truth. You will not kill. You will become dead marines and then you will be in a world of shit because marines are not allowed to die without permission. - Gunnery Sergeant Hartman, Full Metal Jacket * You don't say 'sir' to me, I'm a sergeant, I work for a living. - Sergeant Hulka, Stripes" :classification "Med. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) "Bazooka Team" (unit :name "Bazooka Team" :image "WWIIAmerican/Infantry_BazookaToken.png" :reference "* 1 out of 3 infantry squads were issued a bazooka. * The back blast of the weapon gave away the shooter's position. * Casualties among bazooka team members were extremely high, and assignment to such duty was regarded as nearly suicidal." :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Forward Observer" (unit :name "US Forward Observer" :image "WWIIAmerican/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M2 Mortar Team" (unit :name "M2 Mortar Team" :image "WWIIAmerican/Infantry_MortarToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Flamethrower" (unit :name "US Flamethrower" :image "WWIIAmerican/Infantry_FlamethrowerToken.png" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Medic" (unit :name "US Medic" :image "WWIIAmerican/Infantry_MedicToken.png" :reference "* Allied and German forces whereby soldiers would not knowingly fire at a medic treating a wounded comrade. This was in stark contrast to the Japanese forces, who regarded medics as primary targets, resulting in Allied medics removing or covering their insignia." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "US Sapper" (unit :name "US Sapper" :image "WWIIAmerican/Infantry_SapperToken.png" :summary "Combat Engineers from the US Army Corps of Engineers (USACE)" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap :Demolitions (unitability :name "Demolitions") :Explosives (unitability :name "Explosives") "Mine Laying" (unitability :name "Mine Laying")) :unititemmap (unititemmap "Demolition Pack" (unititem :name "Demolition Pack"))))))) "WWII American Vehicles" (section :name "WWII American Vehicles" :unitmap (unitmap "M4 Sherman" (unit :name "M4 Sherman" :image "WWIIAmerican/TankMed_M4A3_ShermanToken.png" :reference "* As part of the deception plan that drew German attention away from Normandy, inflatable rubber Shermans were deployed in Kent with plywood artillery." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "75mm" :back "30mm" :over "30mm" :under "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M4A4 Sherman Crab" (unit :name "M4A4 Sherman Crab" :image "WWIIAmerican/TankMed_ShermanCrabToken.png" :reference "* Valuable during and after D-Day, especially as the Germans made extensive use of minefields to slow the Allied advance through France." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Mine Clearing" (unitability :name "Mine Clearing"))))) "T34 Sherman Calliope" (unit :name "T34 Sherman Calliope" :image "WWIIAmerican/TankMed_T-34Calliope_M4Token.png" :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M4A3E8 Sherman Easy Eight" (unit :name "M4A3E8 Sherman Easy Eight" :image "WWIIAmerican/TankMed_M4A3E8_EasyEightToken.png" :reference "* The M4A3 was the first to be factory-produced with the new HVSS (horizontal volute spring suspension) suspension with wider tracks for lower ground pressure, and the smooth ride of the HVSS with its experimental E8 designation led to the nickname Easy Eight for Shermans so equipped." :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M26 Pershing" (unit :name "M26 Pershing" :image "WWIIAmerican/TankHvy_M26_PershingToken.png" :reference "* The Pershing reached the battlefield only in February 1945 and saw very little action in WWII." :classification "Hvy. Tank" :crew "5" :mass "41.7tons" :length "6.3m" :range "160km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "110mm" :under "25mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M3 Lee" (unit :name "M3 Lee" :image "WWIIAmerican/TankMed_M3LeeToken.png" :reference "* By using the hull mount, the M3 design was brought to production quicker than if a proper turreted mount had been attempted. It was well understood that the M3 design was deeply flawed, but the need for tanks was urgent." :classification "Med. Tank" :crew "7" :mass "24tons" :length "5.6m" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M5 Stuart" (unit :name "M5 Stuart" :image "WWIIAmerican/TankLt_M5A1_StuartToken.png" :reference "* The British were the first to use the Stuart in 1941 against Afrika Korps where they suffered high losses. Its gun was too weak and its turret poorly laid out. They did, however, like its high speed and reliability. The Soviets were less generous and turned down the Stuart in Lend-Lease." :classification "Lt. Tank" :crew "5" :mass "14.7tons" :length "4.5m" :range "120km" :speedland "30kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M24 Chaffee" (unit :name "M24 Chaffee" :image "WWIIAmerican/TankLt_M24ChaffeeToken.png" :reference "* The M24 was not up to the challenge of fighting German tanks, but the bigger gun at least gave its crews a chance to fight back when it was required. The M24's light armor made it vulnerable to virtually all of the German tanks, anti-tank guns, and hand-held anti-tank weapons. The contribution of the M24 to winning the war in Europe was insignificant, as they arrived too late and in too few numbers to replace the worn out M5s." :classification "Lt. Tank" :crew "5" :mass "18.4tons" :length "5m" :range "161km" :speedland "56kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "25mm Sloped" :over "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M10 Wolverine" (unit :name "M10 Wolverine" :image "WWIIAmerican/TD_M10_WolverineToken.png" :reference "* M10s were used in the Pacific for infantry support but were unpopular due to their open-topped turrets, which made them more vulnerable than a fully-enclosed tank to Japanese close-in infantry attacks. * The turret was not powered and the crew was required to hand-crank the turret, taking approximately two minutes to rotate 360 degrees." :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M18 Hellcat" (unit :name "M18 Hellcat" :image "WWIIAmerican/TD_M18_HellcatToken.png" :reference "* Recorded as the fastest tracked fighting vehicle of WWII." :classification "Tank Destroyer" :crew "5" :mass "17.7tons" :length "5.3m" :range "168km" :speedland "88kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "25mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M36 Jackson" (unit :name "M36 Jackson" :image "WWIIAmerican/TD_M36JacksonToken.png" :reference "* The M36 was well liked by its crews, being one of the few armored fighting vehicles available to US forces that could take out heavy German tanks from a distance." :classification "Tank Destroyer" :crew "5" :mass "29tons" :length "7.5m" :range "240km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "108mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M7 Priest" (unit :name "M7 Priest" :image "WWIIAmerican/SPG_M7_PriestToken.png" :reference "* In U.S. service the M7 was a great success. Each U.S. armored division had three battalions of M7s, giving them unparalleled mobile artillery support. * A total of 3,490 M7s were built and they proved to be reliable weapons, continuing to see service in the U.S. and allied armies well past World War II." :classification "Artillery" :crew "7" :mass "23tons" :length "6m" :range "193km" :speedland "39kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "57mm M1 Artillery" (unit :name "57mm M1 Artillery" :image "WWIIAmerican/Artillery_57mmM1Token.png" :classification "Artillery" :crew "6" :mass "1.1tons" :length "2.8m" :speedland "0kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "20mm" :back "0mm" :over "0mm" :under "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "90mm M2 Artillery" (unit :name "90mm M2 Artillery" :image "WWIIAmerican/Artillery_90mmM2Token.png" :reference "* They were the US's primary anti-aircraft guns from just prior to the opening of WWII into the 1950s when most AAA was replaced by missile systems." :classification "Artillery" :mass "8.6tons" :length "4.7m" :speedland "0kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "20mm" :back "0mm" :over "0mm" :under "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "105mm M2A1 Howitzer" (unit :name "105mm M2A1 Howitzer" :image "WWIIAmerican/Artillery_105mmM101HowitzerToken.png" :classification "Artillery" :mass "2.2tons" :length "6m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :DUKW (unit :name "DUKW" :image "WWIIAmerican/TroopCarrier_DUKWToken.png" :reference "* It was initially rejected by the armed services, but when a Coast Guard patrol craft ran aground on a sandbar near Provincetown, Massachusetts, an experimental DUKW happened to be in the area for a demonstration. Winds up to 110 kph, rain, and heavy surf prevented conventional craft from rescuing the seven stranded Coast Guardsmen, but the DUKW had no trouble, and the military opposition melted. The DUKW would later prove its seaworthiness by crossing the English Channel." :summary "* Amphibious Transport * May carry 2.3 tons instead of passengers * Water Speed: 10kph, Water Range: 93km" :titles "Duck Boat, Old Magoo" :classification "Lt. Naval Vessel" :crew "1+12" :mass "6tons" :height "2.2m" :length "9.4m" :range "640km" :speedwater "80kph" :width "2.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm" :back "3mm" :over "0mm" :under "0mm" :side "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "LVT-4 Water Buffalo" (unit :name "LVT-4 Water Buffalo" :image "WWIIAmerican/TroopCarrier_LVT-4Token.png" :reference "* Production continued throughout the war, resulting in 18,621 LVTs delivered" :summary "* Amphibious Transport" :classification "Lt. Naval Vessel" :crew "3+30" :mass "16.5tons" :range "240km (80km water)" :speedland "32kph" :speedwater "12kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "M3A1 Half-track" (unit :name "M3A1 Half-track" :image "WWIIAmerican/HalfTrack_M3Token.png" :classification "Med. Vehicle" :crew "3+10" :mass "9.3tons" :length "6.2m" :range "280km" :speedland "64kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "12mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "M3 Scout Car" (unit :name "M3 Scout Car" :image "WWIIAmerican/Car_M3ScoutCarToken.png" :reference "Lend Lease from US" :classification "Car" :crew "1+7" :mass "5.7tons" :length "5.6m" :range "403km" :speedland "81kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Willys MB/Ford GPW Jeep" (unit :name "Willys MB/Ford GPW Jeep" :image "WWIIAmerican/Truck_M151_Mutt_JeepToken.png" :reference "* 'Jeep' originated from a term used by soldiers for any untried or untested piece of personnel or equipment. * From humble origins - a handful of prototypes built by three different manufacturers - the Jeep 1/4-ton utility vehicle has evolved over the years into one of the most popular and versatile vehicles ever made. * The hero of WWII served in every theater of war, in every conceivable role, and with every Allied army." :classification "Car" :crew "1+3" :mass "1ton" :height "1.8m" :length "3.3m" :speedland "100kph" :width "1.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm" :over "0mm" :side "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "GMC CCKW 2 1/2 Ton Truck" (unit :name "GMC CCKW 2 1/2 Ton Truck" :image "WWIIAmerican/Truck_CCKWToken.png" :reference "* 562,000 produced" :classification "Truck" :crew "1+20" :mass "5tons" :length "4m" :range "400mi" :speedland "90kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Medical Truck" (unit :name "Medical Truck" :image "WWIIAmerican/Truck_DWC-54_MedicToken.png" :classification "Truck" :crew "1+5" :mass "5tons" :length "4m" :range "400mi" :speedland "90kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "5mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII American Aircraft" (section :name "WWII American Aircraft" :unitmap (unitmap "F4F Wildcat" (unit :name "F4F Wildcat" :image "WWIIAmerican/Fighter_F4F_WildcatToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3.6tons" :length "8.8m" :range "1240km" :speedair "515kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "SBD Dauntless" (unit :name "SBD Dauntless" :image "WWIIAmerican/DiveBomber_Douglas_SBDToken.png" :classification "Lt. Aircraft" :crew "2" :mass "4.8tons" :length "10m" :range "1240km" :speedair "410kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "F-4U Corsair" (unit :name "F-4U Corsair" :image "WWIIAmerican/Fighter_F-4UCorsairToken.png" :reference "* The Corsair quickly became the most capable carrier-based fighter-bomber of World War II. * The F4U could out-perform a Zero in every aspect except slow speed manoeuvrability and slow speed rate of climb. * It dropped 70% of total bombs dropped by fighters during the war. * It had a 12:1 kill ratio against all Japanese planes. * A pilot over Okinawa was in pursuit of a Ki-45 fighter at extremely high altitude when his guns jammed due to the extreme cold. He simply flew up and chopped off the Ki-45's tail with the big propeller of the Corsair. Despite missing five inches off the end of his propeller blades, he managed to land safely." :classification "Lt. Aircraft" :crew "1" :mass "6.3tons" :height "5m" :length "10m" :range "1633km" :speedair "684kph" :width "12.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-35 Seversky" (unit :name "P-35 Seversky" :image "WWIIAmerican/Fighter_P-35SeverskyToken.png" :classification "Lt. Aircraft" :crew "1" :mass "2.7tons" :height "3m" :length "8.2m" :range "1530km" :speedair "496kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-38 Lightning" (unit :name "P-38 Lightning" :image "WWIIAmerican/Fighter_P-38LightningToken.png" :reference "* In the South West Pacific theater, the P-38 was the primary long-range fighter of United States Army Air Forces until the appearance of large numbers of P-51D Mustangs toward the end of the war. The P-38 was probably the quietest fighter in history. It was extremely forgiving, and could be mishandled in many ways, but the rate of roll was too slow for it to excel as a dogfighter. The P-38 was the only American fighter aircraft in production throughout American involvement in the war." :classification "Lt. Aircraft" :crew "1" :mass "7.9tons" :height "4m" :length "11.5m" :range "1770km" :speedair "712kph" :width "16m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-40E Curtiss Warhawk" (unit :name "P-40E Curtiss Warhawk" :image "WWIIAmerican/Fighter_P-40_WarhawkToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-40 Flying Tigers" (unit :name "P-40 Flying Tigers" :image "WWIIAmerican/Fighter_P-40_ChineseFlyingTigersToken.png" :reference "* According to their own count, the Flying Tigers shot down 286 aircraft for the loss of up to 19 pilots." :summary "Volunteer American fighters in China" :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-47 Thunderbolt" (unit :name "P-47 Thunderbolt" :image "WWIIAmerican/Fighter_P-47ThunderboltToken.png" :reference "* It had armor around the engine and the cockpit, which enabled it to withstand considerable damage. This was one of the characteristics which allowed Allied pilots in Asia and the Pacific to attack Japanese fighters head on. * Aka the Jug, was the largest single-engined fighter of its day, and a vast improvement over the Curtiss P-40 Warhawk. The P-47 was effective in air combat but proved especially adept at ground attack. Some British assumed Jug was short for Juggernaut and began using the longer nickname. * The Thunderbolt ended the war with 3,752 air-to-air kills in over 746,000 sorties, at the cost of 3,499 P-47s to all causes. * In Europe, the Thunderbolt flew more sorties than P-51s, P-38s and P-40s combined. * By the end of the war, the 56th FG was the only unit still flying the P-47, by preference, instead of the P-51. * Despite being the sole remaining P-47 group, the 56th FG remained its top-scoring group in aerial victories throughout the war. * A modern-day counterpart in that role, the A-10 Thunderbolt II, takes its name from the P-47." :classification "Lt. Aircraft" :crew "1" :mass "8tons" :range "1290km" :speedair "697kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "P-51 Mustang" (unit :name "P-51 Mustang" :image "WWIIAmerican/Fighter_P-51Mustang_FrenesiToken.png" :classification "Lt. Aircraft" :crew "1" :mass "4.2tons" :height "4.2m" :length "10m" :range "2755km" :speedair "703kph" :width "11.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "PBY Catalina" (unit :name "PBY Catalina" :image "WWIIAmerican/Recon_Catalina_PBYToken.png" :reference "* It was one of the most widely used multi-role aircraft of World War II. PBYs were used in anti-submarine warfare, patrol bombing, convoy escorts, search and rescue missions (especially air-sea rescue), and cargo transport. * The PBY was the most successful aircraft of its kind; no other flying boat was produced in greater numbers. The last active military PBYs were not retired from service until the 1980s. Even today the aircraft continues to fly as an airtanker in aerial firefighting operations all over the world." :summary "* Bombs could be substituted for depth charges or torpedoes" :classification "Med. Aircraft" :crew "8" :mass "16tons" :height "6m" :length "19.5m" :range "4030km" :speedair "314kph" :width "32m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-17 Flying Fortress" (unit :name "B-17 Flying Fortress" :image "WWIIAmerican/Bomber_B-17F_FlyingFortressToken.png" :reference "* A potent, high-flying, long-ranging bomber capable of unleashing great destruction yet able to defend itself. With the ability to return home despite extensive battle damage, its durability, especially in belly-landings and ditchings, quickly took on mythic proportions." :classification "Hvy. Aircraft" :crew "10" :mass "24.5tons" :height "5.8m" :length "22.6m" :range "3219km" :speedair "462kph" :width "31.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-24 Liberator" (unit :name "B-24 Liberator" :image "WWIIAmerican/Bomber_B-24J_LiberatorToken.png" :reference "* Produced in greater numbers than any other American combat aircraft of WWII and still holds the record as the most produced U.S. military aircraft." :classification "Hvy. Aircraft" :crew "8" :mass "25tons" :height "5.5m" :length "20.6m" :range "3400km" :speedair "470kph" :width "33.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "B-29 Superfortress" (unit :name "B-29 Superfortress" :image "WWIIAmerican/Bomber_B-29_SuperfortressToken.png" :reference "* A very advanced bomber for this time period, it included features such as a pressurized cabin, an electronic fire-control system, and remote-controlled machine-gun turrets. * It was the primary aircraft in the American firebombing campaign against the Empire of Japan, and carried the atomic bombs that destroyed Hiroshima and Nagasaki. Unlike many other WWII-era bombers, the B-29 remained in service long after the war ended" :classification "Hvy. Aircraft" :crew "11" :mass "54tons" :height "8.5m" :length "30.2m" :range "5230km" :speedair "574kph" :width "43m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII American Naval Vessels" (section :name "WWII American Naval Vessels" :unitmap (unitmap "Yorktown Class Carrier" (unit :name "Yorktown Class Carrier" :image "WWIIAmerican/Carrier_Yorktown.png" :titles "Enterprise, Hornet, Yorktown" :classification "Hvy. Naval Vessel" :crew "2200" :mass "20ktons" :length "230m" :range "23200km" :speedwater "60kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :over "40mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "New Orleans Class Cruiser" (unit :name "New Orleans Class Cruiser" :image "WWIIAmerican/Ship_CruiserToken.png" :reference "* The New Orleans took one Long-Lance Torpedo which severed 150ft of her bow. Magnificent damage control work and skillful seamanship kept it afloat. New Orleans class cruisers would be found at every major naval skirmish of WWII despite the fact there were only four units remaining after 1942. They were some of the most used and hardest fought ships on the US Navy during the war. They would have three of the top four most decorated ships in the US Navy in World War II." :classification "Hvy. Naval Vessel" :crew "708" :mass "10ktons" :length "180m" :range "26000km" :speedwater "61kph" :width "19m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "125mm" :back "125mm" :over "55mm" :under "125mm" :side "125mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Atlanta Class Cruiser" (unit :name "Atlanta Class Cruiser" :reference "* Designed originally as flotilla leaders but which ended up gaining recognition as effective anti-aircraft cruisers." :classification "Hvy. Naval Vessel" :crew "673" :mass "8.2ktons" :length "165m" :speedwater "62kph" :width "16m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "55mm" :back "55mm" :over "32mm" :under "55mm" :side "85mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Gleaves Class Destroyer" (unit :name "Gleaves Class Destroyer" :image "WWIIAmerican/Ship_DestroyerToken.png" :reference "* The Gleaves was the production destroyer of the US Navy when it entered WWII. They are extremely similar to the Benson class destroyers and were often referred to as the BENSON/GLEAVES class. * The 1954 movie The Caine Mutiny was filmed on the Gleaves Destroyer USS Doyle." :classification "Med. Naval Vessel" :crew "276" :mass "1.6ktons" :length "106m" :range "12000km" :speedwater "69kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Iowa Class Battleship" (unit :name "Iowa Class Battleship" :classification "Hvy. Naval Vessel") "LCVP Higgins Boat" (unit :name "LCVP Higgins Boat" :image "WWIIAmerican/LandingCraft_LCM3Token.png" :reference "* Andrew Higgins ... is the man who won the war for us. ... If Higgins had not designed and built those LCVPs, we never could have landed over an open beach. The whole strategy of the war would have been different. - General Dwight Eisenhower" :summary "* Landing Craft Vehicle Personnel * Constructed of plywood, can ferry 36 men or even a Jeep" :classification "Lt. Naval Vessel") "Elco Class PT Boat" (unit :name "Elco Class PT Boat" :image "WWIIAmerican/Ship_PTBoatToken.png" :reference "* A small, fast torpedo boat used to attack larger surface ships. The PT boat squadrons were nicknamed 'the mosquito fleet.' The Japanese called them 'Devil Boats.' * After the war, PT-109 became famous as the ship John F. Kennedy commanded. * Though often said to be made of plywood, they were actually made of two layers of 1 inch thick mahogany." :classification "Lt. Naval Vessel" :crew "17" :mass "38tons" :length "24m" :speedwater "76kph" :width "6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :under "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Crater Class Transport" (unit :name "Crater Class Transport" :image "WWIIAmerican/Ship_TransportToken.png" :summary "* Length: 441.5' * Beam: 57' * Draft: 30' * Speed: 11.5 knots * Armament: 1 x 3 inch/50 DP 2 x 40mm" :classification "Lt. Naval Vessel" :crew "206" :mass "11.5ktons" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))))) "WWII American Strategic Forces" (section :name "WWII American Strategic Forces" :unitmap (unitmap "WWII American Light Infantry" (unit :name "WWII American Light Infantry" :summary "* 50% SMG (-1), 25% M1 (-2), 25% Bazooka (-2)" :classification "Lt. Infantry") "WWII American Med. Infantry" (unit :name "WWII American Med. Infantry" :summary "* 50% M1 (-1), 25% Bazooka (-2), 25% MG (-2)" :classification "Med. Infantry") "WWII American Heavy Infantry" (unit :name "WWII American Heavy Infantry" :summary "* 50% MG (-1), 50% Bazooka (-1)" :classification "Hvy. Infantry"))))))
nx/tactics/books/world_wars / chapter_wwii_british_equipment
Description:
Function Name:
  • chapter_wwii_british_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_british_equipment : base/chapter (chapter :name "WWII British Equipment" :sectionmap (sectionmap "WWII British Weapons" (section :name "WWII British Weapons" :itemmap (itemmap ".38 Enfield MkII Revolver" (item :name ".38 Enfield MkII Revolver" :classification "Pistol") "9mm Sten SMG" (item :name "9mm Sten SMG" :image "WWIIBritish/SMG_Sten.jpg" :classification "Lt. MG" :modifiers "Auto") ".303 Lee-Enfield SMLE Rifle" (item :name ".303 Lee-Enfield SMLE Rifle" :image "WWIIBritish/SMLE_Mk_III.jpg" :reference "* The current world record for aimed bolt-action fire was set in 1914 placing 38 rounds into a 12 inch wide target at 300 yards in one minute." :titles "Short Magazine Lee Enfield (SMLE)" :classification "Rifle") ".303 Lee-Enfield No 4 Rifle" (item :name ".303 Lee-Enfield No 4 Rifle" :reference "* Mass production version of earlier .303 Lee-Enfield rifles." :classification "Rifle") "Flamethrower Portable No2" (item :name "Flamethrower Portable No2" :classification "Flamethrower" :mass "29kg" :modifiers "Fire, Auto" :range "25m") ".303 Bren Light MG" (item :name ".303 Bren Light MG" :summary "* Clip-fed, air-cooled .303 cal (7.7mm) machine gun" :classification "Lt. MG" :crew "2" :modifiers "Auto" :rof "500/min" :rounds "30") ".303 Vickers MG" (item :name ".303 Vickers MG" :reference "* In one action, ten Vickers guns fired continuously for twelve hours. They fired a million rounds between them, using 100 new barrels, without a single breakdown. It was this absolute foolproof reliability which endeared the Vickers to every British soldier who ever fired one." :summary "* Belt-fed, water-cooled .303 cal (7.7mm) machine gun. Required 6-8 men to operate." :classification "Hvy. MG" :crew "6" :modifiers "Auto") "7.92mm Besa MG" (item :name "7.92mm Besa MG" :summary "* Belt-fed, air-cooled 7.92mm machine gun" :classification "Hvy. MG" :modifiers "Auto" :rof "500/min") :PIAT (item :name "PIAT" :image "WWIIBritish/Rocket_PIAT.jpg" :summary "* HEAT Rocket * Penetrate 75mm at 30 degrees or 102mm at 90 degrees. * The PIAT was an unusual infantry anti-tank weapon. It was comparatively quiet and smokeless, with no backblast. * Unlike the American bazooka or German Panzerfaust and Panzerschreck, it could be fired from an enclosed space, and would not give away its position as soon as the weapon was fired. However, it was more cumbersome than its counterparts, violent to fire, and in many circumstances it could be difficult to reload. * An attachment that allowed the PIAT to fire 2 inch mortar shells was produced in limited numbers." :classification "Missile" :length ".99m" :mass "15kg" :modifiers "HEAT" :range "100m") "40mm QF 2 Pounder Cannon" (item :name "40mm QF 2 Pounder Cannon" :classification "Cannon" :modifiers "AP") "57mm QF 6 Pounder Cannon" (item :name "57mm QF 6 Pounder Cannon" :reference "* Although 17 Pounder guns were rushed to North Africa to combat the Tiger tank, it was in fact a 6-pdr, which claimed the first Tiger 'kill'" :classification "Cannon" :modifiers "AP" :range "4600m") "75mm QF Cannon" (item :name "75mm QF Cannon" :classification "Cannon" :modifiers "AP") "76mm QF 17 Pounder Cannon" (item :name "76mm QF 17 Pounder Cannon" :image "WWIIBritish/Artillery_17pdr.gif" :reference "76.2mm Cannon penetrates 115mm at 1000m" :classification "Cannon" :modifiers "AP" :muzzlevelocity "883m/s") "77mm HV Cannon" (item :name "77mm HV Cannon" :summary "* The 77mm HV was based on the 17-pounder. It had a lower muzzle velocity than the 17-pounder, but the ammunition was much more compact and more easily stored and handled within the confines of a tank." :classification "Cannon" :modifiers "AP") "Mills Bomb Grenade" (item :name "Mills Bomb Grenade" :reference "* The Mills was a defensive grenade: after throwing the user had to take cover immediately. A competent thrower could manage 30m with reasonable accuracy, but the grenade could throw lethal fragments further than this. * The 36M remained in service in some parts of the world such as India and Pakistan where it was manufactured until the early 1980s. That the Mills bomb remained in use for so many years says much about its effectiveness." :classification "Bomb" :length ".09m" :mass ".76kg" :modifiers "Anti-Personnel" :range "30m") "No 74 Sticky Bomb" (item :name "No 74 Sticky Bomb" :image "WWIIBritish/Grenade_StickyBomb.jpg" :reference "* While practicing a bomber got his bomb stuck to his trouser leg. A quick thinking mate whipped the trousers off and got rid of them and the bomb. The trousers were in a bit of a mess after though I think they were a bit of a mess prior to the explosion. * Even when not used, the glass was easily cracked in transit. The filling, nitroglycerin, was sensitive to shock too. Consequently, although possibly effective, the sticky bomb was never popular. * In the movie Saving Private Ryan, Tom Hanks' character uses improvised sticky bombs against Tiger I heavy tanks," :classification "Bomb" :explosive ".6" :length ".24m" :mass "1kg" :modifiers "HE" :range "20m") "No 82 Gammon Bomb" (item :name "No 82 Gammon Bomb" :reference "* Developed as a replacement for the temperamental and highly dangerous sticky bomb grenade. * Unlike conventional grenades, it was flexible in the amount and type of munition. For anti-personnel use, a small amount of plastic explosive, along with shrapnel-like projectiles if available, would be placed in the bag. Against armored targets, the bag could be filled completely with explosive. * The bag would be flung and the detonator would fire on impact. * Gammon bombs were primarily issued to special forces such as paratroopers who were issued plastic explosive routinely. These units found the Gammon bomb to be particularly useful due to its small size and weight when unfilled, as well as its adaptability." :classification "Bomb" :explosive ".9" :mass "1.2kg" :modifiers "AP" :range "20m") "60lb RP-3 Rockets" (item :name "60lb RP-3 Rockets" :classification "Missile" :explosive "28kg" :length "1.4m" :mass "21kg" :modifiers "AP, HE" :range "1.6km" :speedair "1900kph") "4000lb Blockbuster Bomb" (item :name "4000lb Blockbuster Bomb" :summary "* The term Blockbuster (aka Cookie) was originally a name coined by the press and referred to a bomb which had enough explosive power to destroy an entire city block. The High Capacity design was a cylinder full of explosives, unaerodynamic, and without find. Accuracy was not important, however, as these bombs were designed for blowing the tiles off the roofs of buildings so that the smaller 4 lb incendiary bombs could reach the building interiors. These bombs were only used by the RAF, being too big to fit in the bomb bays of other countries aircraft. In addition to the 4000lb version there were also 8000lb and 12000lb versions constructed from multiple 4000lb sections." :classification "Bomb" :explosive "1360kg" :mass "1800kg") "Earthquake Bomb" (item :name "Earthquake Bomb" :reference "* In an attack on the U-boat pens at Farge two Grand Slams went through the 15 ft (4.5 m) reinforced concrete hardening - equalling or exceeding the best current penetration specifications." :summary "* The Earthquake bombs were designed not to strike a target directly, but to impact beside it, penetrate under it, and create a 'camouflet' or large buried cavern at the same time as delivering a shock wave through the target's foundations. The target then collapses into the hole, no matter how hardened it may be. The bombs had strong casings because they needed to travel through rock rather than reinforced concrete, though they could perform equally well against hardened surfaces." :titles "Grand Slam" :classification "Bomb" :mass "10tons"))))))
nx/tactics/books/world_wars / chapter_wwii_british_units
Description:
Function Name:
  • chapter_wwii_british_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_british_units : base/chapter (chapter :name "WWII British Units" :sectionmap (sectionmap "WWII British Infantry" (section :name "WWII British Infantry" :unitmap (unitmap "Commonwealth Rifle Team" (unit :name "Commonwealth Rifle Team" :summary "* Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Commonwealth LMG Team" (unit :name "Commonwealth LMG Team" :image "WWIIBritish/Infantry_BrenLMGToken.png" :summary "* Composed of 3 riflemen, 1 LMG, and the squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Commando" (unit :name "British Commando" :image "WWIIBritish/Infantry_CommandoToken.png" :reference "* The British Commandos were first formed by the Army in June 1940 as a raider force employing unconventional and irregular tactics to assault, disrupt and reconnoiter. * The Commandos were formed and operated in secrecy and produced a demoralizing effect on German forces while achieving celebrity status among the British public, comparable with that attached to fighter pilots and shrouded in myth." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5"))) "Vickers Machine Gun Team" (unit :name "Vickers Machine Gun Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Special Operations Executive" (unit :name "Special Operations Executive" :reference "* Bakers Street Irregulars * Group to conduct warfare without direct military engagement") "PIAT Team" (unit :name "PIAT Team" :image "WWIIBritish/Infantry_PIATGunner.png" :reference "* Though unreliable and unpopular it remained the primary infantry anti-tank weapon until 1950. * In one of the most remarkable examples of bravery under fire, Major Robert Henry Cain earned the Victoria Cross during Operation Market Garden. Using a PIAT (in addition to several other weapons) he destroyed or disabled six tanks, four of which were Tiger tanks, as well as a number of self-propelled guns." :summary "* Hvy. Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Sniper" (unit :name "British Sniper" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "SAS Parachute Regiment" (unit :name "SAS Parachute Regiment" :image "WWIIBritish/Infantry_Airborne.png" :reference "* It is considered an elite unit by virtue of its stringent selection process, rigorous training program and by the requirement of its role to operate with minimal or no support behind enemy lines and against numerically superior forces." :titles "Special Air Service (SAS)" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Airborne Assault" (unitability :name "Airborne Assault")) :unititemmap (unititemmap "No 82 Gammon Bomb" (unititem :name "No 82 Gammon Bomb"))))) "British Forward Observer" (unit :name "British Forward Observer" :image "WWIIBritish/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "British Mortar Team" (unit :name "British Mortar Team" :image "WWIIBritish/Infantry_MortarToken.png" :classification "Hvy. Infantry") "Gideon Force" (unit :name "Gideon Force" :reference "* To raise a revolt you must send in a Corps d'Elite to do exploits and not just as peddlers of war material and cash ... A thousand resolute and well-armed men can paralyse 10,000" :summary "Ethopian irregulars specializing in Guerilla warfare.") "Combat Medical Techinician" (unit :name "Combat Medical Techinician" :classification "Med. Infantry") "Royal Engineers" (unit :name "Royal Engineers" :image "WWIIBritish/Infantry_CanadianSapperToken.png" :classification "Med. Infantry"))) "WWII British Vehicles" (section :name "WWII British Vehicles" :unitmap (unitmap "Churchill A22F MkVII" (unit :name "Churchill A22F MkVII" :image "WWIIBritish/TankHvy_ChurchillMkVIIToken.png" :reference "* Five Mk III's, known collectively as 'King Force' were heavily shelled by German anti-tank guns, all but one Mk III made it back with little damage, one tank was said to have been struck up to 80 times. * Despite its many failures, the Churchill had a significant advantage that was apparent throughout its career. It could cross terrain obstacles that most other tanks of its era could not" :classification "Hvy. Tank" :crew "5" :mass "38.5tons" :length "7.3m" :range "90km" :speedland "20kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :under "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Churchill Crocodile" (unit :name "Churchill Crocodile" :image "WWIIBritish/TankHvy_ChurchillCrocToken.png" :classification "Hvy. Tank" :crew "5" :mass "38.5tons" :length "7.3m" :range "90km" :speedland "20kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :under "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Comet A34" (unit :name "Comet A34" :image "WWIIBritish/TankMed_CometToken.png" :classification "Med. Tank" :crew "5" :mass "33.5tons" :length "6.6m" :range "250km" :speedland "50kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "102mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Cromwell A27M" (unit :name "Cromwell A27M" :image "WWIIBritish/TankMed_CromwellToken.png" :reference "* The fastest British tank to serve in the Second World War." :classification "Med. Tank" :crew "5" :mass "28tons" :length "6.3m" :range "280km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "76mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Matilda A12" (unit :name "Matilda A12" :image "WWIIBritish/TankLt_MkIIMatildaToken.png" :reference "* Queen of the Desert * Average speed only about 9.5 km/h. * The heavy armor of the Matilda's cast turret became legendary." :classification "Med. Tank" :crew "4" :mass "27tons" :length "6m" :range "257km" :speedland "24kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "78mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Sherman Firefly" (unit :name "Sherman Firefly" :image "WWIIBritish/TankMed_M4FireflyToken.png" :reference "* One major disadvantage of the Sherman Firefly during its first few months in service was its lack of an effective High Explosive shell." :classification "Med. Tank" :crew "4" :mass "36tons" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M3 Grant" (unit :name "M3 Grant" :image "WWIIBritish/TankMed_M3GrantToken.png" :reference "* The British ordered the M3 when they were refused permission to have their tank designs made in American factories. They were unhappy with the tall profile and had their own turret fitted—lower in profile." :classification "Med. Tank" :crew "6" :mass "24tons" :length "5.6m" :range "193km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Valentine (unit :name "Valentine" :image "WWIIBritish/TankLt_ValentineToken.png" :reference "Most Produced British Tank" :classification "Lt. Tank" :crew "4" :mass "16.5tons" :length "5.4m" :range "145km" :speedland "24kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm" :under "8mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Crusader A15" (unit :name "Crusader A15" :image "WWIIBritish/TankLt_CrusaderlToken.png" :reference "* Perhaps the most important British tank of the North African Campaign. * Although the Crusader was faster than any tanks it opposed, its potential was limited by a relatively light QF 2-pounder gun, thin armor and mechanical problems." :classification "Lt. Tank" :crew "5" :mass "20tons" :length "6m" :range "322km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "51mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Archer (unit :name "Archer" :image "WWIIBritish/TD_ArcherToken.png" :reference "* The rear mounting at first seemed like a liability, but it was soon made into an advantage. Combined with its low silhouette, the Archer made an excellent ambush weapon, allowing its crew to fire off a few shots, then drive away without wasting time turning around." :classification "Tank Destroyer" :crew "4" :mass "15tons" :length "6.7m" :range "140km" :speedland "32kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm" :over "0mm" :under "14mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "17pdr SP Achilles" (unit :name "17pdr SP Achilles" :image "WWIIBritish/TD_AchillesToken.png" :reference "* An upgunned version of the M10 Wolverine. * The turret was not powered and the crew was required to hand-crank the turret, taking approximately two minutes to rotate 360 degrees." :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "17pdr Artillery" (unit :name "17pdr Artillery" :image "WWIIBritish/Artillery_17pdrToken.png" :classification "Artillery" :mass "3tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Humber Mk IV" (unit :name "Humber Mk IV" :image "WWIIBritish/Car_HumberToken.png" :classification "Med. Vehicle" :crew "3" :mass "7tons" :length "4.6m" :range "400km" :speedland "72kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Chevy LRDG" (unit :name "Chevy LRDG" :image "WWIIBritish/Car_PatrolVehicleChevyLRDGToken.png" :reference "* During the Desert Campaign of 1940 to 1943 the Long Range Desert Group (LRDG) invariably operated hundreds of miles behind enemy lines; although its chief function was reconnaissance and intelligence gathering, units of the LRDG did carry out some hard-hitting strike operations, * The Rat Patrol - 1960s TV Series" :classification "Truck" :mass "1.5tons" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII British Aircraft" (section :name "WWII British Aircraft" :unitmap (unitmap "Supermarine Spitfire" (unit :name "Supermarine Spitfire" :image "WWIIBritish/Fighter_SpitfireToken.png" :reference "One of the most outstanding fighter aircraft of WWII" :classification "Lt. Aircraft" :crew "1" :mass "3tons" :length "9m" :range "760km" :speedair "605kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Hawker Hurricane" (unit :name "Hawker Hurricane" :image "WWIIBritish/Fighter_HurricaneToken.png" :reference "* Although largely overshadowed by the Supermarine Spitfire, the aircraft became renowned during the Battle of Britain." :classification "Lt. Aircraft" :crew "1" :mass "3.4tons" :length "9.8m" :range "965" :speedair "547kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Hawker Tempest" (unit :name "Hawker Tempest" :image "WWIIBritish/Fighter_TempestToken.png" :classification "Lt. Aircraft" :crew "1" :mass "5.2tons" :length "10.2m" :range "1190km" :speedair "695kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "P-40 Curtiss Tomahawk" (unit :name "P-40 Curtiss Tomahawk" :image "WWIIBritish/Fighter_TomahawkToken.png" :reference "* 46 British pilots reached ace status in P-40s. Caldwell scored 22 of his 28.5 victories in P-40s in North Africa. He is the prime example of a pilot using the strengths of the P-40 to its utmost. Once while flying alone, he was attacked by two Bf 109s, one of them piloted by Schruer. Although Caldwell was wounded three times, and his Tomahawk was hit by more than 100 7.9 mm bullets and five 20 mm cannon shells, he survived the encounter and shot down Schruer's wingman." :classification "Lt. Aircraft" :crew "1" :mass "3.7tons" :length "11.4m" :range "1100km" :speedair "580kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Lancaster (unit :name "Lancaster" :image "WWIIBritish/Bomber_LancasterToken.png" :reference "* The most famous and most successful of the Second World War night bombers, delivering 608,612 tons of bombs in 156,000 sorties." :classification "Hvy. Aircraft" :crew "7" :mass "29tons" :length "21m" :range "4600mi" :speedair "450kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Fairey Swordfish" (unit :name "Fairey Swordfish" :image "WWIIBritish/TorpedoBomberFaireySwordfishToken.png" :reference "Famous for crippling the Bismarck" :classification "Lt. Aircraft" :crew "3" :mass "3.5tons" :length "10.8m" :range "879km" :speedair "224kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII British Naval Vessels" (section :name "WWII British Naval Vessels" :unitmap (unitmap "British Destroyer" (unit :name "British Destroyer" :classification "Med. Naval Vessel") "HMS Hood Battlecruiser" (unit :name "HMS Hood Battlecruiser" :summary "Armament: 8 x 15in (381mm) (4x2), 14 x 4in (102mm) (7x2) 24 x 2-pdr pom pom (40mm) (3x8) 20 x 0.5in (12.7mm) (5x4) guns 5 x 20 barrel Unrotated Projectile mounts 4 x 21in (533mm) torpedo tubes, above water" :classification "Hvy. Naval Vessel" :crew "1418" :range "10000km" :speedwater "54kph") "King George V Class Battleship" (unit :name "King George V Class Battleship" :summary "Speed: 28.0 knots (1941 trials) Range: 5400+nm at 18knots (11.9 tons/hour fuel burn) Armament: 10 x 14inch (356mm) mk VII guns 16 x 5.25inch (133mm) guns 64 x 2pounder pom-pom (40mm) Armour: Main belt: 14.7in (374mm) lower belt: 5.4in (137mm) Aircraft carried: 4 Supermarine Walrus seaplanes, 1 double-ended catapult" :crew "1500") "HMS Ark Royal Carrier" (unit :name "HMS Ark Royal Carrier" :summary "Armament: 16 x 4.5 inch (114 mm) guns (8 x 2) 48 x 2 pounder (1.5 in) Pom-poms (6 x 8) 32 x .50 calibre (12.7 mm) machine guns (8 x 4) Armour: 4.5 inches (110 mm) belt 3.5 in (89mm) deck over boiler rooms and magazines Aircraft carried: 36 Fairey Swordfish, 18 Fairey Fulmars" :crew "1600" :range "14100km" :speedwater "57kph"))))))
nx/tactics/books/world_wars / chapter_wwii_french_equipment
Description:
Function Name:
  • chapter_wwii_french_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_french_equipment : base/chapter (chapter :name "WWII French Equipment" :sectionmap (sectionmap "WWII French Weapons" (section :name "WWII French Weapons" :itemmap (itemmap "7.5mm MAS-36" (item :name "7.5mm MAS-36" :image "WWIIFrench/Rifle_MAS36.jpg" :summary "7.5mm Bolt-action Rifle" :classification "Rifle") "7.65mm MAS-38" (item :name "7.65mm MAS-38" :image "WWIIFrench/SMG_MAS_38.jpg" :reference "* On April 28, 1945, was used by Italian partisans to shoot the former dictator Benito Mussolini." :summary "7.65mm SMG" :classification "Lt. MG" :modifiers "Auto"))))))
nx/tactics/books/world_wars / chapter_wwii_french_units
Description:
Function Name:
  • chapter_wwii_french_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_french_units : base/chapter (chapter :name "WWII French Units" :sectionmap (sectionmap "WWII French Infantry" (section :name "WWII French Infantry" :unitmap (unitmap "Free French Forces" (unit :name "Free French Forces" :image "WWIIFrench/FrenchResistanceToken.png" :reference "* French fighters from colonies and resistance") "French Resistance Intelligence" (unit :name "French Resistance Intelligence" :image "WWIIFrench/FrenchIntelligenceToken.png" :reference "* Spies gathering intelligence on the German occupiers") "French Foreign Legion" (unit :name "French Foreign Legion") "Manouchian Group" (unit :name "Manouchian Group" :image "WWIIFrench/ManouchianGroupToken.png" :reference "* Guerrilla Resistance Fighters"))) "WWII French Vehicles" (section :name "WWII French Vehicles" :unitmap (unitmap "Char B1" (unit :name "Char B1" :image "WWIIFrench/TankMed_CharB1.png" :classification "Med. Tank") "Renault R40" (unit :name "Renault R40" :classification "Lt. Tank") "French M4 Sherman" (unit :name "French M4 Sherman" :image "WWIIFrench/TankMed_M4A3_Sherman.png" :classification "Med. Tank" :crew "5" :mass "30tons" :range "193km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "65mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "French M10 Wolverine" (unit :name "French M10 Wolverine" :image "WWIIFrench/TD_M10_Wolverine.png" :classification "Tank Destroyer" :crew "5" :mass "30tons" :length "6m" :range "300km" :speedland "51kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "57mm" :over "0mm" :under "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII French Aircraft" (section :name "WWII French Aircraft" :unitmap (unitmap "Free French Spitfire" (unit :name "Free French Spitfire" :image "WWIIFrench/SupermarineSpitfire_Mk_IXToken.png" :classification "Lt. Aircraft" :crew "1" :mass "3tons" :length "9m" :range "760km" :speedair "605kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))))))
nx/tactics/books/world_wars / chapter_wwii_german_equipment
Description:
Function Name:
  • chapter_wwii_german_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_german_equipment : base/chapter (chapter :name "WWII German Equipment" :sectionmap (sectionmap "WWII German Weapons" (section :name "WWII German Weapons" :itemmap (itemmap ".32 Mauser Hsc" (item :name ".32 Mauser Hsc" :image "WWIIGerman/Pistol_Mauser_HSc.jpg" :reference "* Military personnel of all ranks not issued sidearms often purchased HSc pistols in the commercial marketplace and carried them into the field." :summary ".32 cal Pistol" :classification "Pistol" :length ".15m" :mass ".7kg" :muzzlevelocity "282m/s") "9mm Luger P08" (item :name "9mm Luger P08" :image "WWIIGerman/DWM_4_inch_Navy_Luger_859.jpg" :reference "* The usual German sidearm in both world wars." :summary "9mm Pistol" :classification "Pistol" :muzzlevelocity "390m/s") "9mm MP40 SMG" (item :name "9mm MP40 SMG" :image "WWIIGerman/SMG_MP40.jpg" :classification "Lt. MG" :modifiers "Auto" :muzzlevelocity "380m/s" :range "100m" :rof "500/min") "7.92mm Karabiner 98k" (item :name "7.92mm Karabiner 98k" :reference "* Standard German infantry rifle" :summary "7.92mm Bolt-action Rifle" :classification "Rifle" :range "500m") "Flammenwerfer 35 Flamethrower" (item :name "Flammenwerfer 35 Flamethrower" :classification "Flamethrower" :crew "1" :mass "35kg" :modifiers "Fire, Auto" :range "25m") "7.92mm FG42 Light MG" (item :name "7.92mm FG42 Light MG" :reference "* The FG42 was developed specifically for the use by paratroopers, who wanted a suitable gun after their experiences in the invasion of Crete." :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "7.92mm MG17 MG" (item :name "7.92mm MG17 MG" :image "WWIIGerman/MG_MG17.jpg" :reference "* A mainstay fixed machine gun in German built aircraft." :classification "Med. MG" :length "1175mm" :mass "10.2kg" :modifiers "Auto" :muzzlevelocity "855m/s" :rof "1200/min") "7.92mm MG34 MG" (item :name "7.92mm MG34 MG" :image "WWIIGerman/MG_MG34.jpg" :classification "Med. MG" :length "1219mm" :mass "12.1kg" :modifiers "Auto" :muzzlevelocity "765m/s") "7.92mm MG81Z MG" (item :name "7.92mm MG81Z MG" :image "WWIIGerman/MG_MG81.jpg" :reference "* An aircraft mounted derivative of the successful MG34 infantry machine gun." :classification "Med. MG" :length "915mm" :mass "12.9kg" :modifiers "Auto" :muzzlevelocity "705m/s" :rof "1500/min") "13mm MG131 MG" (item :name "13mm MG131 MG" :image "WWIIGerman/MG_13mm_MG131.jpg" :reference "* Under the doctrine of WWII German infantry tactics, the squad machine gun is the center of operation and the rest of the squad will maneuver and try to achieve its objective under the cover of the squad machine gun fire." :classification "Hvy. MG" :length "1140m" :mass "16.6kg" :muzzlevelocity "750m/s" :range "1800m" :rounds "900/min") "20mm MG151/20 Cannon" (item :name "20mm MG151/20 Cannon" :reference "* On the Fw190, it was found that it took an average of twenty 20 mm hits to shoot down a typical four engined bomber." :classification "Cannon" :muzzlevelocity "800m/s" :rof "750/min") "30mm MK 108 Cannon" (item :name "30mm MK 108 Cannon" :image "WWIIGerman/Cannon_MK108.jpg" :reference "* The 30 mm MK 108 cannon could bring down a bomber with an average of one to three hits, but the ammunition was heavy (limiting the amount of ammo carried) and its low muzzle velocity meant it became inaccurate at 1000m." :classification "Cannon" :length "1m" :mass "58kg" :modifiers "Auto" :muzzlevelocity "540m/s" :range "1000m" :rof "650/min") "R4M Hurricane Rocket" (item :name "R4M Hurricane Rocket" :reference "* The first practical anti-aircraft rocket. After the war the R4M served as the pattern for a number of similar systems, used by almost all interceptor aircraft during the 1940s and '50s. The R4M used a large warhead of 55mm with 520g explosive charge, nearly guaranteeing a kill with one hit. A battery typically consisted of two groups of 12 rockets and when all 24 were fired at once they would fill an area about 15 by 30 m at 1000 m, dense enough that one was almost certain to hit its target. Two warheads were available for the R4M, the common PB-3 with a 0.4 kg charge for anti-aircraft use and the larger shaped charge, similar in construction to the Panzerschreck, the Panzerblitz II (PB-2), for anti-tank use." :titles "Orkan" :classification "Missile" :length "812mm" :mass "3.2kg" :modifiers "HE, AP" :muzzlevelocity "525m/s" :range "1000m" :rounds "1") "40mm Bofors L/60 Cannon" (item :name "40mm Bofors L/60 Cannon" :classification "Cannon" :modifiers "Auto, HE" :muzzlevelocity "881m/s" :rof "120/min") "50mm PaK 38 L/60 Cannon" (item :name "50mm PaK 38 L/60 Cannon" :reference "* The PaK 38 was one of the few early guns capable of effectively penetrating the 45 mm armor of the formidable T-34." :classification "Cannon" :modifiers "HE, AP") "50mm KwK 39 L/60 Cannon" (item :name "50mm KwK 39 L/60 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "800m/s") "75mm KwK 39 L/48 Cannon" (item :name "75mm KwK 39 L/48 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "750m/s") "75mm KwK 40 L/48 Cannon" (item :name "75mm KwK 40 L/48 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "792m/s" :range "1.8km") "75mm KwK 42 L/70 Cannon" (item :name "75mm KwK 42 L/70 Cannon" :classification "Cannon" :length "5.2m" :mass "1ton" :modifiers "HE, AP" :muzzlevelocity "925m/s" :range "2km direct, 10km indirect") "88mm KwK 36 L/56 Cannon" (item :name "88mm KwK 36 L/56 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "773m/s" :range "2km") "88mm KwK 43 L/71 Cannon" (item :name "88mm KwK 43 L/71 Cannon" :classification "Cannon" :modifiers "HE, AP" :muzzlevelocity "1000m/s" :range "4km") "105mm leFH 18 Howitzer" (item :name "105mm leFH 18 Howitzer" :classification "Artillery" :explosive "1.38kg" :modifiers "HE" :muzzlevelocity "470m/s" :range "10.6km" :rof "5/min") "150mm StuH 43 L/12 Cannon" (item :name "150mm StuH 43 L/12 Cannon" :summary "Penetrates 160mm at any range" :classification "Cannon" :modifiers "HE" :muzzlevelocity "240m/s" :range "4.3km" :rof "1.5/min") "Model 24 Grenade" (item :name "Model 24 Grenade" :image "WWIIGerman/Grenade_Model24.jpg" :reference "* It featured an explosive charge encased in a metal can and mounted on a wooden shaft for throwing. It became one of the most easily recognized of all small arms, and synonymous with the German soldier." :titles "Potato Masher" :classification "Bomb" :explosive ".17kg" :length ".35m" :mass ".6kg" :modifiers "Anti-Personnel" :range "40m") :Panzerfaust (item :name "Panzerfaust" :image "WWIIGerman/Rocket_Panzerfaust.jpg" :reference "* The weapon proved to be particularly deadly to Allied armored vehicles, especially in urban combat where the short lines of sight allowed the weapon to be used at close range." :summary "* Disposable HEAT Rocket penetrates 200mm at 60m" :titles "Tank Fist" :classification "Missile" :explosive ".8kg" :length "1m" :mass "6.25kg" :modifiers "HEAT" :range "60m" :rounds "1") :Panzerschreck (item :name "Panzerschreck" :reference "* When handled by well-trained crews, this weapon became the bane of Allied armored units, who frequently attempted to add improvised protection to their tanks, e.g. sandbags, spare track units, logs and so on. Most of this make-shift protection had little actual effect." :summary "* Disposable HEAT Rocket penetrates 200mm at 60m" :titles "Tank Terror, Stove Pipe" :classification "Missile" :explosive ".66kg" :length ".16m" :mass "11kg" :modifiers "HEAT" :range "150m") "120mm GrW 42 Mortar" (item :name "120mm GrW 42 Mortar" :classification "Artillery" :explosive "15.6 kg" :modifiers "Indirect, HE") "150mm Rocket Launcher" (item :name "150mm Rocket Launcher" :reference "* These offered the opportunity to deliver large quantities of poison gas or smoke simultaneously. * Almost five and a half million 15 cm rockets and six thousand launchers were manufactured over the course of the war." :classification "Missile" :explosive "50kg" :mass "1.1tons" :modifiers "HE" :muzzlevelocity "145m/s" :rounds "6") "V2 Rocket" (item :name "V2 Rocket" :image "WWIIGerman/Rocket_V2.jpg" :reference "* The rocket was the world's first long-range missile and first human artifact to achieve sub-orbital spaceflight. It was the progenitor of all modern rockets, including those used by the United States and Soviet Union space programs, who gained access to the scientists and designs. * They not only took a toll of 9 thousand casualties. They also had a devastating psychological effect for unlike the buzzbomb it would attack without warning, and it could not be intercepted by fighter aircraft or anti-aircraft artillery. * Hitler was probably not impressed with the weapon but was impressed by the enthusiasm of its developers and needed a 'wonder weapon' to maintain German morale." :titles "Vengence 2" :classification "Missile" :explosive "980kg" :length "14m" :mass "6.5tons" :range "320km" :rounds "1" :speedair "5760kph" :width "1.65m"))))))
nx/tactics/books/world_wars / chapter_wwii_german_units
Description:
Function Name:
  • chapter_wwii_german_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_german_units : base/chapter (chapter :name "WWII German Units" :sectionmap (sectionmap "WWII German Infantry" (section :name "WWII German Infantry" :unitmap (unitmap "German Rifle Team" (unit :name "German Rifle Team" :image "WWIIGerman/Infantry_RiflemanToken.png" :summary "Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "German MG Team" (unit :name "German MG Team" :image "WWIIGerman/Infantry_MGToken.png" :summary "Composed of 2 riflemen, MG Gunner, MG Assistant, and squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Waffen-SS Infantry" (unit :name "Waffen-SS Infantry" :image "WWIIGerman/Infantry_SSToken.png" :titles "Weapon SS (Shield Squadron)" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "German Sniper" (unit :name "German Sniper" :image "WWIIGerman/Infantry_SniperToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Panzergrenadiers (unit :name "Panzergrenadiers" :image "WWIIGerman/Infantry_PanzergrenadierToken.png" :reference "The shaped charge could penetrate up to 200 mm of steel, enough to defeat any armoured fighting vehicle of the period." :summary "* Heavy Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerschreck Team" (unit :name "Panzerschreck Team" :image "WWIIGerman/Infantry_PanzerschreckToken.png" :reference "* Though the Panzerschreck is a copy of the bazooka, the bazooka was having a difficulties with the Tiger and Panther, one direct hit was usually enough to destroy any Allied armored vehicle." :summary "* Heavy Anti-Tank Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Obertruppfuhrer (unit :name "Obertruppfuhrer" :image "WWIIGerman/Infantry_ObersturmfuhrerToken.png" :reference "* Obertruppfuhrer was junior to Haupttruppfuhrer and typically served as a senior non-commissioned officer rank equivalent to a Platoon Sergeant." :summary "* Commander" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "3" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) :Haupttruppfuhrer (unit :name "Haupttruppfuhrer" :summary "* Commander" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Command (unitskill :name "Command" :level "4" :unitabilitymap (unitabilitymap "Chain of Command" (unitability :name "Chain of Command") :Rally (unitability :name "Rally"))))) :Gestapo (unit :name "Gestapo" :reference "* 'Jew Hunter'? It's just a name that stuck. Well, you do have to admit, it is catchy. - Inglourious Basterds") :Fallschirmjager (unit :name "Fallschirmjager" :image "WWIIGerman/Infantry_FallschirmjagerToken.png" :reference "* During the Battle of Crete, the Ultra enabled the British to wait on each German drop zone, yet despite compromised secrecy, surviving German paratroops pushed the Commonwealth forces off the island. However, the losses were so great that Hitler forbade their future use. He felt that the main power of the paratroop was novelty, and that the British had clearly figured out how to defend against them. Ironically, the battle that ended Germany's paratrooper operations had the opposite effect on the Allies. Convinced of the effectiveness of airborne assaults, the Allies hurried to train and organize their own airborne units." :summary "* Paratrooper" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Forward Observer" (unit :name "German Forward Observer" :image "WWIIGerman/Infantry_ForwardObserverToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Granatwerfer 42" (unit :name "Granatwerfer 42" :image "WWIIGerman/Infantry_MortarToken.png" :summary "* Heavy Mortar Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "German Medical Corp" (unit :name "German Medical Corp" :image "WWIIGerman/Infantry_MedicToken.png" :classification "Med. Infantry") "German Pioniere" (unit :name "German Pioniere" :image "WWIIGerman/Infantry_PionereToken.png" :summary "Combat Engineers from the German Defense Force" :classification "Med. Infantry"))) "WWII German Vehicles" (section :name "WWII German Vehicles" :unitmap (unitmap "Panzer III Ausf L" (unit :name "Panzer III Ausf L" :image "WWIIGerman/TankLt_PzkpfwIII_DesertToken.png" :classification "Lt. Tank" :crew "5" :mass "22tons" :height "2.5m" :length "5.5m" :range "155km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "70mm" :back "50mm" :over "10mm" :under "5mm" :side "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Flammpanzer III Ausf M" (unit :name "Flammpanzer III Ausf M" :image "WWIIGerman/TankLt_FlammpanzerIIIToken.png" :classification "Lt. Tank" :crew "5" :mass "22tons" :height "2.5m" :length "5.5m" :range "155km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "70mm" :back "50mm" :over "10mm" :under "5mm" :side "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzer IV Ausf H" (unit :name "Panzer IV Ausf H" :image "WWIIGerman/TankMed_PanzerPzkpfwIV_Token.png" :reference "* Robust and reliable, it saw service in all combat theaters, and has the distinction of being the only German tank to remain in continuous production throughout the war with over 8,500 produced." :classification "Med. Tank" :crew "5" :mass "25tons" :length "7m" :range "200km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panther Ausf G" (unit :name "Panther Ausf G" :image "WWIIGerman/TankMed_PantherToken.png" :reference "* Ernst Barkmann in a lone Panther knocked out nine Shermans halting an American advance." :classification "Med. Tank" :crew "5" :mass "43tons" :range "250km" :speedland "46kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm Sloped" :back "45mm" :over "30mm" :under "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tiger Ausf E" (unit :name "Tiger Ausf E" :image "WWIIGerman/TankHvy_TigerToken.png" :reference "* In the Normandy campaign, it could take four to five Shermans to knock out a single Tiger tank by maneuvering to its weaker flank or rear armor." :classification "Hvy. Tank" :crew "5" :mass "57tons" :length "8.5m" :range "150km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :back "25mm" :over "40mm" :under "40mm" :side "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tiger II Ausf B" (unit :name "Tiger II Ausf B" :image "WWIIGerman/TankHvy_PzkpfwVIb_Porsche_KingTigerToken.png" :reference "* The M4 Sherman was unable to penetrate the front even at point blank and the M26 Pershing and IS-2 had to come within 1300 m and 200 m respectively. * The Tiger II could destroy all Allied armor at a range far outside the effective range of the enemy's armament. Also the Tiger II was remarkably agile for such a heavy vehicle. Records indicate that it had a lower ground pressure and was as maneuverable as the much lighter Panzer IV." :classification "Hvy. Tank" :crew "5" :mass "68tons" :length "7.6m" :range "170km" :speedland "41kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "150mm" :back "80mm" :over "40mm" :under "40mm" :side "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Marder II" (unit :name "Marder II" :image "WWIIGerman/TD_MarderIIToken.png" :reference "* Based on obsolete Panzer II." :classification "Tank Destroyer" :crew "3" :mass "11tons" :length "6.4m" :range "190km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "35mm" :back "0mm" :over "0mm" :side "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "StuG III" (unit :name "StuG III" :image "WWIIGerman/TD_StugIIIToken.png" :reference "* Cheaper than a Panzer III, it was Germany's most produced armored vehicle. Sturmgeschutz units held a very impressive record of tank kills - some 20,000 enemy tanks by spring of 1944." :classification "Tank Destroyer" :crew "4" :mass "24tons" :length "6.9m" :range "155km" :speedland "40kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "JapdPanzer 38 Hetzer" (unit :name "JapdPanzer 38 Hetzer" :image "WWIIGerman/TD_HetzerToken.png" :reference "* The Jagdpanzer 38(t) is one of the most common late-war German tank destroyers. Also, its small size made it a hard target, and was easy to conceal allowing it to lie in ambush for enemy tanks." :classification "Tank Destroyer" :mass "15tons" :length "6m" :range "177km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm Sloped")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :JagdPanther (unit :name "JagdPanther" :image "WWIIGerman/TD_JagdPantherToken.png" :reference "* Many historians consider the Jagdpanther to be the best tank destroyer of World War 2. * Because of its visually striking design, the Jagdpanther was featured on the box cover art of the game Panzerblitz." :classification "Tank Destroyer" :crew "5" :mass "45.5tons" :length "10m" :range "160km" :speedland "46kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "80mm Sloped" :back "45mm" :over "30mm" :side "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerjager Tiger Elefant" (unit :name "Panzerjager Tiger Elefant" :image "WWIIGerman/TD_PanzerjagerTigerElefantToken.png" :reference "* 10:1 Kill Ratio due to strong defense though vulnerable to infantry" :classification "Tank Destroyer" :mass "65tons" :speedland "30kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "200mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :Nashorn (unit :name "Nashorn" :image "WWIIGerman/TD_NashornToken.png" :classification "Tank Destroyer" :mass "24tons" :range "235km" :speedland "42kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Sturmpanzer IV Brummbar" (unit :name "Sturmpanzer IV Brummbar" :image "WWIIGerman/SPG_BrummbarToken.png" :reference "* Fire support based on Panzer IV" :classification "Artillery" :crew "5" :mass "28.2tons" :height "2.5m" :length "6m" :range "210km" :speedland "40kph" :width "2.9m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) :SturmTiger (unit :name "SturmTiger" :image "WWIIGerman/SPG_SturmTigerToken.png" :reference "* Heavy Bombardment unit Based on Tiger" :summary "* 380mm Naval Mortar * 90mm KbK 39 Antipersonnel weapon" :classification "Artillery" :crew "5" :mass "65tons" :height "2.9m" :length "6.3m" :range "120km" :speedland "40kph" :width "3.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "150mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "SdKfz 124 Wespe" (unit :name "SdKfz 124 Wespe" :image "WWIIGerman/SPG_Wespe_WaspToken.png" :reference "* SPG based on Panzer II. Proved so successful that Hitler ordered all Panzer II production to be reserved for the Wespe alone, dropping other projects such as the Marder II." :classification "Artillery" :mass "11tons" :height "2.3m" :length "4.8m" :range "220km" :speedland "40kph" :width "2.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Panzerwerfer 42" (unit :name "Panzerwerfer 42" :image "WWIIGerman/RocketLauncher_Panzerwerfer42Token.png" :classification "Med. Vehicle" :crew "2" :mass "13.5tons" :height "2m" :length "7m" :range "300km" :speedland "27kph" :width "2.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm" :back "8mm" :over "6mm" :under "6mm" :side "12mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 38 50mm Artillery" (unit :name "PaK 38 50mm Artillery" :image "WWIIGerman/Artillery_PaK38Token.png" :classification "Artillery" :mass "830kg" :length "4.75m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 40 75mm Artillery" (unit :name "PaK 40 75mm Artillery" :image "WWIIGerman/Artillery_PaK40Token.png" :reference "* The PaK 40 was the standard German anti-tank gun, and was supplied by Germany to its allies." :classification "Artillery" :mass "1.4tons" :length "6.2m" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "PaK 43 88mm Artillery" (unit :name "PaK 43 88mm Artillery" :image "WWIIGerman/Artillery_PaK43_88mmToken.png" :reference "* The Pak 43 entered production in 1943 and was an extremely powerful weapon, capable of dealing with any tank it would face. It was however a massive weapon, well beyond the reasonable weight for an anti-tank weapon. The weight coupled with the immense size meant that it was extremely difficult to handle on the field." :classification "Artillery" :mass "3.6tons" :length "9.2" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Bofors 40mm AA" (unit :name "Bofors 40mm AA" :image "WWIIGerman/AA_Bofors40mmToken.png" :classification "Hvy. MG" :mass "2.5tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Halftrack Sdkfz 251" (unit :name "Halftrack Sdkfz 251" :image "WWIIGerman/Halftrack_Sdkfz_250Token.png" :classification "Med. Vehicle" :crew "2+10" :mass "7.8tons" :height "1.8m" :length "5.8m" :range "500km" :speedland "52kph" :width "2.1m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "15mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Mercedes L300" (unit :name "Mercedes L300" :image "WWIIGerman/Truck_Mercedes_L3000Token.png" :classification "Truck" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "2"))) "Kubelwagen Type 82" (unit :name "Kubelwagen Type 82" :image "WWIIGerman/Car_KubelwagenType82Token.png" :reference "* Prototype versions were assembled with four-wheel drive, but none offered a significant increase in performance or capability, so none were produced. * In 1943, the U.S. military concluded that the vehicle was simpler, easier to manufacture and maintain, faster, and more comfortable for four passengers than the U.S. Jeeps." :classification "Car" :crew "1+3" :mass "715kg" :height "1.7m" :length "3.7m" :speedland "80kph" :width "1.6m" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BMW R75 Motorcycle" (unit :name "BMW R75 Motorcycle" :image "WWIIGerman/MotorcycleToken.png" :classification "Lt. Vehicle" :crew "1+1" :mass "420kg" :range "350km" :speedland "95kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII German Aircraft" (section :name "WWII German Aircraft" :unitmap (unitmap "Messerschmitt Bf 109" (unit :name "Messerschmitt Bf 109" :image "WWIIGerman/Fighter_BF-109Token.png" :reference "* The most successful fighter of World War II, shooting down more aircraft than any of its contemporaries. * Produced in greater quantities than any other fighter aircraft in history. * Flown by the three top-scoring fighter aces of World War II: Erich Hartmann, the top scoring fighter ace of all time with 352 official victories, Gerhard Barkhorn with 301 victories, and Günther Rall with 275 victories. * Hartmann refused to fly any other combat aircraft throughout the war." :classification "Lt. Aircraft" :crew "1" :mass "3.1tons" :length "9m" :range "850km" :speedair "640kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Focke-Wulf Fw 190" (unit :name "Focke-Wulf Fw 190" :image "WWIIGerman/Fighter_FW_190Token.png" :reference "* Well liked by its pilots, and was quickly proven to be superior to the RAF's main front line fighter, the Spitfire Mk. V, on its combat debut in 1941. * Compared to the Bf 109, the Fw 190 was a 'workhorse', employed in and proved suitable for a wide variety of roles, including ground attack, night fighter-bomber, long-range bomber escort, and night-fighter." :classification "Lt. Aircraft" :crew "1" :mass "4tons" :height "4m" :length "9m" :range "800km" :speedair "656kph" :width "10m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Messerschmitt Bf 110" (unit :name "Messerschmitt Bf 110" :image "WWIIGerman/FighterBomber_BF-110Token.png" :classification "Lt. Aircraft" :crew "2" :mass "7.8tons" :height "3.3m" :length "12.3m" :range "900km" :speedair "595kph" :width "16.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Messerschmitt Me 262" (unit :name "Messerschmitt Me 262" :image "WWIIGerman/FighterJet_Me-262Token.png" :reference "* World's First Turbojet Fighter" :classification "Lt. Aircraft" :crew "1" :mass "6.5tons" :height "3.5m" :length "10.6m" :range "1050km" :speedair "900kph" :width "12.6m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Heinkel He 177" (unit :name "Heinkel He 177" :image "WWIIGerman/Bomber_HE_177Token.png" :reference "* Strategic Bomber * This troubled aircraft was the only heavy bomber built in large numbers by Germany in WWII. It was nicknamed Luftwaffe's lighter or the 'Flaming Coffin' due to the engines' tendency to catch fire," :classification "Hvy. Aircraft" :crew "6" :mass "27.2tons" :height "6.4m" :length "22m" :range "1540km" :speedair "565kph" :width "31.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Arado Ar 234" (unit :name "Arado Ar 234" :image "WWIIGerman/BomberJet_AR-234_AradoToken.png" :reference "* The world's first operational jet powered bomber, built in the closing stages of World War II. In the field it was used almost entirely in the reconnaissance role, but in its few uses as a bomber it proved to be nearly impossible to intercept." :classification "Hvy. Aircraft" :crew "1" :mass "9.8tons" :height "4.3m" :length "12.6m" :range "1100km" :speedair "742kph" :width "14.1m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Do 24 Flying Boat" (unit :name "Do 24 Flying Boat" :image "WWIIGerman/FlyingBoat_DO24Token.png" :summary "* Seaplance" :classification "Med. Aircraft" :crew "3" :mass "18.4tons" :height "6m" :length "22m" :range "2900km" :speedair "341kph" :width "27m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII German Naval Vessels" (section :name "WWII German Naval Vessels" :unitmap (unitmap "Bismarck Class Battleship" (unit :name "Bismarck Class Battleship" :image "WWIIGerman/Battleship_Bismarck.png" :reference "* 40% by weight dedicated to armor. More than the Yamato's 33% * May 1941, sank the HMS Hood, flagship and pride of the Royal Navy in 11 minutes. In response, Winston Churchill issued the order to 'Sink the Bismarck', spurring a relentless pursuit by the Royal Navy." :titles "Bismarck, Tirpitz" :classification "Hvy. Naval Vessel" :crew "2092" :mass "50ktons" :length "251m" :speedwater "56kph" :width "36m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "320mm" :back "320mm" :over "120mm" :side "320mm")) :unitskillmap (unitskillmap :Hanger (unitskill :name "Hanger" :summary "* 4xArado Ar 196 A-3, with 1 double-ended catapult"))) "U-Boot Type VII" (unit :name "U-Boot Type VII" :image "WWIIGerman/Submarine_VIIC_UboatToken.png" :reference "* By the end of the war, almost 3,000 Allied ships (175 warships; the rest were merchant ships) were sunk by U-boat torpedoes." :classification "Submarine") "Elektroboot XXI" (unit :name "Elektroboot XXI" :image "WWIIGerman/Submarine_XXIIIToken.png" :classification "Submarine"))))))
nx/tactics/books/world_wars / chapter_wwii_italian_units
Description:
Function Name:
  • chapter_wwii_italian_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_italian_units : base/chapter (chapter :name "WWII Italian Units" :sectionmap (sectionmap "WWII Italian Weapons" (section :name "WWII Italian Weapons" :itemmap (itemmap "7.65mm Beretta M1935 Pistol" (item :name "7.65mm Beretta M1935 Pistol" :image "WWIIItalian/Pistol_Beretta_M1935.jpg" :summary "* The M1935 is a very robust construction with long service life if properly maintained. * However, the .32 ACP ammunition is somewhat under-powered for combat use. The magazine capacity of only 8 rounds and short effective range reduces the M1935 to a last resort self defense weapon." :classification "Pistol" :length "159mm" :mass ".75kg" :muzzlevelocity "305m/s" :rounds "7") "6.5mm Carcano M1891 Rifle" (item :name "6.5mm Carcano M1891 Rifle" :image "WWIIItalian/Rifle_Carcano.jpg" :reference "* The Carcano was the rifle used by Lee Harvey Oswald to assassinate John F. Kennedy" :summary "* Bolt action rifle" :length "1300mm" :mass "3.8kg" :muzzlevelocity "700m/s" :rounds "6") "7.7mm Breda-SAFAT MG" (item :name "7.7mm Breda-SAFAT MG" :mass "12.5kg" :modifiers "Auto" :muzzlevelocity "730m/s" :rof "850/min") "8mm Breda M37 MG" (item :name "8mm Breda M37 MG" :image "WWIIItalian/MG_8mmBredaM37.jpg" :length "1270mm" :mass "17.5kg" :modifiers "Auto" :muzzlevelocity "900m/s" :range "1000m" :rof "460/min") "12.7mm Breda-SAFAT MG" (item :name "12.7mm Breda-SAFAT MG" :mass "12.5kg" :modifiers "Auto" :muzzlevelocity "765m/s" :rof "700/min") "20mm Breda M35 Autocannon" (item :name "20mm Breda M35 Autocannon" :image "WWIIItalian/Cannon_20mmBredaM35.jpg" :length "3.3m" :mass "330kg" :modifiers "Auto" :muzzlevelocity "840m/s" :rof "240/min") "47mm Cannone da 47/32 M35" (item :name "47mm Cannone da 47/32 M35" :image "WWIIItalian/Cannon_47mm_CannoneDa4732.jpg" :mass "277kg" :modifiers "AP, HE, HEAT" :muzzlevelocity "630m/s" :range "7000m") "75mm Obice da 75/18 M34" (item :name "75mm Obice da 75/18 M34" :image "WWIIItalian/Cannon_ObiceDa7518M34.jpg" :mass "1ton" :modifiers "AP, HE, HEAT" :muzzlevelocity "425m/s" :range "9564m"))) "WWII Italian Infantry" (section :name "WWII Italian Infantry" :unitmap (unitmap :Blackshirt (unit :name "Blackshirt" :image "WWIIItalian/Infantry_Blackshirt.png" :reference "* Fascist paramilitary groups in Italy. * Their methods became harsher as Mussolini's power grew, and they used violence, torture, intimidation, and murder against Mussolini's opponents. One of their distinctive techniques was force-feeding castor oil." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Black Brigade" (unit :name "Black Brigade" :image "WWIIItalian/Infantry_BlackBrigade.png" :reference "* Italian dictator Benito Mussolini was arrested after the Italian Grand Council of Fascism, overthrew him and began negotiations with the Allies for Italy's withdrawal from the war. Mussolini was rescued by German paratroopers. He was then installed by the Germans as the President of the Italian Social Republic (RSI). The RSI was to be an Italian regime which was to nominally administer the German-occupied northern Italy. As the Blackshirts were disbanded by the terms of the armistice, the Black Brigade was formed out of those still loyal to the fascist cause." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Italian Forward Observer" (unit :name "Italian Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Italian Vehicles" (section :name "WWII Italian Vehicles" :unitmap (unitmap "Carro Armato L6/40" (unit :name "Carro Armato L6/40" :image "WWIIItalian/TankLt_CarroArmatoL6Token.png" :reference "* Although a good light tank for its size, it was already obsolete by the time of its introduction. The low silhouette made it useful for reconnaissance, and its armament was effective against any light vehicles it may encounter. However, due to lack of suitable medium tanks, it was often employed in a combat role, for which it was unsuited." :classification "Lt. Tank" :crew "2" :mass "6.6tons" :height "2m" :length "3.8m" :range "200km" :speedland "42kph" :width "2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "40mm" :under "6mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Carro Armato M13/40" (unit :name "Carro Armato M13/40" :image "WWIIItalian/TankLt_M13CarroArmatoToken.png" :classification "Lt. Tank" :crew "4" :mass "14tons" :height "2.4m" :length "5m" :range "200km" :speedland "32kph" :width "2.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "42mm" :over "15mm" :under "6mm" :side "25mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Semovente 47/32" (unit :name "Semovente 47/32" :image "WWIIItalian/TD_Semovente47.png" :classification "Tank Destroyer" :crew "3" :mass "6.4tons" :height "1.6m" :length "3.8m" :range "200km" :speedland "42kph" :width "2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "30mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Semovente 75/18" (unit :name "Semovente 75/18" :image "WWIIItalian/TD_Semovente47.png" :reference "* Though it was technically similar to the StuG III, it had a totally different role, serving as divisional artillery instead of a pure assault gun. Though their role was divisional artillery, they could fire as indirect support, and if necessary, also act as an assault gun and anti-tank vehicle." :classification "Artillery" :crew "3" :mass "14.4tons" :height "1.8m" :length "5m" :range "230km" :speedland "32kph" :width "2.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "50mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Italian Aircraft" (section :name "WWII Italian Aircraft" :unitmap (unitmap "Fiat G50" (unit :name "Fiat G50" :image "WWIIItalian/Fighter_Fiat_G50Token.png" :reference "* In Africa, Italian pilots flying the G.50 managed to shoot down the faster and better armed Hurricane fighter. * In the hands of expert pilots, the Fiat G.50 could score multiple kills in a single action" :classification "Lt. Aircraft" :crew "1" :mass "2.7tons" :height "3m" :length "7.8m" :range "670km" :speedair "484kph" :width "11m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Fiat CR.42 Falco" (unit :name "Fiat CR.42 Falco" :summary "* The primary fighter of the Italian Air Force at the outbreak of the war. Although outdated by monoplane fighters, it still acquitted itself well in North Africa until the advent of more advanced Allied fighters. The Fiat CR.42 was the last of the Fiat biplane fighters to enter frontline service as a fighter, and represented the epitome of the type." :titles "Falcon" :classification "Lt. Aircraft" :crew "1" :mass "2.3tons" :height "3.6m" :length "8.25m" :range "780km" :speedair "441kph" :width "9.7m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Savoia-Marchetti SM.81" (unit :name "Savoia-Marchetti SM.81" :summary "* Bomber * Despite being too slow to remain competitive as a bomber, it was one of the most flexible, reliable and important aircraft of the Regia Aeronautica from 1935 to 1944, and adapted to second line duties in performing a wide range of tasks." :classification "Hvy. Aircraft" :crew "6" :mass "10.5tons" :height "4.3m" :length "18.3m" :range "1500km" :speedair "347kph" :width "24m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "3mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))))))
nx/tactics/books/world_wars / chapter_wwii_japanese_equipment
Description:
Function Name:
  • chapter_wwii_japanese_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_japanese_equipment : base/chapter (chapter :name "WWII Japanese Equipment" :sectionmap (sectionmap "WWII Japanese Weapons" (section :name "WWII Japanese Weapons" :itemmap (itemmap "8mm Type 94" (item :name "8mm Type 94" :reference "* The gun became notorious for a design flaw that allowed it to be fired with a round in the chamber by pressing a projecting sear on the side of the receiver. The gun was a commercial failure, and is frequently described as the 'worst service pistol ever issued'" :summary "8mm Semiautomatic Pistol" :classification "Pistol") "6.5mm Type 97" (item :name "6.5mm Type 97" :summary "Bolt Action Sniper Rifle" :classification "Rifle") "7.7mm Type 99" (item :name "7.7mm Type 99" :image "WWIIJapanese/Rifle_ArisakaType99.jpg" :reference "* As a bolt action rifle, the Type 99 was a very solid weapon, but was completely outclassed by the semi-automatic rifles deployed by the Allies." :summary "Bolt Action Rifle" :classification "Rifle") "6.5mm Type 96 LMG" (item :name "6.5mm Type 96 LMG" :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "7.7mm Type 97 MG" (item :name "7.7mm Type 97 MG" :classification "Lt. MG" :modifiers "Auto, +1 Prepare") "Type 93 Flamethrower" (item :name "Type 93 Flamethrower" :classification "Flamethrower" :crew "2" :mass "26kg" :modifiers "Fire, Auto" :range "20m") "13mm Type 93 AA" (item :name "13mm Type 93 AA" :classification "Hvy. MG" :length "1.4m" :mass "42kg" :muzzlevelocity "805m/s" :rof "250/min") "20mm Type 99 Cannon" (item :name "20mm Type 99 Cannon" :image "WWIIJapanese/Cannon_20mmType99.jpg" :classification "Cannon" :length "1.3m" :mass "23kg" :modifiers "Auto" :muzzlevelocity "600m/s" :rof "520/min") "25mm Type 96 Autocannon" (item :name "25mm Type 96 Autocannon" :image "WWIIJapanese/Autocannon_25mmType96.jpg" :reference "* The Type 96 was the standard medium antiaircraft weapon of the Imperial Japanese Navy, and was used on virtually every warship in combat in World War II. It was also used in land bases in the Japanese Empire and in the Japanese overseas combat fronts." :classification "Cannon" :crew "3" :length "1.5m" :mass "785kg" :modifiers "Auto" :muzzlevelocity "900m/s" :range "6.8km" :rof "110/min") "37mm Type 94 Cannon" (item :name "37mm Type 94 Cannon" :classification "Cannon" :modifiers "AP, HE") "57mm Type 97 Cannon" (item :name "57mm Type 97 Cannon" :classification "Cannon" :modifiers "AP, HE") "76mm/60 Type 98 Cannon" (item :name "76mm/60 Type 98 Cannon" :classification "Cannon" :length "4.7m" :mass "1.3tons" :muzzlevelocity "910m/s" :rof "25") "127mm/45 Cannon" (item :name "127mm/45 Cannon" :image "WWIIJapanese/Cannon_127mm45.jpg" :classification "Cannon" :length "5.5m" :mass "3.1tons" :muzzlevelocity "825m/s" :rof "5/min") "155mm/60 Naval Artillery" (item :name "155mm/60 Naval Artillery" :classification "Cannon" :length "9.6m" :mass "12.5tons" :muzzlevelocity "920m/s" :rof "5/min") "200mm/50 Naval Artillery" (item :name "200mm/50 Naval Artillery" :classification "Cannon" :length "10m" :mass "18tons" :muzzlevelocity "835m/s" :range "29km" :rof "4/min") "460mm/45 Naval Artillery" (item :name "460mm/45 Naval Artillery" :reference "* The 460mm / 18.1 in gun fired 1.36 ton shells." :classification "Cannon" :length "21m" :mass "164tons" :muzzlevelocity "780m/s" :range "42km" :rof "2/min") "Torpedo Type 91" (item :name "Torpedo Type 91" :image "WWIIJapanese/Torpedo_Type91.jpg" :summary "* Aerial Torpedo" :classification "Torpedo" :explosive "235kg" :length "5.2m" :mass ".85tons" :range "2km" :speedwater "78kph") "Torpedo Type 93 Long Lance" (item :name "Torpedo Type 93 Long Lance" :image "WWIIJapanese/Torpedo_Type93LongLance.jpg" :reference "* Japanese destroyers and cruisers were able to launch their torpedoes from about 20 km at the unsuspecting Allied warships. The Allied warships were expecting enemy torpedoes to be fired at less than 10 km, their own torpedo range. The Allies believed these torpedoes had been fired from Japanese submarines. The capabilities of the Type 93 went mostly unrecognized by the Allies until one was captured intact in 1943." :classification "Torpedo" :explosive "490kg" :length "9m" :mass "2.8tons" :range "22km" :speedwater "90kph") "Torpedo Type 95" (item :name "Torpedo Type 95" :reference "* Based on the formidable Type 93 Long Lance, the Type 95 was the fasted torpedo in use by any navy at the time. * It is 3x the range of the American Mark 14 with the same speed. * Its warhead was the largest of any submarine torpedo and second only to the Type 93 surface torpedo. * Some have claimed this to be the best torpedo of WWII." :classification "Torpedo" :explosive "405kg" :range "9km" :speedwater "92kph") "Kaiten Kamikaze Torpedo" (item :name "Kaiten Kamikaze Torpedo" :reference "* Early designs allowed the pilot to escape after the final acceleration toward the target, although whether this could have been done successfully is doubtful. There is no record of any pilot attempting to escape or intending to do so, and this provision was dropped from later production. * Kaiten attacks resulted in sinking only two American vessels with the loss of 162 American lives, in comparison to 106 kaiten pilots who lost their lives." :classification "Torpedo" :explosive "1.4tons" :length "15m" :mass "8.3tons" :range "78km" :speedwater "56kph"))))))
nx/tactics/books/world_wars / chapter_wwii_japanese_units
Description:
Function Name:
  • chapter_wwii_japanese_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_japanese_units : base/chapter (chapter :name "WWII Japanese Units" :sectionmap (sectionmap "WWII Japanese Infantry" (section :name "WWII Japanese Infantry" :unitmap (unitmap "Arisaka Riflemen" (unit :name "Arisaka Riflemen" :image "WWIIJapanese/Infantry_RiflemenToken.png" :summary "Composed of 7 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Japanese LMG" (unit :name "Japanese LMG" :summary "Composed of 4 riflemen, 1 LMG, and squad leader" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Arisaka Sniper" (unit :name "Arisaka Sniper" :image "WWIIJapanese/Infantry_Sniper.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Special Naval Landing Forces" (unit :name "Special Naval Landing Forces" :titles "SNLF" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Amphibious Assault" (unitability :name "Amphibious Assault"))))) "Teishin Shudan" (unit :name "Teishin Shudan" :image "WWIIJapanese/Infantry_ParatrooperToken.png" :reference "Commando Paratroopers" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4" :unitabilitymap (unitabilitymap "Airborne Assault" (unitability :name "Airborne Assault"))))) "Japanese Commander" (unit :name "Japanese Commander" :image "WWIIJapanese/Infantry_CommanderToken.png" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "5" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Japanese Forward Observer" (unit :name "Japanese Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Japanese Vehicles" (section :name "WWII Japanese Vehicles" :unitmap (unitmap "Type 95 Ha-Go" (unit :name "Type 95 Ha-Go" :image "WWIIJapanese/TankLt_Type95Ha-go_Token.png" :reference "* One key to the Japanese success in Malaya was the unexpected presence of their tanks in wet jungle terrain where the British did not believe tanks could be used." :classification "Lt. Tank" :crew "3" :mass "7.4tons" :length "4.4m" :range "250km" :speedland "45kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Type 97 Chi-Ha" (unit :name "Type 97 Chi-Ha" :image "WWIIJapanese/TankMed_Type97ChiHa.png" :classification "Med. Tank" :crew "4" :mass "16tons" :length "5.5m" :range "210km" :speedland "38kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "33mm" :side "9mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII Japanese Aircraft" (section :name "WWII Japanese Aircraft" :unitmap (unitmap "J2M Raiden Fighter" (unit :name "J2M Raiden Fighter" :image "WWIIJapanese/Fighter_J2M3_Raiden_Token.png" :classification "Lt. Aircraft" :crew "1" :mass "3.5tons" :height "3.8m" :length "9.7m" :range "560km" :speedair "612kph" :width "10.8m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "A6M Zero Naval Fighter" (unit :name "A6M Zero Naval Fighter" :image "WWIIJapanese/FighterNavy_A6M5_Zero_Token.png" :reference "* Designed for attack, the Zero gave precedence to maneuverability and firepower at the expense of protection * When it was introduced, the Zero was the best carrier-based fighter in the world and it was greatly feared by Allied pilots. Excellent maneuverability and very long range made it one of the finest fighters of its era. By 1943, the allies produced more powerful fighters and the A6M became obsolete." :classification "Lt. Aircraft" :crew "1" :mass "2.4tons" :height "3m" :length "9m" :range "3105km" :speedair "533kph" :width "12m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "4mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "B5N Kate Torpedo Bomber" (unit :name "B5N Kate Torpedo Bomber" :image "WWIIJapanese/TorpedoBomber_B5N1_Kate_Token.png" :reference "* High performance but little armor * Torpedo may be replaced with 3x 250kg Bombs or 6x 60kg Bombs" :classification "Lt. Aircraft" :crew "3" :mass "3.8tons" :height "3.7m" :length "10.3m" :range "1992km" :speedair "378kph" :width "15.5m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "D3A Val Dive Bomber" (unit :name "D3A Val Dive Bomber" :image "WWIIJapanese/DiveBomber_D3A1_VALToken.png" :reference "* Scored over 80% hits in Indian Ocean vs British * Able to survive as a fighter * Could replace 250kg Bomb with 2x 60kg Bombs" :classification "Lt. Aircraft" :crew "2" :mass "3.6tons" :height "3.9m" :length "10.2m" :range "1352km" :speedair "430kph" :width "14.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "8mm" :back "8mm" :over "8mm" :side "8mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Ohka Kamikaze Rocket" (unit :name "Ohka Kamikaze Rocket" :image "WWIIJapanese/KamikazeRocket_Ohka_Token.png" :reference "* Essentially a 1,200 kg bomb with wooden wings powered by three solid-fuel rocket motors, the Type 11 achieved great speed but with limited range. This was problematic, as it required the slow, heavily-laden mother aircraft to approach within 37 km of the target, making them very vulnerable to defending fighters. * Seven US ships were damaged or sunk by Ohkas throughout the war." :classification "Missile" :crew "1" :mass "2.14tons" :height "1.2m" :length "6.1m" :range "36km" :speedair "804kph" :width "5.1m" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "A6M2 Rufe Seaplane" (unit :name "A6M2 Rufe Seaplane" :image "WWIIJapanese/Seaplane_A6M2_Rufe_Token.png" :reference "* This floatplane was developed from the A6M Zero for supporting amphibian operations and defending remote bases." :crew "1" :mass "2.5tons" :height "4.3m" :length "10.1m" :range "1782km" :speedair "516kph" :width "12m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "4mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))) "WWII Japanese Naval Vessels" (section :name "WWII Japanese Naval Vessels" :unitmap (unitmap "Kaga Class Converted Carrier" (unit :name "Kaga Class Converted Carrier" :image "WWIIJapanese/Carrier_KagaToken.png" :summary "Akagi carried - 21 Zeros, 21 Vals, and 21 Kates" :titles "Kaga, Akagi" :classification "Hvy. Naval Vessel" :crew "2016" :mass "38.8ktons" :length "247m" :range "18520km" :speedwater "52kph" :width "32m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "152mm" :back "152mm" :over "152mm" :under "152mm" :side "152mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Soryu Class Fast Carrier" (unit :name "Soryu Class Fast Carrier" :image "WWIIJapanese/Carrier_Hiryu.png" :titles "Hiryu, Soryu" :classification "Hvy. Naval Vessel" :crew "1103" :mass "19.5ktons" :length "222m" :range "14000km" :speedwater "64kph" :width "21m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm" :back "45mm" :over "25mm" :under "45mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Fubuki Class Destroyer" (unit :name "Fubuki Class Destroyer" :image "WWIIJapanese/Destroyer_Akatsuki_Token.png" :reference "* Has been called 'the world's first modern destroyer.' It set a new standard for destroyers around the world. The Japanese destroyers were bigger, more powerfully armed, and faster than anything that any other fleet possessed." :classification "Med. Naval Vessel" :crew "219" :mass "2ktons" :length "118m" :range "9200km" :speedwater "70kph" :width "10m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :under "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Agano Class Light Cruiser" (unit :name "Agano Class Light Cruiser" :image "WWIIJapanese/CruiserLt_Noshiro_Token.png" :classification "Med. Naval Vessel" :crew "726" :mass "7.6ktons" :length "162m" :range "11000km" :speedwater "67kph" :width "15.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm" :over "20mm" :under "60mm" :side "60mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Tone Class Hvy. Cruiser" (unit :name "Tone Class Hvy. Cruiser" :image "WWIIJapanese/CruiserHvy_Furutaka_Token.png" :classification "Hvy. Naval Vessel" :crew "874" :mass "11ktons" :length "189m" :range "1852km" :speedwater "67kph" :width "19m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "100mm" :over "35mm" :under "100mm" :side "100mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Yamato Class Battleship" (unit :name "Yamato Class Battleship" :image "WWIIJapanese/Battleship_YamatoToken.png" :reference "* Largest battleships ever built with largest naval guns ever. Yamato sank after 8 bombs and 13 torpedos caused her magazine to explode." :classification "Hvy. Naval Vessel" :crew "2767" :mass "72ktons" :length "263m" :range "13000km" :speedwater "50kph" :width "39m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "650mm" :over "200mm" :side "410mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Otori Class Torpedo Boat" (unit :name "Otori Class Torpedo Boat" :image "WWIIJapanese/TorpedoBoat_MitsubishiT14_Token.png" :classification "Lt. Naval Vessel" :crew "129" :mass "960tons" :length "88.5m" :range "7400km" :speedwater "56kph" :width "8.2m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "B1 Type Submarine Carrier" (unit :name "B1 Type Submarine Carrier" :image "WWIIJapanese/Submarine_I29Token.png" :reference "* 15kph Submerged * 100m Test Depth * Fast, very long ranged, and carried a single Yokosuka E14Y seaplane, located in a hangar in front of the conning tower, launched by a catapult. * A submarine could be equipped with 3-6 Kaiten torpedoes on the deck, but this limited dive depth." :titles "I-15 Series" :classification "Submarine" :crew "94" :mass "3654tons" :length "108m" :range "26000km" :speedwater "44kph" :width "9.3m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Kaidai VII Submarine" (unit :name "Kaidai VII Submarine" :reference "* 15kph Submerged * 80m Test Depth" :classification "Submarine" :crew "86" :mass "2.6ktons" :length "105m" :range "15000km" :speedwater "43kph" :width "8.25m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))))))))
nx/tactics/books/world_wars / chapter_wwii_soviet_equipment
Description:
Function Name:
  • chapter_wwii_soviet_equipment
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_soviet_equipment : base/chapter (chapter :name "WWII Soviet Equipment" :sectionmap (sectionmap "WWII Soviet Weapons" (section :name "WWII Soviet Weapons" :itemmap (itemmap "7.62mm Tokarev" (item :name "7.62mm Tokarev" :image "WWIIRussian/Pistol_Tokarev.jpg" :classification "Pistol") "7.62mm SVT-40" (item :name "7.62mm SVT-40" :image "WWIIRussian/Rifle_SVT40.jpg" :summary "7.62mm Semiautomatic Rifle" :classification "Rifle") "7.62mm Mosin-Nagant" (item :name "7.62mm Mosin-Nagant" :image "WWIIRussian/Rifle_MosinNagantM1891.jpg" :summary "7.62mm Bolt-action Rifle" :classification "Rifle") "7.62mm PPSh-41 SMG" (item :name "7.62mm PPSh-41 SMG" :image "WWIIRussian/SMG_PPSh41.jpg" :classification "Lt. MG" :modifiers "Auto" :range "200m") "ROKS Flamethrower" (item :name "ROKS Flamethrower" :classification "Flamethrower" :crew "1" :mass "22kg" :modifiers "Fire, Auto" :range "25m") "7.62mm Degtyaryov LMG" (item :name "7.62mm Degtyaryov LMG" :classification "Med. MG" :modifiers "Auto, +1 Prepare") "12.7mm DShK MG" (item :name "12.7mm DShK MG" :classification "Hvy. MG" :length "1.6m" :mass "34kg" :modifiers "Auto" :rof "600/min") "12.7mm UBS MG" (item :name "12.7mm UBS MG" :reference "* Used by the vast majority of Soviet military aircraft * It's rate of fire was nearly twice that of the comparable M2 Browning machine gun." :classification "Hvy. MG" :mass "21.5kg" :muzzlevelocity "825m/s" :rof "1000/min") "20mm ShVAK Cannon" (item :name "20mm ShVAK Cannon" :classification "Cannon" :length "1679mm" :mass "40kg" :modifiers "Auto, HE, AP" :muzzlevelocity "775m/s" :rof "750/min") "76.2mm F-34 Cannon" (item :name "76.2mm F-34 Cannon" :classification "Cannon" :modifiers "AP, HE") "76.2mm ZiS-3Sh Cannon" (item :name "76.2mm ZiS-3Sh Cannon" :classification "Cannon" :modifiers "AP, HE") "85mm D-5T Cannon" (item :name "85mm D-5T Cannon" :classification "Cannon" :modifiers "AP, HE") "85mm ZiS-S-53 Cannon" (item :name "85mm ZiS-S-53 Cannon" :classification "Cannon" :modifiers "AP, HE") "100mm D-10S Cannon" (item :name "100mm D-10S Cannon" :classification "Cannon" :modifiers "AP, HE") "122mm A-19 Cannon" (item :name "122mm A-19 Cannon" :classification "Cannon" :muzzlevelocity "806m/s" :rof "2/min") "122mm M-30 Howitzer" (item :name "122mm M-30 Howitzer" :summary "* M-30 howitzers were primarily employed for indirect fire against enemy personnel. It was also used against field fortifications, clearing minefields and breaching barbed wire. Fragments created by the explosion could penetrate up to 20 mm of armour." :classification "Cannon" :modifiers "Indirect, HE") "152mm M-10 Howitzer" (item :name "152mm M-10 Howitzer" :classification "Cannon" :modifiers "HE") "120mm M1938 Mortar" (item :name "120mm M1938 Mortar" :classification "Artillery" :modifiers "HE") "133mm M-13 Rocket" (item :name "133mm M-13 Rocket" :summary "* Warhead is 22kg" :classification "Missile" :length "1.8m" :mass "42kg" :range "5.4km"))))))
nx/tactics/books/world_wars / chapter_wwii_soviet_units
Description:
Function Name:
  • chapter_wwii_soviet_units
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func chapter_wwii_soviet_units : base/chapter (chapter :name "WWII Soviet Units" :sectionmap (sectionmap "WWII Soviet Infantry" (section :name "WWII Soviet Infantry" :unitmap (unitmap "Soviet Rifle Team" (unit :name "Soviet Rifle Team" :image "WWIIRussian/Infantry_RiflemenToken.png" :summary "Composed of 5 riflemen" :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3" :unitabilitymap (unitabilitymap "Close Assault" (unitability :name "Close Assault"))))) "Soviet Light MG Team" (unit :name "Soviet Light MG Team" :image "WWIIRussian/Infantry_MGToken.png" :summary "Composed of 4 riflemen and an LMG" :classification "Med. MG" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Soviet SMG Team" (unit :name "Soviet SMG Team" :image "WWIIRussian/Infantry_SMGToken.png" :reference "* The Soviets would often equip whole regiments and even entire divisions with the PPSh-41, giving them unmatched short-range firepower." :classification "Med. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Russian Commander" (unit :name "Russian Commander" :image "WWIIRussian/Infantry_CommanderToken.png" :classification "Med. Infantry") "Soviet NKVD" (unit :name "Soviet NKVD" :image "WWIIRussian/Infantry_NKVDToken.png" :reference "* People's Commissariat for Internal Affairs was the public and secret police organization of the Soviet Union that directly executed the rule of terror, including political repression, during the Stalinist era." :classification "Med. Infantry") "Soviet Sniper" (unit :name "Soviet Sniper" :image "WWIIRussian/Infantry_SniperToken.png" :reference "* One of the best known battles involving snipers, and also the battle that made the Germans reinstate their specialized sniper training, was the Battle of Stalingrad. Their defensive position inside a city filled with rubble meant that Soviet snipers were able to inflict significant casualties." :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "Soviet Forward Observer" (unit :name "Soviet Forward Observer" :classification "Lt. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "4"))) "M1938 Mortar Team" (unit :name "M1938 Mortar Team" :classification "Hvy. Infantry" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Russian Medic" (unit :name "Russian Medic" :classification "Med. Infantry") "Russian Sapper" (unit :name "Russian Sapper" :image "WWIIRussian/Infantry_SapperToken.png" :classification "Hvy. Infantry"))) "WWII Soviet Vehicles" (section :name "WWII Soviet Vehicles" :unitmap (unitmap :T-34/76 (unit :name "T-34/76" :image "WWIIRussian/TankMed_T34-76Token.png" :reference "* Politcal pressure came to halt production of the T-34. This pressure was from the developer of the KV-1 and IS-2 tanks which were in competition with the T-34." :classification "Med. Tank" :crew "4" :mass "28.5tons" :length "6.7m" :range "400km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "60mm Sloped" :back "45mm" :over "20mm" :under "20mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :T-34/85 (unit :name "T-34/85" :image "WWIIRussian/TankMed_T34-85Token.png" :classification "Med. Tank" :crew "5" :mass "32tons" :length "6.7m" :range "360km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "90mm Sloped" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "OT-34 85mm" (unit :name "OT-34 85mm" :image "WWIIRussian/TankMed_T34-85Token.png" :classification "Med. Tank" :crew "5" :mass "32tons" :length "6.7m" :range "360km" :speedland "53kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "90mm Sloped" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :KV-1 (unit :name "KV-1" :image "WWIIRussian/TankHvy_KV1Token.png" :classification "Hvy. Tank" :crew "5" :mass "45tons" :length "6.7m" :range "250km" :speedland "28kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "130mm" :under "20mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :KV-2 (unit :name "KV-2" :image "WWIIRussian/TankHvy_KV-2Token.png" :classification "Hvy. Tank" :crew "5" :mass "53tons" :length "6.8m" :range "140km" :speedland "25.6kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "110mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :IS-2 (unit :name "IS-2" :image "WWIIRussian/TankHvy_IS-2Token.png" :reference "* Proving-ground tests showed that the A-19 could penetrate clear through the front and rear armor of the German Panther tank. When it didn't penetrate, it would often knock the turret right off a tank. It was, however, slow to reload firing only 2/minute." :classification "Hvy. Tank" :crew "4" :mass "46tons" :length "9.9m" :range "240km" :speedland "37kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "160mm Sloped" :under "30mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-76 (unit :name "SU-76" :image "WWIIRussian/SPG_SU76MToken.png" :classification "Tank Destroyer" :crew "4" :mass "10.2tons" :length "5m" :range "320km" :speedland "45kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "35mm" :side "16mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-85 (unit :name "SU-85" :image "WWIIRussian/SPG_SU-85Token.png" :classification "Tank Destroyer" :crew "4" :mass "29.6tons" :length "6.1m" :range "400km" :speedland "55kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-100 (unit :name "SU-100" :image "WWIIRussian/SPG_SU-100Token.png" :classification "Tank Destroyer" :crew "4" :mass "31.6tons" :length "9.5m" :range "320km" :speedland "48kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "75mm" :over "20mm" :side "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) :SU-122 (unit :name "SU-122" :image "WWIIRussian/SPG_SU-122Token.png" :reference "* Even a Tiger was once heavily damaged by SU-122 assault guns firing high-explosive shells." :classification "Hvy. Tank" :crew "4" :mass "31tons" :length "7m" :range "300km" :speedland "55kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "45mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BM-13 Katyusha" (unit :name "BM-13 Katyusha" :image "WWIIRussian/RocketLauncher_KatyushaToken.png" :classification "Hvy. Rocket Launcher" :crew "2+1" :mass "4.2tons" :speedland "55kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "ZiS3 76mm" (unit :name "ZiS3 76mm" :image "WWIIRussian/Artillery_ZiS3_76mmToken.png" :reference "* The first ZiS-3 gun was designed and built in secret from from Red Army authorities, who ignored the Red Army's need for light and medium field guns. The authorities believed Nazi propaganda that German heavy tanks carried exceptionally strong armour. So the project was run purely on the initiative of Grabin, his design bureau and the Artillery Factory No. 92 head and his deputies. None of them informed state authorities about the ZiS-3 project until the authorities belatedly realized that Nazi tanks were often destroyed by even lighter guns." :classification "Artillery" :crew "7" :mass "2.65tons" :speedland "0kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Soviet M3 Scout Car" (unit :name "Soviet M3 Scout Car" :image "WWIIRussian/Car_M3ScoutCarToken.png" :reference "Lend Lease from US" :classification "Car" :crew "1+7" :mass "5.7tons" :length "5.6m" :range "403km" :speedland "81kph" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :over "0mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "BZ-35 Fuel Truck" (unit :name "BZ-35 Fuel Truck" :image "WWIIRussian/Truck_BZ-35_RefuelLorryToken.png" :classification "Truck" :crew "1+2" :mass "4.2tons" :speedland "55kph" :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))) "WWII Soviet Aircraft" (section :name "WWII Soviet Aircraft" :unitmap (unitmap "P-39 Airacobra" (unit :name "P-39 Airacobra" :image "WWIIRussian/Fighter_P39Airacobra.png" :reference "* Lend Lease from US * The low-speed, low-altitude turning nature of most air combat on the Russian Front suited the P-39's strengths: sturdy construction, reliable radio gear, and adequate firepower. The second-highest scoring Allied ace, Aleksandr Pokryshkin, flew the P-39. His unofficial score stands at nearly 60 Luftwaffe aircraft. His wingman, Grigori Rechkalov, scored 57 victories with the P-39. This is the highest score ever gained by any pilot with any U.S.-made aircraft." :classification "Lt. Aircraft" :crew "1" :mass "3.8tons" :height "3.8m" :length "9.2m" :range "840km" :speedair "605kph" :width "10.4m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "13mm" :back "13mm" :over "13mm" :side "13mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Lavochkin La-5" (unit :name "Lavochkin La-5" :reference "* Exhaust gas often entered in the cockpit due to poor insulation of the engine compartment. Consequently, pilots ignored orders and frequently flew with their canopies open." :classification "Lt. Aircraft" :crew "1" :mass "3.3tons" :height "2.5m" :length "8.7m" :range "765km" :speedair "648kph" :width "9.8m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))) "Yakovlev Yak-9" (unit :name "Yakovlev Yak-9" :reference "* The most numerous Soviet fighter of the war" :classification "Lt. Aircraft" :crew "1" :mass "3.2tons" :height "3m" :length "8.6m" :range "675km" :speedair "672kph" :width "9.7m" :unitpowermap (unitpowermap :Armor (unitpower :name "Armor" :front "10mm" :back "10mm" :over "10mm" :side "10mm")) :unitskillmap (unitskillmap :Military (unitskill :name "Military" :level "3"))))))))
nx/tactics/decks/damage
Description:
  • Tactics Damage Decks
Package Name:
  • nx/tactics/decks/damage
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
  • bleeding, bloodloss, fatigue, slow, stress, stun, damage-wild-black, damage-wild-red, damage-ac, damage-ad, damage-ah, damage-as, damage-kc, damage-kd, damage-kh, damage-ks, damage-qc, damage-qd, damage-qh, damage-qs, damage-jc, damage-jd, damage-jh, damage-js, damage-tc, damage-td, damage-th, damage-ts, damage-9c, damage-9d, damage-9h, damage-9s, damage-8c, damage-8d, damage-8h, damage-8s, damage-7c, damage-7d, damage-7h, damage-7s, damage-6c, damage-6d, damage-6h, damage-6s, damage-5c, damage-5d, damage-5h, damage-5s, damage-4c, damage-4d, damage-4h, damage-4s, damage-3c, damage-3d, damage-3h, damage-3s, damage-2c, damage-2d, damage-2h, damage-2s
Functions:
  • deck-bleeding, deck-bloodloss, deck-damage, deck-damageback, deck-disorder, deck-disorderback, deck-trauma, deck-slow, deck-traumaback
Source Code:
  • (package nx/tactics/decks/damage :libs (lib base :path nx/tactics/base) :doc "Tactics Damage Decks") (const bleeding : base/cardback (base/cardback :id "bleeding" :name "Bleeding" :image "images/card-bleeding.svg" :summary "* Turn End: Gain a [Fatigue] for each [Bleeding]. If [Body]:0, then gain a [Blood Loss] instead.")) (const bloodloss : base/card (base/card :id "bloodloss" :name "Bloodloss" :image "images/card-bloodloss.svg" :summary "* Day End: Discard one [Bloodloss]")) (const fatigue : base/cardback (base/cardback :id "fatigue" :name "Damage: Fatigue" :titles "Physical Damage/Fatigue/Weaken/Exertion" :image "images/card-fatigue.svg" :summary "* If you have [Body]:0 then you are Exhausted. Any additional [Fatigue] is flipped to [Damage]. * Exhausted: Cannot play odd [Attack] cards and your second action may only be [Recover].")) (const slow : base/cardback (base/cardback :id "slow" :name "Restraint: Slow" :titles "Constraint/Burden" :image "images/card-slow.svg" :summary "* If you have [Move]:0, you are Encumbered. Any additional [Slow] is flipped to [Restraint]. * Encumbered: Cannot play odd [Evade] cards and [Move] actions are halved (rounded up).")) (const stress : base/cardback (base/cardback :id "stress" :name "Trauma: Stress" :titles "Emotional Trauma/Stress/Duress/Horror" :image "images/card-stress.svg" :summary "* If you have [Will]:0, you are [Shaken]. Any additional [Will] is flipped to [Trauma]. * [Shaken]: Cannot play odd [Defend] cards and your second action may only be [Recover]" :reference "Because love's such an old-fashioned word And love dares you to care for The people on the edge of the night And love dares you to change our way of Caring about ourselves This is our last dance This is ourselves under pressure - Queen and David Bowie, Under Pressure")) (const stun : base/cardback (base/cardback :id "stun" :name "Disorder: Stun" :titles "Mental Damage/Strain/Distraction/Surprise/Shock" :image "images/card-stun.svg" :summary "* If you have [Mind]:0, you are [Confused]. Any additional [Stun] is flipped to [Disorder]. * [Confused]: Cannot play odd [Focus] cards and your second action may only be [Recover].")) (const damage-wild-black : base/damage (base/damage :name "Damage: Deck" :ranksuit base/ranksuit-jokerblack :image "images/card-hitlocation-jester-black.svg" :summary "Search the Deck for any card and play it. Then Shuffle Discards into Deck.")) (const damage-wild-red : base/damage (base/damage :name "Damage: Discard" :ranksuit base/ranksuit-jokerred :image "images/card-hitlocation-jester-red.svg" :summary "Reclaim a card and play it OR play the next card. Then Shuffle Discards into Deck.")) (const damage-ac : base/damage (base/damage :name "Bash: Head" :ranksuit base/ranksuit-ac :image "images/card-hitlocation-head.svg" :summary "Minor: Head Ringing. Stun:1 Moderate: Concussion. Stun:1 Push:1 Major: Skull Fracture. Unconscious. Stun:1 Fatigue:1 Push:1 Knockdown:1 Extreme: Skull Crushed. Dead.")) (const damage-ad : base/damage (base/damage :name "Pierce: Head" :ranksuit base/ranksuit-ad :image "images/card-hitlocation-head.svg" :summary "Minor: Head Grazed. Stun:1 Moderate: Pierced Throat. Can't speak. Stun: 1, Stress:1 Major: Blinded in one Eye. Partly Blind. Stun:2 Stress:1 Extreme: Brain Pierced. Dying. Disorder:2")) (const damage-ah : base/damage (base/damage :name "Hack: Head" :ranksuit base/ranksuit-ah :image "images/card-hitlocation-head.svg" :summary "Minor: Head Graze. Stun:1 Moderate: Head Slash. Slow:1 Bleeding:1 Major: Neck Fracture. Immobilized. Slow:3 Bleeding:1 Extreme: Spine Severed. Paralyzed. Stress:3 Bleeding:2")) (const damage-as : base/damage (base/damage :name "Slash: Head" :ranksuit base/ranksuit-as :image "images/card-hitlocation-head.svg" :summary "Minor: Head Cut. Bleeding:1 Moderate: Face Gash. Stress:1 Bleeding:1 Major: Throat Slashed. Bleeding:3 Stress:2 Extreme: Beheaded. Dead.")) (const damage-kc : base/damage (base/damage :name "Bash: Shoulders" :ranksuit base/ranksuit-kc :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Shoulder Bruise. Fatigue:1 Moderate: Bruised Ribs. Slow:1 Fatigue:1 Push:1 Major: Broken Ribs. Hobbled. Slow:2 Push:1 Extreme: Rib Cage Collapse. Dead. Push:1") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-kd : base/damage (base/damage :name "Pierce: Shoulders" :ranksuit base/ranksuit-kd :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Glance off Shoulder. Stun:1 Moderate: Pierced Shoulder. Stun:1 Bleeding:1 Major: Pierced Chest. Stun:2 Bleeding:2 Extreme: Pierced Throat. Bleeding:2 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-kh : base/damage (base/damage :name "Hack: Shoulders" :ranksuit base/ranksuit-kh :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Chest Graze. Stress:1 Moderate: Chest Slash. Stress:1 Bleeding:1 Major: Bleeding in Chest Cavity. Stress:2 Bleeding:2 Extreme: Shoulder Cleaved. Dying. Bleeding:3 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-ks : base/damage (base/damage :name "Slash: Shoulders" :ranksuit base/ranksuit-ks :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Shoulder Cut. Bleeding:1 Moderate: Shoulder Slash. Slow:1 Bleeding:1 Major: Throat Cut. Bleeding:2 Stress:2 Extreme: Throat Slashed. Bleeding:4 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-qc : base/damage (base/damage :name "Bash: Chest" :titles "Bash: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qc :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Bruise. Fatigue:1 Moderate: Wind Knocked Out. Slow:1 Fatigue:1 Push:1 Major: Heart Trauma. Slow:2 Stress:2 Push:1 Extreme: Heart Stopped. Dying. Push:1") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-qd : base/damage (base/damage :name "Pierce: Chest" :titles "Pierce: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qd :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Graze. Bleeding:1 Moderate: Chest Pierced. Stun:1 Bleeding:1 Major: Lung Punctured. Hobbled. Bleeding:2 Stun:2 Extreme: Heart Pierced. Dying. Bleeding:4 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-qh : base/damage (base/damage :name "Hack: Chest" :titles "Hack: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qh :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Cut. Bleeding:1 Moderate: Chest Slash. Bleeding:1 Push:1 Major: Collapsed Lung. Hobbled. Slow:2 Push:1 Extreme: Lungs Collapsed. Dying. Hobbled. Stress: 4") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-qs : base/damage (base/damage :name "Slash: Chest" :titles "Slash: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qs :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Cut. Bleeding:1 Moderate: Chest Slash. Slow:1 Bleeding:1 Major: Long Chest Slash. Slow:2 Bleeding:2 Extreme: Spine Severed. [Paralyzed]. Stress: 4") :doc "Hack: Upper Chest/Back/Shoulders/Ribs") (const damage-jc : base/damage (base/damage :name "Bash: Abdomen" :titles "Bash: Abdomen/Lower Back" :ranksuit base/ranksuit-jc :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Stomach Bruise. Push:1 Moderate: Solar Plexus Bruise. Slow:1 Fatigue:1 Major: Hip Fracture. Hobbled. Slow:3 Bleeding:1 Extreme: Crushed Hip. Immobilized. Bleeding:3 Stress:2")) (const damage-jd : base/damage (base/damage :name "Pierce: Abdomen" :titles "Pierce: Abdomen/Lower Back" :ranksuit base/ranksuit-jd :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Side Puncture. Bleeding:1 Moderate: Belly Puncture. Slow:1 Bleeding:1 Major: Liver Pierced. Bleeding:2 Slow:2 Extreme: Stomach Pierced. Hobbled. Bleeding:3 [Acid]:2")) (const damage-jh : base/damage (base/damage :name "Hack: Abdomen" :titles "Hack: Abdomen/Lower Back" :ranksuit base/ranksuit-jh :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Glance off Hip. Bleeding:1 Moderate: Stomach Cut. Bleeding:1 Stress: 1 Major: Kidney Damage. Slow:1 Bleeding:1 Fatigue:2 Extreme: Renal Failure: Dying. Fatigue:3 Stress:2")) (const damage-js : base/damage (base/damage :name "Slash: Abdomen" :titles "Slash: Abdomen/Lower Back" :ranksuit base/ranksuit-js :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Stomach Cut. Bleeding:1 Moderate: Stomach Slash. Slow:1 Bleeding:1 Major: Stomach Gash. Slow:1 Bleeding:3 Extreme: Disemboweled. Bleeding:4 Stress:2")) (const damage-tc : base/damage (base/damage :name "Bash: Vitals" :titles "Bash: Hips/Groin" :ranksuit base/ranksuit-tc :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Bruise. Stun:1 Moderate: Genital Slam. Slow:1 Stun:1 Stress:1 Major: Kidney Rupture. Slow:2 Bleeding:1 Fatigue:1 Extreme: Hip Fracture: Hobbled. Slow:2 Fatigue:2")) (const damage-td : base/damage (base/damage :name "Pierce: Vitals" :titles "Pierce: Hips/Groin" :ranksuit base/ranksuit-td :image "images/card-hitlocation-vitals.svg" :summary "Minor: Buttock Pierced. Bleeding:1 Moderate: Gut Pierced. Stun:1 Bleeding:1 Major: Partially Sterilized. Stress:2 Bleeding:2 Extreme: Intestines Pierced. Diseased:2 Slow:1 Bleeding:1")) (const damage-th : base/damage (base/damage :name "Hack: Vitals" :titles "Hack: Hips/Groin" :ranksuit base/ranksuit-th :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Graze. Bleeding:1 Moderate: Hip Gash. Stress:1 Bleeding:1 Major: Sterilized. Immobilized. Slow:3 Bleeding:1 Stress:2 Extreme: Wide Groin Gash. Bleeding:4 Stress:2")) (const damage-ts : base/damage (base/damage :name "Slash: Vitals" :titles "Slash: Hips/Groin" :ranksuit base/ranksuit-ts :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Graze. Bleeding:1 Moderate: Groin Slash. Slow:1 Bleeding:1 Major: Sterilized. Immobilized. Slow:3 Bleeding:1 Stress:2 Extreme: Groin opened up. Bleeding:4 Stress:2")) (const damage-9c : base/damage (base/damage :name "Bash: Left Arm" :titles "Bash: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9c :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Bruise. Push:1 Moderate: Arm Battered. Fatigue:1 Push:1 Major: Arm Fracture. Impaired. Stress:2 Fatigue:2 Extreme: Elbow Shattered. Impaired. Stress:3 Fatigue:2")) (const damage-9d : base/damage (base/damage :name "Pierce: Left Arm" :titles "Pierce: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9d :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Graze. Stun:1 Moderate: Arm Numb. Stun:1 Bleeding:1 Major: Elbow Pierced. Impaired. Stun:3 Bleeding:1 Extreme: Artery Severed. Bleeding: 4 Stun:2")) (const damage-9h : base/damage (base/damage :name "Hack: Left Arm" :titles "Hack: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9h :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Graze. Withdraw:1 Moderate: Arm Gash. Withdraw:1 Bleeding:1 Major: Deep Arm Gash. Impaired. Stress:2 Bleeding:2 Extreme: Elbow Severed. Impaired. Stun:2 Stress:2")) (const damage-9s : base/damage (base/damage :name "Slash: Left Arm" :titles "Slash: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9s :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Cut. Bleeding:1 Moderate: Arm Slash. Slow:1 Bleeding:1 Major: Elbow Slash. Impaired. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding: 4 Stress:2")) (const damage-8c : base/damage (base/damage :name "Bash: Right Arm" :titles "Bash: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8c :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Bruise. Push:1 Moderate: Arm Battered. Fatigue:1 Push:1 Major: Arm Fracture. Impaired. Stress:2 Fatigue:2 Extreme: Elbow Shattered. Impaired. Stress:3 Fatigue:2")) (const damage-8d : base/damage (base/damage :name "Pierce: Right Arm" :titles "Pierce: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8d :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Graze. Stun:1 Moderate: Arm Pierced. Stun:1 Bleeding:1 Major: Elbow Pierced. Impaired. Stun:3 Bleeding:1 Extreme: Artery Severed. Bleeding: 4 Stun:2")) (const damage-8h : base/damage (base/damage :name "Hack: Right Arm" :titles "Hack: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8h :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Graze. Withdraw:1 Moderate: Arm Gash. Withdraw:1 Bleeding:1 Major: Deep Arm Gash. Impaired. Stress:2 Bleeding:2 Extreme: Elbow Severed. Impaired. Stun:2 Stress:2")) (const damage-8s : base/damage (base/damage :name "Slash: Right Arm" :titles "Slash: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8s :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Cut. Bleeding:1 Moderate: Arm Slash. Slow:1 Bleeding:1 Major: Elbow Slash. Impaired. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding: 4 Stress:2")) (const damage-7c : base/damage (base/damage :name "Bash: Left Hand" :titles "Bash: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7c :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Bruise. Fatigue:1 Moderate: Hand Numb. Drop:1 Stress:1 Stun:1 Major: Hand Fracture. Impaired. Stun:2 Fatigue:1 Extreme: Hand Shattered. Impaired. Stun:2 Stress:2")) (const damage-7d : base/damage (base/damage :name "Pierce: Left Hand" :titles "Pierce: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7d :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Graze. Stun:1 Moderate: Forearm Pierced. Stun:1 Bleeding:1 Major: Wrist Pierced. Impaired. Stun:1 Bleeding:2 Extreme: Artery Cut. Impaired. Stun:2 Bleeding:2")) (const damage-7h : base/damage (base/damage :name "Hack: Left Hand" :titles "Hack: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7h :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Graze. Withdraw:1 Moderate: Forearm Gash. Drop:1 Stress:1 Bleeding:1 Major: Hand Slash. Impaired. Stress:2 Bleeding:2 Extreme: Hand Mangled. Impaired. Bleeding:2 Stress:2")) (const damage-7s : base/damage (base/damage :name "Slash: Left Hand" :titles "Slash: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7s :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Cut. Bleeding:1 Moderate: Forearm Slash. Drop:1 Slow:1 Bleeding:1 Extreme: Artery Severed. Impaired. Bleeding:3 Stress:1 Extreme: Hand Severed. Impaired. Bleeding:2 Stress:2")) (const damage-6c : base/damage (base/damage :name "Bash: Right Hand" :titles "Bash: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6c :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Bruise. Fatigue:1 Moderate: Hand Numb. Drop:1 Stress:1 Stun:1 Major: Hand Fracture. Impaired. Stun:2 Fatigue:1 Extreme: Hand Shattered. Impaired. Stun:2 Stress:2")) (const damage-6d : base/damage (base/damage :name "Pierce: Right Hand" :titles "Pierce: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6d :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Graze. Stun:1 Moderate: Forearm Pierced. Stun:1 Bleeding:1 Major: Wrist Pierced. Impaired. Stun:1 Bleeding:2 Extreme: Artery Cut. Impaired. Stun:2 Bleeding:2")) (const damage-6h : base/damage (base/damage :name "Hack: Right Hand" :titles "Hack: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6h :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Graze. Withdraw:1 Moderate: Forearm Gash. Drop:1 Stress:1 Bleeding:1 Major: Hand Slash. Impaired. Stress:2 Bleeding:2 Extreme: Hand Mangled. Impaired. Bleeding:2 Stress:2")) (const damage-6s : base/damage (base/damage :name "Slash: Right Hand" :titles "Slash: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6s :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Cut. Bleeding:1 Moderate: Forearm Slash. Drop:1 Slow:1 Bleeding:1 Extreme: Artery Severed. Impaired. Bleeding:3 Stress:1 Extreme: Hand Severed. Impaired. Bleeding:2 Stress:2")) (const damage-5c : base/damage (base/damage :name "Bash: Left Leg" :titles "Bash: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5c :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Bruise. Fatigue:1 Moderate: Knee Damage. Slow:1 Fatigue:1 Major: Knee Fracture. Hobbled. Slow:2 Fatigue: 1 Extreme: Thigh Fracture. Hobbled. Slow:3 Fatigue:1")) (const damage-5d : base/damage (base/damage :name "Pierce: Left Leg" :titles "Pierce: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5d :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Graze. Slow:1 Moderate: Thigh Pierced. Stress:1 Bleeding:1 Major: Knee Pierced. Hobbled. Slow:3 Bleeding:1 Extreme: Nerve Damage. Hobbled. Bleeding:2 Stress:2")) (const damage-5h : base/damage (base/damage :name "Hack: Left Leg" :titles "Hack: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5h :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Graze. Withdraw:1 Moderate: Thigh Slash. Withdraw:1 Bleeding:1 Major: Wide Thigh Gash. Slow:2 Bleeding:2 Extreme: Severed at Knee. Hobbled. Bleeding:2 Stress:2")) (const damage-5s : base/damage (base/damage :name "Slash: Left Leg" :titles "Slash: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5s :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Cut. Bleeding:1 Moderate: Thigh Slash. Scarred. Slow:1 Bleeding:1 Major: Hamstring Cut. Hobbled. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding:4 Stress:2")) (const damage-4c : base/damage (base/damage :name "Bash: Right Leg" :titles "Bash: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4c :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Bruise. Fatigue:1 Moderate: Knee Damage. Slow:1 Fatigue:1 Major: Knee Fracture. Hobbled. Slow:2 Fatigue: 1 Extreme: Thigh Fracture. Hobbled. Slow:3 Fatigue:1")) (const damage-4d : base/damage (base/damage :name "Pierce: Right Leg" :titles "Pierce: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4d :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Graze. Slow:1 Moderate: Thigh Pierced. Stress:1 Bleeding:1 Major: Knee Pierced. Hobbled. Slow:3 Bleeding:1 Extreme: Nerve Damage. Hobbled. Bleeding:2 Stress:2")) (const damage-4h : base/damage (base/damage :name "Hack: Right Leg" :titles "Hack: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4h :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Graze. Withdraw:1 Moderate: Thigh Cut. Withdraw:1 Bleeding:1 Major: Wide Thigh Gash. Slow:2 Bleeding:2 Extreme: Severed at Knee. Hobbled. Bleeding:2 Stress:2")) (const damage-4s : base/damage (base/damage :name "Slash: Right Leg" :titles "Slash: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4s :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Cut. Bleeding:1 Moderate: Thigh Slash. Scarred. Slow:1 Bleeding:1 Major: Hamstring Cut. Hobbled. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding:4 Stress:2")) (const damage-3c : base/damage (base/damage :name "Bash: Left Foot" :titles "Bash: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3c :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Shin Bruised. Slow:1 Moderate: Foot Smash. Slow:1 Stress:1 Major: Ankle Fracture. Hobbled. Slow:2 Extreme: Foot Shattered. Hobbled. Fatigue:2 Slow:2")) (const damage-3d : base/damage (base/damage :name "Pierce: Left Foot" :titles "Pierce: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3d :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Ankle Graze. Slow:1 Moderate: Foot Slash. Slow:1 Bleeding:1 Major: Foot Pierced. Slow:3 Bleeding:1 Extreme: Ankle Useless. Hobbled. Bleeding:1")) (const damage-3h : base/damage (base/damage :name "Hack: Left Foot" :titles "Hack: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3h :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Ankle Grazed. Withdraw:1 Moderate: Ankle Gash. Withdraw:1 Bleeding:1 Major: 2 Toes Lost. Stress:2 Bleeding:1 Extreme: Foot Mangled. Hobbled. Stress:2 Bleeding:2")) (const damage-3s : base/damage (base/damage :name "Slash: Left Foot" :titles "Slash: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3s :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Foot Cut. Bleeding:1 Moderate: Ankle Slash. Slow:1 Bleeding:1 Major: Cut Achilles Tendon. Hobbled. Slow:3 Bleeding:1 Extreme: Foot Severed. Hobbled. Bleeding:2")) (const damage-2c : base/damage (base/damage :name "Bash: Right Foot" :titles "Bash: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2c :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Shin Bruised. Slow:1 Moderate: Foot Smash. Slow:1 Stress:1 Major: Ankle Fracture. Hobbled. Slow:2 Extreme: Foot Shattered. Hobbled. Fatigue:2 Slow:2")) (const damage-2d : base/damage (base/damage :name "Pierce: Right Foot" :titles "Pierce: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2d :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Ankle Graze. Slow:1 Moderate: Foot Slash. Slow:1 Bleeding:1 Major: Foot Pierced. Slow:3 Bleeding:1 Extreme: Ankle Useless. Hobbled. Bleeding:1")) (const damage-2h : base/damage (base/damage :name "Hack: Right Foot" :titles "Hack: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2h :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Ankle Grazed. Withdraw:1 Moderate: Ankle Gash. Withdraw:1 Bleeding:1 Major: 2 Toes Lost. Stress:2 Bleeding:1 Extreme: Foot Mangled. Hobbled. Stress:2 Bleeding:2")) (const damage-2s : base/damage (base/damage :name "Slash: Right Foot" :titles "Slash: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2s :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Foot Cut. Bleeding:1 Moderate: Ankle Slash. Slow:1 Bleeding:1 Major: Cut Achilles Tendon. Hobbled. Slow:3 Bleeding:1 Extreme: Foot Severed. Hobbled. Bleeding:2")) (func deck-bleeding : base/deck (base/deck :name "Bleeding" :cardmap (base/cardmap-copy<-card-num bleeding 54)) :doc "Bleeding Deck") (func deck-bloodloss : base/deck (base/deck :name "Bloodloss" :cardmap (base/cardmap-copy<-card-num bloodloss 54)) :doc "Bloodloss Deck") (func deck-damage : base/deck (base/deck :name "Damage" :summary "* S-Hack Blood/Gore/Dismember * H-Slash Blood/Slow * C-Bash/Fatigue/Push * D-Pierce/Stab/Stun/Pin/Disable" :cardmap (base/cardmap<-cardlist (base/cardlist damage-wild-black damage-wild-red damage-ac damage-ad damage-ah damage-as damage-kc damage-kd damage-kh damage-ks damage-qc damage-qd damage-qh damage-qs damage-jc damage-jd damage-jh damage-js damage-tc damage-td damage-th damage-ts damage-9c damage-9d damage-9h damage-9s damage-8c damage-8d damage-8h damage-8s damage-7c damage-7d damage-7h damage-7s damage-6c damage-6d damage-6h damage-6s damage-5c damage-5d damage-5h damage-5s damage-4c damage-4d damage-4h damage-4s damage-3c damage-3d damage-3h damage-3s damage-2c damage-2d damage-2h damage-2s))) :doc "Damage Deck") (func deck-damageback : base/deck (base/deck :name "Damage Back" :cardmap (base/cardmap-copy<-card-num fatigue 54)) :doc "Damage Card Back Deck") (func deck-disorder : base/deck (base/deck :name "Disorder" :titles "Crazed, Insane, Nonsensical, Obsessed, Unhinged" :summary "* S-Delusion/Racism/Irrational/Lost in Fantasy/Lost in Nightmare/Lost in Hell * H-Compulsion/Obsession/Monomaniacal * C-Disfunction/Shock/Disable/Tremors/Spasms/Seizures/Stroke/Nerve Damage/Paralysis/Brain Damage * D-Distortion/Misperception/Misunderstand/Miscommunicate/Amnesia/Aphasia") :doc "Damage to the Mind") (func deck-disorderback : base/deck (base/deck :name "Disorder Back" :cardmap (base/cardmap-copy<-card-num stun 54)) :doc "Stun Card Back Deck") (func deck-trauma : base/deck (base/deck :name "Trauma" :titles "" :summary "* S-Fear/Cowed/Died of Fear * H-Despair/Apathy/Depression/Broken/Suicidal * C-Anger/Surly/Suicidal Rage * D-Doubt/Servitude/Coverted") :doc "Damage to the Will") (func deck-slow : base/deck (base/deck :name "Slow Back" :cardmap (base/cardmap-copy<-card-num slow 54)) :doc "Slow Card Back Deck") (func deck-traumaback : base/deck (base/deck :name "Trauma Back" :cardmap (base/cardmap-copy<-card-num stress 54)) :doc "Trauma Card Back Deck")
nx/tactics/decks/damage / bleeding
Description:
Constant Name:
  • bleeding
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const bleeding : base/cardback (base/cardback :id "bleeding" :name "Bleeding" :image "images/card-bleeding.svg" :summary "* Turn End: Gain a [Fatigue] for each [Bleeding]. If [Body]:0, then gain a [Blood Loss] instead."))
nx/tactics/decks/damage / bloodloss
Description:
Constant Name:
  • bloodloss
Type:
  • nx/tactics/base/card
Usage/Test Cases:
Source Code:
  • (const bloodloss : base/card (base/card :id "bloodloss" :name "Bloodloss" :image "images/card-bloodloss.svg" :summary "* Day End: Discard one [Bloodloss]"))
nx/tactics/decks/damage / fatigue
Description:
Constant Name:
  • fatigue
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const fatigue : base/cardback (base/cardback :id "fatigue" :name "Damage: Fatigue" :titles "Physical Damage/Fatigue/Weaken/Exertion" :image "images/card-fatigue.svg" :summary "* If you have [Body]:0 then you are Exhausted. Any additional [Fatigue] is flipped to [Damage]. * Exhausted: Cannot play odd [Attack] cards and your second action may only be [Recover]."))
nx/tactics/decks/damage / slow
Description:
Constant Name:
  • slow
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const slow : base/cardback (base/cardback :id "slow" :name "Restraint: Slow" :titles "Constraint/Burden" :image "images/card-slow.svg" :summary "* If you have [Move]:0, you are Encumbered. Any additional [Slow] is flipped to [Restraint]. * Encumbered: Cannot play odd [Evade] cards and [Move] actions are halved (rounded up)."))
nx/tactics/decks/damage / stress
Description:
Constant Name:
  • stress
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const stress : base/cardback (base/cardback :id "stress" :name "Trauma: Stress" :titles "Emotional Trauma/Stress/Duress/Horror" :image "images/card-stress.svg" :summary "* If you have [Will]:0, you are [Shaken]. Any additional [Will] is flipped to [Trauma]. * [Shaken]: Cannot play odd [Defend] cards and your second action may only be [Recover]" :reference "Because love's such an old-fashioned word And love dares you to care for The people on the edge of the night And love dares you to change our way of Caring about ourselves This is our last dance This is ourselves under pressure - Queen and David Bowie, Under Pressure"))
nx/tactics/decks/damage / stun
Description:
Constant Name:
  • stun
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const stun : base/cardback (base/cardback :id "stun" :name "Disorder: Stun" :titles "Mental Damage/Strain/Distraction/Surprise/Shock" :image "images/card-stun.svg" :summary "* If you have [Mind]:0, you are [Confused]. Any additional [Stun] is flipped to [Disorder]. * [Confused]: Cannot play odd [Focus] cards and your second action may only be [Recover]."))
nx/tactics/decks/damage / damage-wild-black
Description:
Constant Name:
  • damage-wild-black
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-wild-black : base/damage (base/damage :name "Damage: Deck" :ranksuit base/ranksuit-jokerblack :image "images/card-hitlocation-jester-black.svg" :summary "Search the Deck for any card and play it. Then Shuffle Discards into Deck."))
nx/tactics/decks/damage / damage-wild-red
Description:
Constant Name:
  • damage-wild-red
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-wild-red : base/damage (base/damage :name "Damage: Discard" :ranksuit base/ranksuit-jokerred :image "images/card-hitlocation-jester-red.svg" :summary "Reclaim a card and play it OR play the next card. Then Shuffle Discards into Deck."))
nx/tactics/decks/damage / damage-ac
Description:
Constant Name:
  • damage-ac
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-ac : base/damage (base/damage :name "Bash: Head" :ranksuit base/ranksuit-ac :image "images/card-hitlocation-head.svg" :summary "Minor: Head Ringing. Stun:1 Moderate: Concussion. Stun:1 Push:1 Major: Skull Fracture. Unconscious. Stun:1 Fatigue:1 Push:1 Knockdown:1 Extreme: Skull Crushed. Dead."))
nx/tactics/decks/damage / damage-ad
Description:
Constant Name:
  • damage-ad
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-ad : base/damage (base/damage :name "Pierce: Head" :ranksuit base/ranksuit-ad :image "images/card-hitlocation-head.svg" :summary "Minor: Head Grazed. Stun:1 Moderate: Pierced Throat. Can't speak. Stun: 1, Stress:1 Major: Blinded in one Eye. Partly Blind. Stun:2 Stress:1 Extreme: Brain Pierced. Dying. Disorder:2"))
nx/tactics/decks/damage / damage-ah
Description:
Constant Name:
  • damage-ah
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-ah : base/damage (base/damage :name "Hack: Head" :ranksuit base/ranksuit-ah :image "images/card-hitlocation-head.svg" :summary "Minor: Head Graze. Stun:1 Moderate: Head Slash. Slow:1 Bleeding:1 Major: Neck Fracture. Immobilized. Slow:3 Bleeding:1 Extreme: Spine Severed. Paralyzed. Stress:3 Bleeding:2"))
nx/tactics/decks/damage / damage-as
Description:
Constant Name:
  • damage-as
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-as : base/damage (base/damage :name "Slash: Head" :ranksuit base/ranksuit-as :image "images/card-hitlocation-head.svg" :summary "Minor: Head Cut. Bleeding:1 Moderate: Face Gash. Stress:1 Bleeding:1 Major: Throat Slashed. Bleeding:3 Stress:2 Extreme: Beheaded. Dead."))
nx/tactics/decks/damage / damage-kc
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-kc
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-kc : base/damage (base/damage :name "Bash: Shoulders" :ranksuit base/ranksuit-kc :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Shoulder Bruise. Fatigue:1 Moderate: Bruised Ribs. Slow:1 Fatigue:1 Push:1 Major: Broken Ribs. Hobbled. Slow:2 Push:1 Extreme: Rib Cage Collapse. Dead. Push:1") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-kd
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-kd
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-kd : base/damage (base/damage :name "Pierce: Shoulders" :ranksuit base/ranksuit-kd :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Glance off Shoulder. Stun:1 Moderate: Pierced Shoulder. Stun:1 Bleeding:1 Major: Pierced Chest. Stun:2 Bleeding:2 Extreme: Pierced Throat. Bleeding:2 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-kh
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-kh
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-kh : base/damage (base/damage :name "Hack: Shoulders" :ranksuit base/ranksuit-kh :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Chest Graze. Stress:1 Moderate: Chest Slash. Stress:1 Bleeding:1 Major: Bleeding in Chest Cavity. Stress:2 Bleeding:2 Extreme: Shoulder Cleaved. Dying. Bleeding:3 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-ks
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-ks
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-ks : base/damage (base/damage :name "Slash: Shoulders" :ranksuit base/ranksuit-ks :image "images/card-hitlocation-shoulders.svg" :summary "Minor: Shoulder Cut. Bleeding:1 Moderate: Shoulder Slash. Slow:1 Bleeding:1 Major: Throat Cut. Bleeding:2 Stress:2 Extreme: Throat Slashed. Bleeding:4 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-qc
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-qc
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-qc : base/damage (base/damage :name "Bash: Chest" :titles "Bash: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qc :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Bruise. Fatigue:1 Moderate: Wind Knocked Out. Slow:1 Fatigue:1 Push:1 Major: Heart Trauma. Slow:2 Stress:2 Push:1 Extreme: Heart Stopped. Dying. Push:1") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-qd
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-qd
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-qd : base/damage (base/damage :name "Pierce: Chest" :titles "Pierce: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qd :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Graze. Bleeding:1 Moderate: Chest Pierced. Stun:1 Bleeding:1 Major: Lung Punctured. Hobbled. Bleeding:2 Stun:2 Extreme: Heart Pierced. Dying. Bleeding:4 Stun:2") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-qh
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-qh
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-qh : base/damage (base/damage :name "Hack: Chest" :titles "Hack: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qh :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Cut. Bleeding:1 Moderate: Chest Slash. Bleeding:1 Push:1 Major: Collapsed Lung. Hobbled. Slow:2 Push:1 Extreme: Lungs Collapsed. Dying. Hobbled. Stress: 4") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-qs
Description:
  • Hack: Upper Chest/Back/Shoulders/Ribs
Constant Name:
  • damage-qs
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-qs : base/damage (base/damage :name "Slash: Chest" :titles "Slash: Middle Chest/Back/Lungs/Heart" :ranksuit base/ranksuit-qs :image "images/card-hitlocation-chest.svg" :summary "Minor: Chest Cut. Bleeding:1 Moderate: Chest Slash. Slow:1 Bleeding:1 Major: Long Chest Slash. Slow:2 Bleeding:2 Extreme: Spine Severed. [Paralyzed]. Stress: 4") :doc "Hack: Upper Chest/Back/Shoulders/Ribs")
nx/tactics/decks/damage / damage-jc
Description:
Constant Name:
  • damage-jc
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-jc : base/damage (base/damage :name "Bash: Abdomen" :titles "Bash: Abdomen/Lower Back" :ranksuit base/ranksuit-jc :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Stomach Bruise. Push:1 Moderate: Solar Plexus Bruise. Slow:1 Fatigue:1 Major: Hip Fracture. Hobbled. Slow:3 Bleeding:1 Extreme: Crushed Hip. Immobilized. Bleeding:3 Stress:2"))
nx/tactics/decks/damage / damage-jd
Description:
Constant Name:
  • damage-jd
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-jd : base/damage (base/damage :name "Pierce: Abdomen" :titles "Pierce: Abdomen/Lower Back" :ranksuit base/ranksuit-jd :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Side Puncture. Bleeding:1 Moderate: Belly Puncture. Slow:1 Bleeding:1 Major: Liver Pierced. Bleeding:2 Slow:2 Extreme: Stomach Pierced. Hobbled. Bleeding:3 [Acid]:2"))
nx/tactics/decks/damage / damage-jh
Description:
Constant Name:
  • damage-jh
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-jh : base/damage (base/damage :name "Hack: Abdomen" :titles "Hack: Abdomen/Lower Back" :ranksuit base/ranksuit-jh :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Glance off Hip. Bleeding:1 Moderate: Stomach Cut. Bleeding:1 Stress: 1 Major: Kidney Damage. Slow:1 Bleeding:1 Fatigue:2 Extreme: Renal Failure: Dying. Fatigue:3 Stress:2"))
nx/tactics/decks/damage / damage-js
Description:
Constant Name:
  • damage-js
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-js : base/damage (base/damage :name "Slash: Abdomen" :titles "Slash: Abdomen/Lower Back" :ranksuit base/ranksuit-js :image "images/card-hitlocation-abdomen.svg" :summary "Minor: Stomach Cut. Bleeding:1 Moderate: Stomach Slash. Slow:1 Bleeding:1 Major: Stomach Gash. Slow:1 Bleeding:3 Extreme: Disemboweled. Bleeding:4 Stress:2"))
nx/tactics/decks/damage / damage-tc
Description:
Constant Name:
  • damage-tc
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-tc : base/damage (base/damage :name "Bash: Vitals" :titles "Bash: Hips/Groin" :ranksuit base/ranksuit-tc :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Bruise. Stun:1 Moderate: Genital Slam. Slow:1 Stun:1 Stress:1 Major: Kidney Rupture. Slow:2 Bleeding:1 Fatigue:1 Extreme: Hip Fracture: Hobbled. Slow:2 Fatigue:2"))
nx/tactics/decks/damage / damage-td
Description:
Constant Name:
  • damage-td
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-td : base/damage (base/damage :name "Pierce: Vitals" :titles "Pierce: Hips/Groin" :ranksuit base/ranksuit-td :image "images/card-hitlocation-vitals.svg" :summary "Minor: Buttock Pierced. Bleeding:1 Moderate: Gut Pierced. Stun:1 Bleeding:1 Major: Partially Sterilized. Stress:2 Bleeding:2 Extreme: Intestines Pierced. Diseased:2 Slow:1 Bleeding:1"))
nx/tactics/decks/damage / damage-th
Description:
Constant Name:
  • damage-th
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-th : base/damage (base/damage :name "Hack: Vitals" :titles "Hack: Hips/Groin" :ranksuit base/ranksuit-th :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Graze. Bleeding:1 Moderate: Hip Gash. Stress:1 Bleeding:1 Major: Sterilized. Immobilized. Slow:3 Bleeding:1 Stress:2 Extreme: Wide Groin Gash. Bleeding:4 Stress:2"))
nx/tactics/decks/damage / damage-ts
Description:
Constant Name:
  • damage-ts
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-ts : base/damage (base/damage :name "Slash: Vitals" :titles "Slash: Hips/Groin" :ranksuit base/ranksuit-ts :image "images/card-hitlocation-vitals.svg" :summary "Minor: Hip Graze. Bleeding:1 Moderate: Groin Slash. Slow:1 Bleeding:1 Major: Sterilized. Immobilized. Slow:3 Bleeding:1 Stress:2 Extreme: Groin opened up. Bleeding:4 Stress:2"))
nx/tactics/decks/damage / damage-9c
Description:
Constant Name:
  • damage-9c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-9c : base/damage (base/damage :name "Bash: Left Arm" :titles "Bash: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9c :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Bruise. Push:1 Moderate: Arm Battered. Fatigue:1 Push:1 Major: Arm Fracture. Impaired. Stress:2 Fatigue:2 Extreme: Elbow Shattered. Impaired. Stress:3 Fatigue:2"))
nx/tactics/decks/damage / damage-9d
Description:
Constant Name:
  • damage-9d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-9d : base/damage (base/damage :name "Pierce: Left Arm" :titles "Pierce: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9d :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Graze. Stun:1 Moderate: Arm Numb. Stun:1 Bleeding:1 Major: Elbow Pierced. Impaired. Stun:3 Bleeding:1 Extreme: Artery Severed. Bleeding: 4 Stun:2"))
nx/tactics/decks/damage / damage-9h
Description:
Constant Name:
  • damage-9h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-9h : base/damage (base/damage :name "Hack: Left Arm" :titles "Hack: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9h :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Graze. Withdraw:1 Moderate: Arm Gash. Withdraw:1 Bleeding:1 Major: Deep Arm Gash. Impaired. Stress:2 Bleeding:2 Extreme: Elbow Severed. Impaired. Stun:2 Stress:2"))
nx/tactics/decks/damage / damage-9s
Description:
Constant Name:
  • damage-9s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-9s : base/damage (base/damage :name "Slash: Left Arm" :titles "Slash: Left Upper Arm/Elbow" :ranksuit base/ranksuit-9s :image "images/card-hitlocation-arm-left.svg" :summary "Minor: Arm Cut. Bleeding:1 Moderate: Arm Slash. Slow:1 Bleeding:1 Major: Elbow Slash. Impaired. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding: 4 Stress:2"))
nx/tactics/decks/damage / damage-8c
Description:
Constant Name:
  • damage-8c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-8c : base/damage (base/damage :name "Bash: Right Arm" :titles "Bash: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8c :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Bruise. Push:1 Moderate: Arm Battered. Fatigue:1 Push:1 Major: Arm Fracture. Impaired. Stress:2 Fatigue:2 Extreme: Elbow Shattered. Impaired. Stress:3 Fatigue:2"))
nx/tactics/decks/damage / damage-8d
Description:
Constant Name:
  • damage-8d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-8d : base/damage (base/damage :name "Pierce: Right Arm" :titles "Pierce: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8d :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Graze. Stun:1 Moderate: Arm Pierced. Stun:1 Bleeding:1 Major: Elbow Pierced. Impaired. Stun:3 Bleeding:1 Extreme: Artery Severed. Bleeding: 4 Stun:2"))
nx/tactics/decks/damage / damage-8h
Description:
Constant Name:
  • damage-8h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-8h : base/damage (base/damage :name "Hack: Right Arm" :titles "Hack: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8h :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Graze. Withdraw:1 Moderate: Arm Gash. Withdraw:1 Bleeding:1 Major: Deep Arm Gash. Impaired. Stress:2 Bleeding:2 Extreme: Elbow Severed. Impaired. Stun:2 Stress:2"))
nx/tactics/decks/damage / damage-8s
Description:
Constant Name:
  • damage-8s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-8s : base/damage (base/damage :name "Slash: Right Arm" :titles "Slash: Right Upper Arm/Elbow" :ranksuit base/ranksuit-8s :image "images/card-hitlocation-arm-right.svg" :summary "Minor: Arm Cut. Bleeding:1 Moderate: Arm Slash. Slow:1 Bleeding:1 Major: Elbow Slash. Impaired. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding: 4 Stress:2"))
nx/tactics/decks/damage / damage-7c
Description:
Constant Name:
  • damage-7c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-7c : base/damage (base/damage :name "Bash: Left Hand" :titles "Bash: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7c :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Bruise. Fatigue:1 Moderate: Hand Numb. Drop:1 Stress:1 Stun:1 Major: Hand Fracture. Impaired. Stun:2 Fatigue:1 Extreme: Hand Shattered. Impaired. Stun:2 Stress:2"))
nx/tactics/decks/damage / damage-7d
Description:
Constant Name:
  • damage-7d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-7d : base/damage (base/damage :name "Pierce: Left Hand" :titles "Pierce: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7d :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Graze. Stun:1 Moderate: Forearm Pierced. Stun:1 Bleeding:1 Major: Wrist Pierced. Impaired. Stun:1 Bleeding:2 Extreme: Artery Cut. Impaired. Stun:2 Bleeding:2"))
nx/tactics/decks/damage / damage-7h
Description:
Constant Name:
  • damage-7h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-7h : base/damage (base/damage :name "Hack: Left Hand" :titles "Hack: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7h :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Graze. Withdraw:1 Moderate: Forearm Gash. Drop:1 Stress:1 Bleeding:1 Major: Hand Slash. Impaired. Stress:2 Bleeding:2 Extreme: Hand Mangled. Impaired. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-7s
Description:
Constant Name:
  • damage-7s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-7s : base/damage (base/damage :name "Slash: Left Hand" :titles "Slash: Left Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-7s :image "images/card-hitlocation-hand-left.svg" :summary "Minor: Forearm Cut. Bleeding:1 Moderate: Forearm Slash. Drop:1 Slow:1 Bleeding:1 Extreme: Artery Severed. Impaired. Bleeding:3 Stress:1 Extreme: Hand Severed. Impaired. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-6c
Description:
Constant Name:
  • damage-6c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-6c : base/damage (base/damage :name "Bash: Right Hand" :titles "Bash: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6c :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Bruise. Fatigue:1 Moderate: Hand Numb. Drop:1 Stress:1 Stun:1 Major: Hand Fracture. Impaired. Stun:2 Fatigue:1 Extreme: Hand Shattered. Impaired. Stun:2 Stress:2"))
nx/tactics/decks/damage / damage-6d
Description:
Constant Name:
  • damage-6d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-6d : base/damage (base/damage :name "Pierce: Right Hand" :titles "Pierce: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6d :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Graze. Stun:1 Moderate: Forearm Pierced. Stun:1 Bleeding:1 Major: Wrist Pierced. Impaired. Stun:1 Bleeding:2 Extreme: Artery Cut. Impaired. Stun:2 Bleeding:2"))
nx/tactics/decks/damage / damage-6h
Description:
Constant Name:
  • damage-6h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-6h : base/damage (base/damage :name "Hack: Right Hand" :titles "Hack: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6h :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Graze. Withdraw:1 Moderate: Forearm Gash. Drop:1 Stress:1 Bleeding:1 Major: Hand Slash. Impaired. Stress:2 Bleeding:2 Extreme: Hand Mangled. Impaired. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-6s
Description:
Constant Name:
  • damage-6s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-6s : base/damage (base/damage :name "Slash: Right Hand" :titles "Slash: Right Lower Arm/Wrist/Hand" :ranksuit base/ranksuit-6s :image "images/card-hitlocation-hand-right.svg" :summary "Minor: Forearm Cut. Bleeding:1 Moderate: Forearm Slash. Drop:1 Slow:1 Bleeding:1 Extreme: Artery Severed. Impaired. Bleeding:3 Stress:1 Extreme: Hand Severed. Impaired. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-5c
Description:
Constant Name:
  • damage-5c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-5c : base/damage (base/damage :name "Bash: Left Leg" :titles "Bash: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5c :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Bruise. Fatigue:1 Moderate: Knee Damage. Slow:1 Fatigue:1 Major: Knee Fracture. Hobbled. Slow:2 Fatigue: 1 Extreme: Thigh Fracture. Hobbled. Slow:3 Fatigue:1"))
nx/tactics/decks/damage / damage-5d
Description:
Constant Name:
  • damage-5d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-5d : base/damage (base/damage :name "Pierce: Left Leg" :titles "Pierce: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5d :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Graze. Slow:1 Moderate: Thigh Pierced. Stress:1 Bleeding:1 Major: Knee Pierced. Hobbled. Slow:3 Bleeding:1 Extreme: Nerve Damage. Hobbled. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-5h
Description:
Constant Name:
  • damage-5h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-5h : base/damage (base/damage :name "Hack: Left Leg" :titles "Hack: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5h :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Graze. Withdraw:1 Moderate: Thigh Slash. Withdraw:1 Bleeding:1 Major: Wide Thigh Gash. Slow:2 Bleeding:2 Extreme: Severed at Knee. Hobbled. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-5s
Description:
Constant Name:
  • damage-5s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-5s : base/damage (base/damage :name "Slash: Left Leg" :titles "Slash: Left Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-5s :image "images/card-hitlocation-leg-left.svg" :summary "Minor: Thigh Cut. Bleeding:1 Moderate: Thigh Slash. Scarred. Slow:1 Bleeding:1 Major: Hamstring Cut. Hobbled. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding:4 Stress:2"))
nx/tactics/decks/damage / damage-4c
Description:
Constant Name:
  • damage-4c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-4c : base/damage (base/damage :name "Bash: Right Leg" :titles "Bash: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4c :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Bruise. Fatigue:1 Moderate: Knee Damage. Slow:1 Fatigue:1 Major: Knee Fracture. Hobbled. Slow:2 Fatigue: 1 Extreme: Thigh Fracture. Hobbled. Slow:3 Fatigue:1"))
nx/tactics/decks/damage / damage-4d
Description:
Constant Name:
  • damage-4d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-4d : base/damage (base/damage :name "Pierce: Right Leg" :titles "Pierce: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4d :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Graze. Slow:1 Moderate: Thigh Pierced. Stress:1 Bleeding:1 Major: Knee Pierced. Hobbled. Slow:3 Bleeding:1 Extreme: Nerve Damage. Hobbled. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-4h
Description:
Constant Name:
  • damage-4h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-4h : base/damage (base/damage :name "Hack: Right Leg" :titles "Hack: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4h :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Graze. Withdraw:1 Moderate: Thigh Cut. Withdraw:1 Bleeding:1 Major: Wide Thigh Gash. Slow:2 Bleeding:2 Extreme: Severed at Knee. Hobbled. Bleeding:2 Stress:2"))
nx/tactics/decks/damage / damage-4s
Description:
Constant Name:
  • damage-4s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-4s : base/damage (base/damage :name "Slash: Right Leg" :titles "Slash: Right Upper Leg/Thigh/Knee" :ranksuit base/ranksuit-4s :image "images/card-hitlocation-leg-right.svg" :summary "Minor: Thigh Cut. Bleeding:1 Moderate: Thigh Slash. Scarred. Slow:1 Bleeding:1 Major: Hamstring Cut. Hobbled. Slow:2 Bleeding:2 Extreme: Artery Severed. Bleeding:4 Stress:2"))
nx/tactics/decks/damage / damage-3c
Description:
Constant Name:
  • damage-3c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-3c : base/damage (base/damage :name "Bash: Left Foot" :titles "Bash: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3c :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Shin Bruised. Slow:1 Moderate: Foot Smash. Slow:1 Stress:1 Major: Ankle Fracture. Hobbled. Slow:2 Extreme: Foot Shattered. Hobbled. Fatigue:2 Slow:2"))
nx/tactics/decks/damage / damage-3d
Description:
Constant Name:
  • damage-3d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-3d : base/damage (base/damage :name "Pierce: Left Foot" :titles "Pierce: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3d :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Ankle Graze. Slow:1 Moderate: Foot Slash. Slow:1 Bleeding:1 Major: Foot Pierced. Slow:3 Bleeding:1 Extreme: Ankle Useless. Hobbled. Bleeding:1"))
nx/tactics/decks/damage / damage-3h
Description:
Constant Name:
  • damage-3h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-3h : base/damage (base/damage :name "Hack: Left Foot" :titles "Hack: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3h :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Ankle Grazed. Withdraw:1 Moderate: Ankle Gash. Withdraw:1 Bleeding:1 Major: 2 Toes Lost. Stress:2 Bleeding:1 Extreme: Foot Mangled. Hobbled. Stress:2 Bleeding:2"))
nx/tactics/decks/damage / damage-3s
Description:
Constant Name:
  • damage-3s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-3s : base/damage (base/damage :name "Slash: Left Foot" :titles "Slash: Left Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-3s :image "images/card-hitlocation-foot-left.svg" :summary "Minor: Foot Cut. Bleeding:1 Moderate: Ankle Slash. Slow:1 Bleeding:1 Major: Cut Achilles Tendon. Hobbled. Slow:3 Bleeding:1 Extreme: Foot Severed. Hobbled. Bleeding:2"))
nx/tactics/decks/damage / damage-2c
Description:
Constant Name:
  • damage-2c
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-2c : base/damage (base/damage :name "Bash: Right Foot" :titles "Bash: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2c :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Shin Bruised. Slow:1 Moderate: Foot Smash. Slow:1 Stress:1 Major: Ankle Fracture. Hobbled. Slow:2 Extreme: Foot Shattered. Hobbled. Fatigue:2 Slow:2"))
nx/tactics/decks/damage / damage-2d
Description:
Constant Name:
  • damage-2d
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-2d : base/damage (base/damage :name "Pierce: Right Foot" :titles "Pierce: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2d :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Ankle Graze. Slow:1 Moderate: Foot Slash. Slow:1 Bleeding:1 Major: Foot Pierced. Slow:3 Bleeding:1 Extreme: Ankle Useless. Hobbled. Bleeding:1"))
nx/tactics/decks/damage / damage-2h
Description:
Constant Name:
  • damage-2h
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-2h : base/damage (base/damage :name "Hack: Right Foot" :titles "Hack: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2h :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Ankle Grazed. Withdraw:1 Moderate: Ankle Gash. Withdraw:1 Bleeding:1 Major: 2 Toes Lost. Stress:2 Bleeding:1 Extreme: Foot Mangled. Hobbled. Stress:2 Bleeding:2"))
nx/tactics/decks/damage / damage-2s
Description:
Constant Name:
  • damage-2s
Type:
  • nx/tactics/base/damage
Usage/Test Cases:
Source Code:
  • (const damage-2s : base/damage (base/damage :name "Slash: Right Foot" :titles "Slash: Right Lower Leg/Shin/Ankle/Foot" :ranksuit base/ranksuit-2s :image "images/card-hitlocation-foot-right.svg" :summary "Minor: Foot Cut. Bleeding:1 Moderate: Ankle Slash. Slow:1 Bleeding:1 Major: Cut Achilles Tendon. Hobbled. Slow:3 Bleeding:1 Extreme: Foot Severed. Hobbled. Bleeding:2"))
nx/tactics/decks/damage / deck-bleeding
Description:
  • Bleeding Deck
Function Name:
  • deck-bleeding
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-bleeding : base/deck (base/deck :name "Bleeding" :cardmap (base/cardmap-copy<-card-num bleeding 54)) :doc "Bleeding Deck")
nx/tactics/decks/damage / deck-bloodloss
Description:
  • Bloodloss Deck
Function Name:
  • deck-bloodloss
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-bloodloss : base/deck (base/deck :name "Bloodloss" :cardmap (base/cardmap-copy<-card-num bloodloss 54)) :doc "Bloodloss Deck")
nx/tactics/decks/damage / deck-damage
Description:
  • Damage Deck
Function Name:
  • deck-damage
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-damage : base/deck (base/deck :name "Damage" :summary "* S-Hack Blood/Gore/Dismember * H-Slash Blood/Slow * C-Bash/Fatigue/Push * D-Pierce/Stab/Stun/Pin/Disable" :cardmap (base/cardmap<-cardlist (base/cardlist damage-wild-black damage-wild-red damage-ac damage-ad damage-ah damage-as damage-kc damage-kd damage-kh damage-ks damage-qc damage-qd damage-qh damage-qs damage-jc damage-jd damage-jh damage-js damage-tc damage-td damage-th damage-ts damage-9c damage-9d damage-9h damage-9s damage-8c damage-8d damage-8h damage-8s damage-7c damage-7d damage-7h damage-7s damage-6c damage-6d damage-6h damage-6s damage-5c damage-5d damage-5h damage-5s damage-4c damage-4d damage-4h damage-4s damage-3c damage-3d damage-3h damage-3s damage-2c damage-2d damage-2h damage-2s))) :doc "Damage Deck")
nx/tactics/decks/damage / deck-damageback
Description:
  • Damage Card Back Deck
Function Name:
  • deck-damageback
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-damageback : base/deck (base/deck :name "Damage Back" :cardmap (base/cardmap-copy<-card-num fatigue 54)) :doc "Damage Card Back Deck")
nx/tactics/decks/damage / deck-disorder
Description:
  • Damage to the Mind
Function Name:
  • deck-disorder
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-disorder : base/deck (base/deck :name "Disorder" :titles "Crazed, Insane, Nonsensical, Obsessed, Unhinged" :summary "* S-Delusion/Racism/Irrational/Lost in Fantasy/Lost in Nightmare/Lost in Hell * H-Compulsion/Obsession/Monomaniacal * C-Disfunction/Shock/Disable/Tremors/Spasms/Seizures/Stroke/Nerve Damage/Paralysis/Brain Damage * D-Distortion/Misperception/Misunderstand/Miscommunicate/Amnesia/Aphasia") :doc "Damage to the Mind")
nx/tactics/decks/damage / deck-disorderback
Description:
  • Stun Card Back Deck
Function Name:
  • deck-disorderback
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-disorderback : base/deck (base/deck :name "Disorder Back" :cardmap (base/cardmap-copy<-card-num stun 54)) :doc "Stun Card Back Deck")
nx/tactics/decks/damage / deck-trauma
Description:
  • Damage to the Will
Function Name:
  • deck-trauma
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-trauma : base/deck (base/deck :name "Trauma" :titles "" :summary "* S-Fear/Cowed/Died of Fear * H-Despair/Apathy/Depression/Broken/Suicidal * C-Anger/Surly/Suicidal Rage * D-Doubt/Servitude/Coverted") :doc "Damage to the Will")
nx/tactics/decks/damage / deck-slow
Description:
  • Slow Card Back Deck
Function Name:
  • deck-slow
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-slow : base/deck (base/deck :name "Slow Back" :cardmap (base/cardmap-copy<-card-num slow 54)) :doc "Slow Card Back Deck")
nx/tactics/decks/damage / deck-traumaback
Description:
  • Trauma Card Back Deck
Function Name:
  • deck-traumaback
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-traumaback : base/deck (base/deck :name "Trauma Back" :cardmap (base/cardmap-copy<-card-num stress 54)) :doc "Trauma Card Back Deck")
nx/tactics/decks/fate
Description:
  • Tactics Fate Decks
Package Name:
  • nx/tactics/decks/fate
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
  • card-fate-blue, card-fate-green, card-fate-red, card-fate-yellow, fate-wildblack, fate-wildred, fate-ac, fate-ad, fate-ah, fate-as, fate-kc, fate-kd, fate-kh, fate-ks, fate-qc, fate-qd, fate-qh, fate-qs, fate-jc, fate-jd, fate-jh, fate-js, fate-tc, fate-td, fate-th, fate-ts, fate-9c, fate-9d, fate-9h, fate-9s, fate-8c, fate-8d, fate-8h, fate-8s, fate-7c, fate-7d, fate-7h, fate-7s, fate-6c, fate-6d, fate-6h, fate-6s, fate-5c, fate-5d, fate-5h, fate-5s, fate-4c, fate-4d, fate-4h, fate-4s, fate-3c, fate-3d, fate-3h, fate-3s, fate-2c, fate-2d, fate-2h, fate-2s
Functions:
  • deck-fate, deck-fate-blue, deck-fate-green, deck-fate-red, deck-fate-yellow
Source Code:
  • (package nx/tactics/decks/fate :libs (lib base :path nx/tactics/base) :doc "Tactics Fate Decks") (const card-fate-blue : base/cardback (base/cardback :id "card-fate-blue" :name "Fate" :image "images/card-fate-blue.svg")) (const card-fate-green : base/cardback (base/cardback :id "card-fate-green" :name "Fate" :image "images/card-fate-green.svg")) (const card-fate-red : base/cardback (base/cardback :id "card-fate-red" :name "Fate" :image "images/card-fate-red.svg")) (const card-fate-yellow : base/cardback (base/cardback :id "card-fate-yellow" :name "Fate" :image "images/card-fate-yellow.svg")) (const fate-wildblack : base/fate (base/fate :name "Fool" :ranksuit base/ranksuit-jokerblack :image "images/card-fate-joker.svg" :summary "Wild (Gold Burst): * Win : Attack, Focus * Loss: Defend, Evade, Counter * Tie : Wild * Hits: 0. Search or Reclaim 1. * Shuffle: Discards into Deck. - or - Combo Breaker (Blue Burst): * When a Combo is performed on you, discard to cancel the Combo.")) (const fate-wildred : base/fate (base/fate :name "World" :ranksuit base/ranksuit-jokerred :image "images/card-fate-joker.svg" :summary "Wild (Gold Burst): * Win : Attack, Focus * Loss: Defend, Evade, Counter * Tie : Wild * Hits: 0. Search or Reclaim 1. * Shuffle: Discards into Deck. - or - Combo Breaker (Blue Burst): * When a Combo is performed on you, discard to cancel the Combo.")) (const fate-ac : base/fate (base/fate :name "Devil" :ranksuit base/ranksuit-ac :image "images/card-fate-attack-counter.svg" :summary "Attack (Super) * Win : Attack 2-K, Focus * Loss: Defend, Evade, Counter, Wild * Tie : Attack A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-ad : base/fate (base/fate :name "Lust" :ranksuit base/ranksuit-ad :image "images/card-fate-focus-counter.svg" :summary "Focus (Super) * Win : Focus 2-K, Defend, Evade, Counter * Loss: Attack, Wild * Tie : Focus A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-ah : base/fate (base/fate :name "Lovers" :ranksuit base/ranksuit-ah :image "images/card-fate-focus-counter.svg" :summary "Focus (Super) * Win : Focus 2-K, Defend, Evade, Counter * Loss: Attack, Wild * Tie : Focus A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-as : base/fate (base/fate :name "Death" :ranksuit base/ranksuit-as :image "images/card-fate-attack-counter.svg" :summary "Attack (Super) * Win : Attack 2-K, Focus * Loss: Defend, Evade, Counter, Wild * Tie : Attack A * Hits: 0 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-kc : base/fate (base/fate :name "Emperor" :ranksuit base/ranksuit-kc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10, Focus * Loss: Attack JQA, Defend, Evade, Counter, Wild * Tie : Attack K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-kd : base/fate (base/fate :name "Judgement" :ranksuit base/ranksuit-kd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10, Defend, Evade, Counter * Loss: Attack, Focus JQA, Wild * Tie : Focus K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-kh : base/fate (base/fate :name "Hierophant" :ranksuit base/ranksuit-kh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10, Defend, Evade, Counter * Loss: Attack, Focus JQA, Wild * Tie : Focus K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-ks : base/fate (base/fate :name "Sun" :ranksuit base/ranksuit-ks :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10, Focus * Loss: Attack JQA, Defend, Evade, Counter, Wild * Tie : Attack K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-qc : base/fate (base/fate :name "Empress" :ranksuit base/ranksuit-qc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 K, Focus * Loss: Attack JA, Defend, Evade, Counter, Wild * Tie : Attack Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-qd : base/fate (base/fate :name "Justice" :ranksuit base/ranksuit-qd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 K, Defend, Evade, Counter * Loss: Attack, Focus JA, Wild * Tie : Focus Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-qh : base/fate (base/fate :name "Priestess" :summary "" :ranksuit base/ranksuit-qh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 K, Defend, Evade, Counter * Loss: Attack, Focus JA, Wild * Tie : Focus Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-qs : base/fate (base/fate :name "Moon" :ranksuit base/ranksuit-qs :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 K, Focus * Loss: Attack JA, Defend, Evade, Counter, Wild * Tie : Attack Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-jc : base/fate (base/fate :name "Magus" :titles "Knight of Rods" :ranksuit base/ranksuit-jc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 QK, Focus * Loss: Attack A, Defend, Evade, Counter, Wild * Tie : Attack J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-jd : base/fate (base/fate :name "Hanged Man" :titles "Prince of Coins" :ranksuit base/ranksuit-jd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 QK, Defend, Evade, Counter * Loss: Attack, Focus A, Wild * Tie : Focus J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-jh : base/fate (base/fate :name "Hermit" :titles "Princess of Cups" :ranksuit base/ranksuit-jh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 QK, Defend, Evade, Counter * Loss: Attack, Focus A, Wild * Tie : Focus J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-js : base/fate (base/fate :name "Star" :titles "Lady of Swords" :ranksuit base/ranksuit-js :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 QK, Focus * Loss: Attack A, Defend, Evade, Counter, Wild * Tie : Attack J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus")) (const fate-tc : base/fate (base/fate :name "Tower" :titles "Ten of Rods" :ranksuit base/ranksuit-tc :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Focus * Lose: Attack 2-9 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 10 * Hits: 1, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-td : base/fate (base/fate :name "Wheel of Fortune" :titles "Ten of Coins" :ranksuit base/ranksuit-td :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 10 * Hits: 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-th : base/fate (base/fate :name "Art" :titles "Ten of Cups" :ranksuit base/ranksuit-th :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 10 * Hits: 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-ts : base/fate (base/fate :name "Chariot" :titles "Ten of Swords" :ranksuit base/ranksuit-ts :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Focus * Lose: Attack 2-9 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 10 * Hits: 1, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-9c : base/fate (base/fate :name "Nine of Wands" :ranksuit base/ranksuit-9c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 10, Focus * Lose: Attack 2-8 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 9 * Hits: 9, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-9d : base/fate (base/fate :name "Nine of Coins" :ranksuit base/ranksuit-9d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 10, Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 9 * Hits: 9 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-9h : base/fate (base/fate :name "Nine of Cups" :ranksuit base/ranksuit-9h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 10, Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 9 * Hits: 9 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-9s : base/fate (base/fate :name "Nine of Swords" :ranksuit base/ranksuit-9s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 10, Focus * Lose: Attack 2-8 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 9 * Hits: 9, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-8c : base/fate (base/fate :name "Eight of Wands" :ranksuit base/ranksuit-8c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 9-10, Focus * Lose: Attack 2-7 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 8 * Hits: 8, Draw 1 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-8d : base/fate (base/fate :name "Eight of Coins" :ranksuit base/ranksuit-8d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 9-10, Defend, Evade, Counter * Lose: Attack, Focus 2-7 JQKA, Wild * Tie : Focus 8 * Hits: 8 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-8h : base/fate (base/fate :name "Eight of Cups" :ranksuit base/ranksuit-8h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 9-10, Defend, Evade, Counter * Lose: Attack, Focus 2-7 JQKA, Wild * Tie : Focus 8 * Hits: 8 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-8s : base/fate (base/fate :name "Eight of Swords" :ranksuit base/ranksuit-8s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 9-10, Focus * Lose: Attack 2-7 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 8 * Hits: 8, Draw 1 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-7c : base/fate (base/fate :name "Seven of Wands" :ranksuit base/ranksuit-7c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 8-10, Focus * Lose: Attack 2-6 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 7 * Hits: 7, Draw 1 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-7d : base/fate (base/fate :name "Seven of Coins" :ranksuit base/ranksuit-7d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 8-10, Defend, Evade, Counter * Lose: Attack, Focus 2-6 JQKA, Wild * Tie : Focus 7 * Hits: 7 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-7h : base/fate (base/fate :name "Seven of Cups" :ranksuit base/ranksuit-7h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 8-10, Defend, Evade, Counter * Lose: Attack, Focus 2-6 JQKA, Wild * Tie : Focus 7 * Hits: 7 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-7s : base/fate (base/fate :name "Seven of Swords" :ranksuit base/ranksuit-7s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 8-10, Focus * Lose: Attack 2-6 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 7 * Hits: 7, Draw 1 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-6c : base/fate (base/fate :name "Six of Wands" :ranksuit base/ranksuit-6c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 7-10, Focus * Lose: Attack 2-5 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 6 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-6d : base/fate (base/fate :name "Six of Coins" :ranksuit base/ranksuit-6d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 7-10, Defend, Evade, Counter * Lose: Attack, Focus 2-5 JQKA, Wild * Tie : Focus 6 * Hits: 6 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-6h : base/fate (base/fate :name "Six of Cups" :ranksuit base/ranksuit-6h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 7-10, Defend, Evade, Counter * Lose: Attack, Focus 2-5 JQKA, Wild * Tie : Focus 6 * Hits: 6 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-6s : base/fate (base/fate :name "Six of Swords" :ranksuit base/ranksuit-6s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 7-10, Focus * Lose: Attack 2-5 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 6 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-5c : base/fate (base/fate :name "Five of Wands" :ranksuit base/ranksuit-5c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 6-10, Focus * Lose: Attack 2-4 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 5 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-5d : base/fate (base/fate :name "Five of Coins" :ranksuit base/ranksuit-5d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 6-10, Defend, Evade, Counter * Lose: Attack, Focus 2-4 JQKA, Wild * Tie : Focus 5 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-5h : base/fate (base/fate :name "Five of Cups" :ranksuit base/ranksuit-5h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 6-10, Defend, Evade, Counter * Lose: Attack, Focus 2-4 JQKA, Wild * Tie : Focus 5 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-5s : base/fate (base/fate :name "Five of Swords" :ranksuit base/ranksuit-5s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 6-10, Focus * Lose: Attack 2-4 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 5 * Hits: 5, Draw 1 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-4c : base/fate (base/fate :name "Four of Wands" :ranksuit base/ranksuit-4c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 5-10, Focus * Lose: Attack 2-3 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 4 * Hits: 5, Draw 1 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-4d : base/fate (base/fate :name "Four of Coins" :ranksuit base/ranksuit-4d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 5-10, Defend, Evade, Counter * Lose: Attack, Focus 2-3 JQKA, Wild * Tie : Focus 4 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-4h : base/fate (base/fate :name "Four of Cups" :ranksuit base/ranksuit-4h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 5-10, Defend, Evade, Counter * Lose: Attack, Focus 2-3 JQKA, Wild * Tie : Focus 4 * Hits: 4 * Combo: 4-5-6, Hits: 15, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-4s : base/fate (base/fate :name "Four of Swords" :ranksuit base/ranksuit-4s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 5-10, Focus * Lose: Attack 2-3 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 4 * Hits: 4, Draw 1 * Combo: 4-5-6, Hits: 15, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-3c : base/fate (base/fate :name "Three of Wands" :ranksuit base/ranksuit-3c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 4-10, Focus * Lose: Attack 2 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 3 * Hits: 3, Draw 1 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-3d : base/fate (base/fate :name "Three of Coins" :ranksuit base/ranksuit-3d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 4-10, Defend, Evade, Counter * Lose: Attack, Focus 2 JQKA, Wild * Tie : Focus 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1. - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-3h : base/fate (base/fate :name "Three of Cups" :ranksuit base/ranksuit-3h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 4-10, Defend, Evade, Counter * Lose: Attack, Focus 2 JQKA, Wild * Tie : Focus 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1. - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-3s : base/fate (base/fate :name "Three of Swords" :ranksuit base/ranksuit-3s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 4-10, Focus * Lose: Attack 2, Focus JQKA, Defend, Evade, Counter, Wild * Tie : Attack 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-2c : base/fate (base/fate :name "Two of Wands" :ranksuit base/ranksuit-2c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 3-10, Focus * Lose: Attack JQKA, Defend, Evade, Counter, Wild * Tie : Attack 2 * Hits: 2, Draw 1 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (const fate-2d : base/fate (base/fate :name "Two of Coins" :ranksuit base/ranksuit-2d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 3-10, Defend, Evade, Counter * Lose: Attack, Focus JQKA, Wild * Tie : Focus 2 * Hits: 2 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-2h : base/fate (base/fate :name "Two of Cups" :ranksuit base/ranksuit-2h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 3-10, Defend, Evade, Counter * Lose: Attack, Focus JQKA, Wild * Tie : Focus 2 * Hits: 2 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move")) (const fate-2s : base/fate (base/fate :name "Two of Swords" :ranksuit base/ranksuit-2s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 3-10, Focus * Lose: Attack JQKA, Defend, Evade, Counter, Wild * Tie : Attack 2 * Hits: 2, Draw 1 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location")) (func deck-fate : base/deck (base/deck :name "Fate" :cardmap (base/cardmap<-cardlist (base/cardlist fate-wildblack fate-wildred fate-as fate-ac fate-ad fate-ah fate-ks fate-kc fate-kd fate-kh fate-qs fate-qc fate-qd fate-qh fate-js fate-jc fate-jd fate-jh fate-ts fate-tc fate-td fate-th fate-9s fate-9c fate-9d fate-9h fate-8s fate-8c fate-8d fate-8h fate-7s fate-7c fate-7d fate-7h fate-6s fate-6c fate-6d fate-6h fate-5s fate-5c fate-5d fate-5h fate-4s fate-4c fate-4d fate-4h fate-3s fate-3c fate-3d fate-3h fate-2s fate-2c fate-2d fate-2h ))) :doc "Fate Deck") (func deck-fate-blue : base/deck (base/deck :name "Fate Blue" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-blue 54))) :doc "Fate Back Deck") (func deck-fate-green : base/deck (base/deck :name "Fate Green" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-green 54))) :doc "Fate Back Deck") (func deck-fate-red : base/deck (base/deck :name "Fate Red" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-red 54))) :doc "Fate Back Deck") (func deck-fate-yellow : base/deck (base/deck :name "Fate Yellow" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-yellow 54))) :doc "Fate Back Deck")
nx/tactics/decks/fate / card-fate-blue
Description:
Constant Name:
  • card-fate-blue
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const card-fate-blue : base/cardback (base/cardback :id "card-fate-blue" :name "Fate" :image "images/card-fate-blue.svg"))
nx/tactics/decks/fate / card-fate-green
Description:
Constant Name:
  • card-fate-green
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const card-fate-green : base/cardback (base/cardback :id "card-fate-green" :name "Fate" :image "images/card-fate-green.svg"))
nx/tactics/decks/fate / card-fate-red
Description:
Constant Name:
  • card-fate-red
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const card-fate-red : base/cardback (base/cardback :id "card-fate-red" :name "Fate" :image "images/card-fate-red.svg"))
nx/tactics/decks/fate / card-fate-yellow
Description:
Constant Name:
  • card-fate-yellow
Type:
  • nx/tactics/base/cardback
Usage/Test Cases:
Source Code:
  • (const card-fate-yellow : base/cardback (base/cardback :id "card-fate-yellow" :name "Fate" :image "images/card-fate-yellow.svg"))
nx/tactics/decks/fate / fate-wildblack
Description:
Constant Name:
  • fate-wildblack
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-wildblack : base/fate (base/fate :name "Fool" :ranksuit base/ranksuit-jokerblack :image "images/card-fate-joker.svg" :summary "Wild (Gold Burst): * Win : Attack, Focus * Loss: Defend, Evade, Counter * Tie : Wild * Hits: 0. Search or Reclaim 1. * Shuffle: Discards into Deck. - or - Combo Breaker (Blue Burst): * When a Combo is performed on you, discard to cancel the Combo."))
nx/tactics/decks/fate / fate-wildred
Description:
Constant Name:
  • fate-wildred
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-wildred : base/fate (base/fate :name "World" :ranksuit base/ranksuit-jokerred :image "images/card-fate-joker.svg" :summary "Wild (Gold Burst): * Win : Attack, Focus * Loss: Defend, Evade, Counter * Tie : Wild * Hits: 0. Search or Reclaim 1. * Shuffle: Discards into Deck. - or - Combo Breaker (Blue Burst): * When a Combo is performed on you, discard to cancel the Combo."))
nx/tactics/decks/fate / fate-ac
Description:
Constant Name:
  • fate-ac
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-ac : base/fate (base/fate :name "Devil" :ranksuit base/ranksuit-ac :image "images/card-fate-attack-counter.svg" :summary "Attack (Super) * Win : Attack 2-K, Focus * Loss: Defend, Evade, Counter, Wild * Tie : Attack A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-ad
Description:
Constant Name:
  • fate-ad
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-ad : base/fate (base/fate :name "Lust" :ranksuit base/ranksuit-ad :image "images/card-fate-focus-counter.svg" :summary "Focus (Super) * Win : Focus 2-K, Defend, Evade, Counter * Loss: Attack, Wild * Tie : Focus A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-ah
Description:
Constant Name:
  • fate-ah
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-ah : base/fate (base/fate :name "Lovers" :ranksuit base/ranksuit-ah :image "images/card-fate-focus-counter.svg" :summary "Focus (Super) * Win : Focus 2-K, Defend, Evade, Counter * Loss: Attack, Wild * Tie : Focus A * Hits: 1 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-as
Description:
Constant Name:
  • fate-as
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-as : base/fate (base/fate :name "Death" :ranksuit base/ranksuit-as :image "images/card-fate-attack-counter.svg" :summary "Attack (Super) * Win : Attack 2-K, Focus * Loss: Defend, Evade, Counter, Wild * Tie : Attack A * Hits: 0 * Combo: AA Hits: 2 or AAA Hits: 3 or AAAA Hits: 4 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-kc
Description:
Constant Name:
  • fate-kc
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-kc : base/fate (base/fate :name "Emperor" :ranksuit base/ranksuit-kc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10, Focus * Loss: Attack JQA, Defend, Evade, Counter, Wild * Tie : Attack K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-kd
Description:
Constant Name:
  • fate-kd
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-kd : base/fate (base/fate :name "Judgement" :ranksuit base/ranksuit-kd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10, Defend, Evade, Counter * Loss: Attack, Focus JQA, Wild * Tie : Focus K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-kh
Description:
Constant Name:
  • fate-kh
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-kh : base/fate (base/fate :name "Hierophant" :ranksuit base/ranksuit-kh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10, Defend, Evade, Counter * Loss: Attack, Focus JQA, Wild * Tie : Focus K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-ks
Description:
Constant Name:
  • fate-ks
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-ks : base/fate (base/fate :name "Sun" :ranksuit base/ranksuit-ks :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10, Focus * Loss: Attack JQA, Defend, Evade, Counter, Wild * Tie : Attack K * Hits: 1 * Combo: KK Hits: 2 or KKK Hits: 3 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-qc
Description:
Constant Name:
  • fate-qc
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-qc : base/fate (base/fate :name "Empress" :ranksuit base/ranksuit-qc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 K, Focus * Loss: Attack JA, Defend, Evade, Counter, Wild * Tie : Attack Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-qd
Description:
Constant Name:
  • fate-qd
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-qd : base/fate (base/fate :name "Justice" :ranksuit base/ranksuit-qd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 K, Defend, Evade, Counter * Loss: Attack, Focus JA, Wild * Tie : Focus Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-qh
Description:
Constant Name:
  • fate-qh
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-qh : base/fate (base/fate :name "Priestess" :summary "" :ranksuit base/ranksuit-qh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 K, Defend, Evade, Counter * Loss: Attack, Focus JA, Wild * Tie : Focus Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-qs
Description:
Constant Name:
  • fate-qs
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-qs : base/fate (base/fate :name "Moon" :ranksuit base/ranksuit-qs :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 K, Focus * Loss: Attack JA, Defend, Evade, Counter, Wild * Tie : Attack Q * Hits: 1 * Combo: QQ Hits: 2 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-jc
Description:
Constant Name:
  • fate-jc
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-jc : base/fate (base/fate :name "Magus" :titles "Knight of Rods" :ranksuit base/ranksuit-jc :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 QK, Focus * Loss: Attack A, Defend, Evade, Counter, Wild * Tie : Attack J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-jd
Description:
Constant Name:
  • fate-jd
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-jd : base/fate (base/fate :name "Hanged Man" :titles "Prince of Coins" :ranksuit base/ranksuit-jd :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 QK, Defend, Evade, Counter * Loss: Attack, Focus A, Wild * Tie : Focus J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-jh
Description:
Constant Name:
  • fate-jh
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-jh : base/fate (base/fate :name "Hermit" :titles "Princess of Cups" :ranksuit base/ranksuit-jh :image "images/card-fate-focus-counter.svg" :summary "Focus (Special) * Win : Focus 2-10 QK, Defend, Evade, Counter * Loss: Attack, Focus A, Wild * Tie : Focus J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-js
Description:
Constant Name:
  • fate-js
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-js : base/fate (base/fate :name "Star" :titles "Lady of Swords" :ranksuit base/ranksuit-js :image "images/card-fate-attack-counter.svg" :summary "Attack (Special) * Win : Attack 2-10 QK, Focus * Loss: Attack A, Defend, Evade, Counter, Wild * Tie : Attack J * Hits: 1 - or - Counter * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0. Immediately resolve an Attack or Focus"))
nx/tactics/decks/fate / fate-tc
Description:
Constant Name:
  • fate-tc
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-tc : base/fate (base/fate :name "Tower" :titles "Ten of Rods" :ranksuit base/ranksuit-tc :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Focus * Lose: Attack 2-9 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 10 * Hits: 1, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-td
Description:
Constant Name:
  • fate-td
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-td : base/fate (base/fate :name "Wheel of Fortune" :titles "Ten of Coins" :ranksuit base/ranksuit-td :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 10 * Hits: 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-th
Description:
Constant Name:
  • fate-th
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-th : base/fate (base/fate :name "Art" :titles "Ten of Cups" :ranksuit base/ranksuit-th :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 10 * Hits: 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-ts
Description:
Constant Name:
  • fate-ts
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-ts : base/fate (base/fate :name "Chariot" :titles "Ten of Swords" :ranksuit base/ranksuit-ts :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Focus * Lose: Attack 2-9 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 10 * Hits: 1, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-9c
Description:
Constant Name:
  • fate-9c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-9c : base/fate (base/fate :name "Nine of Wands" :ranksuit base/ranksuit-9c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 10, Focus * Lose: Attack 2-8 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 9 * Hits: 9, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-9d
Description:
Constant Name:
  • fate-9d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-9d : base/fate (base/fate :name "Nine of Coins" :ranksuit base/ranksuit-9d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 10, Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 9 * Hits: 9 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-9h
Description:
Constant Name:
  • fate-9h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-9h : base/fate (base/fate :name "Nine of Cups" :ranksuit base/ranksuit-9h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 10, Defend, Evade, Counter * Lose: Attack, Focus 2-9 JQKA, Wild * Tie : Focus 9 * Hits: 9 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-9s
Description:
Constant Name:
  • fate-9s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-9s : base/fate (base/fate :name "Nine of Swords" :ranksuit base/ranksuit-9s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 10, Focus * Lose: Attack 2-8 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 9 * Hits: 9, Draw 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-8c
Description:
Constant Name:
  • fate-8c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-8c : base/fate (base/fate :name "Eight of Wands" :ranksuit base/ranksuit-8c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 9-10, Focus * Lose: Attack 2-7 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 8 * Hits: 8, Draw 1 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-8d
Description:
Constant Name:
  • fate-8d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-8d : base/fate (base/fate :name "Eight of Coins" :ranksuit base/ranksuit-8d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 9-10, Defend, Evade, Counter * Lose: Attack, Focus 2-7 JQKA, Wild * Tie : Focus 8 * Hits: 8 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-8h
Description:
Constant Name:
  • fate-8h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-8h : base/fate (base/fate :name "Eight of Cups" :ranksuit base/ranksuit-8h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 9-10, Defend, Evade, Counter * Lose: Attack, Focus 2-7 JQKA, Wild * Tie : Focus 8 * Hits: 8 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-8s
Description:
Constant Name:
  • fate-8s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-8s : base/fate (base/fate :name "Eight of Swords" :ranksuit base/ranksuit-8s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 9-10, Focus * Lose: Attack 2-7 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 8 * Hits: 8, Draw 1 * Combo: 8-9-10 Hits: 27, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-7c
Description:
Constant Name:
  • fate-7c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-7c : base/fate (base/fate :name "Seven of Wands" :ranksuit base/ranksuit-7c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 8-10, Focus * Lose: Attack 2-6 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 7 * Hits: 7, Draw 1 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-7d
Description:
Constant Name:
  • fate-7d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-7d : base/fate (base/fate :name "Seven of Coins" :ranksuit base/ranksuit-7d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 8-10, Defend, Evade, Counter * Lose: Attack, Focus 2-6 JQKA, Wild * Tie : Focus 7 * Hits: 7 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-7h
Description:
Constant Name:
  • fate-7h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-7h : base/fate (base/fate :name "Seven of Cups" :ranksuit base/ranksuit-7h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 8-10, Defend, Evade, Counter * Lose: Attack, Focus 2-6 JQKA, Wild * Tie : Focus 7 * Hits: 7 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-7s
Description:
Constant Name:
  • fate-7s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-7s : base/fate (base/fate :name "Seven of Swords" :ranksuit base/ranksuit-7s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 8-10, Focus * Lose: Attack 2-6 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 7 * Hits: 7, Draw 1 * Combo: 7-8-9, Hits: 24, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-6c
Description:
Constant Name:
  • fate-6c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-6c : base/fate (base/fate :name "Six of Wands" :ranksuit base/ranksuit-6c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 7-10, Focus * Lose: Attack 2-5 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 6 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-6d
Description:
Constant Name:
  • fate-6d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-6d : base/fate (base/fate :name "Six of Coins" :ranksuit base/ranksuit-6d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 7-10, Defend, Evade, Counter * Lose: Attack, Focus 2-5 JQKA, Wild * Tie : Focus 6 * Hits: 6 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-6h
Description:
Constant Name:
  • fate-6h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-6h : base/fate (base/fate :name "Six of Cups" :ranksuit base/ranksuit-6h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 7-10, Defend, Evade, Counter * Lose: Attack, Focus 2-5 JQKA, Wild * Tie : Focus 6 * Hits: 6 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-6s
Description:
Constant Name:
  • fate-6s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-6s : base/fate (base/fate :name "Six of Swords" :ranksuit base/ranksuit-6s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 7-10, Focus * Lose: Attack 2-5 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 6 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-5c
Description:
Constant Name:
  • fate-5c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-5c : base/fate (base/fate :name "Five of Wands" :ranksuit base/ranksuit-5c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 6-10, Focus * Lose: Attack 2-4 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 5 * Hits: 6, Draw 1 * Combo: 6-7-8, Hits: 21, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-5d
Description:
Constant Name:
  • fate-5d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-5d : base/fate (base/fate :name "Five of Coins" :ranksuit base/ranksuit-5d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 6-10, Defend, Evade, Counter * Lose: Attack, Focus 2-4 JQKA, Wild * Tie : Focus 5 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-5h
Description:
Constant Name:
  • fate-5h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-5h : base/fate (base/fate :name "Five of Cups" :ranksuit base/ranksuit-5h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 6-10, Defend, Evade, Counter * Lose: Attack, Focus 2-4 JQKA, Wild * Tie : Focus 5 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-5s
Description:
Constant Name:
  • fate-5s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-5s : base/fate (base/fate :name "Five of Swords" :ranksuit base/ranksuit-5s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 6-10, Focus * Lose: Attack 2-4 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 5 * Hits: 5, Draw 1 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-4c
Description:
Constant Name:
  • fate-4c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-4c : base/fate (base/fate :name "Four of Wands" :ranksuit base/ranksuit-4c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 5-10, Focus * Lose: Attack 2-3 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 4 * Hits: 5, Draw 1 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-4d
Description:
Constant Name:
  • fate-4d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-4d : base/fate (base/fate :name "Four of Coins" :ranksuit base/ranksuit-4d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 5-10, Defend, Evade, Counter * Lose: Attack, Focus 2-3 JQKA, Wild * Tie : Focus 4 * Hits: 5 * Combo: 5-6-7, Hits: 18, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-4h
Description:
Constant Name:
  • fate-4h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-4h : base/fate (base/fate :name "Four of Cups" :ranksuit base/ranksuit-4h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 5-10, Defend, Evade, Counter * Lose: Attack, Focus 2-3 JQKA, Wild * Tie : Focus 4 * Hits: 4 * Combo: 4-5-6, Hits: 15, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-4s
Description:
Constant Name:
  • fate-4s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-4s : base/fate (base/fate :name "Four of Swords" :ranksuit base/ranksuit-4s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 5-10, Focus * Lose: Attack 2-3 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 4 * Hits: 4, Draw 1 * Combo: 4-5-6, Hits: 15, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-3c
Description:
Constant Name:
  • fate-3c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-3c : base/fate (base/fate :name "Three of Wands" :ranksuit base/ranksuit-3c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 4-10, Focus * Lose: Attack 2 JQKA, Defend, Evade, Counter, Wild * Tie : Attack 3 * Hits: 3, Draw 1 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-3d
Description:
Constant Name:
  • fate-3d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-3d : base/fate (base/fate :name "Three of Coins" :ranksuit base/ranksuit-3d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 4-10, Defend, Evade, Counter * Lose: Attack, Focus 2 JQKA, Wild * Tie : Focus 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1. - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-3h
Description:
Constant Name:
  • fate-3h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-3h : base/fate (base/fate :name "Three of Cups" :ranksuit base/ranksuit-3h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 4-10, Defend, Evade, Counter * Lose: Attack, Focus 2 JQKA, Wild * Tie : Focus 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1. - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-3s
Description:
Constant Name:
  • fate-3s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-3s : base/fate (base/fate :name "Three of Swords" :ranksuit base/ranksuit-3s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 4-10, Focus * Lose: Attack 2, Focus JQKA, Defend, Evade, Counter, Wild * Tie : Attack 3 * Hits: 3 * Combo: 3-4-5, Hits: 12, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-2c
Description:
Constant Name:
  • fate-2c
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-2c : base/fate (base/fate :name "Two of Wands" :ranksuit base/ranksuit-2c :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 3-10, Focus * Lose: Attack JQKA, Defend, Evade, Counter, Wild * Tie : Attack 2 * Hits: 2, Draw 1 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / fate-2d
Description:
Constant Name:
  • fate-2d
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-2d : base/fate (base/fate :name "Two of Coins" :ranksuit base/ranksuit-2d :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 3-10, Defend, Evade, Counter * Lose: Attack, Focus JQKA, Wild * Tie : Focus 2 * Hits: 2 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-2h
Description:
Constant Name:
  • fate-2h
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-2h : base/fate (base/fate :name "Two of Cups" :ranksuit base/ranksuit-2h :image "images/card-fate-focus-evade.svg" :summary "Focus (Normal) * Win : Focus 3-10, Defend, Evade, Counter * Lose: Attack, Focus JQKA, Wild * Tie : Focus 2 * Hits: 2 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Evade * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Move"))
nx/tactics/decks/fate / fate-2s
Description:
Constant Name:
  • fate-2s
Type:
  • nx/tactics/base/fate
Usage/Test Cases:
Source Code:
  • (const fate-2s : base/fate (base/fate :name "Two of Swords" :ranksuit base/ranksuit-2s :image "images/card-fate-attack-defend.svg" :summary "Attack (Normal) * Win : Attack 3-10, Focus * Lose: Attack JQKA, Defend, Evade, Counter, Wild * Tie : Attack 2 * Hits: 2, Draw 1 * Combo: 2-3-4, Hits: 9, Draw or Reclaim 1 - or - Defend * Win : Attack, Wild * Loss: Focus, Defend, Evade, Counter * Hits: 0, Keep, Draw 1, Choose Hit Location"))
nx/tactics/decks/fate / deck-fate
Description:
  • Fate Deck
Function Name:
  • deck-fate
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-fate : base/deck (base/deck :name "Fate" :cardmap (base/cardmap<-cardlist (base/cardlist fate-wildblack fate-wildred fate-as fate-ac fate-ad fate-ah fate-ks fate-kc fate-kd fate-kh fate-qs fate-qc fate-qd fate-qh fate-js fate-jc fate-jd fate-jh fate-ts fate-tc fate-td fate-th fate-9s fate-9c fate-9d fate-9h fate-8s fate-8c fate-8d fate-8h fate-7s fate-7c fate-7d fate-7h fate-6s fate-6c fate-6d fate-6h fate-5s fate-5c fate-5d fate-5h fate-4s fate-4c fate-4d fate-4h fate-3s fate-3c fate-3d fate-3h fate-2s fate-2c fate-2d fate-2h ))) :doc "Fate Deck")
nx/tactics/decks/fate / deck-fate-blue
Description:
  • Fate Back Deck
Function Name:
  • deck-fate-blue
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-fate-blue : base/deck (base/deck :name "Fate Blue" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-blue 54))) :doc "Fate Back Deck")
nx/tactics/decks/fate / deck-fate-green
Description:
  • Fate Back Deck
Function Name:
  • deck-fate-green
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-fate-green : base/deck (base/deck :name "Fate Green" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-green 54))) :doc "Fate Back Deck")
nx/tactics/decks/fate / deck-fate-red
Description:
  • Fate Back Deck
Function Name:
  • deck-fate-red
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-fate-red : base/deck (base/deck :name "Fate Red" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-red 54))) :doc "Fate Back Deck")
nx/tactics/decks/fate / deck-fate-yellow
Description:
  • Fate Back Deck
Function Name:
  • deck-fate-yellow
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-fate-yellow : base/deck (base/deck :name "Fate Yellow" :cardmap (base/cardmap<-cardlist (base/cardlist-copy<-card-num card-fate-yellow 54))) :doc "Fate Back Deck")
nx/tactics/decks/scenario
Description:
  • Tactics Scenario Decks
Package Name:
  • nx/tactics/decks/scenario
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
  • ability-bite, ability-blacksmithing, ability-drag, ability-grab, ability-sneak, ability-trade, ability-trapping, power-groundmovement, skill-closecombat, skill-melee, skill-hunting, skill-stealth, skill-tradeskill
Functions:
  • item-armor-leathercuirass, item-axehand, item-barehanded, item-bowshort, item-dagger, item-hammer, item-shieldbuckler, item-shieldheater, item-shieldround, item-spear, item-spearshort, item-swordlong, item-woodaxe, place-blacksmith, place-campsite, place-cavemouth, place-farmhouse, place-field, place-forest, place-guardpost, place-mill, place-mountain, place-stoneroad, place-tavern, place-temple, place-tradingpost, unit-goblinscout, unit-horse, unit-jesaveer, unit-jonaveer, unit-liliducon, unit-wilddog, unit-wilmducon, unit-woodencart, unit-xeibhanower, deck-murintrail
Source Code:
  • (package nx/tactics/decks/scenario :libs (lib base :path nx/tactics/base) :doc "Tactics Scenario Decks") (const ability-bite : base/ability (base/ability :name "Bite")) (const ability-blacksmithing : base/ability (base/ability :name "Blacksmithing")) (const ability-drag : base/ability (base/ability :name "Drag")) (const ability-grab : base/ability (base/ability :name "Grab")) (const ability-sneak : base/ability (base/ability :name "Sneak")) (const ability-trade : base/ability (base/ability :name "Trade")) (const ability-trapping : base/ability (base/ability :name "Trapping")) (const power-groundmovement : base/power (base/power :name "Ground Movement")) (const skill-closecombat : base/skill (base/skill :name "Close Combat")) (const skill-melee : base/skill (base/skill :name "Melee")) (const skill-hunting : base/skill (base/skill :name "Hunting")) (const skill-stealth : base/skill (base/skill :name "Stealth")) (const skill-tradeskill : base/skill (base/skill :name "Tradeskill")) (func item-armor-leathercuirass : base/item (base/item :name "Leather Cuirass" :titles "Leather Body Armor" :image "images/cards/item-armor-leathercuirass.svg" :summary "* Armor:1x1 * Location: [Shoulders] [Chest] [Abdomen] [Vitals] * Hardened: [Slash]" :body "7x0" :mass "7kg/15lb")) (func item-axehand : base/item (base/item :name "Hand Axe" :image "images/cards/item-axehand.svg" :summary "* Melee: [Hack] [Slash] * Hit: [Size Bonus] * Location: [1-hand]" :body "9x-1" :mass "900g/2lb")) (func item-barehanded : base/item (base/item :name "Bare Handed" :image "images/cards/item-barehanded.svg" :summary "* Close Combat: [Bash] * Hit: [Size Bonus]")) (func item-bowshort : base/item (base/item :name "Short Bow" :image "images/cards/item-bowshort.svg" :summary "* Ranged: [Pierce] [Slash] * Hit:+1 * Range:10x1 100m/300ft * Location: [2-hand]" :body "10x-1" :mass "1kg/2lb")) (func item-dagger : base/item (base/item :name "Dagger" :image "images/cards/item-dagger.svg" :summary "* Close Combat: [Pierce] [Slash] * Hit: [Size Bonus] * Location: [1-hand]" :body "5x-1" :mass "500g/1lb" :length "25cm/10in")) (func item-hammer : base/item (base/item :name "Hammer" :image "images/cards/item-hammer.svg" :summary "* Melee: [Bash] * Hit:+2 [Size Bonus] * Location: [1-hand]" :body "2x0" :mass "2kg/4.4lb")) (func item-shieldbuckler : base/item (base/item :name "Buckler Shield" :image "images/cards/item-shieldbuckler.svg" :summary "* Armor:1x1 * Location: [1-hand]" :body "10x-1" :mass "1kg/2lb")) (func item-shieldheater : base/item (base/item :name "Heater Shield" :image "images/cards/item-shieldheater.svg" :summary "* Armor:2x1 * Location: [1-hand] * Hardened: [Hack]" :body "3x0" :mass "3.2kg/7lb")) (func item-shieldround : base/item (base/item :name "Round Shield" :image "images/cards/item-shieldround.svg" :summary "* Armor:2x1 * Location: [1-hand] * Hardened: [Pierce]" :body "5x0" :mass "5kg/11lb")) (func item-spear : base/item (base/item :name "Spear" :image "images/cards/item-spear.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+3 [Size Bonus] * Location: [2-hand] * Armor:1x1 * [Reach]" :body "3x0" :mass "3kg/6lb")) (func item-spearshort : base/item (base/item :name "Short Spear" :image "images/cards/item-spearshort.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+1 [Size Bonus] * Location: [1-hand]" :body "10x-1" :mass "1.5kg/4lb")) (func item-swordlong : base/item (base/item :name "Longsword" :image "images/cards/item-swordlong.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+1 [Size Bonus] * Location: [1-hand] * Armor:1x1" :body "10x-1" :mass "1.25kg/3lb")) (func item-woodaxe : base/item (base/item :name "Wood Axe" :titles "Splitting Maul" :image "images/cards/item-woodaxe.svg" :summary "* Melee: [Hack] [Slash] * Attack:-1 * Hit:+3 [Size Bonus] * Location: [2-hand] * Armor:1x1" :body "3x0" :mass "3.1kg/7lb")) (func place-blacksmith : base/location (base/location :name "Blacksmith" :image "images/cards/place-blacksmith.svg")) (func place-campsite : base/location (base/location :name "Campsite" :image "images/cards/place-campsite.svg")) (func place-cavemouth : base/location (base/location :name "Cave Mouth" :image "images/cards/place-cavemouth.svg")) (func place-farmhouse : base/location (base/location :name "Farmhouse" :image "images/cards/place-farmhouse.svg")) (func place-field : base/location (base/location :name "Field" :image "images/cards/place-field.svg")) (func place-forest : base/location (base/location :name "Forest" :image "images/cards/place-forest.svg")) (func place-guardpost : base/location (base/location :name "Guardpost" :image "images/cards/place-guardpost.svg")) (func place-mill : base/location (base/location :name "Mill" :image "images/cards/place-mill.svg")) (func place-mountain : base/location (base/location :name "Mountain" :image "images/cards/place-mountain.svg")) (func place-stoneroad : base/location (base/location :name "Stone Road" :image "images/cards/place-stoneroad.svg")) (func place-tavern : base/location (base/location :name "Tavern" :image "images/cards/place-tavern.svg")) (func place-temple : base/location (base/location :name "Temple" :image "images/cards/place-temple.svg")) (func place-tradingpost : base/location (base/location :name "Trading Post" :image "images/cards/place-tradingpost.svg")) (func unit-goblinscout : base/unit (base/unit :name "Goblin Scout" :image "images/cards/unit-goblin-scout.svg" :gender "Male" :demeanor "Depraved" :nature "Cowardly Envious" :conscience "1x1" :beast "1x0" :race "Goblin" :body "2x1" :mind "6x1" :will "2x1" :move "4x0" :value "1x0" :mass "22kg/50lb" :height "1m/3ft" :speedland "4kph/2.5mph" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-closecombat :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-dagger)))) (base/unitskill :skill skill-stealth :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-sneak)))))) (func unit-horse : base/unit (base/unit :name "Horse" :image "images/cards/unit-horse.svg" :body "4x2" :mind "5x-1" :will "2x1" :move "8x0" :mass "450kg/1000lb" :speedland "8kph/5mph" :demeanor "Aloof" :nature "Skitish" :unitpowermap (base/unitpowermap<-unitpowerlist (base/unitpower :power power-groundmovement :level "8x0")))) (func unit-jesaveer : base/unit (base/unit :name "Jes Aveer" :titles "Jessana Aveer" :image "images/cards/unit-jesaveer.svg" :summary "A resilient, young woman with a love of blacksmithing." :race "Human" :gender "F" :age 24 :body "6x1" :mind "6x1" :will "6x1" :move "5x0" :mass "63kg" :height "1.72m/5ft7" :speedland "5kph/3mph" :demeanor "Willful" :nature "Nuturing" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-hammer)))) (base/unitskill :skill skill-tradeskill :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-blacksmithing)))))) (func unit-jonaveer : base/unit (base/unit :name "Jon Aveer" :titles "Ajona Aveer" :image "images/cards/unit-jonaveer.svg" :summary "A clever, young man trying to make his fortune." :race "Human" :gender "M" :age 23 :body "7x1" :mind "6x1" :will "5x1" :move "5x0" :mass "75kg" :height "1.78m/5ft10" :speedland "5kph/3mph" :demeanor "Frivolous" :nature "Loyal" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-spear)))) (base/unitskill :skill skill-tradeskill :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-trade)))))) (func unit-liliducon : base/unit (base/unit :name "Lili Ducon" :image "images/cards/unit-liliducon.svg" :summary "A pleasant and perceptive young lady, who moved with her father Wilm. She took her mother's death hard, and having a difficult time adapting." :race "Human" :gender "F" :age 11 :body "4x1" :mind "4x1" :will "4x1" :move "4x0" :mass "40kg/88lb" :height "1.5m/5ft" :speedland "4kph" :demeanor "Pleasant" :nature "Anxious" :beast "1x0" :shadow "1x0" :value "1x0")) (func unit-wilddog : base/unit (base/unit :name "Wild Dog" :image "images/cards/unit-wilddog.svg" :summary "The Wild Dog is one of the fastest runners in the animal kingdom. * Speed:2x1 [Endurance Running]" :body "5x1" :mind "8x-1" :will "4x1" :move "2x1" :mass "22kg/50lb" :height "76cm/30in" :speedland "20kph/12mph (max 70/44)" :nature "Dogged" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-closecombat :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-bite) (base/unitability :ability ability-grab)) (base/unitability :ability ability-drag))))) (func unit-wilmducon : base/unit (base/unit :name "Wilm Ducon" :image "images/cards/unit-wilmducon.svg" :summary "A proud, prickly huntsman who lost his wife in a violent raid and moved away with his daughter Lily to restart his life." :race "Human" :gender "M" :age 30 :body "8x1" :mind "5x1" :will "5x1" :move "5x0" :mass "80kg/180" :height "1.8m/6ft" :speedland "5kph/3mph" :demeanor "Gruff" :nature "Tortured" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-woodaxe)))) (base/unitskill :skill skill-hunting :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-trapping)))))) (func unit-woodencart : base/unit (base/unit :name "Wooden Cart" :image "images/cards/unit-woodencart.svg" :body "2x2" :mass "200kg/440lb")) (func unit-xeibhanower : base/unit (base/unit :name "Xeib Honower" :image "images/cards/unit-xeibhanower.svg" :race "Human" :gender "M" :age 23 :body "8x1" :mind "5x1" :will "6x1" :move "4x0" :mass "80kg" :height "1.78m/5'10" :speedland "4kph/2.5mph")) (func deck-murintrail : base/deck (let : base/deck [goblinscout := (unit-goblinscout) goblinscout-i := (base/cardimage<-card goblinscout) horse := (unit-horse) horse-i := (base/cardimage<-card horse)] (base/deck :name "Murin Trail" :cardmap (base/cardmap<-cardlist (base/cardlist (unit-jesaveer) (unit-jonaveer) (unit-xeibhanower) (unit-wilmducon) (unit-liliducon) (unit-wilddog) (unit-goblinscout) (unit-horse) (unit-woodencart) (item-armor-leathercuirass) (item-axehand) (item-woodaxe) (item-barehanded) (item-bowshort) (item-dagger) (item-hammer) (item-shieldbuckler) (item-shieldheater) (item-shieldround) (item-spear) (item-spearshort) (item-swordlong) (place-field) (place-forest) (place-mountain) (place-blacksmith) (place-campsite) (place-cavemouth) (place-farmhouse) (place-guardpost) (place-mill) (place-stoneroad) (place-tavern) (place-temple) (place-tradingpost) )))))
nx/tactics/decks/scenario / ability-bite
Description:
Constant Name:
  • ability-bite
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-bite : base/ability (base/ability :name "Bite"))
nx/tactics/decks/scenario / ability-blacksmithing
Description:
Constant Name:
  • ability-blacksmithing
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-blacksmithing : base/ability (base/ability :name "Blacksmithing"))
nx/tactics/decks/scenario / ability-drag
Description:
Constant Name:
  • ability-drag
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-drag : base/ability (base/ability :name "Drag"))
nx/tactics/decks/scenario / ability-grab
Description:
Constant Name:
  • ability-grab
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-grab : base/ability (base/ability :name "Grab"))
nx/tactics/decks/scenario / ability-sneak
Description:
Constant Name:
  • ability-sneak
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-sneak : base/ability (base/ability :name "Sneak"))
nx/tactics/decks/scenario / ability-trade
Description:
Constant Name:
  • ability-trade
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-trade : base/ability (base/ability :name "Trade"))
nx/tactics/decks/scenario / ability-trapping
Description:
Constant Name:
  • ability-trapping
Type:
  • nx/tactics/base/ability
Usage/Test Cases:
Source Code:
  • (const ability-trapping : base/ability (base/ability :name "Trapping"))
nx/tactics/decks/scenario / power-groundmovement
Description:
Constant Name:
  • power-groundmovement
Type:
  • nx/tactics/base/power
Usage/Test Cases:
Source Code:
  • (const power-groundmovement : base/power (base/power :name "Ground Movement"))
nx/tactics/decks/scenario / skill-closecombat
Description:
Constant Name:
  • skill-closecombat
Type:
  • nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (const skill-closecombat : base/skill (base/skill :name "Close Combat"))
nx/tactics/decks/scenario / skill-melee
Description:
Constant Name:
  • skill-melee
Type:
  • nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (const skill-melee : base/skill (base/skill :name "Melee"))
nx/tactics/decks/scenario / skill-hunting
Description:
Constant Name:
  • skill-hunting
Type:
  • nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (const skill-hunting : base/skill (base/skill :name "Hunting"))
nx/tactics/decks/scenario / skill-stealth
Description:
Constant Name:
  • skill-stealth
Type:
  • nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (const skill-stealth : base/skill (base/skill :name "Stealth"))
nx/tactics/decks/scenario / skill-tradeskill
Description:
Constant Name:
  • skill-tradeskill
Type:
  • nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (const skill-tradeskill : base/skill (base/skill :name "Tradeskill"))
nx/tactics/decks/scenario / item-armor-leathercuirass
Description:
Function Name:
  • item-armor-leathercuirass
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-armor-leathercuirass : base/item (base/item :name "Leather Cuirass" :titles "Leather Body Armor" :image "images/cards/item-armor-leathercuirass.svg" :summary "* Armor:1x1 * Location: [Shoulders] [Chest] [Abdomen] [Vitals] * Hardened: [Slash]" :body "7x0" :mass "7kg/15lb"))
nx/tactics/decks/scenario / item-axehand
Description:
Function Name:
  • item-axehand
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-axehand : base/item (base/item :name "Hand Axe" :image "images/cards/item-axehand.svg" :summary "* Melee: [Hack] [Slash] * Hit: [Size Bonus] * Location: [1-hand]" :body "9x-1" :mass "900g/2lb"))
nx/tactics/decks/scenario / item-barehanded
Description:
Function Name:
  • item-barehanded
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-barehanded : base/item (base/item :name "Bare Handed" :image "images/cards/item-barehanded.svg" :summary "* Close Combat: [Bash] * Hit: [Size Bonus]"))
nx/tactics/decks/scenario / item-bowshort
Description:
Function Name:
  • item-bowshort
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-bowshort : base/item (base/item :name "Short Bow" :image "images/cards/item-bowshort.svg" :summary "* Ranged: [Pierce] [Slash] * Hit:+1 * Range:10x1 100m/300ft * Location: [2-hand]" :body "10x-1" :mass "1kg/2lb"))
nx/tactics/decks/scenario / item-dagger
Description:
Function Name:
  • item-dagger
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-dagger : base/item (base/item :name "Dagger" :image "images/cards/item-dagger.svg" :summary "* Close Combat: [Pierce] [Slash] * Hit: [Size Bonus] * Location: [1-hand]" :body "5x-1" :mass "500g/1lb" :length "25cm/10in"))
nx/tactics/decks/scenario / item-hammer
Description:
Function Name:
  • item-hammer
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-hammer : base/item (base/item :name "Hammer" :image "images/cards/item-hammer.svg" :summary "* Melee: [Bash] * Hit:+2 [Size Bonus] * Location: [1-hand]" :body "2x0" :mass "2kg/4.4lb"))
nx/tactics/decks/scenario / item-shieldbuckler
Description:
Function Name:
  • item-shieldbuckler
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-shieldbuckler : base/item (base/item :name "Buckler Shield" :image "images/cards/item-shieldbuckler.svg" :summary "* Armor:1x1 * Location: [1-hand]" :body "10x-1" :mass "1kg/2lb"))
nx/tactics/decks/scenario / item-shieldheater
Description:
Function Name:
  • item-shieldheater
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-shieldheater : base/item (base/item :name "Heater Shield" :image "images/cards/item-shieldheater.svg" :summary "* Armor:2x1 * Location: [1-hand] * Hardened: [Hack]" :body "3x0" :mass "3.2kg/7lb"))
nx/tactics/decks/scenario / item-shieldround
Description:
Function Name:
  • item-shieldround
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-shieldround : base/item (base/item :name "Round Shield" :image "images/cards/item-shieldround.svg" :summary "* Armor:2x1 * Location: [1-hand] * Hardened: [Pierce]" :body "5x0" :mass "5kg/11lb"))
nx/tactics/decks/scenario / item-spear
Description:
Function Name:
  • item-spear
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-spear : base/item (base/item :name "Spear" :image "images/cards/item-spear.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+3 [Size Bonus] * Location: [2-hand] * Armor:1x1 * [Reach]" :body "3x0" :mass "3kg/6lb"))
nx/tactics/decks/scenario / item-spearshort
Description:
Function Name:
  • item-spearshort
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-spearshort : base/item (base/item :name "Short Spear" :image "images/cards/item-spearshort.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+1 [Size Bonus] * Location: [1-hand]" :body "10x-1" :mass "1.5kg/4lb"))
nx/tactics/decks/scenario / item-swordlong
Description:
Function Name:
  • item-swordlong
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-swordlong : base/item (base/item :name "Longsword" :image "images/cards/item-swordlong.svg" :summary "* Melee: [Pierce] [Slash] * Hit:+1 [Size Bonus] * Location: [1-hand] * Armor:1x1" :body "10x-1" :mass "1.25kg/3lb"))
nx/tactics/decks/scenario / item-woodaxe
Description:
Function Name:
  • item-woodaxe
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func item-woodaxe : base/item (base/item :name "Wood Axe" :titles "Splitting Maul" :image "images/cards/item-woodaxe.svg" :summary "* Melee: [Hack] [Slash] * Attack:-1 * Hit:+3 [Size Bonus] * Location: [2-hand] * Armor:1x1" :body "3x0" :mass "3.1kg/7lb"))
nx/tactics/decks/scenario / place-blacksmith
Description:
Function Name:
  • place-blacksmith
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-blacksmith : base/location (base/location :name "Blacksmith" :image "images/cards/place-blacksmith.svg"))
nx/tactics/decks/scenario / place-campsite
Description:
Function Name:
  • place-campsite
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-campsite : base/location (base/location :name "Campsite" :image "images/cards/place-campsite.svg"))
nx/tactics/decks/scenario / place-cavemouth
Description:
Function Name:
  • place-cavemouth
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-cavemouth : base/location (base/location :name "Cave Mouth" :image "images/cards/place-cavemouth.svg"))
nx/tactics/decks/scenario / place-farmhouse
Description:
Function Name:
  • place-farmhouse
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-farmhouse : base/location (base/location :name "Farmhouse" :image "images/cards/place-farmhouse.svg"))
nx/tactics/decks/scenario / place-field
Description:
Function Name:
  • place-field
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-field : base/location (base/location :name "Field" :image "images/cards/place-field.svg"))
nx/tactics/decks/scenario / place-forest
Description:
Function Name:
  • place-forest
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-forest : base/location (base/location :name "Forest" :image "images/cards/place-forest.svg"))
nx/tactics/decks/scenario / place-guardpost
Description:
Function Name:
  • place-guardpost
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-guardpost : base/location (base/location :name "Guardpost" :image "images/cards/place-guardpost.svg"))
nx/tactics/decks/scenario / place-mill
Description:
Function Name:
  • place-mill
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-mill : base/location (base/location :name "Mill" :image "images/cards/place-mill.svg"))
nx/tactics/decks/scenario / place-mountain
Description:
Function Name:
  • place-mountain
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-mountain : base/location (base/location :name "Mountain" :image "images/cards/place-mountain.svg"))
nx/tactics/decks/scenario / place-stoneroad
Description:
Function Name:
  • place-stoneroad
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-stoneroad : base/location (base/location :name "Stone Road" :image "images/cards/place-stoneroad.svg"))
nx/tactics/decks/scenario / place-tavern
Description:
Function Name:
  • place-tavern
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-tavern : base/location (base/location :name "Tavern" :image "images/cards/place-tavern.svg"))
nx/tactics/decks/scenario / place-temple
Description:
Function Name:
  • place-temple
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-temple : base/location (base/location :name "Temple" :image "images/cards/place-temple.svg"))
nx/tactics/decks/scenario / place-tradingpost
Description:
Function Name:
  • place-tradingpost
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func place-tradingpost : base/location (base/location :name "Trading Post" :image "images/cards/place-tradingpost.svg"))
nx/tactics/decks/scenario / unit-goblinscout
Description:
Function Name:
  • unit-goblinscout
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-goblinscout : base/unit (base/unit :name "Goblin Scout" :image "images/cards/unit-goblin-scout.svg" :gender "Male" :demeanor "Depraved" :nature "Cowardly Envious" :conscience "1x1" :beast "1x0" :race "Goblin" :body "2x1" :mind "6x1" :will "2x1" :move "4x0" :value "1x0" :mass "22kg/50lb" :height "1m/3ft" :speedland "4kph/2.5mph" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-closecombat :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-dagger)))) (base/unitskill :skill skill-stealth :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-sneak))))))
nx/tactics/decks/scenario / unit-horse
Description:
Function Name:
  • unit-horse
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-horse : base/unit (base/unit :name "Horse" :image "images/cards/unit-horse.svg" :body "4x2" :mind "5x-1" :will "2x1" :move "8x0" :mass "450kg/1000lb" :speedland "8kph/5mph" :demeanor "Aloof" :nature "Skitish" :unitpowermap (base/unitpowermap<-unitpowerlist (base/unitpower :power power-groundmovement :level "8x0"))))
nx/tactics/decks/scenario / unit-jesaveer
Description:
Function Name:
  • unit-jesaveer
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-jesaveer : base/unit (base/unit :name "Jes Aveer" :titles "Jessana Aveer" :image "images/cards/unit-jesaveer.svg" :summary "A resilient, young woman with a love of blacksmithing." :race "Human" :gender "F" :age 24 :body "6x1" :mind "6x1" :will "6x1" :move "5x0" :mass "63kg" :height "1.72m/5ft7" :speedland "5kph/3mph" :demeanor "Willful" :nature "Nuturing" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-hammer)))) (base/unitskill :skill skill-tradeskill :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-blacksmithing))))))
nx/tactics/decks/scenario / unit-jonaveer
Description:
Function Name:
  • unit-jonaveer
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-jonaveer : base/unit (base/unit :name "Jon Aveer" :titles "Ajona Aveer" :image "images/cards/unit-jonaveer.svg" :summary "A clever, young man trying to make his fortune." :race "Human" :gender "M" :age 23 :body "7x1" :mind "6x1" :will "5x1" :move "5x0" :mass "75kg" :height "1.78m/5ft10" :speedland "5kph/3mph" :demeanor "Frivolous" :nature "Loyal" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-spear)))) (base/unitskill :skill skill-tradeskill :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-trade))))))
nx/tactics/decks/scenario / unit-liliducon
Description:
Function Name:
  • unit-liliducon
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-liliducon : base/unit (base/unit :name "Lili Ducon" :image "images/cards/unit-liliducon.svg" :summary "A pleasant and perceptive young lady, who moved with her father Wilm. She took her mother's death hard, and having a difficult time adapting." :race "Human" :gender "F" :age 11 :body "4x1" :mind "4x1" :will "4x1" :move "4x0" :mass "40kg/88lb" :height "1.5m/5ft" :speedland "4kph" :demeanor "Pleasant" :nature "Anxious" :beast "1x0" :shadow "1x0" :value "1x0"))
nx/tactics/decks/scenario / unit-wilddog
Description:
Function Name:
  • unit-wilddog
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-wilddog : base/unit (base/unit :name "Wild Dog" :image "images/cards/unit-wilddog.svg" :summary "The Wild Dog is one of the fastest runners in the animal kingdom. * Speed:2x1 [Endurance Running]" :body "5x1" :mind "8x-1" :will "4x1" :move "2x1" :mass "22kg/50lb" :height "76cm/30in" :speedland "20kph/12mph (max 70/44)" :nature "Dogged" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-closecombat :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-bite) (base/unitability :ability ability-grab)) (base/unitability :ability ability-drag)))))
nx/tactics/decks/scenario / unit-wilmducon
Description:
Function Name:
  • unit-wilmducon
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-wilmducon : base/unit (base/unit :name "Wilm Ducon" :image "images/cards/unit-wilmducon.svg" :summary "A proud, prickly huntsman who lost his wife in a violent raid and moved away with his daughter Lily to restart his life." :race "Human" :gender "M" :age 30 :body "8x1" :mind "5x1" :will "5x1" :move "5x0" :mass "80kg/180" :height "1.8m/6ft" :speedland "5kph/3mph" :demeanor "Gruff" :nature "Tortured" :beast "1x0" :shadow "1x0" :value "1x0" :unitskillmap (base/unitskillmap<-unitskilllist (base/unitskill :skill skill-melee :level "1" :unititemmap (base/unititemmap<-unititemlist (base/unititem :item (item-woodaxe)))) (base/unitskill :skill skill-hunting :level "1" :unitabilitymap (base/unitabilitymap<-unitabilitylist (base/unitability :ability ability-trapping))))))
nx/tactics/decks/scenario / unit-woodencart
Description:
Function Name:
  • unit-woodencart
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-woodencart : base/unit (base/unit :name "Wooden Cart" :image "images/cards/unit-woodencart.svg" :body "2x2" :mass "200kg/440lb"))
nx/tactics/decks/scenario / unit-xeibhanower
Description:
Function Name:
  • unit-xeibhanower
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func unit-xeibhanower : base/unit (base/unit :name "Xeib Honower" :image "images/cards/unit-xeibhanower.svg" :race "Human" :gender "M" :age 23 :body "8x1" :mind "5x1" :will "6x1" :move "4x0" :mass "80kg" :height "1.78m/5'10" :speedland "4kph/2.5mph"))
nx/tactics/decks/scenario / deck-murintrail
Description:
Function Name:
  • deck-murintrail
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-murintrail : base/deck (let : base/deck [goblinscout := (unit-goblinscout) goblinscout-i := (base/cardimage<-card goblinscout) horse := (unit-horse) horse-i := (base/cardimage<-card horse)] (base/deck :name "Murin Trail" :cardmap (base/cardmap<-cardlist (base/cardlist (unit-jesaveer) (unit-jonaveer) (unit-xeibhanower) (unit-wilmducon) (unit-liliducon) (unit-wilddog) (unit-goblinscout) (unit-horse) (unit-woodencart) (item-armor-leathercuirass) (item-axehand) (item-woodaxe) (item-barehanded) (item-bowshort) (item-dagger) (item-hammer) (item-shieldbuckler) (item-shieldheater) (item-shieldround) (item-spear) (item-spearshort) (item-swordlong) (place-field) (place-forest) (place-mountain) (place-blacksmith) (place-campsite) (place-cavemouth) (place-farmhouse) (place-guardpost) (place-mill) (place-stoneroad) (place-tavern) (place-temple) (place-tradingpost) )))))
nx/tactics/decks/starter
Description:
  • Tactics Starter Decks
Package Name:
  • nx/tactics/decks/starter
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    typ
    vx/type
Types:
Constants:
Functions:
  • card-action-combat, card-action-move, card-action-recover, card-action-skill, card-characterguide, card-damageguide, card-fatelower, card-fateupper, card-free-action, card-gameguide, card-levelingguide, card-player-blue, card-player-green, card-player-red, card-player-yellow, card-scale, card-scale-0, card-setupguide, card-turn-order, card-turn-order, card-turn-player, card-unit-blue, card-unit-green, card-unit-red, card-unit-yellow, deck-player, deck-player-blue, deck-player-green, deck-player-red, deck-player-yellow
Source Code:
  • (package nx/tactics/decks/starter :libs (lib base :path nx/tactics/base) (lib typ :path vx/type) :doc "Tactics Starter Decks") (func card-action-combat : base/card (base/card :id "action-combat" :name "Action: Combat" :summary "* Target a unit with a damaging Skill/Power. * Each player chooses a Fate card from their hand or a random Fate from Shared Fate. * Fate Cards are compared like Rock/Paper/Scissors. * Combat Speed: Defend/Evade/Counter > Attack > Focus > Defend/Evade/Counter * If both play Attack or Focus then compare by rank (lower is faster). * Order: AJQK2-10 * If Tied, there is no result. * If one player Wins, then resolve their result and apply Damage. If the target wins, they do no Damage unless they spend an Action. * Discard all card used (except Keep)")) (func card-action-move : base/card (base/card :id "action-move" :name "Action: Move" :summary "* Action: Move up to half (rounded down) of your [Move] stat. * Facing: During your Move, change your facing up to 2 times the entire Turn. * Full Speed (2 Actions): Move your full [Move] stat. * Sprint (2 Actions): If you moved at Full Speed last turn, Move 1.5x your [Move] stat. * Leftover Move: After moving, if there is an adjacent space that you cannot afford to enter and you have partial Move left, you may take note of it and carry it over to subsequent turns.")) (func card-action-recover : base/card (base/card :id "action-recover" :name "Action: Recover" :summary "* Action: Discard a [Fatigue], [Stun], [Stress], or [Slow] * Double Action: Discard a [Bleeding]")) (func card-action-skill : base/card (base/card :id "action-skill" :name "Action: Skill" :summary "* Action: ")) (func card-characterguide : base/card (base/card :id "characterguide" :name "Character Guide")) (func card-damageguide : base/card (base/card :id "damageguide" :name "Damage Guide" :summary "* Damage Types: Determine the [Damage Types] of the weapon. * Reveal Damage: Reveal cards equal to [Hits]. * Separate Damage: Separate them into 2 piles: Those that match the [Damage Types] (Damage) and those that don't (Fatigue). * Hit Location: The top card from the matching pile is the Hit Location (or the mismatch pile if no matches). Move it aside and flip the Fatigue pile to its facedown side. * Armor: Check [Armor] in the [Hit Location] and then the target reduces the Damage or Fatigue for each point of armor. The Hit Location can only be removed last. * Fatigue: The target may take the Fatigue cards as long they have Body. Any remaining Fatigue are flipped faceup and added to the Damage pile. * Damage: Count the Damage pile and apply the effect on the Hit Location card to the target. * Cleanup: Discard other cards. Shuffle if a Wild was revealed.")) (func card-fatelower : base/card (base/card :id "fatelower" :name "Fate: Inverted" :image "images/card-fate-lower.svg" :summary "Fate: Play this when playing a Fate card to indicate that the lower choice on the Fate is being used (i.e. the side facing toward you).")) (func card-fateupper : base/card (base/card :id "fateupper" :name "Fate: Dignified" :image "images/card-fate-upper.svg" :summary "Fate: Play this when playing a Fate card to indicate that the upper choice on the Fate is being used (i.e. the side facing away from you).")) (func card-free-action : base/card (base/card :id "free-action" :name "Free Action" :summary "* Move Out: Take a [Fatigue] to [Move]:1. * Push Your Luck: Take a [Stun] to reduce a Double Action to an Action. * Grit Your Teeth: Take a [Stress] to ignore the effect of all of your negative statuses this turn. * Final Sprint: Take a [Slow] to [Move]. * Opportunity Fight: If a Target moves through 2 spaces adjacent to a Unit, that Unit may spend a [Stun] to take a free [Action: Fight].")) (func card-gameguide : base/card (base/card :id "gameguide" :name "Game Guide" :summary "* Create [Characters] or [Factions] to play [Scenarios]. * Each [Scenario] contains various [Threats] and [Goals] * Find them and use your [Skills] / [Powers] to complete them for [Rewards] * Some [Rewards] are items, others allow you to increase your [Skills], [Powers], [Abilities], or [Specialties]")) (func card-levelingguide : base/card (base/card :id "levelingguide" :name "Leveling Guide")) (func card-player-blue : base/card [num : int] (base/card :id (string "card-player-blue-" num) :name "Player" :image "images/card-blue.svg")) (func card-player-green : base/card [num : int] (base/card :id (string "card-player-green-" num) :name "Player" :image "images/card-green.svg")) (func card-player-red : base/card [num : int] (base/card :id (string "card-player-red-" num) :name "Player" :image "images/card-red.svg")) (func card-player-yellow : base/card [num : int] (base/card :id (string "card-player-yellow-" num) :name "Player" :image "images/card-yellow.svg")) (func card-scale : base/card (base/card :id (string "card-scale") :name "Scale" :summary "* Each stat/skill/power has a number after the letter 'x'. * This is the scale of that ability. * The number represents the number of zeroes. E.g. 5x3 translates to 5000. * x0 denotes human scale. E.g. 1x0=10kg, 10iq+50, 10will+50, 1kph")) (func card-scale-0 : base/card (base/card :id (string "card-scale-0") :name "Scale:0" :summary "* Human Scale * Turn Length: 4sec * Note: Humans walk at 5kph or 1.3m/s. This makes a 4sec turn 5 spaces.")) (func card-setupguide : base/card (base/card :id "setupguide" :name "Setup Guide" :summary "* Choose a Scenario and sort it in numerical order. * Each [Player] chooses or creates the [Units] they will use. * Each [Player] chooses a colored Starter Deck. * Player [Turn Order] cards are shuffled together to create a [Turn Order] deck. * Reveal the top card in the Scenario deck and follow its instructions.")) (func card-turn-order : base/card (base/card :id "turn-order" :name "Turn: Order" :summary "* Reveal: Flip each card of [Turn Order] deck to form a row. This is the [Player] order this turn. * Activate: In order, each [Player] chooses a Unit to activate. * Action1: Each [Player] chooses an Action to take. If applicable, they also announce target(s). * Resolve1: If a player was the target of an Action, they must wait for the action to resolve. Otherwise, each player performs their [Player: Action] simultaneously. Note: lower order Units cannot be blocked by the movement of higher order Units. * Action2: Same as Action1 above. * Resolve2: Same as Resolve1 above.")) (func card-turn-order : base/card (base/card :id "turn-order" :name "Turn Order")) (func card-turn-player : base/card (base/card :id "turn-player" :name "Turn: Player")) (func card-unit-blue : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-blue.svg")) (func card-unit-green : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-green.svg")) (func card-unit-red : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-red.svg")) (func card-unit-yellow : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-yellow.svg")) (func deck-player : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-gameguide) (card-setupguide) (card-turn-order) (card-turn-player) (card-action-move) (card-action-combat) (card-damageguide) (card-action-skill) (card-action-recover) (card-free-action) (card-characterguide) (card-levelingguide) (card-turn-order) (card-scale) (card-scale-0) (card-fateupper) (card-fatelower)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player" :name "Player" :cardmap cardmap))) (func deck-player-blue : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-blue 1) (card-player-blue 2) (card-player-blue 3) (card-player-blue 4) (card-player-blue 5) (card-unit-blue 1) (card-unit-blue 2) (card-unit-blue 3) (card-unit-blue 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-blue" :name "Player Blue" :cardmap cardmap))) (func deck-player-green : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-green 1) (card-player-green 2) (card-player-green 3) (card-player-green 4) (card-player-green 5) (card-unit-green 1) (card-unit-green 2) (card-unit-green 3) (card-unit-green 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-green" :name "Player Green" :cardmap cardmap))) (func deck-player-red : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-red 1) (card-player-red 2) (card-player-red 3) (card-player-red 4) (card-player-red 5) (card-unit-red 1) (card-unit-red 2) (card-unit-red 3) (card-unit-red 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-red" :name "Player Red" :cardmap cardmap))) (func deck-player-yellow : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-yellow 1) (card-player-yellow 2) (card-player-yellow 3) (card-player-yellow 4) (card-player-yellow 5) (card-unit-yellow 1) (card-unit-yellow 2) (card-unit-yellow 3) (card-unit-yellow 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-yellow" :name "Player Yellow" :cardmap cardmap)))
nx/tactics/decks/starter / card-action-combat
Description:
Function Name:
  • card-action-combat
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-action-combat : base/card (base/card :id "action-combat" :name "Action: Combat" :summary "* Target a unit with a damaging Skill/Power. * Each player chooses a Fate card from their hand or a random Fate from Shared Fate. * Fate Cards are compared like Rock/Paper/Scissors. * Combat Speed: Defend/Evade/Counter > Attack > Focus > Defend/Evade/Counter * If both play Attack or Focus then compare by rank (lower is faster). * Order: AJQK2-10 * If Tied, there is no result. * If one player Wins, then resolve their result and apply Damage. If the target wins, they do no Damage unless they spend an Action. * Discard all card used (except Keep)"))
nx/tactics/decks/starter / card-action-move
Description:
Function Name:
  • card-action-move
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-action-move : base/card (base/card :id "action-move" :name "Action: Move" :summary "* Action: Move up to half (rounded down) of your [Move] stat. * Facing: During your Move, change your facing up to 2 times the entire Turn. * Full Speed (2 Actions): Move your full [Move] stat. * Sprint (2 Actions): If you moved at Full Speed last turn, Move 1.5x your [Move] stat. * Leftover Move: After moving, if there is an adjacent space that you cannot afford to enter and you have partial Move left, you may take note of it and carry it over to subsequent turns."))
nx/tactics/decks/starter / card-action-recover
Description:
Function Name:
  • card-action-recover
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-action-recover : base/card (base/card :id "action-recover" :name "Action: Recover" :summary "* Action: Discard a [Fatigue], [Stun], [Stress], or [Slow] * Double Action: Discard a [Bleeding]"))
nx/tactics/decks/starter / card-action-skill
Description:
Function Name:
  • card-action-skill
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-action-skill : base/card (base/card :id "action-skill" :name "Action: Skill" :summary "* Action: "))
nx/tactics/decks/starter / card-characterguide
Description:
Function Name:
  • card-characterguide
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-characterguide : base/card (base/card :id "characterguide" :name "Character Guide"))
nx/tactics/decks/starter / card-damageguide
Description:
Function Name:
  • card-damageguide
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-damageguide : base/card (base/card :id "damageguide" :name "Damage Guide" :summary "* Damage Types: Determine the [Damage Types] of the weapon. * Reveal Damage: Reveal cards equal to [Hits]. * Separate Damage: Separate them into 2 piles: Those that match the [Damage Types] (Damage) and those that don't (Fatigue). * Hit Location: The top card from the matching pile is the Hit Location (or the mismatch pile if no matches). Move it aside and flip the Fatigue pile to its facedown side. * Armor: Check [Armor] in the [Hit Location] and then the target reduces the Damage or Fatigue for each point of armor. The Hit Location can only be removed last. * Fatigue: The target may take the Fatigue cards as long they have Body. Any remaining Fatigue are flipped faceup and added to the Damage pile. * Damage: Count the Damage pile and apply the effect on the Hit Location card to the target. * Cleanup: Discard other cards. Shuffle if a Wild was revealed."))
nx/tactics/decks/starter / card-fatelower
Description:
Function Name:
  • card-fatelower
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-fatelower : base/card (base/card :id "fatelower" :name "Fate: Inverted" :image "images/card-fate-lower.svg" :summary "Fate: Play this when playing a Fate card to indicate that the lower choice on the Fate is being used (i.e. the side facing toward you)."))
nx/tactics/decks/starter / card-fateupper
Description:
Function Name:
  • card-fateupper
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-fateupper : base/card (base/card :id "fateupper" :name "Fate: Dignified" :image "images/card-fate-upper.svg" :summary "Fate: Play this when playing a Fate card to indicate that the upper choice on the Fate is being used (i.e. the side facing away from you)."))
nx/tactics/decks/starter / card-free-action
Description:
Function Name:
  • card-free-action
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-free-action : base/card (base/card :id "free-action" :name "Free Action" :summary "* Move Out: Take a [Fatigue] to [Move]:1. * Push Your Luck: Take a [Stun] to reduce a Double Action to an Action. * Grit Your Teeth: Take a [Stress] to ignore the effect of all of your negative statuses this turn. * Final Sprint: Take a [Slow] to [Move]. * Opportunity Fight: If a Target moves through 2 spaces adjacent to a Unit, that Unit may spend a [Stun] to take a free [Action: Fight]."))
nx/tactics/decks/starter / card-gameguide
Description:
Function Name:
  • card-gameguide
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-gameguide : base/card (base/card :id "gameguide" :name "Game Guide" :summary "* Create [Characters] or [Factions] to play [Scenarios]. * Each [Scenario] contains various [Threats] and [Goals] * Find them and use your [Skills] / [Powers] to complete them for [Rewards] * Some [Rewards] are items, others allow you to increase your [Skills], [Powers], [Abilities], or [Specialties]"))
nx/tactics/decks/starter / card-levelingguide
Description:
Function Name:
  • card-levelingguide
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-levelingguide : base/card (base/card :id "levelingguide" :name "Leveling Guide"))
nx/tactics/decks/starter / card-player-blue
Description:
Function Name:
  • card-player-blue
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-player-blue : base/card [num : int] (base/card :id (string "card-player-blue-" num) :name "Player" :image "images/card-blue.svg"))
nx/tactics/decks/starter / card-player-green
Description:
Function Name:
  • card-player-green
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-player-green : base/card [num : int] (base/card :id (string "card-player-green-" num) :name "Player" :image "images/card-green.svg"))
nx/tactics/decks/starter / card-player-red
Description:
Function Name:
  • card-player-red
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-player-red : base/card [num : int] (base/card :id (string "card-player-red-" num) :name "Player" :image "images/card-red.svg"))
nx/tactics/decks/starter / card-player-yellow
Description:
Function Name:
  • card-player-yellow
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-player-yellow : base/card [num : int] (base/card :id (string "card-player-yellow-" num) :name "Player" :image "images/card-yellow.svg"))
nx/tactics/decks/starter / card-scale
Description:
Function Name:
  • card-scale
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-scale : base/card (base/card :id (string "card-scale") :name "Scale" :summary "* Each stat/skill/power has a number after the letter 'x'. * This is the scale of that ability. * The number represents the number of zeroes. E.g. 5x3 translates to 5000. * x0 denotes human scale. E.g. 1x0=10kg, 10iq+50, 10will+50, 1kph"))
nx/tactics/decks/starter / card-scale-0
Description:
Function Name:
  • card-scale-0
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-scale-0 : base/card (base/card :id (string "card-scale-0") :name "Scale:0" :summary "* Human Scale * Turn Length: 4sec * Note: Humans walk at 5kph or 1.3m/s. This makes a 4sec turn 5 spaces."))
nx/tactics/decks/starter / card-setupguide
Description:
Function Name:
  • card-setupguide
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-setupguide : base/card (base/card :id "setupguide" :name "Setup Guide" :summary "* Choose a Scenario and sort it in numerical order. * Each [Player] chooses or creates the [Units] they will use. * Each [Player] chooses a colored Starter Deck. * Player [Turn Order] cards are shuffled together to create a [Turn Order] deck. * Reveal the top card in the Scenario deck and follow its instructions."))
nx/tactics/decks/starter / card-turn-order
Description:
Function Name:
  • card-turn-order
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-turn-order : base/card (base/card :id "turn-order" :name "Turn: Order" :summary "* Reveal: Flip each card of [Turn Order] deck to form a row. This is the [Player] order this turn. * Activate: In order, each [Player] chooses a Unit to activate. * Action1: Each [Player] chooses an Action to take. If applicable, they also announce target(s). * Resolve1: If a player was the target of an Action, they must wait for the action to resolve. Otherwise, each player performs their [Player: Action] simultaneously. Note: lower order Units cannot be blocked by the movement of higher order Units. * Action2: Same as Action1 above. * Resolve2: Same as Resolve1 above."))
nx/tactics/decks/starter / card-turn-order
Description:
Function Name:
  • card-turn-order
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-turn-order : base/card (base/card :id "turn-order" :name "Turn Order"))
nx/tactics/decks/starter / card-turn-player
Description:
Function Name:
  • card-turn-player
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func card-turn-player : base/card (base/card :id "turn-player" :name "Turn: Player"))
nx/tactics/decks/starter / card-unit-blue
Description:
Function Name:
  • card-unit-blue
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-unit-blue : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-blue.svg"))
nx/tactics/decks/starter / card-unit-green
Description:
Function Name:
  • card-unit-green
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-unit-green : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-green.svg"))
nx/tactics/decks/starter / card-unit-red
Description:
Function Name:
  • card-unit-red
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-unit-red : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-red.svg"))
nx/tactics/decks/starter / card-unit-yellow
Description:
Function Name:
  • card-unit-yellow
Return Type:
  • nx/tactics/base/card
Arguments:
  • Name
    Type
    Generic
    Description
    num
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func card-unit-yellow : base/card [num : int] (base/card :id (string "unit-" num) :name (string "Unit " num) :image "images/card-yellow.svg"))
nx/tactics/decks/starter / deck-player
Description:
Function Name:
  • deck-player
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-player : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-gameguide) (card-setupguide) (card-turn-order) (card-turn-player) (card-action-move) (card-action-combat) (card-damageguide) (card-action-skill) (card-action-recover) (card-free-action) (card-characterguide) (card-levelingguide) (card-turn-order) (card-scale) (card-scale-0) (card-fateupper) (card-fatelower)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player" :name "Player" :cardmap cardmap)))
nx/tactics/decks/starter / deck-player-blue
Description:
Function Name:
  • deck-player-blue
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-player-blue : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-blue 1) (card-player-blue 2) (card-player-blue 3) (card-player-blue 4) (card-player-blue 5) (card-unit-blue 1) (card-unit-blue 2) (card-unit-blue 3) (card-unit-blue 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-blue" :name "Player Blue" :cardmap cardmap)))
nx/tactics/decks/starter / deck-player-green
Description:
Function Name:
  • deck-player-green
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-player-green : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-green 1) (card-player-green 2) (card-player-green 3) (card-player-green 4) (card-player-green 5) (card-unit-green 1) (card-unit-green 2) (card-unit-green 3) (card-unit-green 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-green" :name "Player Green" :cardmap cardmap)))
nx/tactics/decks/starter / deck-player-red
Description:
Function Name:
  • deck-player-red
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-player-red : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-red 1) (card-player-red 2) (card-player-red 3) (card-player-red 4) (card-player-red 5) (card-unit-red 1) (card-unit-red 2) (card-unit-red 3) (card-unit-red 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-red" :name "Player Red" :cardmap cardmap)))
nx/tactics/decks/starter / deck-player-yellow
Description:
Function Name:
  • deck-player-yellow
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-player-yellow : base/deck (let : base/deck [cardlist : base/cardlist := (base/cardlist (card-player-yellow 1) (card-player-yellow 2) (card-player-yellow 3) (card-player-yellow 4) (card-player-yellow 5) (card-unit-yellow 1) (card-unit-yellow 2) (card-unit-yellow 3) (card-unit-yellow 4)) cardmap : base/cardmap := (base/cardmap<-cardlist cardlist)] (base/deck :id "player-yellow" :name "Player Yellow" :cardmap cardmap)))
nx/tactics/decks/tarot
Description:
  • Tactics tarot Decks
Package Name:
  • nx/tactics/decks/tarot
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
Types:
Constants:
  • tarot-wildblack, tarot-wildred, tarot-ac, tarot-ad, tarot-ah, tarot-as, tarot-kc, tarot-kd, tarot-kh, tarot-ks, tarot-qc, tarot-qd, tarot-qh, tarot-qs, tarot-jc, tarot-jd, tarot-jh, tarot-js, tarot-tc, tarot-td, tarot-th, tarot-ts, tarot-9c, tarot-9d, tarot-9h, tarot-9s, tarot-8c, tarot-8d, tarot-8h, tarot-8s, tarot-7c, tarot-7d, tarot-7h, tarot-7s, tarot-6c, tarot-6d, tarot-6h, tarot-6s, tarot-5c, tarot-5d, tarot-5h, tarot-5s, tarot-4c, tarot-4d, tarot-4h, tarot-4s, tarot-3c, tarot-3d, tarot-3h, tarot-3s, tarot-2c, tarot-2d, tarot-2h, tarot-2s
Functions:
  • deck-tarot
Source Code:
  • (package nx/tactics/decks/tarot :libs (lib base :path nx/tactics/base) :doc "Tactics tarot Decks") (const tarot-wildblack : base/tarot (base/tarot :name "Fool" :image "images/cards/tarot-fool.png" :ranksuit base/ranksuit-jokerblack)) (const tarot-wildred : base/tarot (base/tarot :name "World" :image "images/cards/tarot-world.png" :ranksuit base/ranksuit-jokerred)) (const tarot-ac : base/tarot (base/tarot :name "Devil" :titles "Master of Wands" :image "images/cards/tarot-devil.png" :ranksuit base/ranksuit-ac)) (const tarot-ad : base/tarot (base/tarot :name "Lust" :titles "Master of Coins" :image "images/cards/tarot-lust.png" :ranksuit base/ranksuit-ad)) (const tarot-ah : base/tarot (base/tarot :name "Lovers" :titles "Master of Cups" :image "images/cards/tarot-lovers.png" :ranksuit base/ranksuit-ah)) (const tarot-as : base/tarot (base/tarot :name "Death" :titles "Master of Swords" :image "images/cards/tarot-death.png" :ranksuit base/ranksuit-as)) (const tarot-kc : base/tarot (base/tarot :name "Emperor" :titles "King of Wands" :image "images/cards/tarot-emperor.png" :ranksuit base/ranksuit-kc)) (const tarot-kd : base/tarot (base/tarot :name "Judgement" :titles "King of Coins" :image "images/cards/tarot-judgement.png" :ranksuit base/ranksuit-kd)) (const tarot-kh : base/tarot (base/tarot :name "Hierophant" :titles "King of Cups" :image "images/cards/tarot-hierophant.png" :ranksuit base/ranksuit-kh)) (const tarot-ks : base/tarot (base/tarot :name "Sun" :titles "King of Swords" :image "images/cards/tarot-sun.png" :ranksuit base/ranksuit-ks)) (const tarot-qc : base/tarot (base/tarot :name "Empress" :titles "Queen of Wands" :image "images/cards/tarot-empress.png" :ranksuit base/ranksuit-qc)) (const tarot-qd : base/tarot (base/tarot :name "Justice" :titles "Queen of Coins" :image "images/cards/tarot-justice.png" :ranksuit base/ranksuit-qd)) (const tarot-qh : base/tarot (base/tarot :name "Priestess" :titles "Queen of Cups" :image "images/cards/tarot-priestess.png" :ranksuit base/ranksuit-qh)) (const tarot-qs : base/tarot (base/tarot :name "Moon" :titles "Queen of Swords" :image "images/cards/tarot-moon.png" :ranksuit base/ranksuit-qs)) (const tarot-jc : base/tarot (base/tarot :name "Magus" :titles "Knight of Wands" :image "images/cards/tarot-magus.png" :ranksuit base/ranksuit-jc)) (const tarot-jd : base/tarot (base/tarot :name "Hanged Man" :titles "Prince of Coins" :image "images/cards/tarot-hangedman.png" :ranksuit base/ranksuit-jd)) (const tarot-jh : base/tarot (base/tarot :name "Hermit" :titles "Princess of Cups" :image "images/cards/tarot-hermit.png" :ranksuit base/ranksuit-jh)) (const tarot-js : base/tarot (base/tarot :name "Star" :titles "Lady of Swords" :image "images/cards/tarot-star.png" :ranksuit base/ranksuit-js)) (const tarot-tc : base/tarot (base/tarot :name "Tower" :titles "Ten of Wands" :image "images/cards/tarot-tower.png" :ranksuit base/ranksuit-tc)) (const tarot-td : base/tarot (base/tarot :name "Wheel of Fortune" :titles "Ten of Coins" :image "images/cards/tarot-wheeloffortune.png" :ranksuit base/ranksuit-td)) (const tarot-th : base/tarot (base/tarot :name "Art" :titles "Ten of Cups" :image "images/cards/tarot-art.png" :ranksuit base/ranksuit-th)) (const tarot-ts : base/tarot (base/tarot :name "Chariot" :titles "Ten of Swords" :image "images/cards/tarot-chariot.png" :ranksuit base/ranksuit-ts)) (const tarot-9c : base/tarot (base/tarot :name "Nine of Wands" :titles "Bishop of Wands" :ranksuit base/ranksuit-9c)) (const tarot-9d : base/tarot (base/tarot :name "Nine of Coins" :titles "Bishop of Coins" :ranksuit base/ranksuit-9d)) (const tarot-9h : base/tarot (base/tarot :name "Nine of Cups" :titles "Bishop of Cups" :ranksuit base/ranksuit-9h)) (const tarot-9s : base/tarot (base/tarot :name "Nine of Swords" :titles "Bishop of Swords" :ranksuit base/ranksuit-9s)) (const tarot-8c : base/tarot (base/tarot :name "Eight of Wands" :titles "Archer of Wands" :ranksuit base/ranksuit-8c)) (const tarot-8d : base/tarot (base/tarot :name "Eight of Coins" :titles "Archer of Coins" :ranksuit base/ranksuit-8d)) (const tarot-8h : base/tarot (base/tarot :name "Eight of Cups" :titles "Archer of Cups" :ranksuit base/ranksuit-8h)) (const tarot-8s : base/tarot (base/tarot :name "Eight of Swords" :titles "Archer of Swords" :ranksuit base/ranksuit-8s)) (const tarot-7c : base/tarot (base/tarot :name "Seven of Wands" :titles "Soldier of Wands" :ranksuit base/ranksuit-7c)) (const tarot-7d : base/tarot (base/tarot :name "Seven of Coins" :titles "Soldier of Coins" :ranksuit base/ranksuit-7d)) (const tarot-7h : base/tarot (base/tarot :name "Seven of Cups" :titles "Soldier of Cups" :ranksuit base/ranksuit-7h)) (const tarot-7s : base/tarot (base/tarot :name "Seven of Swords" :titles "Soldier of Swords" :ranksuit base/ranksuit-7s)) (const tarot-6c : base/tarot (base/tarot :name "Six of Wands" :titles "Craftsman of Wands" :ranksuit base/ranksuit-6c)) (const tarot-6d : base/tarot (base/tarot :name "Six of Coins" :titles "Craftsman of Coins" :ranksuit base/ranksuit-6d)) (const tarot-6h : base/tarot (base/tarot :name "Six of Cups" :titles "Craftsman of Cups" :ranksuit base/ranksuit-6h)) (const tarot-6s : base/tarot (base/tarot :name "Six of Swords" :titles "Craftsman of Swords, Swordsmith" :ranksuit base/ranksuit-6s)) (const tarot-5c : base/tarot (base/tarot :name "Five of Wands" :titles "Merchant of Wands, Merchant of Wonders" :ranksuit base/ranksuit-5c)) (const tarot-5d : base/tarot (base/tarot :name "Five of Coins" :titles "Merchant of Coins, Bank" :ranksuit base/ranksuit-5d)) (const tarot-5h : base/tarot (base/tarot :name "Five of Cups" :titles "Merchant of Cups, Brothel" :ranksuit base/ranksuit-5h)) (const tarot-5s : base/tarot (base/tarot :name "Five of Swords" :titles "Merchant of Swords, Arms Dealer" :ranksuit base/ranksuit-5s)) (const tarot-4c : base/tarot (base/tarot :name "Four of Wands" :titles "Miner of Wands" :ranksuit base/ranksuit-4c)) (const tarot-4d : base/tarot (base/tarot :name "Four of Coins" :titles "Miner of Coins, Goldminer" :ranksuit base/ranksuit-4d)) (const tarot-4h : base/tarot (base/tarot :name "Four of Cups" :titles "Miner of Cups" :ranksuit base/ranksuit-4h)) (const tarot-4s : base/tarot (base/tarot :name "Four of Swords" :titles "Miner of Swords" :ranksuit base/ranksuit-4s)) (const tarot-3c : base/tarot (base/tarot :name "Three of Wands" :titles "Farmer of Wands" :ranksuit base/ranksuit-3c)) (const tarot-3d : base/tarot (base/tarot :name "Three of Coins" :titles "Farmer of Coins" :ranksuit base/ranksuit-3d)) (const tarot-3h : base/tarot (base/tarot :name "Three of Cups" :titles "Farmer of Cups" :ranksuit base/ranksuit-3h)) (const tarot-3s : base/tarot (base/tarot :name "Three of Swords" :titles "Farmer of Swords" :ranksuit base/ranksuit-3s)) (const tarot-2c : base/tarot (base/tarot :name "Two of Wands" :titles "Outcast of Wands, Madman" :ranksuit base/ranksuit-2c)) (const tarot-2d : base/tarot (base/tarot :name "Two of Coins" :titles "Outcast of Coins, Beggar" :ranksuit base/ranksuit-2d)) (const tarot-2h : base/tarot (base/tarot :name "Two of Cups" :titles "Outcast of Cups, Prophet" :ranksuit base/ranksuit-2h)) (const tarot-2s : base/tarot (base/tarot :name "Two of Swords" :titles "Outcast of Swords, Brigand" :ranksuit base/ranksuit-2s)) (func deck-tarot : base/deck (base/deck :name "Tarot" :cardmap (base/cardmap<-cardlist (base/cardlist tarot-wildblack tarot-wildred tarot-as tarot-ac tarot-ad tarot-ah tarot-ks tarot-kc tarot-kd tarot-kh tarot-qs tarot-qc tarot-qd tarot-qh tarot-js tarot-jc tarot-jd tarot-jh tarot-ts tarot-tc tarot-td tarot-th tarot-9s tarot-9c tarot-9d tarot-9h tarot-8s tarot-8c tarot-8d tarot-8h tarot-7s tarot-7c tarot-7d tarot-7h tarot-6s tarot-6c tarot-6d tarot-6h tarot-5s tarot-5c tarot-5d tarot-5h tarot-4s tarot-4c tarot-4d tarot-4h tarot-3s tarot-3c tarot-3d tarot-3h tarot-2s tarot-2c tarot-2d tarot-2h ))) :doc "Tarot Deck")
nx/tactics/decks/tarot / tarot-wildblack
Description:
Constant Name:
  • tarot-wildblack
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-wildblack : base/tarot (base/tarot :name "Fool" :image "images/cards/tarot-fool.png" :ranksuit base/ranksuit-jokerblack))
nx/tactics/decks/tarot / tarot-wildred
Description:
Constant Name:
  • tarot-wildred
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-wildred : base/tarot (base/tarot :name "World" :image "images/cards/tarot-world.png" :ranksuit base/ranksuit-jokerred))
nx/tactics/decks/tarot / tarot-ac
Description:
Constant Name:
  • tarot-ac
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-ac : base/tarot (base/tarot :name "Devil" :titles "Master of Wands" :image "images/cards/tarot-devil.png" :ranksuit base/ranksuit-ac))
nx/tactics/decks/tarot / tarot-ad
Description:
Constant Name:
  • tarot-ad
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-ad : base/tarot (base/tarot :name "Lust" :titles "Master of Coins" :image "images/cards/tarot-lust.png" :ranksuit base/ranksuit-ad))
nx/tactics/decks/tarot / tarot-ah
Description:
Constant Name:
  • tarot-ah
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-ah : base/tarot (base/tarot :name "Lovers" :titles "Master of Cups" :image "images/cards/tarot-lovers.png" :ranksuit base/ranksuit-ah))
nx/tactics/decks/tarot / tarot-as
Description:
Constant Name:
  • tarot-as
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-as : base/tarot (base/tarot :name "Death" :titles "Master of Swords" :image "images/cards/tarot-death.png" :ranksuit base/ranksuit-as))
nx/tactics/decks/tarot / tarot-kc
Description:
Constant Name:
  • tarot-kc
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-kc : base/tarot (base/tarot :name "Emperor" :titles "King of Wands" :image "images/cards/tarot-emperor.png" :ranksuit base/ranksuit-kc))
nx/tactics/decks/tarot / tarot-kd
Description:
Constant Name:
  • tarot-kd
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-kd : base/tarot (base/tarot :name "Judgement" :titles "King of Coins" :image "images/cards/tarot-judgement.png" :ranksuit base/ranksuit-kd))
nx/tactics/decks/tarot / tarot-kh
Description:
Constant Name:
  • tarot-kh
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-kh : base/tarot (base/tarot :name "Hierophant" :titles "King of Cups" :image "images/cards/tarot-hierophant.png" :ranksuit base/ranksuit-kh))
nx/tactics/decks/tarot / tarot-ks
Description:
Constant Name:
  • tarot-ks
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-ks : base/tarot (base/tarot :name "Sun" :titles "King of Swords" :image "images/cards/tarot-sun.png" :ranksuit base/ranksuit-ks))
nx/tactics/decks/tarot / tarot-qc
Description:
Constant Name:
  • tarot-qc
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-qc : base/tarot (base/tarot :name "Empress" :titles "Queen of Wands" :image "images/cards/tarot-empress.png" :ranksuit base/ranksuit-qc))
nx/tactics/decks/tarot / tarot-qd
Description:
Constant Name:
  • tarot-qd
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-qd : base/tarot (base/tarot :name "Justice" :titles "Queen of Coins" :image "images/cards/tarot-justice.png" :ranksuit base/ranksuit-qd))
nx/tactics/decks/tarot / tarot-qh
Description:
Constant Name:
  • tarot-qh
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-qh : base/tarot (base/tarot :name "Priestess" :titles "Queen of Cups" :image "images/cards/tarot-priestess.png" :ranksuit base/ranksuit-qh))
nx/tactics/decks/tarot / tarot-qs
Description:
Constant Name:
  • tarot-qs
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-qs : base/tarot (base/tarot :name "Moon" :titles "Queen of Swords" :image "images/cards/tarot-moon.png" :ranksuit base/ranksuit-qs))
nx/tactics/decks/tarot / tarot-jc
Description:
Constant Name:
  • tarot-jc
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-jc : base/tarot (base/tarot :name "Magus" :titles "Knight of Wands" :image "images/cards/tarot-magus.png" :ranksuit base/ranksuit-jc))
nx/tactics/decks/tarot / tarot-jd
Description:
Constant Name:
  • tarot-jd
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-jd : base/tarot (base/tarot :name "Hanged Man" :titles "Prince of Coins" :image "images/cards/tarot-hangedman.png" :ranksuit base/ranksuit-jd))
nx/tactics/decks/tarot / tarot-jh
Description:
Constant Name:
  • tarot-jh
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-jh : base/tarot (base/tarot :name "Hermit" :titles "Princess of Cups" :image "images/cards/tarot-hermit.png" :ranksuit base/ranksuit-jh))
nx/tactics/decks/tarot / tarot-js
Description:
Constant Name:
  • tarot-js
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-js : base/tarot (base/tarot :name "Star" :titles "Lady of Swords" :image "images/cards/tarot-star.png" :ranksuit base/ranksuit-js))
nx/tactics/decks/tarot / tarot-tc
Description:
Constant Name:
  • tarot-tc
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-tc : base/tarot (base/tarot :name "Tower" :titles "Ten of Wands" :image "images/cards/tarot-tower.png" :ranksuit base/ranksuit-tc))
nx/tactics/decks/tarot / tarot-td
Description:
Constant Name:
  • tarot-td
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-td : base/tarot (base/tarot :name "Wheel of Fortune" :titles "Ten of Coins" :image "images/cards/tarot-wheeloffortune.png" :ranksuit base/ranksuit-td))
nx/tactics/decks/tarot / tarot-th
Description:
Constant Name:
  • tarot-th
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-th : base/tarot (base/tarot :name "Art" :titles "Ten of Cups" :image "images/cards/tarot-art.png" :ranksuit base/ranksuit-th))
nx/tactics/decks/tarot / tarot-ts
Description:
Constant Name:
  • tarot-ts
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-ts : base/tarot (base/tarot :name "Chariot" :titles "Ten of Swords" :image "images/cards/tarot-chariot.png" :ranksuit base/ranksuit-ts))
nx/tactics/decks/tarot / tarot-9c
Description:
Constant Name:
  • tarot-9c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-9c : base/tarot (base/tarot :name "Nine of Wands" :titles "Bishop of Wands" :ranksuit base/ranksuit-9c))
nx/tactics/decks/tarot / tarot-9d
Description:
Constant Name:
  • tarot-9d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-9d : base/tarot (base/tarot :name "Nine of Coins" :titles "Bishop of Coins" :ranksuit base/ranksuit-9d))
nx/tactics/decks/tarot / tarot-9h
Description:
Constant Name:
  • tarot-9h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-9h : base/tarot (base/tarot :name "Nine of Cups" :titles "Bishop of Cups" :ranksuit base/ranksuit-9h))
nx/tactics/decks/tarot / tarot-9s
Description:
Constant Name:
  • tarot-9s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-9s : base/tarot (base/tarot :name "Nine of Swords" :titles "Bishop of Swords" :ranksuit base/ranksuit-9s))
nx/tactics/decks/tarot / tarot-8c
Description:
Constant Name:
  • tarot-8c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-8c : base/tarot (base/tarot :name "Eight of Wands" :titles "Archer of Wands" :ranksuit base/ranksuit-8c))
nx/tactics/decks/tarot / tarot-8d
Description:
Constant Name:
  • tarot-8d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-8d : base/tarot (base/tarot :name "Eight of Coins" :titles "Archer of Coins" :ranksuit base/ranksuit-8d))
nx/tactics/decks/tarot / tarot-8h
Description:
Constant Name:
  • tarot-8h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-8h : base/tarot (base/tarot :name "Eight of Cups" :titles "Archer of Cups" :ranksuit base/ranksuit-8h))
nx/tactics/decks/tarot / tarot-8s
Description:
Constant Name:
  • tarot-8s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-8s : base/tarot (base/tarot :name "Eight of Swords" :titles "Archer of Swords" :ranksuit base/ranksuit-8s))
nx/tactics/decks/tarot / tarot-7c
Description:
Constant Name:
  • tarot-7c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-7c : base/tarot (base/tarot :name "Seven of Wands" :titles "Soldier of Wands" :ranksuit base/ranksuit-7c))
nx/tactics/decks/tarot / tarot-7d
Description:
Constant Name:
  • tarot-7d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-7d : base/tarot (base/tarot :name "Seven of Coins" :titles "Soldier of Coins" :ranksuit base/ranksuit-7d))
nx/tactics/decks/tarot / tarot-7h
Description:
Constant Name:
  • tarot-7h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-7h : base/tarot (base/tarot :name "Seven of Cups" :titles "Soldier of Cups" :ranksuit base/ranksuit-7h))
nx/tactics/decks/tarot / tarot-7s
Description:
Constant Name:
  • tarot-7s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-7s : base/tarot (base/tarot :name "Seven of Swords" :titles "Soldier of Swords" :ranksuit base/ranksuit-7s))
nx/tactics/decks/tarot / tarot-6c
Description:
Constant Name:
  • tarot-6c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-6c : base/tarot (base/tarot :name "Six of Wands" :titles "Craftsman of Wands" :ranksuit base/ranksuit-6c))
nx/tactics/decks/tarot / tarot-6d
Description:
Constant Name:
  • tarot-6d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-6d : base/tarot (base/tarot :name "Six of Coins" :titles "Craftsman of Coins" :ranksuit base/ranksuit-6d))
nx/tactics/decks/tarot / tarot-6h
Description:
Constant Name:
  • tarot-6h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-6h : base/tarot (base/tarot :name "Six of Cups" :titles "Craftsman of Cups" :ranksuit base/ranksuit-6h))
nx/tactics/decks/tarot / tarot-6s
Description:
Constant Name:
  • tarot-6s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-6s : base/tarot (base/tarot :name "Six of Swords" :titles "Craftsman of Swords, Swordsmith" :ranksuit base/ranksuit-6s))
nx/tactics/decks/tarot / tarot-5c
Description:
Constant Name:
  • tarot-5c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-5c : base/tarot (base/tarot :name "Five of Wands" :titles "Merchant of Wands, Merchant of Wonders" :ranksuit base/ranksuit-5c))
nx/tactics/decks/tarot / tarot-5d
Description:
Constant Name:
  • tarot-5d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-5d : base/tarot (base/tarot :name "Five of Coins" :titles "Merchant of Coins, Bank" :ranksuit base/ranksuit-5d))
nx/tactics/decks/tarot / tarot-5h
Description:
Constant Name:
  • tarot-5h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-5h : base/tarot (base/tarot :name "Five of Cups" :titles "Merchant of Cups, Brothel" :ranksuit base/ranksuit-5h))
nx/tactics/decks/tarot / tarot-5s
Description:
Constant Name:
  • tarot-5s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-5s : base/tarot (base/tarot :name "Five of Swords" :titles "Merchant of Swords, Arms Dealer" :ranksuit base/ranksuit-5s))
nx/tactics/decks/tarot / tarot-4c
Description:
Constant Name:
  • tarot-4c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-4c : base/tarot (base/tarot :name "Four of Wands" :titles "Miner of Wands" :ranksuit base/ranksuit-4c))
nx/tactics/decks/tarot / tarot-4d
Description:
Constant Name:
  • tarot-4d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-4d : base/tarot (base/tarot :name "Four of Coins" :titles "Miner of Coins, Goldminer" :ranksuit base/ranksuit-4d))
nx/tactics/decks/tarot / tarot-4h
Description:
Constant Name:
  • tarot-4h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-4h : base/tarot (base/tarot :name "Four of Cups" :titles "Miner of Cups" :ranksuit base/ranksuit-4h))
nx/tactics/decks/tarot / tarot-4s
Description:
Constant Name:
  • tarot-4s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-4s : base/tarot (base/tarot :name "Four of Swords" :titles "Miner of Swords" :ranksuit base/ranksuit-4s))
nx/tactics/decks/tarot / tarot-3c
Description:
Constant Name:
  • tarot-3c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-3c : base/tarot (base/tarot :name "Three of Wands" :titles "Farmer of Wands" :ranksuit base/ranksuit-3c))
nx/tactics/decks/tarot / tarot-3d
Description:
Constant Name:
  • tarot-3d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-3d : base/tarot (base/tarot :name "Three of Coins" :titles "Farmer of Coins" :ranksuit base/ranksuit-3d))
nx/tactics/decks/tarot / tarot-3h
Description:
Constant Name:
  • tarot-3h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-3h : base/tarot (base/tarot :name "Three of Cups" :titles "Farmer of Cups" :ranksuit base/ranksuit-3h))
nx/tactics/decks/tarot / tarot-3s
Description:
Constant Name:
  • tarot-3s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-3s : base/tarot (base/tarot :name "Three of Swords" :titles "Farmer of Swords" :ranksuit base/ranksuit-3s))
nx/tactics/decks/tarot / tarot-2c
Description:
Constant Name:
  • tarot-2c
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-2c : base/tarot (base/tarot :name "Two of Wands" :titles "Outcast of Wands, Madman" :ranksuit base/ranksuit-2c))
nx/tactics/decks/tarot / tarot-2d
Description:
Constant Name:
  • tarot-2d
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-2d : base/tarot (base/tarot :name "Two of Coins" :titles "Outcast of Coins, Beggar" :ranksuit base/ranksuit-2d))
nx/tactics/decks/tarot / tarot-2h
Description:
Constant Name:
  • tarot-2h
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-2h : base/tarot (base/tarot :name "Two of Cups" :titles "Outcast of Cups, Prophet" :ranksuit base/ranksuit-2h))
nx/tactics/decks/tarot / tarot-2s
Description:
Constant Name:
  • tarot-2s
Type:
  • nx/tactics/base/tarot
Usage/Test Cases:
Source Code:
  • (const tarot-2s : base/tarot (base/tarot :name "Two of Swords" :titles "Outcast of Swords, Brigand" :ranksuit base/ranksuit-2s))
nx/tactics/decks/tarot / deck-tarot
Description:
  • Tarot Deck
Function Name:
  • deck-tarot
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-tarot : base/deck (base/deck :name "Tarot" :cardmap (base/cardmap<-cardlist (base/cardlist tarot-wildblack tarot-wildred tarot-as tarot-ac tarot-ad tarot-ah tarot-ks tarot-kc tarot-kd tarot-kh tarot-qs tarot-qc tarot-qd tarot-qh tarot-js tarot-jc tarot-jd tarot-jh tarot-ts tarot-tc tarot-td tarot-th tarot-9s tarot-9c tarot-9d tarot-9h tarot-8s tarot-8c tarot-8d tarot-8h tarot-7s tarot-7c tarot-7d tarot-7h tarot-6s tarot-6c tarot-6d tarot-6h tarot-5s tarot-5c tarot-5d tarot-5h tarot-4s tarot-4c tarot-4d tarot-4h tarot-3s tarot-3c tarot-3d tarot-3h tarot-2s tarot-2c tarot-2d tarot-2h ))) :doc "Tarot Deck")
vx/data/file
Description:
  • File handler
Package Name:
  • vx/data/file
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    tb
    vx/data/textblock
    typ
    vx/type
    javaniofile
    java.nio.file.*
Types:
  • file, filelist, fileformat
Constants:
Functions:
  • boolean-exists<-file, boolean-write<-file-any, boolean-write<-file, boolean-write<-file-string, file<-path, file-read<-file, string-read<-file, name<-file, path<-file, pathcurrent<-os, pathfull<-file
Source Code:
  • (package vx/data/file :libs (lib tb :path vx/data/textblock) (lib typ :path vx/type) (lib javaniofile) :doc "File handler") (type file : struct :properties [name : string format : fileformat path : string permission : permission text : string] :doc "File structure") (type filelist : list :allowtypes [file] :doc "List of file") (type fileformat : string :allowvalues [:binary :text]) (func boolean-exists<-file : boolean [file : file] (native :cpp "output = vx_data_file::vx_boolean_exists_from_file(file);" :java "Core.Type_string fullpath = File.f_pathfull_from_file(file); String sfullpath = fullpath.vx_string(); Path path = Paths.get(sfullpath); if (Files.exists(path)) { output = Core.c_true; }") :test (test-true (boolean-exists<-file (file :name "boolean_exists_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Returns true if file/path exists.") (func boolean-write<-file-any : boolean [file : file val : any] (boolean-write<-file-string file (string<-any val)) :context :sideeffects "Writes to file io" :clientserver :server :doc "Write any data structure as a file.") (func boolean-write<-file : boolean [file : file] (boolean-write<-file-string file (:text file)) :context :sideeffects "Writes to file io" :clientserver :server :doc "Write a File to Disk") (func boolean-write<-file-string : boolean [file : file text : string] (native :cpp "output = vx_data_file::vx_boolean_write_from_file_string(file, text);" :java "Core.Type_string fullpath = File.f_pathfull_from_file(file); String sfullpath = fullpath.vx_string(); Path path = Paths.get(sfullpath); String stext = text.vx_string(); byte[] bytes = stext.getBytes(); java.nio.file.Files.write(path, bytes); output = Core.c_true;") :context :messages :permission :sideeffects "Writes to file io" :test (test-true (boolean-write<-file-string (file :name "boolean_write_from_file_string.txt" :path "src/test/resources/vx") "writetext")) :clientserver :server :doc "Write a File to Disk") (func file<-path : file [path : string] (let : file [pos : int := (typ/int<-string-findlast path "/") name : string := (typ/string<-string-start path (+1 pos)) pth : string := (typ/string<-string-end path (-1 pos))] (file :name name :path pth)) :doc "Returns a file from a given path") (func file-read<-file : file [file : file] (copy file :text (string-read<-file file)) :context :permission :test (test (file :name "string_read_from_file.txt" :path "src/test/resources/vx" :text "testdata") (file-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Read a Text File from Disk") (func string-read<-file : string [file : file] (native :cpp "output = vx_data_file::vx_string_read_from_file(file);" :java "output = vx_string_read_from_file(file);") :context :permission :messages :test (test "testdata" (string-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Read text from a File") (func name<-file : string [file : file] (:name file) :doc "Returns path and name from file.") (func path<-file : string [file : file] (:path file) :doc "Returns path and name from file.") (func pathcurrent<-os : string (native :cpp "output = vx_data_file::vx_pathcurrent_from_os();" :java "Path path = Paths.get(“â€); path = path.toAbsolutePath(); String spath = path.toString(); output = Core.vx_new_string(spath);") :clientserver :server :doc "Returns current system path.") (func pathfull<-file : string [file : file] (let : string [path : string := (path<-file file) name : string := (name<-file file)] (string path "/" name)) :doc "Returns full path and name from file.")
vx/data/file / file
Description:
  • File structure
Type Name:
  • file
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    format
    vx/data/file/fileformat
    false
    false
    path
    vx/core/string
    false
    false
    permission
    vx/core/permission
    false
    false
    text
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type file : struct :properties [name : string format : fileformat path : string permission : permission text : string] :doc "File structure")
vx/data/file / filelist
Description:
  • List of file
Type Name:
  • filelist
Extends:
  • :list
Default:
Allowed Types:
  • file
Usage/Test Cases:
Source Code:
  • (type filelist : list :allowtypes [file] :doc "List of file")
vx/data/file / fileformat
Description:
Type Name:
  • fileformat
Extends:
  • :string
Default:
Usage/Test Cases:
Source Code:
  • (type fileformat : string :allowvalues [:binary :text])
vx/data/file / boolean-exists<-file
Description:
  • Returns true if file/path exists.
Function Name:
  • boolean-exists<-file
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
  • (test-true (boolean-exists<-file (file :name "boolean_exists_from_file.txt" :path "src/test/resources/vx")))
Source Code:
  • (func boolean-exists<-file : boolean [file : file] (native :cpp "output = vx_data_file::vx_boolean_exists_from_file(file);" :java "Core.Type_string fullpath = File.f_pathfull_from_file(file); String sfullpath = fullpath.vx_string(); Path path = Paths.get(sfullpath); if (Files.exists(path)) { output = Core.c_true; }") :test (test-true (boolean-exists<-file (file :name "boolean_exists_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Returns true if file/path exists.")
vx/data/file / boolean-write<-file-any
Description:
  • Write any data structure as a file.
Function Name:
  • boolean-write<-file-any
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
    val
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func boolean-write<-file-any : boolean [file : file val : any] (boolean-write<-file-string file (string<-any val)) :context :sideeffects "Writes to file io" :clientserver :server :doc "Write any data structure as a file.")
vx/data/file / boolean-write<-file
Description:
  • Write a File to Disk
Function Name:
  • boolean-write<-file
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func boolean-write<-file : boolean [file : file] (boolean-write<-file-string file (:text file)) :context :sideeffects "Writes to file io" :clientserver :server :doc "Write a File to Disk")
vx/data/file / boolean-write<-file-string
Description:
  • Write a File to Disk
Function Name:
  • boolean-write<-file-string
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
    text
    vx/core/string
Usage/Test Cases:
  • (test-true (boolean-write<-file-string (file :name "boolean_write_from_file_string.txt" :path "src/test/resources/vx") "writetext"))
Source Code:
  • (func boolean-write<-file-string : boolean [file : file text : string] (native :cpp "output = vx_data_file::vx_boolean_write_from_file_string(file, text);" :java "Core.Type_string fullpath = File.f_pathfull_from_file(file); String sfullpath = fullpath.vx_string(); Path path = Paths.get(sfullpath); String stext = text.vx_string(); byte[] bytes = stext.getBytes(); java.nio.file.Files.write(path, bytes); output = Core.c_true;") :context :messages :permission :sideeffects "Writes to file io" :test (test-true (boolean-write<-file-string (file :name "boolean_write_from_file_string.txt" :path "src/test/resources/vx") "writetext")) :clientserver :server :doc "Write a File to Disk")
vx/data/file / file<-path
Description:
  • Returns a file from a given path
Function Name:
  • file<-path
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
    path
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func file<-path : file [path : string] (let : file [pos : int := (typ/int<-string-findlast path "/") name : string := (typ/string<-string-start path (+1 pos)) pth : string := (typ/string<-string-end path (-1 pos))] (file :name name :path pth)) :doc "Returns a file from a given path")
vx/data/file / file-read<-file
Description:
  • Read a Text File from Disk
Function Name:
  • file-read<-file
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
  • (test (file :name "string_read_from_file.txt" :path "src/test/resources/vx" :text "testdata") (file-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx")))
Source Code:
  • (func file-read<-file : file [file : file] (copy file :text (string-read<-file file)) :context :permission :test (test (file :name "string_read_from_file.txt" :path "src/test/resources/vx" :text "testdata") (file-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Read a Text File from Disk")
vx/data/file / string-read<-file
Description:
  • Read text from a File
Function Name:
  • string-read<-file
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
  • (test "testdata" (string-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx")))
Source Code:
  • (func string-read<-file : string [file : file] (native :cpp "output = vx_data_file::vx_string_read_from_file(file);" :java "output = vx_string_read_from_file(file);") :context :permission :messages :test (test "testdata" (string-read<-file (file :name "string_read_from_file.txt" :path "src/test/resources/vx"))) :clientserver :server :doc "Read text from a File")
vx/data/file / name<-file
Description:
  • Returns path and name from file.
Function Name:
  • name<-file
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func name<-file : string [file : file] (:name file) :doc "Returns path and name from file.")
vx/data/file / path<-file
Description:
  • Returns path and name from file.
Function Name:
  • path<-file
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func path<-file : string [file : file] (:path file) :doc "Returns path and name from file.")
vx/data/file / pathcurrent<-os
Description:
  • Returns current system path.
Function Name:
  • pathcurrent<-os
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func pathcurrent<-os : string (native :cpp "output = vx_data_file::vx_pathcurrent_from_os();" :java "Path path = Paths.get(“â€); path = path.toAbsolutePath(); String spath = path.toString(); output = Core.vx_new_string(spath);") :clientserver :server :doc "Returns current system path.")
vx/data/file / pathfull<-file
Description:
  • Returns full path and name from file.
Function Name:
  • pathfull<-file
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func pathfull<-file : string [file : file] (let : string [path : string := (path<-file file) name : string := (name<-file file)] (string path "/" name)) :doc "Returns full path and name from file.")
vx/data/xml
Description:
  • Xml handler
Package Name:
  • vx/data/xml
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    fil
    vx/data/file
    tb
    vx/data/textblock
    type
    vx/type
Types:
  • xml, xmllist, xmlpropmap
Constants:
  • delimxmlcdata, delimxmlcomment, delimxmlequal, delimxml
Functions:
  • string-first<-xml, string-decodexml<-string, textblock-xml<-string, xml<-file, xml<-string, xml<-textblock, xml-angle<-xml-textblock, xml-close<-xml-textblock, xml-parse<-xml-textblock, xml-parse<-xml-textblocklist, xml-property<-xml-textblock, xml-properties<-xml-textblocklist, xml-read<-file, xml-text<-xml-textblock
Source Code:
  • (package vx/data/xml :libs (lib fil :path vx/data/file) (lib tb :path vx/data/textblock) (lib type :path vx/type) :doc "Xml handler") (type xml : struct :properties [tag : string text : string prop : string propmap : stringmap children : xmllist parent : xml]) (type xmllist : list :allowtypes [xml]) (type xmlpropmap : map :allowtypes [string]) (const delimxmlcdata : tb/delim (delim :name "delimxmlcomment" :starttext "<![CDATA[" :endtext "]]>")) (const delimxmlcomment : tb/delim (delim :name "delimxmlcomment" :starttext "<!--" :endtext "-->")) (const delimxmlequal : tb/delim (delim :name "delimxmlequal" :starttext "=")) (const delimxml : tb/delim (tb/delim :delimlist (tb/delimlist delimxmlcomment delimxmlcdata (copy tb/delimbracketangle :delimlist (tb/delimlist delimxmlequal tb/delimwhitespace tb/delimquote))))) (func string-first<-xml : string [xml : xml] (let : string [children : xmllist := (:children xml) first : xml := (:1 children) text : string := (:text first) decode : string := (string-decodexml<-string text) outdent : string := (type/string-outdent decode) trim : string := (type/string-trim outdent)] trim) :test (test "text" (string-first<-xml (xml :children (xmllist (xml :text "text"))))) :doc "Returns string from first child's text.") (func string-decodexml<-string : string [text : string] (let : string [lt : string := (string<-string-find-replace text "&lt;" "<") gt : string := (string<-string-find-replace text "&gt;" ">") amp : string := (string<-string-find-replace gt "&amp;" "&") result : string := (string<-string-find-replace text quote `\"`)] result) :doc "Returns string decoded from xml encoding") (func textblock-xml<-string : tb/textblock [text : string] (tb/textblock-parse<-string-delim text delimxml) :test (test (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))) (textblock-xml<-string "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>")) :doc "Returns a parsed textblock from a string.") (func xml<-file : xml [file : fil/file] (let : xml [text : string := (:text file)] (xml<-string text)) :doc "Returns a parsed xml from a file.") (func xml<-string : xml [text : string] (let : xml [tb : textblock := (textblock-xml<-string text)] (xml<-textblock tb)) :doc "Returns a parsed xml from a string.") (func xml<-textblock : xml [textblock : tb/textblock] (xml-parse<-xml-textblocklist (empty xml) (:children textblock)) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml<-textblock (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))))) :doc "Returns a parsed xml from a textblock.") (func xml-angle<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (if : xml (then // close tag (= (:text tb) (string "</" (:tag xmlarg) ">")) (xml-close<-xml-textblock xmlarg tb)) (else (let : xml [children : tb/textblocklist := (:children tb) xmlchg : xml := (xml :tag :notag :parent xmlarg)] (xml-properties<-xml-textblocklist xmlchg children)))) :test (test (xml :tag :notag) (xml-angle<-xml-textblock (empty xml) (empty tb/textblock))) (test (xml :tag "doc") (xml-angle<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))))) (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-angle<-xml-textblock (xml :tag "tag1") (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))))) :doc "Returns a modified xml from a single textblock.") (func xml-close<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [tag : string := (:tag xmlarg) text : string := (:text tb) parent : xml := (:parent xmlarg) isnoparent : boolean := (is-empty parent)] (if : xml (then // self close tag (or (= "/" text) (= text (string "</" tag ">"))) (if : xml (then isnoparent xmlarg) (else (copy parent :children (xmllist (:children parent) (copy xmlarg :parent (empty xml))))))) (else (copy xmlarg (msg<-error :invalidxmlclosetag (anymap :tag text :startpos (:startpos tb) :endpos (:endpos tb) :line (:line tb) :column (:column tb))))))) :test (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/"))) (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "</doc>"))) (test (xml :tag "doc" (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity 2)) (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/wrong"))) (test (xml :tag "top" :children (xmllist (xml :tag "doc"))) (xml-close<-xml-textblock (xml :tag "doc" :parent (xml :tag "top")) (tb/textblock :text "/"))) :doc "Returns a modified xml from a closing tag.") (func xml-parse<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [delim : tb/delim := (:delim tb) text : string := (:text tb) starttext : string := (:starttext delim)] (switch : xml starttext (case "" (xml-text<-xml-textblock xmlarg tb)) (case (:starttext tb/delimbracketangle) (xml-angle<-xml-textblock xmlarg tb)) (case (:starttext tb/delimwhitespace) xmlarg) (case (:starttext delimxmlcomment) xmlarg) (case (:starttext delimxmlcdata) xmlarg))) :test (test (xml :tag "doc") (xml-parse<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc"))))) (test (xml :tag "doc") (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "\n " :delim (copy tb/delimwhitespace :pos 0)))) (test (xml :tag "tag1" :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "<tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1"))))) (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "tag1" :parent (xml :tag "doc")) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/"))))) (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblock (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (tb/textblock :text "</tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1"))))) :doc "Returns a modified xml from a single textblock.") (func xml-parse<-xml-textblocklist : xml [xmlarg : xml textblocklist : tb/textblocklist] (any<-list-start-reduce : xml textblocklist xmlarg xml-parse<-xml-textblock) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblocklist (empty xml) (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69)))))) :doc "Returns a modified xml from a textblocklist.") (func xml-property<-xml-textblock : xml [xmlarg : xml tbarg : tb/textblock] (let : xml [delim : tb/delim := (:delim tbarg) text : string := (:text tbarg) delimname : string := (:name delim) tag : string := (:tag xmlarg) prop : string := (:prop xmlarg) propmap : stringmap := (:propmap xmlarg)] (switch : xml delimname (case "" // plain text (if : xml (then (boolean<-string-starts text "/") (xml-close<-xml-textblock xmlarg tbarg)) (then (= ":notag" tag) (copy xmlarg :tag text)) (then (= "" prop) (copy xmlarg :prop text)))) (case "delimquote" (if : xml (= "" prop) (copy xmlarg (msg<-error "Found quoted text with no matching attribute.")) (copy xmlarg :prop "" :propmap (copy propmap prop (:text (:1 (:children tbarg))))))) (else xmlarg))) :test (test (xml :tag "tag1") (xml-property<-xml-textblock (xml :tag ":notag") (tb/textblock :text "tag1"))) (test (xml :tag "tag1" :prop "prop1") (xml-property<-xml-textblock (xml :tag "tag1") (tb/textblock :text "prop1"))) (test (xml :tag "tag1" :propmap (stringmap :prop1 "val1")) (xml-property<-xml-textblock (xml :tag "tag1" :prop "prop1") (tb/textblock :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))))) :doc "Returns a modified xml from a single property.") (func xml-properties<-xml-textblocklist : xml [xmlarg : xml textblocklist : tb/textblocklist] (let : xml [xmlchg : xml := (any<-list-start-reduce : xml textblocklist xmlarg (fn : xml [reduce : xml current : tb/textblock] (xml-property<-xml-textblock reduce current)))] xmlchg) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-properties<-xml-textblocklist (xml :tag :notag :parent (xml :tag "doc")) (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/")))) :doc "Returns a modified xml from a textblocklist.") (func xml-read<-file : xml [file : fil/file] (let : xml [loaded : fil/file := (fil/file-read<-file file)] (xml<-file loaded)) :context :doc "Returns a parsed xml from a file.") (func xml-text<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [text : string := (:text tb) xmlchg : xml := (xml :text text)] (if : xml (then // text node (is-empty xmlarg) xmlchg) (else // add text (copy xmlarg :children (xmllist (:children xmlarg) xmlchg))))) :test (test (xml :text "text1") (xml-text<-xml-textblock (empty xml) (tb/textblock :text "text1"))) (test (xml :tag "doc" :children (xmllist (xml :text "text1"))) (xml-text<-xml-textblock (xml :tag "doc") (tb/textblock :text "text1"))) :doc "Returns a modified xml from text.")
vx/data/xml / xml
Description:
Type Name:
  • xml
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    tag
    vx/core/string
    false
    false
    text
    vx/core/string
    false
    false
    prop
    vx/core/string
    false
    false
    propmap
    vx/core/stringmap
    false
    false
    children
    vx/data/xml/xmllist
    false
    false
    parent
    vx/data/xml/xml
    false
    false
Usage/Test Cases:
Source Code:
  • (type xml : struct :properties [tag : string text : string prop : string propmap : stringmap children : xmllist parent : xml])
vx/data/xml / xmllist
Description:
Type Name:
  • xmllist
Extends:
  • :list
Default:
Allowed Types:
  • xml
Usage/Test Cases:
Source Code:
  • (type xmllist : list :allowtypes [xml])
vx/data/xml / xmlpropmap
Description:
Type Name:
  • xmlpropmap
Extends:
  • :map
Default:
Allowed Types:
  • string
Usage/Test Cases:
Source Code:
  • (type xmlpropmap : map :allowtypes [string])
vx/data/xml / delimxmlcdata
Description:
Constant Name:
  • delimxmlcdata
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimxmlcdata : tb/delim (delim :name "delimxmlcomment" :starttext "<![CDATA[" :endtext "]]>"))
vx/data/xml / delimxmlcomment
Description:
Constant Name:
  • delimxmlcomment
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimxmlcomment : tb/delim (delim :name "delimxmlcomment" :starttext "<!--" :endtext "-->"))
vx/data/xml / delimxmlequal
Description:
Constant Name:
  • delimxmlequal
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimxmlequal : tb/delim (delim :name "delimxmlequal" :starttext "="))
vx/data/xml / delimxml
Description:
Constant Name:
  • delimxml
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimxml : tb/delim (tb/delim :delimlist (tb/delimlist delimxmlcomment delimxmlcdata (copy tb/delimbracketangle :delimlist (tb/delimlist delimxmlequal tb/delimwhitespace tb/delimquote)))))
vx/data/xml / string-first<-xml
Description:
  • Returns string from first child's text.
Function Name:
  • string-first<-xml
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test "text" (string-first<-xml (xml :children (xmllist (xml :text "text")))))
Source Code:
  • (func string-first<-xml : string [xml : xml] (let : string [children : xmllist := (:children xml) first : xml := (:1 children) text : string := (:text first) decode : string := (string-decodexml<-string text) outdent : string := (type/string-outdent decode) trim : string := (type/string-trim outdent)] trim) :test (test "text" (string-first<-xml (xml :children (xmllist (xml :text "text"))))) :doc "Returns string from first child's text.")
vx/data/xml / string-decodexml<-string
Description:
  • Returns string decoded from xml encoding
Function Name:
  • string-decodexml<-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string-decodexml<-string : string [text : string] (let : string [lt : string := (string<-string-find-replace text "&lt;" "<") gt : string := (string<-string-find-replace text "&gt;" ">") amp : string := (string<-string-find-replace gt "&amp;" "&") result : string := (string<-string-find-replace text quote `\"`)] result) :doc "Returns string decoded from xml encoding")
vx/data/xml / textblock-xml<-string
Description:
  • Returns a parsed textblock from a string.
Function Name:
  • textblock-xml<-string
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))) (textblock-xml<-string "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>"))
Source Code:
  • (func textblock-xml<-string : tb/textblock [text : string] (tb/textblock-parse<-string-delim text delimxml) :test (test (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))) (textblock-xml<-string "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>")) :doc "Returns a parsed textblock from a string.")
vx/data/xml / xml<-file
Description:
  • Returns a parsed xml from a file.
Function Name:
  • xml<-file
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func xml<-file : xml [file : fil/file] (let : xml [text : string := (:text file)] (xml<-string text)) :doc "Returns a parsed xml from a file.")
vx/data/xml / xml<-string
Description:
  • Returns a parsed xml from a string.
Function Name:
  • xml<-string
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func xml<-string : xml [text : string] (let : xml [tb : textblock := (textblock-xml<-string text)] (xml<-textblock tb)) :doc "Returns a parsed xml from a string.")
vx/data/xml / xml<-textblock
Description:
  • Returns a parsed xml from a textblock.
Function Name:
  • xml<-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml<-textblock (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69)))))))
Source Code:
  • (func xml<-textblock : xml [textblock : tb/textblock] (xml-parse<-xml-textblocklist (empty xml) (:children textblock)) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml<-textblock (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))))) :doc "Returns a parsed xml from a textblock.")
vx/data/xml / xml-angle<-xml-textblock
Description:
  • Returns a modified xml from a single textblock.
Function Name:
  • xml-angle<-xml-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    tb
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :tag :notag) (xml-angle<-xml-textblock (empty xml) (empty tb/textblock)))
  • (test (xml :tag "doc") (xml-angle<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4)))))
  • (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-angle<-xml-textblock (xml :tag "tag1") (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52)))))
Source Code:
  • (func xml-angle<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (if : xml (then // close tag (= (:text tb) (string "</" (:tag xmlarg) ">")) (xml-close<-xml-textblock xmlarg tb)) (else (let : xml [children : tb/textblocklist := (:children tb) xmlchg : xml := (xml :tag :notag :parent xmlarg)] (xml-properties<-xml-textblocklist xmlchg children)))) :test (test (xml :tag :notag) (xml-angle<-xml-textblock (empty xml) (empty tb/textblock))) (test (xml :tag "doc") (xml-angle<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))))) (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-angle<-xml-textblock (xml :tag "tag1") (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))))) :doc "Returns a modified xml from a single textblock.")
vx/data/xml / xml-close<-xml-textblock
Description:
  • Returns a modified xml from a closing tag.
Function Name:
  • xml-close<-xml-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    tb
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/")))
  • (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "</doc>")))
  • (test (xml :tag "doc" (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity 2)) (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/wrong")))
  • (test (xml :tag "top" :children (xmllist (xml :tag "doc"))) (xml-close<-xml-textblock (xml :tag "doc" :parent (xml :tag "top")) (tb/textblock :text "/")))
Source Code:
  • (func xml-close<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [tag : string := (:tag xmlarg) text : string := (:text tb) parent : xml := (:parent xmlarg) isnoparent : boolean := (is-empty parent)] (if : xml (then // self close tag (or (= "/" text) (= text (string "</" tag ">"))) (if : xml (then isnoparent xmlarg) (else (copy parent :children (xmllist (:children parent) (copy xmlarg :parent (empty xml))))))) (else (copy xmlarg (msg<-error :invalidxmlclosetag (anymap :tag text :startpos (:startpos tb) :endpos (:endpos tb) :line (:line tb) :column (:column tb))))))) :test (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/"))) (test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "</doc>"))) (test (xml :tag "doc" (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity 2)) (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/wrong"))) (test (xml :tag "top" :children (xmllist (xml :tag "doc"))) (xml-close<-xml-textblock (xml :tag "doc" :parent (xml :tag "top")) (tb/textblock :text "/"))) :doc "Returns a modified xml from a closing tag.")
vx/data/xml / xml-parse<-xml-textblock
Description:
  • Returns a modified xml from a single textblock.
Function Name:
  • xml-parse<-xml-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    tb
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :tag "doc") (xml-parse<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc")))))
  • (test (xml :tag "doc") (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "\n " :delim (copy tb/delimwhitespace :pos 0))))
  • (test (xml :tag "tag1" :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "<tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1")))))
  • (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "tag1" :parent (xml :tag "doc")) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/")))))
  • (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblock (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (tb/textblock :text "</tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1")))))
Source Code:
  • (func xml-parse<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [delim : tb/delim := (:delim tb) text : string := (:text tb) starttext : string := (:starttext delim)] (switch : xml starttext (case "" (xml-text<-xml-textblock xmlarg tb)) (case (:starttext tb/delimbracketangle) (xml-angle<-xml-textblock xmlarg tb)) (case (:starttext tb/delimwhitespace) xmlarg) (case (:starttext delimxmlcomment) xmlarg) (case (:starttext delimxmlcdata) xmlarg))) :test (test (xml :tag "doc") (xml-parse<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc"))))) (test (xml :tag "doc") (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "\n " :delim (copy tb/delimwhitespace :pos 0)))) (test (xml :tag "tag1" :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "<tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1"))))) (test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "tag1" :parent (xml :tag "doc")) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/"))))) (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblock (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (tb/textblock :text "</tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1"))))) :doc "Returns a modified xml from a single textblock.")
vx/data/xml / xml-parse<-xml-textblocklist
Description:
  • Returns a modified xml from a textblocklist.
Function Name:
  • xml-parse<-xml-textblocklist
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    textblocklist
    vx/data/textblock/textblocklist
Usage/Test Cases:
  • (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblocklist (empty xml) (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))))
Source Code:
  • (func xml-parse<-xml-textblocklist : xml [xmlarg : xml textblocklist : tb/textblocklist] (any<-list-start-reduce : xml textblocklist xmlarg xml-parse<-xml-textblock) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblocklist (empty xml) (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text "\n " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text "\n " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text "\n " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text "\n" :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69)))))) :doc "Returns a modified xml from a textblocklist.")
vx/data/xml / xml-property<-xml-textblock
Description:
  • Returns a modified xml from a single property.
Function Name:
  • xml-property<-xml-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    tbarg
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :tag "tag1") (xml-property<-xml-textblock (xml :tag ":notag") (tb/textblock :text "tag1")))
  • (test (xml :tag "tag1" :prop "prop1") (xml-property<-xml-textblock (xml :tag "tag1") (tb/textblock :text "prop1")))
  • (test (xml :tag "tag1" :propmap (stringmap :prop1 "val1")) (xml-property<-xml-textblock (xml :tag "tag1" :prop "prop1") (tb/textblock :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1")))))
Source Code:
  • (func xml-property<-xml-textblock : xml [xmlarg : xml tbarg : tb/textblock] (let : xml [delim : tb/delim := (:delim tbarg) text : string := (:text tbarg) delimname : string := (:name delim) tag : string := (:tag xmlarg) prop : string := (:prop xmlarg) propmap : stringmap := (:propmap xmlarg)] (switch : xml delimname (case "" // plain text (if : xml (then (boolean<-string-starts text "/") (xml-close<-xml-textblock xmlarg tbarg)) (then (= ":notag" tag) (copy xmlarg :tag text)) (then (= "" prop) (copy xmlarg :prop text)))) (case "delimquote" (if : xml (= "" prop) (copy xmlarg (msg<-error "Found quoted text with no matching attribute.")) (copy xmlarg :prop "" :propmap (copy propmap prop (:text (:1 (:children tbarg))))))) (else xmlarg))) :test (test (xml :tag "tag1") (xml-property<-xml-textblock (xml :tag ":notag") (tb/textblock :text "tag1"))) (test (xml :tag "tag1" :prop "prop1") (xml-property<-xml-textblock (xml :tag "tag1") (tb/textblock :text "prop1"))) (test (xml :tag "tag1" :propmap (stringmap :prop1 "val1")) (xml-property<-xml-textblock (xml :tag "tag1" :prop "prop1") (tb/textblock :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))))) :doc "Returns a modified xml from a single property.")
vx/data/xml / xml-properties<-xml-textblocklist
Description:
  • Returns a modified xml from a textblocklist.
Function Name:
  • xml-properties<-xml-textblocklist
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    textblocklist
    vx/data/textblock/textblocklist
Usage/Test Cases:
  • (test (xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-properties<-xml-textblocklist (xml :tag :notag :parent (xml :tag "doc")) (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/"))))
Source Code:
  • (func xml-properties<-xml-textblocklist : xml [xmlarg : xml textblocklist : tb/textblocklist] (let : xml [xmlchg : xml := (any<-list-start-reduce : xml textblocklist xmlarg (fn : xml [reduce : xml current : tb/textblock] (xml-property<-xml-textblock reduce current)))] xmlchg) :test (test (xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-properties<-xml-textblocklist (xml :tag :notag :parent (xml :tag "doc")) (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/")))) :doc "Returns a modified xml from a textblocklist.")
vx/data/xml / xml-read<-file
Description:
  • Returns a parsed xml from a file.
Function Name:
  • xml-read<-file
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func xml-read<-file : xml [file : fil/file] (let : xml [loaded : fil/file := (fil/file-read<-file file)] (xml<-file loaded)) :context :doc "Returns a parsed xml from a file.")
vx/data/xml / xml-text<-xml-textblock
Description:
  • Returns a modified xml from text.
Function Name:
  • xml-text<-xml-textblock
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    xmlarg
    vx/data/xml/xml
    tb
    vx/data/textblock/textblock
Usage/Test Cases:
  • (test (xml :text "text1") (xml-text<-xml-textblock (empty xml) (tb/textblock :text "text1")))
  • (test (xml :tag "doc" :children (xmllist (xml :text "text1"))) (xml-text<-xml-textblock (xml :tag "doc") (tb/textblock :text "text1")))
Source Code:
  • (func xml-text<-xml-textblock : xml [xmlarg : xml tb : tb/textblock] (let : xml [text : string := (:text tb) xmlchg : xml := (xml :text text)] (if : xml (then // text node (is-empty xmlarg) xmlchg) (else // add text (copy xmlarg :children (xmllist (:children xmlarg) xmlchg))))) :test (test (xml :text "text1") (xml-text<-xml-textblock (empty xml) (tb/textblock :text "text1"))) (test (xml :tag "doc" :children (xmllist (xml :text "text1"))) (xml-text<-xml-textblock (xml :tag "doc") (tb/textblock :text "text1"))) :doc "Returns a modified xml from text.")
vx/test
Description:
  • Test Suite builder
Package Name:
  • vx/test
Libraries:
  • Name
    Path
    vx/core
    vx/core
    file
    vx/data/file
    html
    vx/web/html
Types:
  • testcase, testcaselist, testcoveragedetail, testcoveragenums, testcoveragesummary, testdescribe, testdescribelist, testpackage, testpackagelist, testresult, testresultlist
Constants:
  • stylesheet-test
Functions:
  • context-test, div<-testcaselist, div<-testpackage, div<-testpackagelist, divchildlist<-testpackagelist, file-test, file-testnode, file-testhtml, html<-divtest, p<-passfail, p<-testcoveragenums, resolve-testcase, resolve-testcaselist, resolve-testdescribe, resolve-testdescribelist, resolve-testpackage, resolve-testpackagelist, resolve-testresult, security-test, test, test, test-false, test-false, test-gt, test-gt, test-ne, test-ne, test-string, test-string, test-true, test-true, tr<-testdescribe-casename, trlist<-testcase, trlist<-testcaselist
Source Code:
  • (package vx/test :libs (lib file :path vx/data/file) (lib html :path vx/web/html) :doc "Test Suite builder") (type testcase : struct :properties [passfail : boolean testpkg : string casename : string describelist : testdescribelist] :doc "Structure to describe a test case") (type testcaselist : list :allowtypes [testcase] :doc "List of test cases") (type testcoveragedetail : struct :properties [constmap : intmap funcmap : intmap testpkg : string typemap : intmap] :doc "Structure to describe a test coverage detail") (type testcoveragenums : struct :properties [pct : int testpkg : string tests : int total : int] :doc "Structure to describe a test coverage summary") (type testcoveragesummary : struct :properties [bigospacenums : testcoveragenums bigotimenums : testcoveragenums constnums : testcoveragenums docnums : testcoveragenums funcnums : testcoveragenums testpkg : string totalnums : testcoveragenums typenums : testcoveragenums] :doc "Structure to describe a test coverage summary") (type testdescribe : struct :properties [describename : string testpkg : string testresult : testresult] :doc "Structure to describe test results") (type testdescribelist : list :allowtypes [testdescribe] :doc "List of testdescribe") (type testpackage : struct :properties [caselist : testcaselist coveragedetail : testcoveragedetail coveragesummary : testcoveragesummary passfail : boolean testpkg : string] :doc "Structure to hold all tests for a package") (type testpackagelist : list :allowtypes [testpackage] :doc "List of testpackage") (type testresult : struct :properties [code : string passfail : boolean expected : any actual : any fn-actual : any<-func-async] :doc "Structure to hold test results") (type testresultlist : list :allowtypes [testresult] :doc "List of test results") (const stylesheet-test : stylesheet (stylesheet-loadmap (stylesheet :name "Test Suite" :styles (stylelist (style :name "body" :props (propmap "font-size" "0.9em" "font-family" "sans-serif")) (style :name "details summary" :props (propmap "cursor" "pointer" "display" "inline-flex" "gap" "10px")) (style :name "table" :props (propmap "vertical-align" "top" "border-collapse" "collapse" "margin" "25px 0" "min-width" "400px" "box-shadow" "0 0 20px rgba(0, 0, 0, 0.15)")) (style :name "thead tr" :props (propmap "background-color" "#009879" "color" "#ffffff" "text-align" "left")) (style :name "td" :props (propmap "padding" "10px 10px" "vertical-align" "top")) (style :name "tbody tr" :props (propmap "border-bottom" "1px solid #dddddd")) (style :name "tbody tr:nth-of-type(even)" :props (propmap "background-color" "#f3f3f3")) (style :name "tbody tr:last-of-type" :props (propmap "border-bottom" "2px solid #009879")) (style :name "tbody tr.active-row" :props (propmap "font-weight" "bold" "color" "#009879")) (style :name ".failflag" :props (propmap "background-color" "red" "color" "white" "padding-left" "4px" "padding-right" "4px" "padding-top" "1px" "padding-bottom" "1px")) (style :name ".passflag" :props (propmap "background-color" "green" "color" "white" "padding-left" "4px" "padding-right" "4px" "padding-top" "1px" "padding-bottom" "1px")) (style :name ".coveragenums" :props (propmap "width" "90px")) (style :name ".coveragepct" :props (propmap "text-align" "right")) (style :name ".coveragepctgreen" :props (propmap "background-color" "green" "color" "white" "text-align" "right")) (style :name ".coveragepctred" :props (propmap "background-color" "red" "color" "white" "text-align" "right")) (style :name ".pkgheader" :props (propmap "display" "inline-flex" "gap" "10px")) (style :name ".pkgname" :props (propmap "font-weight" "bold" "width" "180px")) (style :name ".preformatted" :props (propmap "display" "block" "unicode-bidi" "embed" "font-family" "monospace" "white-space" "pre")) ) ) ) :doc "The default Test Stylesheet") (func context-test : context [args : anylist :...] (context :session (session :user (user :security (security-test)))) :doc "Returns the default context for test case execution. Arguments come from the command line.") (func div<-testcaselist : div [testcaselist : testcaselist] (div (table :thead (thead (tr (td (p :text "Pass?")) (td (p :text "Name")) (td (p :text "Test")) (td (p :text "Expected")) (td (p :text "Actual")) )) :tbody (tbody (trlist<-testcaselist testcaselist)) ) ) :doc "") (func div<-testpackage : div [testpackage : testpackage] (let : div [testcoveragesummary : testcoveragesummary := (:coveragesummary testpackage) pkgname : string := (:testpkg testpackage) caselist : testcaselist := (:caselist testpackage) passfail : boolean := (:passfail testpackage) pkgnamestyle : style := (style<-stylesheet-name stylesheet-test ".pkgname") node : div := (div<-testcaselist caselist) nodes : divchildlist := (divchildlist node) p-passfail : p := (p<-passfail passfail) p-pkgname : p := (p :style pkgnamestyle :text pkgname) p-totalnums : p := (p<-testcoveragenums (:totalnums testcoveragesummary)) p-coveragenums : p := (p<-testcoveragenums (:typenums testcoveragesummary)) p-constnums : p := (p<-testcoveragenums (:constnums testcoveragesummary)) p-funcnums : p := (p<-testcoveragenums (:funcnums testcoveragesummary)) p-docnums : p := (p<-testcoveragenums (:docnums testcoveragesummary)) p-bigospacenums : p := (p<-testcoveragenums (:bigospacenums testcoveragesummary)) p-bigotimenums : p := (p<-testcoveragenums (:bigotimenums testcoveragesummary)) summary : divchildlist := (divchildlist p-passfail p-pkgname p-totalnums p-coveragenums p-constnums p-funcnums p-docnums p-bigospacenums p-bigotimenums) details : details := (details :summary summary :nodes nodes)] (div details) ) :doc "Retuns a div from a test package") (func div<-testpackagelist : div [testpackagelist : testpackagelist] (let : div [stylepassfail : style := (style<-stylesheet-name stylesheet-test ".passfail") stylepkgname : style := (style<-stylesheet-name stylesheet-test ".pkgname") stylepkgheader : style := (style<-stylesheet-name stylesheet-test ".pkgheader") stylecoveragenum : style := (style<-stylesheet-name stylesheet-test ".coveragenums")] (div (div :style stylepkgheader (p :style stylepassfail :text "Pass?") (p :style stylepkgname :text "Package Name") (p :style stylecoveragenum :text "Coverage") (p :style stylecoveragenum :text "(type)") (p :style stylecoveragenum :text "(const)") (p :style stylecoveragenum :text "(func)") (p :style stylecoveragenum :text ":doc") (p :style stylecoveragenum :text ":bigospace") (p :style stylecoveragenum :text ":bigotime") ) (div (divchildlist<-testpackagelist testpackagelist)) ) ) :doc "") (func divchildlist<-testpackagelist : divchildlist [testpackagelist : testpackagelist] (list<-list testpackagelist div<-testpackage) :doc "Returns a divlist from a testpackagelist.") (func file-test : file/file (file :name "testsuite.vxlisp" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuite.vxlisp" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuite.vxlisp") (func file-testnode : file/file (file :name "testsuitenode.vxlisp" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuitenode.vxlisp" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuitenode.vxlisp") (func file-testhtml : file/file (file :name "testsuite.html" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuite.html" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuite.html") (func html<-divtest : html [divtest : div] (html :lang "en" :head (head (meta :charset "utf-8") (meta :name "viewport" :content "width=device-width, initial-scale=1.0") (title :text "Test Suite") stylesheet-test) :body (body (div (h1 "Test Suite")) divtest)) :doc "Returns html from test div") (func p<-passfail : p [passfail : boolean] (let [text : string := (if passfail "Pass" "Fail") stylename : string := (if passfail ".passflag" ".failflag") style : style := (style<-stylesheet-name stylesheet-test stylename)] (p :style style :text text)) :doc "Returns a <p> tag from a passfail boolean value") (func p<-testcoveragenums : p [nums : testcoveragenums] (p :style (style<-stylesheet-name stylesheet-test ".coveragenums") :text (string (:pct nums) "% " (:tests nums) "/" (:total nums))) :doc "Returns <p>tests / total (pct%)</p> from testcoveragenums") (func resolve-testcase : testcase :async [testcase : testcase] (let [describelist : testdescribelist := (:describelist testcase) resolvedlist : testdescribelist := (resolve-testdescribelist describelist) passfaillist : booleanlist := (list<-list : booleanlist resolvedlist (fn : boolean [testdescribe : testdescribe] (let : boolean [testresult : testresult := (:testresult testdescribe)] (:passfail testresult)))) passfail : boolean := (and passfaillist)] (copy testcase :passfail passfail :describelist resolvedlist)) :doc "Resolves a testcase") (func resolve-testcaselist : testcaselist :async [testcaselist : testcaselist] (list<-list-async testcaselist resolve-testcase) :doc "Resolves a testcaselist") (func resolve-testdescribe : testdescribe :async [testdescribe : testdescribe] (let [testresult : testresult := (:testresult testdescribe) resolved : testresult := (resolve-testresult testresult)] (copy testdescribe :testresult resolved)) :doc "Resolves a testdescribe") (func resolve-testdescribelist : testdescribelist :async [testdescribelist : testdescribelist] (list<-list-async testdescribelist resolve-testdescribe) :doc "Resolves a testdescribelist") (func resolve-testpackage : testpackage :async [testpackage : testpackage] (let [testcaselist : testcaselist := (:caselist testpackage) resolvedlist : testcaselist := (resolve-testcaselist testcaselist) passfaillist : booleanlist := (list<-list : booleanlist resolvedlist (fn : boolean [testcase : testcase] (:passfail testcase) ) ) passfail : boolean := (and passfaillist)] (copy testpackage :passfail passfail :caselist resolvedlist)) :doc "Resolves a testpackage") (func resolve-testpackagelist : testpackagelist :async [testpackagelist : testpackagelist] (list<-list-async testpackagelist resolve-testpackage) :doc "Resolves a testpackagelist") (func resolve-testresult : testresult :async [testresult : testresult] (let : testresult [fn-actual : any<-func-async := (:fn-actual testresult) expected : any := (:expected testresult) actual : any := (resolve-async fn-actual)] (if : testresult (then (is-empty fn-actual) testresult) (else (let : testresult [passfail : boolean := (= expected actual)] (copy testresult :passfail passfail :actual actual ) ) ) ) ) :doc "Resolves a testresult") (func security-test : security (security :allowfuncs (funclist file/boolean-write<-file-any file/boolean-write<-file-string file/file-read<-file file/string-read<-file)) :doc "Returns the default security for test case execution. Arguments come from the command line.") (func test : testresult [expected : any-1 actual : any-2] (testresult :code :eq :passfail (= expected actual) :expected expected :actual actual) :context :messages :doc "Test expected equal actual") (func test : testresult [expected : any fn-actual : any<-func-async] (testresult :code :eq :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected equal actual") (func test-false : testresult [actual : any] (testresult :code :false :passfail (= false actual) :expected false :actual actual) :context :messages :doc "Test expected to be false") (func test-false : testresult [fn-actual : any<-func-async] (testresult :code :false :expected false :fn-actual fn-actual) :context :messages :doc "Async Test expected to be false") (func test-gt : testresult [expected : any actual : any] (testresult :code :gt :passfail (> expected actual) :expected expected :actual actual) :context :messages :doc "Test expected greater than actual") (func test-gt : testresult [expected : any fn-actual : any<-func-async] (testresult :code :gt :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected greater than actual") (func test-ne : testresult [expected : any actual : any] (testresult :code :ne :passfail (!= expected actual) :expected expected :actual actual) :context :messages :doc "Test expected not equal actual") (func test-ne : testresult [expected : any fn-actual : any<-func-async] (testresult :code :ne :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected not equal actual") (func test-string : testresult [expected : any actual : any] (testresult :passfail (= (string<-any expected) (string<-any actual)) :expected expected :actual actual) :context :messages :doc "Test that the string version of expected equal actual") (func test-string : testresult [expected : any fn-actual : any<-func-async] (testresult :code :string :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test that the string version of expected equal actual") (func test-true : testresult [actual : any] (testresult :code :true :passfail (= true actual) :expected true :actual actual) :context :messages :doc "Test expected to be true") (func test-true : testresult [fn-actual : any<-func-async] (testresult :code :true :expected true :fn-actual fn-actual) :context :messages :doc "Async Test expected to be true") (func tr<-testdescribe-casename : tr [testdescribe : testdescribe casename : string] (let : tr [describename : string := (:describename testdescribe) result : testresult := (:testresult testdescribe) passfail : boolean := (:passfail result) expected : string := (string<-any (:expected result)) actual : string := (string<-any (:actual result)) prestyle : style := (style<-stylesheet-name stylesheet-test ".preformatted")] (tr (td (p<-passfail passfail)) (td (p :style prestyle :text casename)) (td (p :style prestyle :text describename)) (td (p :style prestyle :text expected)) (td (p :style prestyle :text actual)) ) ) :doc "Returns tr from a testdescribe") (func trlist<-testcase : trlist [testcase : testcase] (let : trlist [describelist : testdescribelist := (:describelist testcase) casename : string := (:casename testcase)] (list<-list : trlist describelist (fn : tr [testdescribe : testdescribe] (tr<-testdescribe-casename testdescribe casename)) ) ) :doc "") (func trlist<-testcaselist : trlist [testcaselist : testcaselist] (list-join<-list : trlist testcaselist trlist<-testcase) :doc "Returns a trlist from a testcaselist.")
vx/test / testcase
Description:
  • Structure to describe a test case
Type Name:
  • testcase
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    passfail
    vx/core/boolean
    false
    false
    testpkg
    vx/core/string
    false
    false
    casename
    vx/core/string
    false
    false
    describelist
    vx/test/testdescribelist
    false
    false
Usage/Test Cases:
Source Code:
  • (type testcase : struct :properties [passfail : boolean testpkg : string casename : string describelist : testdescribelist] :doc "Structure to describe a test case")
vx/test / testcaselist
Description:
  • List of test cases
Type Name:
  • testcaselist
Extends:
  • :list
Default:
Allowed Types:
  • testcase
Usage/Test Cases:
Source Code:
  • (type testcaselist : list :allowtypes [testcase] :doc "List of test cases")
vx/test / testcoveragedetail
Description:
  • Structure to describe a test coverage detail
Type Name:
  • testcoveragedetail
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    constmap
    vx/core/intmap
    false
    false
    funcmap
    vx/core/intmap
    false
    false
    testpkg
    vx/core/string
    false
    false
    typemap
    vx/core/intmap
    false
    false
Usage/Test Cases:
Source Code:
  • (type testcoveragedetail : struct :properties [constmap : intmap funcmap : intmap testpkg : string typemap : intmap] :doc "Structure to describe a test coverage detail")
vx/test / testcoveragenums
Description:
  • Structure to describe a test coverage summary
Type Name:
  • testcoveragenums
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    pct
    vx/core/int
    false
    false
    testpkg
    vx/core/string
    false
    false
    tests
    vx/core/int
    false
    false
    total
    vx/core/int
    false
    false
Usage/Test Cases:
Source Code:
  • (type testcoveragenums : struct :properties [pct : int testpkg : string tests : int total : int] :doc "Structure to describe a test coverage summary")
vx/test / testcoveragesummary
Description:
  • Structure to describe a test coverage summary
Type Name:
  • testcoveragesummary
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    bigospacenums
    vx/test/testcoveragenums
    false
    false
    bigotimenums
    vx/test/testcoveragenums
    false
    false
    constnums
    vx/test/testcoveragenums
    false
    false
    docnums
    vx/test/testcoveragenums
    false
    false
    funcnums
    vx/test/testcoveragenums
    false
    false
    testpkg
    vx/core/string
    false
    false
    totalnums
    vx/test/testcoveragenums
    false
    false
    typenums
    vx/test/testcoveragenums
    false
    false
Usage/Test Cases:
Source Code:
  • (type testcoveragesummary : struct :properties [bigospacenums : testcoveragenums bigotimenums : testcoveragenums constnums : testcoveragenums docnums : testcoveragenums funcnums : testcoveragenums testpkg : string totalnums : testcoveragenums typenums : testcoveragenums] :doc "Structure to describe a test coverage summary")
vx/test / testdescribe
Description:
  • Structure to describe test results
Type Name:
  • testdescribe
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    describename
    vx/core/string
    false
    false
    testpkg
    vx/core/string
    false
    false
    testresult
    vx/test/testresult
    false
    false
Usage/Test Cases:
Source Code:
  • (type testdescribe : struct :properties [describename : string testpkg : string testresult : testresult] :doc "Structure to describe test results")
vx/test / testdescribelist
Description:
  • List of testdescribe
Type Name:
  • testdescribelist
Extends:
  • :list
Default:
Allowed Types:
  • testdescribe
Usage/Test Cases:
Source Code:
  • (type testdescribelist : list :allowtypes [testdescribe] :doc "List of testdescribe")
vx/test / testpackage
Description:
  • Structure to hold all tests for a package
Type Name:
  • testpackage
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    caselist
    vx/test/testcaselist
    false
    false
    coveragedetail
    vx/test/testcoveragedetail
    false
    false
    coveragesummary
    vx/test/testcoveragesummary
    false
    false
    passfail
    vx/core/boolean
    false
    false
    testpkg
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type testpackage : struct :properties [caselist : testcaselist coveragedetail : testcoveragedetail coveragesummary : testcoveragesummary passfail : boolean testpkg : string] :doc "Structure to hold all tests for a package")
vx/test / testpackagelist
Description:
  • List of testpackage
Type Name:
  • testpackagelist
Extends:
  • :list
Default:
Allowed Types:
  • testpackage
Usage/Test Cases:
Source Code:
  • (type testpackagelist : list :allowtypes [testpackage] :doc "List of testpackage")
vx/test / testresult
Description:
  • Structure to hold test results
Type Name:
  • testresult
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    code
    vx/core/string
    false
    false
    passfail
    vx/core/boolean
    false
    false
    expected
    vx/core/any
    false
    false
    actual
    vx/core/any
    false
    false
    fn-actual
    vx/core/any<-func-async
    false
    false
Usage/Test Cases:
Source Code:
  • (type testresult : struct :properties [code : string passfail : boolean expected : any actual : any fn-actual : any<-func-async] :doc "Structure to hold test results")
vx/test / testresultlist
Description:
  • List of test results
Type Name:
  • testresultlist
Extends:
  • :list
Default:
Allowed Types:
  • testresult
Usage/Test Cases:
Source Code:
  • (type testresultlist : list :allowtypes [testresult] :doc "List of test results")
vx/test / stylesheet-test
Description:
  • The default Test Stylesheet
Constant Name:
  • stylesheet-test
Type:
  • vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (const stylesheet-test : stylesheet (stylesheet-loadmap (stylesheet :name "Test Suite" :styles (stylelist (style :name "body" :props (propmap "font-size" "0.9em" "font-family" "sans-serif")) (style :name "details summary" :props (propmap "cursor" "pointer" "display" "inline-flex" "gap" "10px")) (style :name "table" :props (propmap "vertical-align" "top" "border-collapse" "collapse" "margin" "25px 0" "min-width" "400px" "box-shadow" "0 0 20px rgba(0, 0, 0, 0.15)")) (style :name "thead tr" :props (propmap "background-color" "#009879" "color" "#ffffff" "text-align" "left")) (style :name "td" :props (propmap "padding" "10px 10px" "vertical-align" "top")) (style :name "tbody tr" :props (propmap "border-bottom" "1px solid #dddddd")) (style :name "tbody tr:nth-of-type(even)" :props (propmap "background-color" "#f3f3f3")) (style :name "tbody tr:last-of-type" :props (propmap "border-bottom" "2px solid #009879")) (style :name "tbody tr.active-row" :props (propmap "font-weight" "bold" "color" "#009879")) (style :name ".failflag" :props (propmap "background-color" "red" "color" "white" "padding-left" "4px" "padding-right" "4px" "padding-top" "1px" "padding-bottom" "1px")) (style :name ".passflag" :props (propmap "background-color" "green" "color" "white" "padding-left" "4px" "padding-right" "4px" "padding-top" "1px" "padding-bottom" "1px")) (style :name ".coveragenums" :props (propmap "width" "90px")) (style :name ".coveragepct" :props (propmap "text-align" "right")) (style :name ".coveragepctgreen" :props (propmap "background-color" "green" "color" "white" "text-align" "right")) (style :name ".coveragepctred" :props (propmap "background-color" "red" "color" "white" "text-align" "right")) (style :name ".pkgheader" :props (propmap "display" "inline-flex" "gap" "10px")) (style :name ".pkgname" :props (propmap "font-weight" "bold" "width" "180px")) (style :name ".preformatted" :props (propmap "display" "block" "unicode-bidi" "embed" "font-family" "monospace" "white-space" "pre")) ) ) ) :doc "The default Test Stylesheet")
vx/test / context-test
Description:
  • Returns the default context for test case execution. Arguments come from the command line.
Function Name:
  • context-test
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-test : context [args : anylist :...] (context :session (session :user (user :security (security-test)))) :doc "Returns the default context for test case execution. Arguments come from the command line.")
vx/test / div<-testcaselist
Description:
Function Name:
  • div<-testcaselist
Return Type:
  • vx/web/html/div
Arguments:
  • Name
    Type
    Generic
    Description
    testcaselist
    vx/test/testcaselist
Usage/Test Cases:
Source Code:
  • (func div<-testcaselist : div [testcaselist : testcaselist] (div (table :thead (thead (tr (td (p :text "Pass?")) (td (p :text "Name")) (td (p :text "Test")) (td (p :text "Expected")) (td (p :text "Actual")) )) :tbody (tbody (trlist<-testcaselist testcaselist)) ) ) :doc "")
vx/test / div<-testpackage
Description:
  • Retuns a div from a test package
Function Name:
  • div<-testpackage
Return Type:
  • vx/web/html/div
Arguments:
  • Name
    Type
    Generic
    Description
    testpackage
    vx/test/testpackage
Usage/Test Cases:
Source Code:
  • (func div<-testpackage : div [testpackage : testpackage] (let : div [testcoveragesummary : testcoveragesummary := (:coveragesummary testpackage) pkgname : string := (:testpkg testpackage) caselist : testcaselist := (:caselist testpackage) passfail : boolean := (:passfail testpackage) pkgnamestyle : style := (style<-stylesheet-name stylesheet-test ".pkgname") node : div := (div<-testcaselist caselist) nodes : divchildlist := (divchildlist node) p-passfail : p := (p<-passfail passfail) p-pkgname : p := (p :style pkgnamestyle :text pkgname) p-totalnums : p := (p<-testcoveragenums (:totalnums testcoveragesummary)) p-coveragenums : p := (p<-testcoveragenums (:typenums testcoveragesummary)) p-constnums : p := (p<-testcoveragenums (:constnums testcoveragesummary)) p-funcnums : p := (p<-testcoveragenums (:funcnums testcoveragesummary)) p-docnums : p := (p<-testcoveragenums (:docnums testcoveragesummary)) p-bigospacenums : p := (p<-testcoveragenums (:bigospacenums testcoveragesummary)) p-bigotimenums : p := (p<-testcoveragenums (:bigotimenums testcoveragesummary)) summary : divchildlist := (divchildlist p-passfail p-pkgname p-totalnums p-coveragenums p-constnums p-funcnums p-docnums p-bigospacenums p-bigotimenums) details : details := (details :summary summary :nodes nodes)] (div details) ) :doc "Retuns a div from a test package")
vx/test / div<-testpackagelist
Description:
Function Name:
  • div<-testpackagelist
Return Type:
  • vx/web/html/div
Arguments:
  • Name
    Type
    Generic
    Description
    testpackagelist
    vx/test/testpackagelist
Usage/Test Cases:
Source Code:
  • (func div<-testpackagelist : div [testpackagelist : testpackagelist] (let : div [stylepassfail : style := (style<-stylesheet-name stylesheet-test ".passfail") stylepkgname : style := (style<-stylesheet-name stylesheet-test ".pkgname") stylepkgheader : style := (style<-stylesheet-name stylesheet-test ".pkgheader") stylecoveragenum : style := (style<-stylesheet-name stylesheet-test ".coveragenums")] (div (div :style stylepkgheader (p :style stylepassfail :text "Pass?") (p :style stylepkgname :text "Package Name") (p :style stylecoveragenum :text "Coverage") (p :style stylecoveragenum :text "(type)") (p :style stylecoveragenum :text "(const)") (p :style stylecoveragenum :text "(func)") (p :style stylecoveragenum :text ":doc") (p :style stylecoveragenum :text ":bigospace") (p :style stylecoveragenum :text ":bigotime") ) (div (divchildlist<-testpackagelist testpackagelist)) ) ) :doc "")
vx/test / divchildlist<-testpackagelist
Description:
  • Returns a divlist from a testpackagelist.
Function Name:
  • divchildlist<-testpackagelist
Return Type:
  • vx/web/html/divchildlist
Arguments:
  • Name
    Type
    Generic
    Description
    testpackagelist
    vx/test/testpackagelist
Usage/Test Cases:
Source Code:
  • (func divchildlist<-testpackagelist : divchildlist [testpackagelist : testpackagelist] (list<-list testpackagelist div<-testpackage) :doc "Returns a divlist from a testpackagelist.")
vx/test / file-test
Description:
  • Default file location for testsuite.vxlisp
Function Name:
  • file-test
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test-true (boolean-exists<-file (file :name "testsuite.vxlisp" :path "src/test/resources")))
Source Code:
  • (func file-test : file/file (file :name "testsuite.vxlisp" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuite.vxlisp" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuite.vxlisp")
vx/test / file-testnode
Description:
  • Default file location for testsuitenode.vxlisp
Function Name:
  • file-testnode
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test-true (boolean-exists<-file (file :name "testsuitenode.vxlisp" :path "src/test/resources")))
Source Code:
  • (func file-testnode : file/file (file :name "testsuitenode.vxlisp" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuitenode.vxlisp" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuitenode.vxlisp")
vx/test / file-testhtml
Description:
  • Default file location for testsuite.html
Function Name:
  • file-testhtml
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test-true (boolean-exists<-file (file :name "testsuite.html" :path "src/test/resources")))
Source Code:
  • (func file-testhtml : file/file (file :name "testsuite.html" :path "src/test/resources") :test (test-true (boolean-exists<-file (file :name "testsuite.html" :path "src/test/resources"))) :clientserver :server :doc "Default file location for testsuite.html")
vx/test / html<-divtest
Description:
  • Returns html from test div
Function Name:
  • html<-divtest
Return Type:
  • vx/web/html/html
Arguments:
  • Name
    Type
    Generic
    Description
    divtest
    vx/web/html/div
Usage/Test Cases:
Source Code:
  • (func html<-divtest : html [divtest : div] (html :lang "en" :head (head (meta :charset "utf-8") (meta :name "viewport" :content "width=device-width, initial-scale=1.0") (title :text "Test Suite") stylesheet-test) :body (body (div (h1 "Test Suite")) divtest)) :doc "Returns html from test div")
vx/test / p<-passfail
Description:
  • Returns a <p> tag from a passfail boolean value
Function Name:
  • p<-passfail
Return Type:
  • vx/web/html/p
Arguments:
  • Name
    Type
    Generic
    Description
    passfail
    vx/core/boolean
Usage/Test Cases:
Source Code:
  • (func p<-passfail : p [passfail : boolean] (let [text : string := (if passfail "Pass" "Fail") stylename : string := (if passfail ".passflag" ".failflag") style : style := (style<-stylesheet-name stylesheet-test stylename)] (p :style style :text text)) :doc "Returns a <p> tag from a passfail boolean value")
vx/test / p<-testcoveragenums
Description:
  • Returns <p>tests / total (pct%)</p> from testcoveragenums
Function Name:
  • p<-testcoveragenums
Return Type:
  • vx/web/html/p
Arguments:
  • Name
    Type
    Generic
    Description
    nums
    vx/test/testcoveragenums
Usage/Test Cases:
Source Code:
  • (func p<-testcoveragenums : p [nums : testcoveragenums] (p :style (style<-stylesheet-name stylesheet-test ".coveragenums") :text (string (:pct nums) "% " (:tests nums) "/" (:total nums))) :doc "Returns <p>tests / total (pct%)</p> from testcoveragenums")
vx/test / resolve-testcase
Description:
  • Resolves a testcase
Function Name:
  • resolve-testcase
Return Type:
  • vx/test/testcase
Arguments:
  • Name
    Type
    Generic
    Description
    testcase
    vx/test/testcase
Usage/Test Cases:
Source Code:
  • (func resolve-testcase : testcase :async [testcase : testcase] (let [describelist : testdescribelist := (:describelist testcase) resolvedlist : testdescribelist := (resolve-testdescribelist describelist) passfaillist : booleanlist := (list<-list : booleanlist resolvedlist (fn : boolean [testdescribe : testdescribe] (let : boolean [testresult : testresult := (:testresult testdescribe)] (:passfail testresult)))) passfail : boolean := (and passfaillist)] (copy testcase :passfail passfail :describelist resolvedlist)) :doc "Resolves a testcase")
vx/test / resolve-testcaselist
Description:
  • Resolves a testcaselist
Function Name:
  • resolve-testcaselist
Return Type:
  • vx/test/testcaselist
Arguments:
  • Name
    Type
    Generic
    Description
    testcaselist
    vx/test/testcaselist
Usage/Test Cases:
Source Code:
  • (func resolve-testcaselist : testcaselist :async [testcaselist : testcaselist] (list<-list-async testcaselist resolve-testcase) :doc "Resolves a testcaselist")
vx/test / resolve-testdescribe
Description:
  • Resolves a testdescribe
Function Name:
  • resolve-testdescribe
Return Type:
  • vx/test/testdescribe
Arguments:
  • Name
    Type
    Generic
    Description
    testdescribe
    vx/test/testdescribe
Usage/Test Cases:
Source Code:
  • (func resolve-testdescribe : testdescribe :async [testdescribe : testdescribe] (let [testresult : testresult := (:testresult testdescribe) resolved : testresult := (resolve-testresult testresult)] (copy testdescribe :testresult resolved)) :doc "Resolves a testdescribe")
vx/test / resolve-testdescribelist
Description:
  • Resolves a testdescribelist
Function Name:
  • resolve-testdescribelist
Return Type:
  • vx/test/testdescribelist
Arguments:
  • Name
    Type
    Generic
    Description
    testdescribelist
    vx/test/testdescribelist
Usage/Test Cases:
Source Code:
  • (func resolve-testdescribelist : testdescribelist :async [testdescribelist : testdescribelist] (list<-list-async testdescribelist resolve-testdescribe) :doc "Resolves a testdescribelist")
vx/test / resolve-testpackage
Description:
  • Resolves a testpackage
Function Name:
  • resolve-testpackage
Return Type:
  • vx/test/testpackage
Arguments:
  • Name
    Type
    Generic
    Description
    testpackage
    vx/test/testpackage
Usage/Test Cases:
Source Code:
  • (func resolve-testpackage : testpackage :async [testpackage : testpackage] (let [testcaselist : testcaselist := (:caselist testpackage) resolvedlist : testcaselist := (resolve-testcaselist testcaselist) passfaillist : booleanlist := (list<-list : booleanlist resolvedlist (fn : boolean [testcase : testcase] (:passfail testcase) ) ) passfail : boolean := (and passfaillist)] (copy testpackage :passfail passfail :caselist resolvedlist)) :doc "Resolves a testpackage")
vx/test / resolve-testpackagelist
Description:
  • Resolves a testpackagelist
Function Name:
  • resolve-testpackagelist
Return Type:
  • vx/test/testpackagelist
Arguments:
  • Name
    Type
    Generic
    Description
    testpackagelist
    vx/test/testpackagelist
Usage/Test Cases:
Source Code:
  • (func resolve-testpackagelist : testpackagelist :async [testpackagelist : testpackagelist] (list<-list-async testpackagelist resolve-testpackage) :doc "Resolves a testpackagelist")
vx/test / resolve-testresult
Description:
  • Resolves a testresult
Function Name:
  • resolve-testresult
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    testresult
    vx/test/testresult
Usage/Test Cases:
Source Code:
  • (func resolve-testresult : testresult :async [testresult : testresult] (let : testresult [fn-actual : any<-func-async := (:fn-actual testresult) expected : any := (:expected testresult) actual : any := (resolve-async fn-actual)] (if : testresult (then (is-empty fn-actual) testresult) (else (let : testresult [passfail : boolean := (= expected actual)] (copy testresult :passfail passfail :actual actual ) ) ) ) ) :doc "Resolves a testresult")
vx/test / security-test
Description:
  • Returns the default security for test case execution. Arguments come from the command line.
Function Name:
  • security-test
Return Type:
  • vx/core/security
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func security-test : security (security :allowfuncs (funclist file/boolean-write<-file-any file/boolean-write<-file-string file/file-read<-file file/string-read<-file)) :doc "Returns the default security for test case execution. Arguments come from the command line.")
vx/test / test
Description:
  • Test expected equal actual
Function Name:
  • test
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any-1
    actual
    vx/core/any-2
Usage/Test Cases:
Source Code:
  • (func test : testresult [expected : any-1 actual : any-2] (testresult :code :eq :passfail (= expected actual) :expected expected :actual actual) :context :messages :doc "Test expected equal actual")
vx/test / test
Description:
  • Async Test expected equal actual
Function Name:
  • test
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test : testresult [expected : any fn-actual : any<-func-async] (testresult :code :eq :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected equal actual")
vx/test / test-false
Description:
  • Test expected to be false
Function Name:
  • test-false
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    actual
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func test-false : testresult [actual : any] (testresult :code :false :passfail (= false actual) :expected false :actual actual) :context :messages :doc "Test expected to be false")
vx/test / test-false
Description:
  • Async Test expected to be false
Function Name:
  • test-false
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test-false : testresult [fn-actual : any<-func-async] (testresult :code :false :expected false :fn-actual fn-actual) :context :messages :doc "Async Test expected to be false")
vx/test / test-gt
Description:
  • Test expected greater than actual
Function Name:
  • test-gt
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    actual
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func test-gt : testresult [expected : any actual : any] (testresult :code :gt :passfail (> expected actual) :expected expected :actual actual) :context :messages :doc "Test expected greater than actual")
vx/test / test-gt
Description:
  • Async Test expected greater than actual
Function Name:
  • test-gt
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test-gt : testresult [expected : any fn-actual : any<-func-async] (testresult :code :gt :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected greater than actual")
vx/test / test-ne
Description:
  • Test expected not equal actual
Function Name:
  • test-ne
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    actual
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func test-ne : testresult [expected : any actual : any] (testresult :code :ne :passfail (!= expected actual) :expected expected :actual actual) :context :messages :doc "Test expected not equal actual")
vx/test / test-ne
Description:
  • Async Test expected not equal actual
Function Name:
  • test-ne
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test-ne : testresult [expected : any fn-actual : any<-func-async] (testresult :code :ne :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test expected not equal actual")
vx/test / test-string
Description:
  • Test that the string version of expected equal actual
Function Name:
  • test-string
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    actual
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func test-string : testresult [expected : any actual : any] (testresult :passfail (= (string<-any expected) (string<-any actual)) :expected expected :actual actual) :context :messages :doc "Test that the string version of expected equal actual")
vx/test / test-string
Description:
  • Async Test that the string version of expected equal actual
Function Name:
  • test-string
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    expected
    vx/core/any
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test-string : testresult [expected : any fn-actual : any<-func-async] (testresult :code :string :expected expected :fn-actual fn-actual) :context :messages :doc "Async Test that the string version of expected equal actual")
vx/test / test-true
Description:
  • Test expected to be true
Function Name:
  • test-true
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    actual
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func test-true : testresult [actual : any] (testresult :code :true :passfail (= true actual) :expected true :actual actual) :context :messages :doc "Test expected to be true")
vx/test / test-true
Description:
  • Async Test expected to be true
Function Name:
  • test-true
Return Type:
  • vx/test/testresult
Arguments:
  • Name
    Type
    Generic
    Description
    fn-actual
    vx/core/any<-func-async
Usage/Test Cases:
Source Code:
  • (func test-true : testresult [fn-actual : any<-func-async] (testresult :code :true :expected true :fn-actual fn-actual) :context :messages :doc "Async Test expected to be true")
vx/test / tr<-testdescribe-casename
Description:
  • Returns tr from a testdescribe
Function Name:
  • tr<-testdescribe-casename
Return Type:
  • vx/web/html/tr
Arguments:
  • Name
    Type
    Generic
    Description
    testdescribe
    vx/test/testdescribe
    casename
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func tr<-testdescribe-casename : tr [testdescribe : testdescribe casename : string] (let : tr [describename : string := (:describename testdescribe) result : testresult := (:testresult testdescribe) passfail : boolean := (:passfail result) expected : string := (string<-any (:expected result)) actual : string := (string<-any (:actual result)) prestyle : style := (style<-stylesheet-name stylesheet-test ".preformatted")] (tr (td (p<-passfail passfail)) (td (p :style prestyle :text casename)) (td (p :style prestyle :text describename)) (td (p :style prestyle :text expected)) (td (p :style prestyle :text actual)) ) ) :doc "Returns tr from a testdescribe")
vx/test / trlist<-testcase
Description:
Function Name:
  • trlist<-testcase
Return Type:
  • vx/web/html/trlist
Arguments:
  • Name
    Type
    Generic
    Description
    testcase
    vx/test/testcase
Usage/Test Cases:
Source Code:
  • (func trlist<-testcase : trlist [testcase : testcase] (let : trlist [describelist : testdescribelist := (:describelist testcase) casename : string := (:casename testcase)] (list<-list : trlist describelist (fn : tr [testdescribe : testdescribe] (tr<-testdescribe-casename testdescribe casename)) ) ) :doc "")
vx/test / trlist<-testcaselist
Description:
  • Returns a trlist from a testcaselist.
Function Name:
  • trlist<-testcaselist
Return Type:
  • vx/web/html/trlist
Arguments:
  • Name
    Type
    Generic
    Description
    testcaselist
    vx/test/testcaselist
Usage/Test Cases:
Source Code:
  • (func trlist<-testcaselist : trlist [testcaselist : testcaselist] (list-join<-list : trlist testcaselist trlist<-testcase) :doc "Returns a trlist from a testcaselist.")
vx/ui/ui
Description:
  • Universal Ui Element
Package Name:
  • vx/ui/ui
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    coll
    vx/collection
    event
    vx/event
    file
    vx/data/file
    state
    vx/state
Types:
  • align, bounds, cursor, font, fontface, fontfacelist, fontfacemap, fontmap, fontstyle, fontstylemap, image, layout, layoutengine, layoutlist, layoutmap, pin, point, pointtype, style, stylelist, stylemap, stylesheet, styletype, ui, uilist, uimap, uiengine, cursor-pointer
Constants:
  • align-center, align-left, align-right, layout-app, layout-background, layout-button, layout-combobox, layout-else, layout-flow-columns, layout-flow-item, layout-flow-rows, layout-image, layout-label, layout-main, layout-maxpanel, layout-menubar, layout-menudrawer, layout-msgbox, layout-navbar, layout-navdrawer, layout-panel, layout-parallax, layout-statusbar, layout-statusdrawer, layout-text, layout-textentry, layout-titlebar, pin-bottom, pin-center, pin-center-h, pin-center-v, pin-expand, pin-left, pin-right, pin-top, pointtype-absolute, pointtype-relative, pointtype-percent, styletype-custom, styletype-shared, styletype-system
Functions:
  • boolean-print, boolean-writestate<-ui, boolean-writestate<-uiengine, int-selected<-ui, fontfacemap<-fontfacelist, layout<-style, layout<-ui, layout<-ui-layoutengine, layout<-ui-layoutmap-else, layoutengine-readstate, layoutmap<-layoutlist, string-selected<-ui, stringlist<-ui, stringlist-selected<-ui, stylemap<-stylelist, stylesheet-readstate, stylesheet-render, ui<-layout-ui-orig-parent, ui-child<-ui-uid, ui-from<-event, ui-layout<-ui, ui-layout<-ui-layoutengine, ui-layout<-ui-layoutmap-else, ui-layout<-ui-uiengine, ui-readstate<-uid, ui-render, ui-render<-fn-render-ui-orig-parent, ui-render<-ui-orig-parent, ui-selected<-ui, ui-writechild<-ui-child, ui-writechildmap<-ui-childmap, uid-selected<-ui, uiengine-readstate, uiengine-render, uilist<-uimap, uilist-selected<-ui, uimap<-uilist, uimap<-uimap-data, uimap-layout<-uimap-layoutmap-else, uimap-render<-uimap-parent
Source Code:
  • (package vx/ui/ui :libs (lib coll :path vx/collection) (lib event :path vx/event) (lib file :path vx/data/file) (lib state :path vx/state) :doc "Universal Ui Element") (type align : struct :doc "Universal Alignment") (type bounds : struct :properties [left : int right : int top : int bottom : int] :doc "Universal Bounds") (type cursor : struct :doc "Univeral Cursor Type") (type font : struct :properties [name : string fontface : fontface fontsize : int fontstyle : fontstyle] :doc "Univeral Font Type") (type fontface : struct :properties [name : string weight : string unicode : string filelist : file/filelist] :doc "Univeral Font Face Type") (type fontfacelist : list :allowtypes [fontface] :doc "List of fontface") (type fontfacemap : map :allowtypes [fontface] :doc "Map of fontface") (type fontmap : map :allowtypes [font] :doc "Map of font") (type fontstyle : struct :properties [name : string] :doc "Univeral Font Style Type") (type fontstylemap : map :allowtypes [fontstyle] :doc "Map of fontstyle") (type image : struct :properties [name : string label : string file : file/file] :doc "Univeral Image Type") (type layout : struct :properties [name : string fn-layout : ui-render<-ui-orig-parent] :doc "Universal Layout") (type layoutengine : struct :properties [name : string boolean-print : boolean-print layoutmap : layoutmap layoutelse : layout stylesheetrender : stylesheet-render] :doc "Pluggable layoutengine") (type layoutlist : list :allowtypes [layout] :doc "Map of layout") (type layoutmap : map :allowtypes [layout] :doc "Map of layout") (type pin : struct :properties [name : string] :doc "Pin an element") (type point : struct :properties [x : int y : int z : int t : int i : int pointtype : pointtype] :doc "Universal Point") (type pointtype : int :doc "Universal Point Scale") (type style : struct :properties [name : string align : align boundsmargin : bounds boundspadding : bounds color-background : string color-hoverbkgrd : string cursor : cursor font : font hidden : boolean image-background : image layout : layout type : styletype pin : pin pointpos : point pointrotate : point pointsize : point] :doc "Universal Style") (type stylelist : list :allowtypes [style] :doc "Universal Stylelist") (type stylemap : map :allowtypes [style] :doc "Universal Stylemap") (type stylesheet : struct :properties [fontfacemap : fontfacemap stylemap : stylemap] :doc "Universal Stylesheet") (type styletype : struct :doc "Universal Style Type") (type ui : struct :properties [uid : string name : string layout : layout parent : string path : string hidden : boolean selected : boolean selectmulti : boolean style : style stylelist : stylelist eventmap : event/eventmap data : any uimap : uimap] :doc "Universal UI Element") (type uilist : list :allowtypes [ui] :doc "List of ui") (type uimap : map :allowtypes [ui] :mutable :doc "Map of ui") (type uiengine : struct :properties [parentmap : uimap layoutengine : layoutengine stylesheet : stylesheet ui : ui] :doc "Template for uiengine") (type cursor-pointer : cursor) (const align-center : align :doc "Logical Center Align in parent") (const align-left : align :doc "Logical Left Align in parent") (const align-right : align :doc "Logical Right Align in parent") (const layout-app : layout (layout :name "layout-app")) (const layout-background : layout (layout :name "layout-background")) (const layout-button : layout (layout :name "layout-button")) (const layout-combobox : layout (layout :name "layout-combobox")) (const layout-else : layout (layout :name "layout-else")) (const layout-flow-columns : layout (layout :name "layout-flow-columns")) (const layout-flow-item : layout (layout :name "layout-flow-item")) (const layout-flow-rows : layout (layout :name "layout-flow-rows")) (const layout-image : layout (layout :name "layout-image")) (const layout-label : layout (layout :name "layout-label")) (const layout-main : layout (layout :name "layout-main")) (const layout-maxpanel : layout (layout :name "layout-maxpanel")) (const layout-menubar : layout (layout :name "layout-menubar")) (const layout-menudrawer : layout (layout :name "layout-menudrawer")) (const layout-msgbox : layout (layout :name "layout-msgbox")) (const layout-navbar : layout (layout :name "layout-navbar")) (const layout-navdrawer : layout (layout :name "layout-navdrawer")) (const layout-panel : layout (layout :name "layout-panel")) (const layout-parallax : layout (layout :name "layout-parallax")) (const layout-statusbar : layout (layout :name "layout-statusbar")) (const layout-statusdrawer : layout (layout :name "layout-statusdrawer")) (const layout-text : layout (layout :name "layout-text")) (const layout-textentry : layout (layout :name "layout-textentry")) (const layout-titlebar : layout (layout :name "layout-titlebar")) (const pin-bottom : pin) (const pin-center : pin) (const pin-center-h : pin) (const pin-center-v : pin) (const pin-expand : pin) (const pin-left : pin) (const pin-right : pin) (const pin-top : pin) (const pointtype-absolute : pointtype) (const pointtype-relative : pointtype) (const pointtype-percent : pointtype) (const styletype-custom : styletype) (const styletype-shared : styletype) (const styletype-system : styletype) (func boolean-print : boolean [ui : ui] (let : boolean [layoutengine : layoutengine := (layoutengine-readstate) fn-print : boolean-print := (:boolean-print layoutengine)] (fn-print ui)) :context :doc "Create a print ready version of ui") (func boolean-writestate<-ui : boolean [ui : ui] (let : boolean [uid : string := (:uid ui)] (state/boolean-writestate<-mapname-name-value :uimap uid ui)) :context :doc "") (func boolean-writestate<-uiengine : boolean [uiengine : uiengine] (state/boolean-writestate<-name-value :uiengine uiengine) :context :sideeffects "Changes state" :doc "Writes the uiengine to state") (func int-selected<-ui : int [ui : ui] (let : int [uid : string := (string-selected<-ui ui) uidlist : stringlist := (stringlist<-ui ui)] (coll/int<-stringlist-find uidlist uid)) :doc "Returns the position of the currently selected subui") (func fontfacemap<-fontfacelist : fontfacemap [fontfacelist : fontfacelist] (map<-list : fontfacemap fontfacelist (fn : string [fontface : fontface] (:name fontface))) :doc "Returns a fontfacemap from a fontfacelist") (func layout<-style : layout [style : style] (:layout style) :doc "") (func layout<-ui : layout [ui : ui] (let : layout [layoutengine : layoutengine := (layoutengine-readstate)] (layout<-ui-layoutengine ui layoutengine)) :context :doc "Returns the layout from layoutengine that matches the ui") (func layout<-ui-layoutengine : layout [ui : ui layoutengine : layoutengine] (let : layout [layoutmap : layoutmap := (:layoutmap layoutengine) layoutelse : layout := (:layoutelse layoutengine)] (layout<-ui-layoutmap-else ui layoutmap layoutelse)) :doc "Returns the layout from layoutengine that matches the ui") (func layout<-ui-layoutmap-else : layout [ui : ui layoutmap : layoutmap layoutelse : layout] (let : layout [style : style := (:style ui) layout : layout := (layout<-style style) layname : string := (:name layout) layout1 : layout := (any<-map : layout layoutmap layname) layout2 : layout := (if : layout (!-empty layout1) layout1 layoutelse)] layout2) :doc "Returns a layout from a given ui, layoutmap, and layoutelse") (func layoutengine-readstate : layoutengine (let : layoutengine [uiengine : uiengine := (uiengine-readstate)] (:layoutengine uiengine)) :context :doc "Returns the current layoutengine from state") (func layoutmap<-layoutlist : layoutmap [layoutlist : layoutlist] (map<-list : layoutmap layoutlist (fn : string [layout : layout] (:name layout))) :doc "Returns an layoutmap from an layoutlist") (func string-selected<-ui : string [ui : ui] (let : string [selectedui : ui := (ui-selected<-ui ui)] (:uid selectedui)) :doc "") (func stringlist<-ui : stringlist [ui : ui] (let : stringlist [uimap : uimap := (:uimap ui)] (coll/stringlist<-map uimap)) :doc "Return a list of uid of the ui with selected=true") (func stringlist-selected<-ui : stringlist [ui : ui] (let : stringlist [uimap : uimap := (:uimap ui) uilist : uilist := (uilist<-uimap uimap)] (list<-list : stringlist uilist (fn : string [item : ui] (if : string (:selected item) (:uid item) "")))) :doc "Return a list of uid of the ui with selected=true") (func stylemap<-stylelist : stylemap [stylelist : stylelist] (map<-list stylelist (fn : string [style : style] (:name style))) :doc "") (func stylesheet-readstate : stylesheet (let : stylesheet [uiengine : uiengine := (uiengine-readstate)] (:stylesheet uiengine)) :context :doc "Returns the current uiengine from state") (func stylesheet-render : stylesheet [stylesheetui : stylesheet] :sideeffects "Stylesheet will be rendered" :doc "Template for rendering stylesheet") (func ui<-layout-ui-orig-parent : ui [layout : layout uiarg : ui uiorig : ui parent : ui] (let : ui [name : string := (:name layout) fn-layout : ui-render<-ui-orig-parent := (:fn-layout layout) uichg : ui := (fn-layout uiarg uiorig parent)] uichg) :doc "") (func ui-child<-ui-uid : ui [ui : ui uid : string] (let : ui [childmap : uimap := (:uimap ui)] (any<-map : ui childmap uid)) :doc "Returns then named child from a ui.") (func ui-from<-event : ui [event : event/event] (let : ui [uid : string := (:from event)] (ui-readstate<-uid uid)) :context :doc "Returns (:from event) cast as ui") (func ui-layout<-ui : ui [ui : ui] (let : ui [uiengine : uiengine := (uiengine-readstate)] (ui-layout<-ui-uiengine ui uiengine)) :context :doc "Returns a ui with a layout added to each ui.") (func ui-layout<-ui-layoutengine : ui [ui : ui layoutengine : layoutengine] (let : ui [layoutmap : layoutmap := (:layoutmap layoutengine) layoutelse : layout := (:layoutelse layoutengine)] (ui-layout<-ui-layoutmap-else ui layoutmap layoutelse)) :doc "Returns a ui with a layout added to each ui.") (func ui-layout<-ui-layoutmap-else : ui [ui : ui layoutmap : layoutmap layoutelse : layout] (let : ui [uimap : uimap := (:uimap ui) layout1 : layout := (layout<-ui-layoutmap-else ui layoutmap layoutelse) uimap2 : uimap := (uimap-layout<-uimap-layoutmap-else uimap layoutmap layoutelse)] (copy ui :layout layout1 :uimap uimap2)) :doc "Returns a ui with a layout added to each ui.") (func ui-layout<-ui-uiengine : ui [ui : ui uiengine : uiengine] (let : ui [layoutengine : layoutengine := (:layoutengine uiengine)] (ui-layout<-ui-layoutengine ui layoutengine)) :doc "Returns a ui with a layout added to each ui.") (func ui-readstate<-uid : ui [uid : string] (state/any-readstate<-mapname-name : ui :uimap uid) :context :doc "Returns the named ui from state") (func ui-render : ui [uiarg : ui] (ui-render<-ui-orig-parent uiarg (empty ui) (empty ui)) :doc "") (func ui-render<-fn-render-ui-orig-parent : ui [fn-render : ui-render<-ui-orig-parent ui : ui orig : ui parent : ui] (fn-render ui orig parent) :doc "Returns a rendered ui") (func ui-render<-ui-orig-parent : ui [ui : ui orig : ui parent : ui] (if : ui (then (== ui orig) orig) (else (let : ui [uimap : uimap := (:uimap ui) layout : layout := (:layout ui) uiout : ui := (ui<-layout-ui-orig-parent layout ui orig parent)] uiout))) :sideeffects "Alters UI" :doc "Returns a rendered object from a UI Element.") (func ui-selected<-ui : ui [ui : ui] (let : ui [uilist : uilist := (uilist-selected<-ui ui)] (first<-list : ui uilist)) :doc "Returns the ui of the first ui with selected=true") (func ui-writechild<-ui-child : ui [ui : ui child : ui] (let [childid : string := (:uid child) uimap : uimap := (:uimap ui) write : boolean := (boolean-write<-map-name-value uimap childid child)] ui) :doc "Returns the given ui with the child added to uimap") (func ui-writechildmap<-ui-childmap : ui [ui : ui childmap : uimap] (let : ui [workmap : uimap := (map<-map : uimap childmap (fn : ui [key : string value : ui] (ui-writechild<-ui-child ui value)))] ui) :doc "Returns the given ui with the members of childmap added to uimap") (func uid-selected<-ui : string [ui : ui] (let : string [uidlist : stringlist := (stringlist-selected<-ui ui)] (first<-list : string uidlist)) :doc "Returns the uid of the first ui with selected=true") (func uiengine-readstate : uiengine (state/any-readstate<-name : uiengine :uiengine) :context :doc "Returns the current uiengine from state") (func uiengine-render : uiengine [uiengine : uiengine] (let : uiengine [stylesheet : stylesheet := (:stylesheet uiengine) ui : ui := (:ui uiengine) layoutengine : layoutengine := (:layoutengine uiengine) stylesheetrender : stylesheet-render := (:stylesheetrender layoutengine) stylesheetrend : stylesheet := (stylesheetrender stylesheet) uirenderer : ui := (ui-layout<-ui-layoutengine ui layoutengine) uirendered : ui := (ui-render uirenderer)] (copy uiengine :ui uirendered)) :context :doc "Returns a fully rendered ui for a given engine.") (func uilist<-uimap : uilist [uimap : uimap] (list<-map : uilist uimap (fn : ui [key : string item : ui] item)) :doc "") (func uilist-selected<-ui : uilist [uiarg : ui] (let : uilist [uimap : uimap := (:uimap uiarg) uilist : uilist := (uilist<-uimap uimap)] (list<-list : uilist uilist (fn : ui [item : ui] (if : ui (:selected item) item)))) :doc "Return a uilist of the ui with selected=true") (func uimap<-uilist : uimap [uilist : uilist] (map<-list : uimap uilist (fn : string [ui : ui] (:uid ui))) :doc "") (func uimap<-uimap-data : uimap [uimap : uimap data : any] :doc "Template for creating uimap dynamically") (func uimap-layout<-uimap-layoutmap-else : uimap [uimap : uimap layoutmap : layoutmap layoutelse : layout] (map<-map : uimap uimap (fn : ui [key : string ui : ui] (ui-layout<-ui-layoutmap-else ui layoutmap layoutelse))) :doc "Returns a uimap with a renderer added to each ui.") (func uimap-render<-uimap-parent : uimap [uimap : uimap parent : ui] (map<-map : uimap uimap (fn : ui [key : string val : ui] (ui-render<-ui-orig-parent val (empty ui) parent))) :sideeffects "Alters User Interface" :doc "Renders a uimap and returns a rendered uimap.")
vx/ui/ui / align
Description:
  • Universal Alignment
Type Name:
  • align
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type align : struct :doc "Universal Alignment")
vx/ui/ui / bounds
Description:
  • Universal Bounds
Type Name:
  • bounds
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    left
    vx/core/int
    false
    false
    right
    vx/core/int
    false
    false
    top
    vx/core/int
    false
    false
    bottom
    vx/core/int
    false
    false
Usage/Test Cases:
Source Code:
  • (type bounds : struct :properties [left : int right : int top : int bottom : int] :doc "Universal Bounds")
vx/ui/ui / cursor
Description:
  • Univeral Cursor Type
Type Name:
  • cursor
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type cursor : struct :doc "Univeral Cursor Type")
vx/ui/ui / font
Description:
  • Univeral Font Type
Type Name:
  • font
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    fontface
    vx/ui/ui/fontface
    false
    false
    fontsize
    vx/core/int
    false
    false
    fontstyle
    vx/ui/ui/fontstyle
    false
    false
Usage/Test Cases:
Source Code:
  • (type font : struct :properties [name : string fontface : fontface fontsize : int fontstyle : fontstyle] :doc "Univeral Font Type")
vx/ui/ui / fontface
Description:
  • Univeral Font Face Type
Type Name:
  • fontface
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    weight
    vx/core/string
    false
    false
    unicode
    vx/core/string
    false
    false
    filelist
    vx/data/file/filelist
    false
    false
Usage/Test Cases:
Source Code:
  • (type fontface : struct :properties [name : string weight : string unicode : string filelist : file/filelist] :doc "Univeral Font Face Type")
vx/ui/ui / fontfacelist
Description:
  • List of fontface
Type Name:
  • fontfacelist
Extends:
  • :list
Default:
Allowed Types:
  • fontface
Usage/Test Cases:
Source Code:
  • (type fontfacelist : list :allowtypes [fontface] :doc "List of fontface")
vx/ui/ui / fontfacemap
Description:
  • Map of fontface
Type Name:
  • fontfacemap
Extends:
  • :map
Default:
Allowed Types:
  • fontface
Usage/Test Cases:
Source Code:
  • (type fontfacemap : map :allowtypes [fontface] :doc "Map of fontface")
vx/ui/ui / fontmap
Description:
  • Map of font
Type Name:
  • fontmap
Extends:
  • :map
Default:
Allowed Types:
  • font
Usage/Test Cases:
Source Code:
  • (type fontmap : map :allowtypes [font] :doc "Map of font")
vx/ui/ui / fontstyle
Description:
  • Univeral Font Style Type
Type Name:
  • fontstyle
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type fontstyle : struct :properties [name : string] :doc "Univeral Font Style Type")
vx/ui/ui / fontstylemap
Description:
  • Map of fontstyle
Type Name:
  • fontstylemap
Extends:
  • :map
Default:
Allowed Types:
  • fontstyle
Usage/Test Cases:
Source Code:
  • (type fontstylemap : map :allowtypes [fontstyle] :doc "Map of fontstyle")
vx/ui/ui / image
Description:
  • Univeral Image Type
Type Name:
  • image
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    label
    vx/core/string
    false
    false
    file
    vx/data/file/file
    false
    false
Usage/Test Cases:
Source Code:
  • (type image : struct :properties [name : string label : string file : file/file] :doc "Univeral Image Type")
vx/ui/ui / layout
Description:
  • Universal Layout
Type Name:
  • layout
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    fn-layout
    vx/ui/ui/ui-render<-ui-orig-parent
    false
    false
Usage/Test Cases:
Source Code:
  • (type layout : struct :properties [name : string fn-layout : ui-render<-ui-orig-parent] :doc "Universal Layout")
vx/ui/ui / layoutengine
Description:
  • Pluggable layoutengine
Type Name:
  • layoutengine
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    boolean-print
    vx/ui/ui/boolean-print
    false
    false
    layoutmap
    vx/ui/ui/layoutmap
    false
    false
    layoutelse
    vx/ui/ui/layout
    false
    false
    stylesheetrender
    vx/ui/ui/stylesheet-render
    false
    false
Usage/Test Cases:
Source Code:
  • (type layoutengine : struct :properties [name : string boolean-print : boolean-print layoutmap : layoutmap layoutelse : layout stylesheetrender : stylesheet-render] :doc "Pluggable layoutengine")
vx/ui/ui / layoutlist
Description:
  • Map of layout
Type Name:
  • layoutlist
Extends:
  • :list
Default:
Allowed Types:
  • layout
Usage/Test Cases:
Source Code:
  • (type layoutlist : list :allowtypes [layout] :doc "Map of layout")
vx/ui/ui / layoutmap
Description:
  • Map of layout
Type Name:
  • layoutmap
Extends:
  • :map
Default:
Allowed Types:
  • layout
Usage/Test Cases:
Source Code:
  • (type layoutmap : map :allowtypes [layout] :doc "Map of layout")
vx/ui/ui / pin
Description:
  • Pin an element
Type Name:
  • pin
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
Usage/Test Cases:
Source Code:
  • (type pin : struct :properties [name : string] :doc "Pin an element")
vx/ui/ui / point
Description:
  • Universal Point
Type Name:
  • point
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    x
    vx/core/int
    false
    false
    y
    vx/core/int
    false
    false
    z
    vx/core/int
    false
    false
    t
    vx/core/int
    false
    false
    i
    vx/core/int
    false
    false
    pointtype
    vx/ui/ui/pointtype
    false
    false
Usage/Test Cases:
Source Code:
  • (type point : struct :properties [x : int y : int z : int t : int i : int pointtype : pointtype] :doc "Universal Point")
vx/ui/ui / pointtype
Description:
  • Universal Point Scale
Type Name:
  • pointtype
Extends:
  • :int
Default:
Usage/Test Cases:
Source Code:
  • (type pointtype : int :doc "Universal Point Scale")
vx/ui/ui / style
Description:
  • Universal Style
Type Name:
  • style
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    name
    vx/core/string
    false
    false
    align
    vx/ui/ui/align
    false
    false
    boundsmargin
    vx/ui/ui/bounds
    false
    false
    boundspadding
    vx/ui/ui/bounds
    false
    false
    color-background
    vx/core/string
    false
    false
    color-hoverbkgrd
    vx/core/string
    false
    false
    cursor
    vx/ui/ui/cursor
    false
    false
    font
    vx/ui/ui/font
    false
    false
    hidden
    vx/core/boolean
    false
    false
    image-background
    vx/ui/ui/image
    false
    false
    layout
    vx/ui/ui/layout
    false
    false
    type
    vx/ui/ui/styletype
    false
    false
    pin
    vx/ui/ui/pin
    false
    false
    pointpos
    vx/ui/ui/point
    false
    false
    pointrotate
    vx/ui/ui/point
    false
    false
    pointsize
    vx/ui/ui/point
    false
    false
Usage/Test Cases:
Source Code:
  • (type style : struct :properties [name : string align : align boundsmargin : bounds boundspadding : bounds color-background : string color-hoverbkgrd : string cursor : cursor font : font hidden : boolean image-background : image layout : layout type : styletype pin : pin pointpos : point pointrotate : point pointsize : point] :doc "Universal Style")
vx/ui/ui / stylelist
Description:
  • Universal Stylelist
Type Name:
  • stylelist
Extends:
  • :list
Default:
Allowed Types:
  • style
Usage/Test Cases:
Source Code:
  • (type stylelist : list :allowtypes [style] :doc "Universal Stylelist")
vx/ui/ui / stylemap
Description:
  • Universal Stylemap
Type Name:
  • stylemap
Extends:
  • :map
Default:
Allowed Types:
  • style
Usage/Test Cases:
Source Code:
  • (type stylemap : map :allowtypes [style] :doc "Universal Stylemap")
vx/ui/ui / stylesheet
Description:
  • Universal Stylesheet
Type Name:
  • stylesheet
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    fontfacemap
    vx/ui/ui/fontfacemap
    false
    false
    stylemap
    vx/ui/ui/stylemap
    false
    false
Usage/Test Cases:
Source Code:
  • (type stylesheet : struct :properties [fontfacemap : fontfacemap stylemap : stylemap] :doc "Universal Stylesheet")
vx/ui/ui / styletype
Description:
  • Universal Style Type
Type Name:
  • styletype
Extends:
  • :struct
Default:
Usage/Test Cases:
Source Code:
  • (type styletype : struct :doc "Universal Style Type")
vx/ui/ui / ui
Description:
  • Universal UI Element
Type Name:
  • ui
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    uid
    vx/core/string
    false
    false
    name
    vx/core/string
    false
    false
    layout
    vx/ui/ui/layout
    false
    false
    parent
    vx/core/string
    false
    false
    path
    vx/core/string
    false
    false
    hidden
    vx/core/boolean
    false
    false
    selected
    vx/core/boolean
    false
    false
    selectmulti
    vx/core/boolean
    false
    false
    style
    vx/ui/ui/style
    false
    false
    stylelist
    vx/ui/ui/stylelist
    false
    false
    eventmap
    vx/event/eventmap
    false
    false
    data
    vx/core/any
    false
    false
    uimap
    vx/ui/ui/uimap
    false
    false
Usage/Test Cases:
Source Code:
  • (type ui : struct :properties [uid : string name : string layout : layout parent : string path : string hidden : boolean selected : boolean selectmulti : boolean style : style stylelist : stylelist eventmap : event/eventmap data : any uimap : uimap] :doc "Universal UI Element")
vx/ui/ui / uilist
Description:
  • List of ui
Type Name:
  • uilist
Extends:
  • :list
Default:
Allowed Types:
  • ui
Usage/Test Cases:
Source Code:
  • (type uilist : list :allowtypes [ui] :doc "List of ui")
vx/ui/ui / uimap
Description:
  • Map of ui
Type Name:
  • uimap
Extends:
  • :map
Default:
Allowed Types:
  • ui
Usage/Test Cases:
Source Code:
  • (type uimap : map :allowtypes [ui] :mutable :doc "Map of ui")
vx/ui/ui / uiengine
Description:
  • Template for uiengine
Type Name:
  • uiengine
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    parentmap
    vx/ui/ui/uimap
    false
    false
    layoutengine
    vx/ui/ui/layoutengine
    false
    false
    stylesheet
    vx/ui/ui/stylesheet
    false
    false
    ui
    vx/ui/ui/ui
    false
    false
Usage/Test Cases:
Source Code:
  • (type uiengine : struct :properties [parentmap : uimap layoutengine : layoutengine stylesheet : stylesheet ui : ui] :doc "Template for uiengine")
vx/ui/ui / cursor-pointer
Description:
Type Name:
  • cursor-pointer
Extends:
  • :cursor
Default:
Usage/Test Cases:
Source Code:
  • (type cursor-pointer : cursor)
vx/ui/ui / align-center
Description:
  • Logical Center Align in parent
Constant Name:
  • align-center
Type:
  • vx/ui/ui/align
Usage/Test Cases:
Source Code:
  • (const align-center : align :doc "Logical Center Align in parent")
vx/ui/ui / align-left
Description:
  • Logical Left Align in parent
Constant Name:
  • align-left
Type:
  • vx/ui/ui/align
Usage/Test Cases:
Source Code:
  • (const align-left : align :doc "Logical Left Align in parent")
vx/ui/ui / align-right
Description:
  • Logical Right Align in parent
Constant Name:
  • align-right
Type:
  • vx/ui/ui/align
Usage/Test Cases:
Source Code:
  • (const align-right : align :doc "Logical Right Align in parent")
vx/ui/ui / layout-app
Description:
Constant Name:
  • layout-app
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-app : layout (layout :name "layout-app"))
vx/ui/ui / layout-background
Description:
Constant Name:
  • layout-background
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-background : layout (layout :name "layout-background"))
vx/ui/ui / layout-button
Description:
Constant Name:
  • layout-button
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-button : layout (layout :name "layout-button"))
vx/ui/ui / layout-combobox
Description:
Constant Name:
  • layout-combobox
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-combobox : layout (layout :name "layout-combobox"))
vx/ui/ui / layout-else
Description:
Constant Name:
  • layout-else
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-else : layout (layout :name "layout-else"))
vx/ui/ui / layout-flow-columns
Description:
Constant Name:
  • layout-flow-columns
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-flow-columns : layout (layout :name "layout-flow-columns"))
vx/ui/ui / layout-flow-item
Description:
Constant Name:
  • layout-flow-item
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-flow-item : layout (layout :name "layout-flow-item"))
vx/ui/ui / layout-flow-rows
Description:
Constant Name:
  • layout-flow-rows
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-flow-rows : layout (layout :name "layout-flow-rows"))
vx/ui/ui / layout-image
Description:
Constant Name:
  • layout-image
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-image : layout (layout :name "layout-image"))
vx/ui/ui / layout-label
Description:
Constant Name:
  • layout-label
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-label : layout (layout :name "layout-label"))
vx/ui/ui / layout-main
Description:
Constant Name:
  • layout-main
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-main : layout (layout :name "layout-main"))
vx/ui/ui / layout-maxpanel
Description:
Constant Name:
  • layout-maxpanel
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-maxpanel : layout (layout :name "layout-maxpanel"))
vx/ui/ui / layout-menubar
Description:
Constant Name:
  • layout-menubar
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-menubar : layout (layout :name "layout-menubar"))
vx/ui/ui / layout-menudrawer
Description:
Constant Name:
  • layout-menudrawer
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-menudrawer : layout (layout :name "layout-menudrawer"))
vx/ui/ui / layout-msgbox
Description:
Constant Name:
  • layout-msgbox
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-msgbox : layout (layout :name "layout-msgbox"))
vx/ui/ui / layout-navbar
Description:
Constant Name:
  • layout-navbar
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-navbar : layout (layout :name "layout-navbar"))
vx/ui/ui / layout-navdrawer
Description:
Constant Name:
  • layout-navdrawer
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-navdrawer : layout (layout :name "layout-navdrawer"))
vx/ui/ui / layout-panel
Description:
Constant Name:
  • layout-panel
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-panel : layout (layout :name "layout-panel"))
vx/ui/ui / layout-parallax
Description:
Constant Name:
  • layout-parallax
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-parallax : layout (layout :name "layout-parallax"))
vx/ui/ui / layout-statusbar
Description:
Constant Name:
  • layout-statusbar
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-statusbar : layout (layout :name "layout-statusbar"))
vx/ui/ui / layout-statusdrawer
Description:
Constant Name:
  • layout-statusdrawer
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-statusdrawer : layout (layout :name "layout-statusdrawer"))
vx/ui/ui / layout-text
Description:
Constant Name:
  • layout-text
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-text : layout (layout :name "layout-text"))
vx/ui/ui / layout-textentry
Description:
Constant Name:
  • layout-textentry
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-textentry : layout (layout :name "layout-textentry"))
vx/ui/ui / layout-titlebar
Description:
Constant Name:
  • layout-titlebar
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-titlebar : layout (layout :name "layout-titlebar"))
vx/ui/ui / pin-bottom
Description:
Constant Name:
  • pin-bottom
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-bottom : pin)
vx/ui/ui / pin-center
Description:
Constant Name:
  • pin-center
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-center : pin)
vx/ui/ui / pin-center-h
Description:
Constant Name:
  • pin-center-h
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-center-h : pin)
vx/ui/ui / pin-center-v
Description:
Constant Name:
  • pin-center-v
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-center-v : pin)
vx/ui/ui / pin-expand
Description:
Constant Name:
  • pin-expand
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-expand : pin)
vx/ui/ui / pin-left
Description:
Constant Name:
  • pin-left
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-left : pin)
vx/ui/ui / pin-right
Description:
Constant Name:
  • pin-right
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-right : pin)
vx/ui/ui / pin-top
Description:
Constant Name:
  • pin-top
Type:
  • vx/ui/ui/pin
Usage/Test Cases:
Source Code:
  • (const pin-top : pin)
vx/ui/ui / pointtype-absolute
Description:
Constant Name:
  • pointtype-absolute
Type:
  • vx/ui/ui/pointtype
Usage/Test Cases:
Source Code:
  • (const pointtype-absolute : pointtype)
vx/ui/ui / pointtype-relative
Description:
Constant Name:
  • pointtype-relative
Type:
  • vx/ui/ui/pointtype
Usage/Test Cases:
Source Code:
  • (const pointtype-relative : pointtype)
vx/ui/ui / pointtype-percent
Description:
Constant Name:
  • pointtype-percent
Type:
  • vx/ui/ui/pointtype
Usage/Test Cases:
Source Code:
  • (const pointtype-percent : pointtype)
vx/ui/ui / styletype-custom
Description:
Constant Name:
  • styletype-custom
Type:
  • vx/ui/ui/styletype
Usage/Test Cases:
Source Code:
  • (const styletype-custom : styletype)
vx/ui/ui / styletype-shared
Description:
Constant Name:
  • styletype-shared
Type:
  • vx/ui/ui/styletype
Usage/Test Cases:
Source Code:
  • (const styletype-shared : styletype)
vx/ui/ui / styletype-system
Description:
Constant Name:
  • styletype-system
Type:
  • vx/ui/ui/styletype
Usage/Test Cases:
Source Code:
  • (const styletype-system : styletype)
vx/ui/ui / boolean-print
Description:
  • Create a print ready version of ui
Function Name:
  • boolean-print
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func boolean-print : boolean [ui : ui] (let : boolean [layoutengine : layoutengine := (layoutengine-readstate) fn-print : boolean-print := (:boolean-print layoutengine)] (fn-print ui)) :context :doc "Create a print ready version of ui")
vx/ui/ui / boolean-writestate<-ui
Description:
Function Name:
  • boolean-writestate<-ui
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func boolean-writestate<-ui : boolean [ui : ui] (let : boolean [uid : string := (:uid ui)] (state/boolean-writestate<-mapname-name-value :uimap uid ui)) :context :doc "")
vx/ui/ui / boolean-writestate<-uiengine
Description:
  • Writes the uiengine to state
Function Name:
  • boolean-writestate<-uiengine
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    uiengine
    vx/ui/ui/uiengine
Usage/Test Cases:
Source Code:
  • (func boolean-writestate<-uiengine : boolean [uiengine : uiengine] (state/boolean-writestate<-name-value :uiengine uiengine) :context :sideeffects "Changes state" :doc "Writes the uiengine to state")
vx/ui/ui / int-selected<-ui
Description:
  • Returns the position of the currently selected subui
Function Name:
  • int-selected<-ui
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func int-selected<-ui : int [ui : ui] (let : int [uid : string := (string-selected<-ui ui) uidlist : stringlist := (stringlist<-ui ui)] (coll/int<-stringlist-find uidlist uid)) :doc "Returns the position of the currently selected subui")
vx/ui/ui / fontfacemap<-fontfacelist
Description:
  • Returns a fontfacemap from a fontfacelist
Function Name:
  • fontfacemap<-fontfacelist
Return Type:
  • vx/ui/ui/fontfacemap
Arguments:
  • Name
    Type
    Generic
    Description
    fontfacelist
    vx/ui/ui/fontfacelist
Usage/Test Cases:
Source Code:
  • (func fontfacemap<-fontfacelist : fontfacemap [fontfacelist : fontfacelist] (map<-list : fontfacemap fontfacelist (fn : string [fontface : fontface] (:name fontface))) :doc "Returns a fontfacemap from a fontfacelist")
vx/ui/ui / layout<-style
Description:
Function Name:
  • layout<-style
Return Type:
  • vx/ui/ui/layout
Arguments:
  • Name
    Type
    Generic
    Description
    style
    vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (func layout<-style : layout [style : style] (:layout style) :doc "")
vx/ui/ui / layout<-ui
Description:
  • Returns the layout from layoutengine that matches the ui
Function Name:
  • layout<-ui
Return Type:
  • vx/ui/ui/layout
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func layout<-ui : layout [ui : ui] (let : layout [layoutengine : layoutengine := (layoutengine-readstate)] (layout<-ui-layoutengine ui layoutengine)) :context :doc "Returns the layout from layoutengine that matches the ui")
vx/ui/ui / layout<-ui-layoutengine
Description:
  • Returns the layout from layoutengine that matches the ui
Function Name:
  • layout<-ui-layoutengine
Return Type:
  • vx/ui/ui/layout
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    layoutengine
    vx/ui/ui/layoutengine
Usage/Test Cases:
Source Code:
  • (func layout<-ui-layoutengine : layout [ui : ui layoutengine : layoutengine] (let : layout [layoutmap : layoutmap := (:layoutmap layoutengine) layoutelse : layout := (:layoutelse layoutengine)] (layout<-ui-layoutmap-else ui layoutmap layoutelse)) :doc "Returns the layout from layoutengine that matches the ui")
vx/ui/ui / layout<-ui-layoutmap-else
Description:
  • Returns a layout from a given ui, layoutmap, and layoutelse
Function Name:
  • layout<-ui-layoutmap-else
Return Type:
  • vx/ui/ui/layout
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    layoutmap
    vx/ui/ui/layoutmap
    layoutelse
    vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (func layout<-ui-layoutmap-else : layout [ui : ui layoutmap : layoutmap layoutelse : layout] (let : layout [style : style := (:style ui) layout : layout := (layout<-style style) layname : string := (:name layout) layout1 : layout := (any<-map : layout layoutmap layname) layout2 : layout := (if : layout (!-empty layout1) layout1 layoutelse)] layout2) :doc "Returns a layout from a given ui, layoutmap, and layoutelse")
vx/ui/ui / layoutengine-readstate
Description:
  • Returns the current layoutengine from state
Function Name:
  • layoutengine-readstate
Return Type:
  • vx/ui/ui/layoutengine
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func layoutengine-readstate : layoutengine (let : layoutengine [uiengine : uiengine := (uiengine-readstate)] (:layoutengine uiengine)) :context :doc "Returns the current layoutengine from state")
vx/ui/ui / layoutmap<-layoutlist
Description:
  • Returns an layoutmap from an layoutlist
Function Name:
  • layoutmap<-layoutlist
Return Type:
  • vx/ui/ui/layoutmap
Arguments:
  • Name
    Type
    Generic
    Description
    layoutlist
    vx/ui/ui/layoutlist
Usage/Test Cases:
Source Code:
  • (func layoutmap<-layoutlist : layoutmap [layoutlist : layoutlist] (map<-list : layoutmap layoutlist (fn : string [layout : layout] (:name layout))) :doc "Returns an layoutmap from an layoutlist")
vx/ui/ui / string-selected<-ui
Description:
Function Name:
  • string-selected<-ui
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func string-selected<-ui : string [ui : ui] (let : string [selectedui : ui := (ui-selected<-ui ui)] (:uid selectedui)) :doc "")
vx/ui/ui / stringlist<-ui
Description:
  • Return a list of uid of the ui with selected=true
Function Name:
  • stringlist<-ui
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func stringlist<-ui : stringlist [ui : ui] (let : stringlist [uimap : uimap := (:uimap ui)] (coll/stringlist<-map uimap)) :doc "Return a list of uid of the ui with selected=true")
vx/ui/ui / stringlist-selected<-ui
Description:
  • Return a list of uid of the ui with selected=true
Function Name:
  • stringlist-selected<-ui
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func stringlist-selected<-ui : stringlist [ui : ui] (let : stringlist [uimap : uimap := (:uimap ui) uilist : uilist := (uilist<-uimap uimap)] (list<-list : stringlist uilist (fn : string [item : ui] (if : string (:selected item) (:uid item) "")))) :doc "Return a list of uid of the ui with selected=true")
vx/ui/ui / stylemap<-stylelist
Description:
Function Name:
  • stylemap<-stylelist
Return Type:
  • vx/ui/ui/stylemap
Arguments:
  • Name
    Type
    Generic
    Description
    stylelist
    vx/ui/ui/stylelist
Usage/Test Cases:
Source Code:
  • (func stylemap<-stylelist : stylemap [stylelist : stylelist] (map<-list stylelist (fn : string [style : style] (:name style))) :doc "")
vx/ui/ui / stylesheet-readstate
Description:
  • Returns the current uiengine from state
Function Name:
  • stylesheet-readstate
Return Type:
  • vx/ui/ui/stylesheet
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func stylesheet-readstate : stylesheet (let : stylesheet [uiengine : uiengine := (uiengine-readstate)] (:stylesheet uiengine)) :context :doc "Returns the current uiengine from state")
vx/ui/ui / stylesheet-render
Description:
  • Template for rendering stylesheet
Function Name:
  • stylesheet-render
Return Type:
  • vx/ui/ui/stylesheet
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheetui
    vx/ui/ui/stylesheet
Usage/Test Cases:
Source Code:
  • (func stylesheet-render : stylesheet [stylesheetui : stylesheet] :sideeffects "Stylesheet will be rendered" :doc "Template for rendering stylesheet")
vx/ui/ui / ui<-layout-ui-orig-parent
Description:
Function Name:
  • ui<-layout-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    layout
    vx/ui/ui/layout
    uiarg
    vx/ui/ui/ui
    uiorig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui<-layout-ui-orig-parent : ui [layout : layout uiarg : ui uiorig : ui parent : ui] (let : ui [name : string := (:name layout) fn-layout : ui-render<-ui-orig-parent := (:fn-layout layout) uichg : ui := (fn-layout uiarg uiorig parent)] uichg) :doc "")
vx/ui/ui / ui-child<-ui-uid
Description:
  • Returns then named child from a ui.
Function Name:
  • ui-child<-ui-uid
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    uid
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-child<-ui-uid : ui [ui : ui uid : string] (let : ui [childmap : uimap := (:uimap ui)] (any<-map : ui childmap uid)) :doc "Returns then named child from a ui.")
vx/ui/ui / ui-from<-event
Description:
  • Returns (:from event) cast as ui
Function Name:
  • ui-from<-event
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func ui-from<-event : ui [event : event/event] (let : ui [uid : string := (:from event)] (ui-readstate<-uid uid)) :context :doc "Returns (:from event) cast as ui")
vx/ui/ui / ui-layout<-ui
Description:
  • Returns a ui with a layout added to each ui.
Function Name:
  • ui-layout<-ui
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-layout<-ui : ui [ui : ui] (let : ui [uiengine : uiengine := (uiengine-readstate)] (ui-layout<-ui-uiengine ui uiengine)) :context :doc "Returns a ui with a layout added to each ui.")
vx/ui/ui / ui-layout<-ui-layoutengine
Description:
  • Returns a ui with a layout added to each ui.
Function Name:
  • ui-layout<-ui-layoutengine
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    layoutengine
    vx/ui/ui/layoutengine
Usage/Test Cases:
Source Code:
  • (func ui-layout<-ui-layoutengine : ui [ui : ui layoutengine : layoutengine] (let : ui [layoutmap : layoutmap := (:layoutmap layoutengine) layoutelse : layout := (:layoutelse layoutengine)] (ui-layout<-ui-layoutmap-else ui layoutmap layoutelse)) :doc "Returns a ui with a layout added to each ui.")
vx/ui/ui / ui-layout<-ui-layoutmap-else
Description:
  • Returns a ui with a layout added to each ui.
Function Name:
  • ui-layout<-ui-layoutmap-else
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    layoutmap
    vx/ui/ui/layoutmap
    layoutelse
    vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (func ui-layout<-ui-layoutmap-else : ui [ui : ui layoutmap : layoutmap layoutelse : layout] (let : ui [uimap : uimap := (:uimap ui) layout1 : layout := (layout<-ui-layoutmap-else ui layoutmap layoutelse) uimap2 : uimap := (uimap-layout<-uimap-layoutmap-else uimap layoutmap layoutelse)] (copy ui :layout layout1 :uimap uimap2)) :doc "Returns a ui with a layout added to each ui.")
vx/ui/ui / ui-layout<-ui-uiengine
Description:
  • Returns a ui with a layout added to each ui.
Function Name:
  • ui-layout<-ui-uiengine
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    uiengine
    vx/ui/ui/uiengine
Usage/Test Cases:
Source Code:
  • (func ui-layout<-ui-uiengine : ui [ui : ui uiengine : uiengine] (let : ui [layoutengine : layoutengine := (:layoutengine uiengine)] (ui-layout<-ui-layoutengine ui layoutengine)) :doc "Returns a ui with a layout added to each ui.")
vx/ui/ui / ui-readstate<-uid
Description:
  • Returns the named ui from state
Function Name:
  • ui-readstate<-uid
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-readstate<-uid : ui [uid : string] (state/any-readstate<-mapname-name : ui :uimap uid) :context :doc "Returns the named ui from state")
vx/ui/ui / ui-render
Description:
Function Name:
  • ui-render
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uiarg
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render : ui [uiarg : ui] (ui-render<-ui-orig-parent uiarg (empty ui) (empty ui)) :doc "")
vx/ui/ui / ui-render<-fn-render-ui-orig-parent
Description:
  • Returns a rendered ui
Function Name:
  • ui-render<-fn-render-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    fn-render
    vx/ui/ui/ui-render<-ui-orig-parent
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render<-fn-render-ui-orig-parent : ui [fn-render : ui-render<-ui-orig-parent ui : ui orig : ui parent : ui] (fn-render ui orig parent) :doc "Returns a rendered ui")
vx/ui/ui / ui-render<-ui-orig-parent
Description:
  • Returns a rendered object from a UI Element.
Function Name:
  • ui-render<-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render<-ui-orig-parent : ui [ui : ui orig : ui parent : ui] (if : ui (then (== ui orig) orig) (else (let : ui [uimap : uimap := (:uimap ui) layout : layout := (:layout ui) uiout : ui := (ui<-layout-ui-orig-parent layout ui orig parent)] uiout))) :sideeffects "Alters UI" :doc "Returns a rendered object from a UI Element.")
vx/ui/ui / ui-selected<-ui
Description:
  • Returns the ui of the first ui with selected=true
Function Name:
  • ui-selected<-ui
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-selected<-ui : ui [ui : ui] (let : ui [uilist : uilist := (uilist-selected<-ui ui)] (first<-list : ui uilist)) :doc "Returns the ui of the first ui with selected=true")
vx/ui/ui / ui-writechild<-ui-child
Description:
  • Returns the given ui with the child added to uimap
Function Name:
  • ui-writechild<-ui-child
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    child
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-writechild<-ui-child : ui [ui : ui child : ui] (let [childid : string := (:uid child) uimap : uimap := (:uimap ui) write : boolean := (boolean-write<-map-name-value uimap childid child)] ui) :doc "Returns the given ui with the child added to uimap")
vx/ui/ui / ui-writechildmap<-ui-childmap
Description:
  • Returns the given ui with the members of childmap added to uimap
Function Name:
  • ui-writechildmap<-ui-childmap
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    childmap
    vx/ui/ui/uimap
Usage/Test Cases:
Source Code:
  • (func ui-writechildmap<-ui-childmap : ui [ui : ui childmap : uimap] (let : ui [workmap : uimap := (map<-map : uimap childmap (fn : ui [key : string value : ui] (ui-writechild<-ui-child ui value)))] ui) :doc "Returns the given ui with the members of childmap added to uimap")
vx/ui/ui / uid-selected<-ui
Description:
  • Returns the uid of the first ui with selected=true
Function Name:
  • uid-selected<-ui
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func uid-selected<-ui : string [ui : ui] (let : string [uidlist : stringlist := (stringlist-selected<-ui ui)] (first<-list : string uidlist)) :doc "Returns the uid of the first ui with selected=true")
vx/ui/ui / uiengine-readstate
Description:
  • Returns the current uiengine from state
Function Name:
  • uiengine-readstate
Return Type:
  • vx/ui/ui/uiengine
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func uiengine-readstate : uiengine (state/any-readstate<-name : uiengine :uiengine) :context :doc "Returns the current uiengine from state")
vx/ui/ui / uiengine-render
Description:
  • Returns a fully rendered ui for a given engine.
Function Name:
  • uiengine-render
Return Type:
  • vx/ui/ui/uiengine
Arguments:
  • Name
    Type
    Generic
    Description
    uiengine
    vx/ui/ui/uiengine
Usage/Test Cases:
Source Code:
  • (func uiengine-render : uiengine [uiengine : uiengine] (let : uiengine [stylesheet : stylesheet := (:stylesheet uiengine) ui : ui := (:ui uiengine) layoutengine : layoutengine := (:layoutengine uiengine) stylesheetrender : stylesheet-render := (:stylesheetrender layoutengine) stylesheetrend : stylesheet := (stylesheetrender stylesheet) uirenderer : ui := (ui-layout<-ui-layoutengine ui layoutengine) uirendered : ui := (ui-render uirenderer)] (copy uiengine :ui uirendered)) :context :doc "Returns a fully rendered ui for a given engine.")
vx/ui/ui / uilist<-uimap
Description:
Function Name:
  • uilist<-uimap
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    uimap
    vx/ui/ui/uimap
Usage/Test Cases:
Source Code:
  • (func uilist<-uimap : uilist [uimap : uimap] (list<-map : uilist uimap (fn : ui [key : string item : ui] item)) :doc "")
vx/ui/ui / uilist-selected<-ui
Description:
  • Return a uilist of the ui with selected=true
Function Name:
  • uilist-selected<-ui
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    uiarg
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func uilist-selected<-ui : uilist [uiarg : ui] (let : uilist [uimap : uimap := (:uimap uiarg) uilist : uilist := (uilist<-uimap uimap)] (list<-list : uilist uilist (fn : ui [item : ui] (if : ui (:selected item) item)))) :doc "Return a uilist of the ui with selected=true")
vx/ui/ui / uimap<-uilist
Description:
Function Name:
  • uimap<-uilist
Return Type:
  • vx/ui/ui/uimap
Arguments:
  • Name
    Type
    Generic
    Description
    uilist
    vx/ui/ui/uilist
Usage/Test Cases:
Source Code:
  • (func uimap<-uilist : uimap [uilist : uilist] (map<-list : uimap uilist (fn : string [ui : ui] (:uid ui))) :doc "")
vx/ui/ui / uimap<-uimap-data
Description:
  • Template for creating uimap dynamically
Function Name:
  • uimap<-uimap-data
Return Type:
  • vx/ui/ui/uimap
Arguments:
  • Name
    Type
    Generic
    Description
    uimap
    vx/ui/ui/uimap
    data
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func uimap<-uimap-data : uimap [uimap : uimap data : any] :doc "Template for creating uimap dynamically")
vx/ui/ui / uimap-layout<-uimap-layoutmap-else
Description:
  • Returns a uimap with a renderer added to each ui.
Function Name:
  • uimap-layout<-uimap-layoutmap-else
Return Type:
  • vx/ui/ui/uimap
Arguments:
  • Name
    Type
    Generic
    Description
    uimap
    vx/ui/ui/uimap
    layoutmap
    vx/ui/ui/layoutmap
    layoutelse
    vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (func uimap-layout<-uimap-layoutmap-else : uimap [uimap : uimap layoutmap : layoutmap layoutelse : layout] (map<-map : uimap uimap (fn : ui [key : string ui : ui] (ui-layout<-ui-layoutmap-else ui layoutmap layoutelse))) :doc "Returns a uimap with a renderer added to each ui.")
vx/ui/ui / uimap-render<-uimap-parent
Description:
  • Renders a uimap and returns a rendered uimap.
Function Name:
  • uimap-render<-uimap-parent
Return Type:
  • vx/ui/ui/uimap
Arguments:
  • Name
    Type
    Generic
    Description
    uimap
    vx/ui/ui/uimap
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func uimap-render<-uimap-parent : uimap [uimap : uimap parent : ui] (map<-map : uimap uimap (fn : ui [key : string val : ui] (ui-render<-ui-orig-parent val (empty ui) parent))) :sideeffects "Alters User Interface" :doc "Renders a uimap and returns a rendered uimap.")
vx/web/htmldoc
Description:
  • Html Client-side document handler
Package Name:
  • vx/web/htmldoc
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    event
    vx/event
    html
    vx/web/html
    ui
    vx/ui/ui
Types:
Constants:
Functions:
  • boolean-print<-id-stylesheettext, boolean-replace<-id-htmltext, boolean-replace<-ui-htmltext, boolean-write<-id-htmltext, boolean-write<-id-visible, boolean-write<-stylesheet, boolean-write-stylesheet<-string, context-read, context-write, string<-id, string<-stylesheet, ui-readstate<-uid
Source Code:
  • (package vx/web/htmldoc :libs (lib event :path vx/event) (lib html :path vx/web/html) (lib ui :path vx/ui/ui) :doc "Html Client-side document handler") (func boolean-print<-id-stylesheettext : boolean [id : string stylesheettext : string] (native :js :auto) :doc "Print the contents of the given id.") (func boolean-replace<-id-htmltext : boolean [id : string htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Replaces an html node with given id and text.") (func boolean-replace<-ui-htmltext : boolean [ui : ui/ui htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Replaces an html node with given id and text.") (func boolean-write<-id-htmltext : boolean [id : string htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Writes to an html node with given id and text.") (func boolean-write<-id-visible : boolean [id : string visible : boolean] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Writes to an html node changing its visibility.") (func boolean-write<-stylesheet : boolean [stylesheet : html/stylesheet] (let : boolean [text : string := (string<-stylesheet stylesheet) iswrite : boolean := (boolean-write-stylesheet<-string text)] iswrite) :async :sideeffects "Changes Stylesheet display." :clientserver :client :doc "Writes a css stylesheet.") (func boolean-write-stylesheet<-string : boolean [text : string] (native :js :auto) :async :sideeffects "Changes Stylesheet display." :clientserver :client :doc "Writes a css stylesheet.") (func context-read : context (native :js :auto) :doc "Reads context from document.data.context") (func context-write : context (native :js :auto) :context :doc "Writes context to document.data.context") (func string<-id : string [id : string] (native :js :auto) :clientserver :client :doc "Reads the value of an html node by id.") (func string<-stylesheet : string [stylesheet : html/stylesheet] (let : string [stylelist : stylelist := (html/styles<-stylesheet stylesheet) text : string := (html/string<-stylelist-indent stylelist 0)] text) :doc "Returns string from a given stylesheet") (func ui-readstate<-uid : any [uid : string] (native :js :auto) :doc "Returns ui component from element.")
vx/web/htmldoc / boolean-print<-id-stylesheettext
Description:
  • Print the contents of the given id.
Function Name:
  • boolean-print<-id-stylesheettext
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
    stylesheettext
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func boolean-print<-id-stylesheettext : boolean [id : string stylesheettext : string] (native :js :auto) :doc "Print the contents of the given id.")
vx/web/htmldoc / boolean-replace<-id-htmltext
Description:
  • Replaces an html node with given id and text.
Function Name:
  • boolean-replace<-id-htmltext
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
    htmltext
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func boolean-replace<-id-htmltext : boolean [id : string htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Replaces an html node with given id and text.")
vx/web/htmldoc / boolean-replace<-ui-htmltext
Description:
  • Replaces an html node with given id and text.
Function Name:
  • boolean-replace<-ui-htmltext
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    htmltext
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func boolean-replace<-ui-htmltext : boolean [ui : ui/ui htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Replaces an html node with given id and text.")
vx/web/htmldoc / boolean-write<-id-htmltext
Description:
  • Writes to an html node with given id and text.
Function Name:
  • boolean-write<-id-htmltext
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
    htmltext
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func boolean-write<-id-htmltext : boolean [id : string htmltext : string] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Writes to an html node with given id and text.")
vx/web/htmldoc / boolean-write<-id-visible
Description:
  • Writes to an html node changing its visibility.
Function Name:
  • boolean-write<-id-visible
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
    visible
    vx/core/boolean
Usage/Test Cases:
Source Code:
  • (func boolean-write<-id-visible : boolean [id : string visible : boolean] (native :js :auto) :sideeffects "Changes HTML display." :clientserver :client :doc "Writes to an html node changing its visibility.")
vx/web/htmldoc / boolean-write<-stylesheet
Description:
  • Writes a css stylesheet.
Function Name:
  • boolean-write<-stylesheet
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (func boolean-write<-stylesheet : boolean [stylesheet : html/stylesheet] (let : boolean [text : string := (string<-stylesheet stylesheet) iswrite : boolean := (boolean-write-stylesheet<-string text)] iswrite) :async :sideeffects "Changes Stylesheet display." :clientserver :client :doc "Writes a css stylesheet.")
vx/web/htmldoc / boolean-write-stylesheet<-string
Description:
  • Writes a css stylesheet.
Function Name:
  • boolean-write-stylesheet<-string
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func boolean-write-stylesheet<-string : boolean [text : string] (native :js :auto) :async :sideeffects "Changes Stylesheet display." :clientserver :client :doc "Writes a css stylesheet.")
vx/web/htmldoc / context-read
Description:
  • Reads context from document.data.context
Function Name:
  • context-read
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func context-read : context (native :js :auto) :doc "Reads context from document.data.context")
vx/web/htmldoc / context-write
Description:
  • Writes context to document.data.context
Function Name:
  • context-write
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func context-write : context (native :js :auto) :context :doc "Writes context to document.data.context")
vx/web/htmldoc / string<-id
Description:
  • Reads the value of an html node by id.
Function Name:
  • string<-id
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    id
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string<-id : string [id : string] (native :js :auto) :clientserver :client :doc "Reads the value of an html node by id.")
vx/web/htmldoc / string<-stylesheet
Description:
  • Returns string from a given stylesheet
Function Name:
  • string<-stylesheet
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheet
    vx/web/html/stylesheet
Usage/Test Cases:
Source Code:
  • (func string<-stylesheet : string [stylesheet : html/stylesheet] (let : string [stylelist : stylelist := (html/styles<-stylesheet stylesheet) text : string := (html/string<-stylelist-indent stylelist 0)] text) :doc "Returns string from a given stylesheet")
vx/web/htmldoc / ui-readstate<-uid
Description:
  • Returns ui component from element.
Function Name:
  • ui-readstate<-uid
Return Type:
  • vx/core/any
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-readstate<-uid : any [uid : string] (native :js :auto) :doc "Returns ui component from element.")
nx/tactics/books/bookloader
Description:
  • Book loading tools
Package Name:
  • nx/tactics/books/bookloader
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    fil
    vx/data/file
    typ
    vx/type
    xml
    vx/data/xml
Types:
Constants:
Functions:
  • ability<-ability-key-value, ability<-ability-stringmap, ability<-ability-xmlchild, ability<-xml, book<-book-key-value, book<-book-stringmap, book<-book-xml, book<-book-xmlchapter, book<-book-xmlchild, book<-xml, book<-xmldoc, book<-xmllist, boolean-write<-book, book-read<-bookname, boolean-write<-booknames, chapter<-chapter-key-value, chapter<-chapter-stringmap, chapter<-chapter-xmlchild, chapter<-chapter-xmlsection, chapter<-xml, damage<-damage-key-value, damage<-damage-stringmap, damage<-damage-xmlchild, damage<-xml, file-read<-bookname, file-write<-book, item<-item-key-value, item<-item-stringmap, item<-item-xmlchild, item<-xml, location<-location-key-value, location<-location-stringmap, location<-location-xmlchild, location<-xml, modifier<-modifier-key-value, modifier<-modifier-stringmap, modifier<-modifier-xmlchild, modifier<-xml, power<-power-key-value, power<-power-stringmap, power<-power-xmlchild, power<-xml, power<-power-xmlability, power<-power-xmlspecialty, rule<-rule-key-value, rule<-rule-stringmap, rule<-rule-xmlchild, rule<-xml, scenario<-scenario-key-value, scenario<-scenario-stringmap, scenario<-scenario-xmlchild, scenario<-scenario-xmlteam, scenario<-xml, section<-section-key-value, section<-section-stringmap, section<-section-xmlchild, section<-section-xmldamage, section<-section-xmlitem, section<-section-xmllocation, section<-section-xmlmodifier, section<-section-xmlpower, section<-section-xmlrule, section<-section-xmlscenario, section<-section-xmlsection, section<-section-xmlskill, section<-section-xmlterrain, section<-section-xmlunit, section<-xml, skill<-skill-key-value, skill<-skill-stringmap, skill<-skill-xmlchild, skill<-skill-xmlability, skill<-skill-xmlspecialty, skill<-xml, specialty<-specialty-key-value, specialty<-specialty-stringmap, specialty<-specialty-xmlchild, specialty<-xml, string-read<-bookname, string-vxlisp<-chapter, string-vxlisp<-chaptermap, string-vxlisp-header<-chaptermap, string-vxlisp<-book, string-writename<-string, team<-team-key-value, team<-team-stringmap, team<-team-xmlchild, team<-xml, terrain<-terrain-key-value, terrain<-terrain-stringmap, terrain<-terrain-xmlchild, terrain<-xml, unit<-unit-key-value, unit<-unit-stringmap, unit<-unit-xmlchild, unit<-unit-xmlpower, unit<-unit-xmlskill, unit<-unit-xmlweakness, unit<-xml, unitability<-unitability-key-value, unitability<-unitability-stringmap, unitability<-unitability-xmlchild, unitability<-xml, unititem<-unititem-key-value, unititem<-unititem-stringmap, unititem<-unititem-xmlchild, unititem<-xml, unitpower<-unitpower-key-value, unitpower<-unitpower-stringmap, unitpower<-unitpower-xmlability, unitpower<-unitpower-xmlchild, unitpower<-unitpower-xmlitem, unitpower<-unitpower-xmlspecialty, unitpower<-xml, unitskill<-unitskill-key-value, unitskill<-unitskill-stringmap, unitskill<-unitskill-xmlability, unitskill<-unitskill-xmlchild, unitskill<-unitskill-xmlitem, unitskill<-unitskill-xmlspecialty, unitskill<-xml, unitspecialty<-unitspecialty-key-value, unitspecialty<-unitspecialty-stringmap, unitspecialty<-unitspecialty-xmlchild, unitspecialty<-xml, unitweakness<-xml, weakness<-xml, xml-read<-bookname
Source Code:
  • (package nx/tactics/books/bookloader :libs (lib base :path nx/tactics/base) (lib fil :path vx/data/file) (lib typ :path vx/type) (lib xml :path vx/data/xml) :doc "Book loading tools") (func ability<-ability-key-value : base/ability [current : base/ability key : string value : string] (switch : base/ability key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/ability :prop key :value value))))) :doc "Returns a modified ability from a key value.") (func ability<-ability-stringmap : base/ability [ability : base/ability propmap : stringmap] (any<-map-start-reduce : base/ability propmap ability ability<-ability-key-value) :test (test (base/ability :name "name" :image "image") (ability<-ability-stringmap (empty base/ability) (stringmap :name "name" :image "image"))) :doc "Returns a new ability from a propmap.") (func ability<-ability-xmlchild : base/ability [ability : base/ability child : xml/xml] (let : base/ability [tag : string := (:tag child)] (switch : base/ability tag (case "" ability) (case (list "reference" "summary" "titles") (copy ability tag (xml/string-first<-xml child))) (else (copy ability (msg<-error :invalidtagfound (anymap :type base/ability :tag tag)))))) :test (test (base/ability :titles "titles") (ability<-ability-xmlchild (empty base/ability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified ability based on a given child xml.") (func ability<-xml : base/ability [xml : xml/xml] (let : base/ability [propmap : stringmap := (:propmap xml) ability : base/ability := (ability<-ability-stringmap (empty base/ability) propmap)] (any<-list-start-reduce : base/ability (:children xml) ability ability<-ability-xmlchild)) :test (test (base/ability :name "name" :image "image" :titles "titles" :reference "reference") (ability<-xml (xml/xml :tag "ability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a ability from a given xml.") (func book<-book-key-value : base/book [current : base/book key : string value : string] (switch : base/book key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/book :prop key :value value))))) :test (test (base/book :name "nm") (book<-book-key-value (empty base/book) "name" "nm")) (test (base/book :name "image") (book<-book-key-value (empty base/book) "name" "image")) :doc "Returns a modified book from a key value.") (func book<-book-stringmap : base/book [book : base/book propmap : stringmap] (any<-map-start-reduce : base/book propmap book book<-book-key-value) :test (test (base/book :name "name" :image "image") (book<-book-stringmap (empty base/book) (stringmap :name "name" :image "image"))) :doc "Returns a new book from a propmap.") (func book<-book-xml : base/book [current : base/book child : xml/xml] (let : base/book [tag : string := (:tag child)] (switch : base/book tag (case "" current) (case "!--" current) (case "?xml" current) (case "doc" (if : base/book (then (is-empty current) (book<-xmldoc child)) (else (copy current (msg<-error :duplicatetagfound (anymap :type base/book :tag tag)))))) (else (copy current (msg<-error :invalidtagfound (anymap :type base/book :tag tag)))))) :test (test (base/book :name "name1") (book<-book-xml (empty base/book) (xml/xml :tag "doc" :propmap (stringmap :name "name1")))) (test (empty base/book) (book<-book-xml (empty base/book) (xml/xml :tag "?xml"))) (test (base/book :name "name1" (msgblock (msg :code ":duplicatetagfound" :detail (anymap :type nx/tactics/base/book :tag "doc") :severity 2))) (book<-book-xml (base/book :name "name1") (xml/xml :tag "doc"))) :doc "Returns an altered book based on xml child.") (func book<-book-xmlchapter : base/book [book : base/book xml : xml/xml] (let : base/book [chapter : base/chapter := (chapter<-xml xml) name : string := (:name chapter) origmap : base/chaptermap := (:chaptermap book) chgmap : base/chaptermap := (copy origmap name chapter)] (copy book :chaptermap chgmap)) :test (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchapter (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))) :doc "Returns an altered book based on xmlchapter.") (func book<-book-xmlchild : base/book [book : base/book child : xml/xml] (let : base/book [tag : string := (:tag child)] (switch : base/book tag (case "" book) (case (list "reference" "summary" "titles") (copy book tag (xml/string-first<-xml child))) (case "chapter" (book<-book-xmlchapter book child)) (else (copy book (msg<-error :invalidtagfound (anymap :type base/book :tag tag)))))) :test (test (base/book :titles "titles") (book<-book-xmlchild (empty base/book) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchild (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))) :doc "Returns a modified book based on a given child xml.") (func book<-xml : base/book [xml : xml/xml] (book<-xmllist (:children xml)) :test (test (base/book :name "name1") (book<-xml (xml/xml :children (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1")))))) :doc "Returns a book from a given top level xml.") (func book<-xmldoc : base/book [xml : xml/xml] (let : base/book [propmap : stringmap := (:propmap xml) children : xmllist := (:children xml) book : base/book := (book<-book-stringmap (empty base/book) propmap)] (any<-list-start-reduce : base/book children book book<-book-xmlchild)) :test (test (base/book :name "name1" :image "image1" :titles "titles1" :reference "reference1" :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-xmldoc (xml/xml :tag "doc" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))))) :doc "Returns a book from a given xml.") (func book<-xmllist : base/book [xmllist : xml/xmllist] (any<-list-start-reduce : base/book xmllist (empty base/book) book<-book-xml) :test (test (base/book :name "name1") (book<-xmllist (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1"))))) :doc "Returns a book from a given xml.") (func boolean-write<-book : boolean [book : base/book] (let : boolean [text : string := (string-vxlisp<-book book) file : fil/file := (file-write<-book book)] (boolean-write<-file-string file text)) :context :doc "Returns boolean after writing book as a file.") (func book-read<-bookname : base/book [bookname : string] (let : base/book [xml : xml/xml := (xml-read<-bookname bookname)] (book<-xml xml)) :context :doc "Returns a book by loading the given Xml filename.") (func boolean-write<-booknames : boolean [booknames : stringlist] (let : boolean [bools : booleanlist := (list<-list : booleanlist booknames (fn : boolean [bookname : string] (let : boolean [book : base/book := (book-read<-bookname bookname)] (boolean-write<-book book))))] (and bools)) :context :doc "Returns boolean after writing book as a file.") (func chapter<-chapter-key-value : base/chapter [current : base/chapter key : string value : string] (switch : base/chapter key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/chapter :prop key :value value))))) :doc "Returns a modified chapter from a key value.") (func chapter<-chapter-stringmap : base/chapter [chapter : base/chapter propmap : stringmap] (any<-map-start-reduce : base/chapter propmap chapter chapter<-chapter-key-value) :test (test (base/chapter :name "name" :image "image") (chapter<-chapter-stringmap (empty base/chapter) (stringmap :name "name" :image "image"))) :doc "Returns a new book from a propmap.") (func chapter<-chapter-xmlchild : base/chapter [chapter : base/chapter child : xml/xml] (let : base/chapter [tag : string := (:tag child)] (switch : base/chapter tag (case "" chapter) (case (list "reference" "summary" "titles") (copy chapter tag (xml/string-first<-xml child))) (case "section" (chapter<-chapter-xmlsection chapter child)) (else (copy chapter (msg<-error :invalidtagfound (anymap :type base/chapter :tag tag)))))) :test (test (base/chapter :titles "titles") (chapter<-chapter-xmlchild (empty base/chapter) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified chapter based on a given child Xml.") (func chapter<-chapter-xmlsection : base/chapter [chapter : base/chapter xmlsection : xml/xml] (let : base/chapter [section : base/section := (section<-xml xmlsection) name : string := (:name section) origmap : base/sectionmap := (:sectionmap chapter) chgmap : base/sectionmap := (copy origmap name section)] (copy chapter :sectionmap chgmap)) :doc "Return a chapter with new section added to sectionmap") (func chapter<-xml : base/chapter [xml : xml/xml] (let : base/chapter [propmap : stringmap := (:propmap xml) chap : base/chapter := (chapter<-chapter-stringmap (empty base/chapter) propmap)] (any<-list-start-reduce : base/chapter (:children xml) chap chapter<-chapter-xmlchild)) :test (test (base/chapter :name "name" :image "image" :titles "titles" :reference "reference" :sectionmap (base/sectionmap :section1 (base/section :name "section1") :section2 (base/section :name "section2"))) (chapter<-xml (xml/xml :tag "chapter" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "section" :propmap (stringmap :name "section2")))))) :doc "Returns a chapter from a given Xml.") (func damage<-damage-key-value : base/damage [current : base/damage key : string value : string] (switch : base/damage key (case "" current) (case (list "name" "image" "classification") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/damage :prop key :value value))))) :doc "Returns a modified damage from a key value.") (func damage<-damage-stringmap : base/damage [damage : base/damage propmap : stringmap] (any<-map-start-reduce : base/damage propmap damage damage<-damage-key-value) :test (test (base/damage :name "name" :image "image") (damage<-damage-stringmap (empty base/damage) (stringmap :name "name" :image "image"))) :doc "Returns a damage from a propmap.") (func damage<-damage-xmlchild : base/damage [damage : base/damage child : xml/xml] (let : base/damage [tag : string := (:tag child)] (switch : base/damage tag (case "" damage) (case (list "reference" "summary" "titles") (copy damage tag (xml/string-first<-xml child))) (else (copy damage (msg<-error :invalidtagfound (anymap :type base/damage :tag tag)))))) :test (test (base/damage :titles "titles") (damage<-damage-xmlchild (empty base/damage) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified damage based on a given child Xml.") (func damage<-xml : base/damage [xml : xml/xml] (let : base/damage [propmap : stringmap := (:propmap xml) damage : base/damage := (damage<-damage-stringmap (empty base/damage) propmap)] (any<-list-start-reduce : base/damage (:children xml) damage damage<-damage-xmlchild)) :doc "Returns a damage from a given xml.") (func file-read<-bookname : fil/file [bookname : string] (fil/file :path "resources/books" :name (string bookname ".xml")) :doc "Returns a file from a bookname.") (func file-write<-book : fil/file [book : base/book] (let : fil/file [name : string := (:name book) bookname : string := (string-writename<-string name)] (fil/file :path "resources/books" :name (string bookname ".vxlisp"))) :doc "Returns a file with string from book") (func item<-item-key-value : base/item [current : base/item key : string value : string] (switch : base/item key (case "" current) (case (list "name" "image" "classification" "crew" "energy" "explosive" "height" "length" "mass" "modifiers" "muzzlevelocity" "range" "rof" "rounds" "speedair" "speedland" "speedspace" "speedwater" "width") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/item :prop key :value value))))) :doc "Returns a modified item from a key value.") (func item<-item-stringmap : base/item [item : base/item propmap : stringmap] (any<-map-start-reduce : base/item propmap item item<-item-key-value) :doc "Returns a new item from a propmap.") (func item<-item-xmlchild : base/item [item : base/item child : xml/xml] (let : base/item [tag : string := (:tag child)] (switch : base/item tag (case "" item) (case (list "reference" "summary" "titles") (copy item tag (xml/string-first<-xml child))) (else (copy item (msg<-error :invalidtagfound (anymap :type base/item :tag tag)))))) :doc "Returns a modified item based on a given child xml.") (func item<-xml : base/item [xml : xml/xml] (let : base/item [propmap : stringmap := (:propmap xml) item : base/item := (item<-item-stringmap (empty base/item) propmap)] (any<-list-start-reduce : base/item (:children xml) item item<-item-xmlchild)) :doc "Returns a item from a given xml.") (func location<-location-key-value : base/location [current : base/location key : string value : string] (switch : base/location key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/location :prop key :value value))))) :doc "Returns a modified location from a key value.") (func location<-location-stringmap : base/location [location : base/location propmap : stringmap] (any<-map-start-reduce : base/location propmap location location<-location-key-value) :doc "Returns a location from a propmap.") (func location<-location-xmlchild : base/location [location : base/location child : xml/xml] (let : base/location [tag : string := (:tag child)] (switch : base/location tag (case "" location) (case (list "reference" "summary" "titles") (copy location tag (xml/string-first<-xml child))) (else (copy location (msg<-error :invalidtagfound (anymap :type base/location :tag tag)))))) :doc "Returns a modified location based on a given child Xml.") (func location<-xml : base/location [xml : xml/xml] (let : base/location [propmap : stringmap := (:propmap xml) location : base/location := (location<-location-stringmap (empty base/location) propmap)] (any<-list-start-reduce : base/location (:children xml) location location<-location-xmlchild)) :doc "Returns a location from a given xml.") (func modifier<-modifier-key-value : base/modifier [current : base/modifier key : string value : string] (switch : base/modifier key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/modifier :prop key :value value))))) :doc "Returns a modified modifier from a key value.") (func modifier<-modifier-stringmap : base/modifier [modifier : base/modifier propmap : stringmap] (any<-map-start-reduce : base/modifier propmap modifier modifier<-modifier-key-value) :doc "Returns a modifier from a propmap.") (func modifier<-modifier-xmlchild : base/modifier [modifier : base/modifier child : xml/xml] (let : base/modifier [tag : string := (:tag child)] (switch : base/modifier tag (case "" modifier) (case (list "reference" "summary" "titles") (copy modifier tag (xml/string-first<-xml child))) (else (copy modifier (msg<-error :invalidtagfound (anymap :type base/modifier :tag tag)))))) :doc "Returns a modified modifier based on a given child xml.") (func modifier<-xml : base/modifier [xml : xml/xml] (let : base/modifier [propmap : stringmap := (:propmap xml) modifier : base/modifier := (modifier<-modifier-stringmap (empty base/modifier) propmap)] (any<-list-start-reduce : base/modifier (:children xml) modifier modifier<-modifier-xmlchild)) :doc "Returns a modifier from a given xml.") (func power<-power-key-value : base/power [current : base/power key : string value : string] (switch : base/power key (case "" current) (case (list "name" "image" "stat") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/power :prop key :value value))))) :doc "Returns a modified power from a key value.") (func power<-power-stringmap : base/power [power : base/power propmap : stringmap] (any<-map-start-reduce : base/power propmap power power<-power-key-value) :test (test (base/power :name "name" :image "image") (power<-power-stringmap (empty base/power) (stringmap :name "name" :image "image"))) :doc "Returns a new power from a propmap.") (func power<-power-xmlchild : base/power [power : base/power child : xml/xml] (let : base/power [tag : string := (:tag child)] (switch : base/power tag (case "" power) (case (list "reference" "summary" "titles") (copy power tag (xml/string-first<-xml child))) (case "ability" (power<-power-xmlability power child)) (case "specialty" (power<-power-xmlspecialty power child)) (else (copy power (msg<-error :invalidtagfound (anymap :type base/power :tag tag)))))) :test (test (base/power :titles "titles") (power<-power-xmlchild (empty base/power) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified power based on a given child xml.") (func power<-xml : base/power [xml : xml/xml] (let : base/power [propmap : stringmap := (:propmap xml) children : xmllist := (:children xml) power : base/power := (power<-power-stringmap (empty base/power) propmap)] (any<-list-start-reduce : base/power children power power<-power-xmlchild)) :test (test (base/power :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (power<-xml (xml/xml :tag "power" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1")))))) :doc "Returns a power from a given Xml.") (func power<-power-xmlability : base/power [power : base/power xmlability : xml/xml] (let : base/power [ability : base/ability := (ability<-xml xmlability) name : string := (:name ability) origmap : base/abilitymap := (:abilitymap power) chgmap : base/abilitymap := (copy origmap name ability)] (copy power :abilitymap chgmap)) :doc "Return a power with new ability added to abilitymap") (func power<-power-xmlspecialty : base/power [power : base/power xmlspecialty : xml/xml] (let : base/power [specialty : base/specialty := (specialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/specialtymap := (:specialtymap power) chgmap : base/specialtymap := (copy origmap name specialty)] (copy power :specialtymap chgmap)) :doc "Return a power with new specialty added to specialtymap") (func rule<-rule-key-value : base/rule [current : base/rule key : string value : string] (switch : base/rule key (case "" current) (case (list "name" "image" "classification") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/rule :prop key :value value))))) :doc "Returns a modified rule from a key value.") (func rule<-rule-stringmap : base/rule [rule : base/rule propmap : stringmap] (any<-map-start-reduce : base/rule propmap rule rule<-rule-key-value) :test (test (base/rule :name "name" :image "image") (rule<-rule-stringmap (empty base/rule) (stringmap :name "name" :image "image"))) :doc "Returns a rule from a propmap.") (func rule<-rule-xmlchild : base/rule [rule : base/rule child : xml/xml] (let : base/rule [tag : string := (:tag child)] (switch : base/rule tag (case "" rule) (case (list "reference" "summary" "titles" "classification") (copy rule tag (xml/string-first<-xml child))) (else (copy rule (msg<-error :invalidtagfound (anymap :type base/rule :tag tag)))))) :test (test (base/rule :titles "titles") (rule<-rule-xmlchild (empty base/rule) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified rule based on a given child Xml.") (func rule<-xml : base/rule [xml : xml/xml] (let : base/rule [propmap : stringmap := (:propmap xml) rule : base/rule := (rule<-rule-stringmap (empty base/rule) propmap)] (any<-list-start-reduce : base/rule (:children xml) rule rule<-rule-xmlchild)) :doc "Returns a rule from a given xml.") (func scenario<-scenario-key-value : base/scenario [current : base/scenario key : string value : string] (switch : base/scenario key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/scenario :prop key :value value))))) :doc "Returns a modified scenario from a key value.") (func scenario<-scenario-stringmap : base/scenario [scenario : base/scenario propmap : stringmap] (any<-map-start-reduce : base/scenario propmap scenario scenario<-scenario-key-value) :doc "Returns a scenario from a propmap.") (func scenario<-scenario-xmlchild : base/scenario [scenario : base/scenario child : xml/xml] (let : base/scenario [tag : string := (:tag child)] (switch : base/scenario tag (case "" scenario) (case (list "reference" "summary" "titles") (copy scenario tag (xml/string-first<-xml child))) (case "team" (scenario<-scenario-xmlteam scenario child)) (else (copy scenario (msg<-error :invalidtagfound (anymap :type base/scenario :tag tag)))))) :doc "Returns a modified scenario based on a given child Xml.") (func scenario<-scenario-xmlteam : base/scenario [scenario : base/scenario xmlteam : xml/xml] (let : base/scenario [current : base/team := (team<-xml xmlteam) name : string := (:name current) origmap : base/teammap := (:teammap scenario) chgmap : base/teammap := (copy origmap name current)] (copy scenario :teammap chgmap)) :doc "Return a scenario with new team added to teammap") (func scenario<-xml : base/scenario [xml : xml/xml] (let : base/scenario [propmap : stringmap := (:propmap xml) scenario : base/scenario := (scenario<-scenario-stringmap (empty base/scenario) propmap)] (any<-list-start-reduce : base/scenario (:children xml) scenario scenario<-scenario-xmlchild)) :test (test (base/scenario :name "name" :image "image" :titles "titles" :reference "reference") (scenario<-xml (xml/xml :tag "scenario" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a scenario from a given xml.") (func section<-section-key-value : base/section [current : base/section key : string value : string] (switch : base/section key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/section :prop key :value value))))) :doc "Returns a modified section from a key value.") (func section<-section-stringmap : base/section [section : base/section propmap : stringmap] (any<-map-start-reduce : base/section propmap section section<-section-key-value) :doc "Returns a new book from a propmap.") (func section<-section-xmlchild : base/section [section : base/section child : xml/xml] (let : base/section [tag : string := (:tag child)] (switch : base/section tag (case "" section) (case (list "reference" "summary" "titles") (copy section tag (xml/string-first<-xml child))) (case "damage" (section<-section-xmldamage section child)) (case "item" (section<-section-xmlitem section child)) (case "modifier" (section<-section-xmlmodifier section child)) (case "place" (section<-section-xmllocation section child)) (case "power" (section<-section-xmlpower section child)) (case "rule" (section<-section-xmlrule section child)) (case "scenario" (section<-section-xmlscenario section child)) (case "section" (section<-section-xmlsection section child)) (case "skill" (section<-section-xmlskill section child)) (case "terrain" (section<-section-xmlterrain section child)) (case "unit" (section<-section-xmlunit section child)) (else (copy section (msg<-error :invalidtagfound (anymap :type base/section :tag tag)))))) :doc "Returns a modified section based on a given child Xml.") (func section<-section-xmldamage : base/section [section : base/section xmldamage : xml/xml] (let : base/section [current : base/damage := (damage<-xml xmldamage) name : string := (:name current) origmap : base/damagemap := (:damagemap section) chgmap : base/damagemap := (copy origmap name current)] (copy section :damagemap chgmap)) :doc "Return a section with new damage added to damagemap") (func section<-section-xmlitem : base/section [section : base/section xmlitem : xml/xml] (let : base/section [item : base/item := (item<-xml xmlitem) name : string := (:name item) origmap : base/itemmap := (:itemmap section) chgmap : base/itemmap := (copy origmap name item)] (copy section :itemmap chgmap)) :doc "Return a section with new item added to itemmap") (func section<-section-xmllocation : base/section [section : base/section xmllocation : xml/xml] (let : base/section [location : base/location := (location<-xml xmllocation) name : string := (:name location) origmap : base/locationmap := (:locationmap section) chgmap : base/locationmap := (copy origmap name location)] (copy section :locationmap chgmap)) :doc "Return a section with new location added to locationmap") (func section<-section-xmlmodifier : base/section [section : base/section xmlmodifier : xml/xml] (let : base/section [modifier : base/modifier := (modifier<-xml xmlmodifier) name : string := (:name modifier) origmap : base/modifiermap := (:modifiermap section) chgmap : base/modifiermap := (copy origmap name modifier)] (copy section :modifiermap chgmap)) :doc "Return a section with new modifier added to modifiermap") (func section<-section-xmlpower : base/section [section : base/section xmlpower : xml/xml] (let : base/section [power : base/power := (power<-xml xmlpower) name : string := (:name power) origmap : base/powermap := (:powermap section) chgmap : base/powermap := (copy origmap name power)] (copy section :powermap chgmap)) :doc "Return a section with new power added to powermap") (func section<-section-xmlrule : base/section [section : base/section xmlrule : xml/xml] (let : base/section [rule : base/rule := (rule<-xml xmlrule) name : string := (:name rule) origmap : base/rulemap := (:rulemap section) chgmap : base/rulemap := (copy origmap name rule)] (copy section :rulemap chgmap)) :doc "Return a section with new rule added to rulemap") (func section<-section-xmlscenario : base/section [section : base/section xmlscenario : xml/xml] (let : base/section [scenario : base/scenario := (scenario<-xml xmlscenario) name : string := (:name scenario) origmap : base/scenariomap := (:scenariomap section) chgmap : base/scenariomap := (copy origmap name scenario)] (copy section :scenariomap chgmap)) :doc "Return a section with new scenario added to scenariomap") (func section<-section-xmlsection : base/section [section : base/section xmlsection : xml/xml] (let : base/section [subsect : base/section := (section<-xml xmlsection) name : string := (:name subsect) origmap : base/sectionmap := (:sectionmap section) chgmap : base/sectionmap := (copy origmap name subsect)] (copy section :sectionmap chgmap)) :doc "Return a section with new section added to sectionmap") (func section<-section-xmlskill : base/section [section : base/section xmlskill : xml/xml] (let : base/section [skill : base/skill := (skill<-xml xmlskill) name : string := (:name skill) origmap : base/skillmap := (:skillmap section) chgmap : base/skillmap := (copy origmap name skill)] (copy section :skillmap chgmap)) :doc "Return a section with new skill added to skillmap") (func section<-section-xmlterrain : base/section [section : base/section xmlterrain : xml/xml] (let : base/section [current : base/terrain := (terrain<-xml xmlterrain) name : string := (:name current) origmap : base/terrainmap := (:terrainmap section) chgmap : base/terrainmap := (copy origmap name current)] (copy section :terrainmap chgmap)) :doc "Return a section with new terrain added to terrainmap") (func section<-section-xmlunit : base/section [section : base/section xmlunit : xml/xml] (let : base/section [unit : base/unit := (unit<-xml xmlunit) name : string := (:name unit) origmap : base/unitmap := (:unitmap section) chgmap : base/unitmap := (copy origmap name unit)] (copy section :unitmap chgmap)) :doc "Return a section with new unit added to unitmap") (func section<-xml : base/section [xml : xml/xml] (let : base/section [propmap : stringmap := (:propmap xml) children : xml/xmllist := (:children xml) section : base/section := (section<-section-stringmap (empty base/section) propmap)] (any<-list-start-reduce : base/section children section section<-section-xmlchild)) :test (test (base/section :name "name" :image "image" :titles "titles" :reference "reference" :powermap (base/powermap :power1 (base/power :name "power1")) :scenariomap (base/scenariomap :scenario1 (base/scenario :name "scenario1")) :sectionmap (base/sectionmap :section1 (base/section :name "section1")) :skillmap (base/skillmap :skill1 (base/skill :name "skill1"))) (section<-xml (xml/xml :tag "section" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "power" :propmap (stringmap :name "power1")) (xml/xml :tag "scenario" :propmap (stringmap :name "scenario1")) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "skill" :propmap (stringmap :name "skill1")))))) :doc "Returns a section from a given Xml.") (func skill<-skill-key-value : base/skill [current : base/skill key : string value : string] (switch : base/skill key (case "" current) (case (list "name" "image" "stat") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/skill :prop key :value value))))) :doc "Returns a modified skill from a key value.") (func skill<-skill-stringmap : base/skill [skill : base/skill propmap : stringmap] (any<-map-start-reduce : base/skill propmap skill skill<-skill-key-value) :doc "Returns a new skill from a propmap.") (func skill<-skill-xmlchild : base/skill [skill : base/skill child : xml/xml] (let : base/skill [tag : string := (:tag child)] (switch : base/skill tag (case "" skill) (case (list "reference" "summary" "titles") (copy skill tag (xml/string-first<-xml child))) (case "ability" (skill<-skill-xmlability skill child)) (case "specialty" (skill<-skill-xmlspecialty skill child)) (else (copy skill (msg<-error :invalidtagfound (anymap :type base/skill :tag tag)))))) :test (test (base/skill :titles "titles") (skill<-skill-xmlchild (empty base/skill) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified skill based on a given child Xml.") (func skill<-skill-xmlability : base/skill [skill : base/skill xmlability : xml/xml] (let : base/skill [ability : base/ability := (ability<-xml xmlability) name : string := (:name ability) origmap : base/abilitymap := (:abilitymap skill) chgmap : base/abilitymap := (copy origmap name ability)] (copy skill :abilitymap chgmap)) :doc "Return a skill with new ability added to abilitymap") (func skill<-skill-xmlspecialty : base/skill [skill : base/skill xmlspecialty : xml/xml] (let : base/skill [specialty : base/specialty := (specialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/specialtymap := (:specialtymap skill) chgmap : base/specialtymap := (copy origmap name specialty)] (copy skill :specialtymap chgmap)) :doc "Return a skill with new specialty added to specialtymap") (func skill<-xml : base/skill [xml : xml/xml] (let : base/skill [propmap : stringmap := (:propmap xml) skill : base/skill := (skill<-skill-stringmap (empty base/skill) propmap)] (any<-list-start-reduce : base/skill (:children xml) skill skill<-skill-xmlchild)) :test (test (base/skill :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (skill<-xml (xml/xml :tag "skill" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1")))))) :doc "Returns a skill from a given xml.") (func specialty<-specialty-key-value : base/specialty [current : base/specialty key : string value : string] (switch : base/specialty key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/specialty :prop key :value value))))) :doc "Returns a modified specialty from a key value.") (func specialty<-specialty-stringmap : base/specialty [specialty : base/specialty propmap : stringmap] (any<-map-start-reduce : base/specialty propmap specialty specialty<-specialty-key-value) :test (test (base/specialty :name "name" :image "image") (specialty<-specialty-stringmap (empty base/specialty) (stringmap :name "name" :image "image"))) :doc "Returns a new specialty from a propmap.") (func specialty<-specialty-xmlchild : base/specialty [specialty : base/specialty child : xml/xml] (let : base/specialty [tag : string := (:tag child)] (switch : base/specialty tag (case "" specialty) (case (list "reference" "summary" "titles") (copy specialty tag (xml/string-first<-xml child))) (else (copy specialty (msg<-error :invalidtagfound (anymap :type base/specialty :tag tag)))))) :test (test (base/specialty :titles "titles") (specialty<-specialty-xmlchild (empty base/specialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified specialty based on a given child xml.") (func specialty<-xml : base/specialty [xml : xml/xml] (let : base/specialty [propmap : stringmap := (:propmap xml) spc : base/specialty := (specialty<-specialty-stringmap (empty base/specialty) propmap)] (any<-list-start-reduce : base/specialty (:children xml) spc specialty<-specialty-xmlchild)) :test (test (base/specialty :name "name" :image "image" :titles "titles" :reference "reference") (specialty<-xml (xml/xml :tag "specialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a specialty from a given xml.") (func string-read<-bookname : string [bookname : string] (string-read<-file (file-read<-bookname bookname)) :context :doc "Returns text from a file with bookname.") (func string-vxlisp<-chapter : string [chapter : base/chapter] (let : string [name : string := (:name chapter) chnm : string := (string-writename<-string name) text : string := (string<-any-indent chapter 1 false)] (string "(func chapter_" chnm " : base/chapter\n" text ")\n")) :doc "Returns a vxlisp string from a chapter.") (func string-vxlisp<-chaptermap : string [chaptermap : base/chaptermap] (let : string [chapters : base/chapterlist := (list<-map : chapterlist chaptermap (fn : chapter [key : string val : base/chapter] val)) schapters : stringlist := (list<-list : stringlist chapters (fn : string [chapt : base/chapter] (let : string [name : string := (base/name<-chapter chapt) // FIXME schnm : string := (string-writename<-string name) text : string := (string<-any-indent chapt 1 true)] (string "\n(func chapter_" schnm " : base/chapter\n " text ")"))))] (string<-stringlist-join schapters newline)) :doc "Returns a vxlisp string from a chaptermap.") (func string-vxlisp-header<-chaptermap : string [chaptermap : base/chaptermap] (let : string [chapters : stringlist := (list<-map : stringlist chaptermap (fn : string [key : string val : base/chapter] (string newline " " quote key quote " (chapter_" (string-writename<-string key) ")")))] (string<-stringlist-join chapters "")) :doc "Returns a vxlisp string from a chaptermap.") (func string-vxlisp<-book : string [book : base/book] (let : string [name : string := (:name book) chaptermap : base/chaptermap := (:chaptermap book) image : string := (:image book) reference : string := (:reference book) summary : string := (:summary book) titles : string := (:titles book) schaptermap : string := (string-vxlisp-header<-chaptermap chaptermap) schapters : string := (string-vxlisp<-chaptermap chaptermap) simage : string := (switch : string image (case "" "") (else (string "\n :image " (string<-any image)))) sreference : string := (switch : string reference (case "" "") (else (string "\n :reference " (string<-any reference)))) ssummary : string := (switch : string summary (case "" "") (else (string "\n :summary " (string<-any summary)))) stitles : string := (switch : string titles (case "" "") (else (string "\n :titles " (string<-any titles)))) bookname : string := (string-writename<-string name)] (string "(package nx/tactics/books/" bookname "\n :libs (lib base :path nx/tactics/base))" "\n" "\n(func tacticsbook : base/book" "\n (base/book" "\n :name " (string<-any name) simage stitles sreference ssummary "\n :chaptermap" "\n (base/chaptermap" schaptermap "\n ))" ")\n" schapters)) :doc "Returns a vxlisp string from a book.") (func string-writename<-string : string [name : string] (let : string [lower : string := (typ/string-lowercase name) space : string := (string<-string-find-replace lower " " "_") comma : string := (string<-string-find-replace space "," "") apos : string := (string<-string-find-replace comma "'" "") slash : string := (string<-string-find-replace apos "/" "_")] slash) :doc "Returns the write filename from a book") (func team<-team-key-value : base/team [current : base/team key : string value : string] (switch : base/team key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/team :prop key :value value))))) :doc "Returns a modified team from a key value.") (func team<-team-stringmap : base/team [team : base/team propmap : stringmap] (any<-map-start-reduce : base/team propmap team team<-team-key-value) :doc "Returns a team from a propmap.") (func team<-team-xmlchild : base/team [team : base/team child : xml/xml] (let : base/team [tag : string := (:tag child)] (switch : base/team tag (case "" team) (case (list "reference" "summary" "titles" "completevictory" "deploy" "forces" "partialvictory") (copy team tag (xml/string-first<-xml child))) (else (copy team (msg<-error :invalidtagfound (anymap :type base/team :tag tag)))))) :doc "Returns a modified team based on a given child xml.") (func team<-xml : base/team [xml : xml/xml] (let : base/team [propmap : stringmap := (:propmap xml) team : base/team := (team<-team-stringmap (empty base/team) propmap)] (any<-list-start-reduce : base/team (:children xml) team team<-team-xmlchild)) :doc "Returns a team from a given xml.") (func terrain<-terrain-key-value : base/terrain [current : base/terrain key : string value : string] (switch : base/terrain key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/terrain :prop key :value value))))) :doc "Returns a modified terrain from a key value.") (func terrain<-terrain-stringmap : base/terrain [terrain : base/terrain propmap : stringmap] (any<-map-start-reduce : base/terrain propmap terrain terrain<-terrain-key-value) :test (test (base/terrain :name "name" :image "image") (terrain<-terrain-stringmap (empty base/terrain) (stringmap :name "name" :image "image"))) :doc "Returns a terrain from a propmap.") (func terrain<-terrain-xmlchild : base/terrain [terrain : base/terrain child : xml/xml] (let : base/terrain [tag : string := (:tag child)] (switch : base/terrain tag (case "" terrain) (case (list "reference" "summary" "titles" "classification") (copy terrain tag (xml/string-first<-xml child))) (else (copy terrain (msg<-error :invalidtagfound (anymap :type base/terrain :tag tag)))))) :test (test (base/terrain :titles "titles") (terrain<-terrain-xmlchild (empty base/terrain) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified terrain based on a given child Xml.") (func terrain<-xml : base/terrain [xml : xml/xml] (let : base/terrain [propmap : stringmap := (:propmap xml) terrain : base/terrain := (terrain<-terrain-stringmap (empty base/terrain) propmap)] (any<-list-start-reduce : base/terrain (:children xml) terrain terrain<-terrain-xmlchild)) :doc "Returns a terrain from a given xml.") (func unit<-unit-key-value : base/unit [current : base/unit key : string value : string] (switch : base/unit key (case "" current) (case (list "name" "image" "classification" "crew" "body" "height" "length" "mass" "mind" "range" "speed" "speedair" "speedland" "speedspace" "speedwater" "width" "will") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unit :prop key :value value))))) :doc "Returns a modified unit from a key value.") (func unit<-unit-stringmap : base/unit [unit : base/unit propmap : stringmap] (any<-map-start-reduce propmap unit unit<-unit-key-value) :test (test (base/unit :name "name" :image "image") (unit<-unit-stringmap (empty base/unit) (stringmap :name "name" :image "image"))) :doc "Returns a new unit from a propmap.") (func unit<-unit-xmlchild : base/unit [unit : base/unit child : xml/xml] (let : base/unit [tag : string := (:tag child)] (switch : base/unit tag (case "" unit) (case (list "reference" "summary" "titles") (copy unit tag (xml/string-first<-xml child))) (case "power" (unit<-unit-xmlpower unit child)) (case "skill" (unit<-unit-xmlskill unit child)) (case "weakness" (unit<-unit-xmlweakness unit child)) (else (copy unit (msg<-error :invalidtagfound (anymap :type base/unit :tag tag)))))) :test (test (base/unit :titles "titles") (unit<-unit-xmlchild (empty base/unit) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unit based on a given child Xml.") (func unit<-unit-xmlpower : base/unit [unit : base/unit xmlpower : xml/xml] (let : base/unit [unitpower : base/unitpower := (unitpower<-xml xmlpower) name : string := (:name unitpower) origmap : base/unitpowermap := (:unitpowermap unit) chgmap : base/unitpowermap := (copy origmap name unitpower)] (copy unit :unitpowermap chgmap)) :doc "Return a unit with new unit added to unitpowermap") (func unit<-unit-xmlskill : base/unit [unit : base/unit xmlskill : xml/xml] (let : base/unit [unitskill : base/unitskill := (unitskill<-xml xmlskill) name : string := (:name unitskill) origmap : base/unitskillmap := (:unitskillmap unit) chgmap : base/unitskillmap := (copy unitskillmap name unitskill)] (copy unit :unitskillmap chgmap)) :doc "Return a unit with new unitskill added to unitskillmap") (func unit<-unit-xmlweakness : base/unit [unit : base/unit xmlweakness : xml/xml] (let : base/unit [unitweakness : base/unitweakness := (unitweakness<-xml xmlweakness) name : string := (:name unitweakness) origmap : base/unitweaknessmap := (:unitweaknessmap unit) chgmap : base/unitweaknessmap := (copy origmap name unitweakness)] (copy unit :unitweaknessmap chgmap)) :doc "Return a unit with new unitweakness added to unitweaknessmap") (func unit<-xml : base/unit [xml : xml/xml] (let : base/unit [propmap : stringmap := (:propmap xml) unt : base/unit := (unit<-unit-stringmap (empty base/unit) propmap)] (any<-list-start-reduce : base/unit (:children xml) unt unit<-unit-xmlchild)) :test (test (base/unit :name "name" :image "image" :titles "titles" :reference "reference" :unitskillmap (base/unitskillmap "skill1" (base/unitskill :name "skill1"))) (unit<-xml (xml/xml :tag "unit" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "skill" :propmap (stringmap :name "skill1")))))) :doc "Returns a unit from a given xml.") (func unitability<-unitability-key-value : base/unitability [current : base/unitability key : string value : string] (switch : base/unitability key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitability :prop key :value value))))) :doc "Returns a modified unitability from a key value.") (func unitability<-unitability-stringmap : base/unitability [unitability : base/unitability propmap : stringmap] (any<-map-start-reduce : base/unitability propmap unitability unitability<-unitability-key-value) :test (test (base/unitability :name "name" :image "image") (unitability<-unitability-stringmap (empty base/unitability) (stringmap :name "name" :image "image"))) :doc "Returns a new unitability from a propmap.") (func unitability<-unitability-xmlchild : base/unitability [unitability : base/unitability child : xml/xml] (let : base/unitability [tag : string := (:tag child)] (switch : base/unitability tag (case "" unitability) (case (list "reference" "summary" "titles") (copy unitability tag (xml/string-first<-xml child))) (else (copy unitability (msg<-error :invalidtagfound (anymap :type base/unitability :tag tag)))))) :test (test (base/unitability :titles "titles") (unitability<-unitability-xmlchild (empty base/unitability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unitability based on a given child xml.") (func unitability<-xml : base/unitability [xml : xml/xml] (let : base/unitability [propmap : stringmap := (:propmap xml) unitability : base/unitability := (unitability<-unitability-stringmap (empty base/unitability) propmap)] (any<-list-start-reduce : base/unitability (:children xml) unitability unitability<-unitability-xmlchild)) :test (test (base/unitability :name "name" :image "image" :titles "titles" :reference "reference") (unitability<-xml (xml/xml :tag "unitability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a unitability from a given xml.") (func unititem<-unititem-key-value : base/unititem [current : base/unititem key : string value : string] (switch : base/unititem key (case "" current) (case (list "name" "image" "facing" "modifiers" "number" "rounds") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unititem :prop key :value value))))) :doc "Returns a modified unititem from a key value.") (func unititem<-unititem-stringmap : base/unititem [unititem : base/unititem propmap : stringmap] (any<-map-start-reduce : base/unititem propmap unititem unititem<-unititem-key-value) :test (test (base/unititem :name "name" :image "image") (unititem<-unititem-stringmap (empty base/unititem) (stringmap :name "name" :image "image"))) :doc "Returns a new unititem from a propmap.") (func unititem<-unititem-xmlchild : base/unititem [unititem : base/unititem child : xml/xml] (let : base/unititem [tag : string := (:tag child)] (switch : base/unititem tag (case "" unititem) (case (list "reference" "summary" "titles") (copy unititem tag (xml/string-first<-xml child))) (else (copy unititem (msg<-error :invalidtagfound (anymap :type base/unititem :tag tag)))))) :test (test (base/unititem :titles "titles1") (unititem<-unititem-xmlchild (empty base/unititem) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))))) :doc "Returns a modified unititem based on a given child xml.") (func unititem<-xml : base/unititem [xml : xml/xml] (let : base/unititem [propmap : stringmap := (:propmap xml) children : xml/xmllist := (:children xml) unititem : base/unititem := (unititem<-unititem-stringmap (empty base/unititem) propmap)] (any<-list-start-reduce : base/unititem children unititem unititem<-unititem-xmlchild)) :test (test (base/unititem :name "name1" :image "image1" :titles "titles1" :reference "reference1" :summary "summary1") (unititem<-xml (xml/xml :tag "unititem" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))))) :doc "Returns a unititem from a given xml.") (func unitpower<-unitpower-key-value : base/unitpower [current : base/unitpower key : string value : string] (switch : base/unitpower key (case "" current) (case (list "name" "image" "back" "bottom" "front" "level" "over" "side" "strength" "under") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitpower :prop key :value value))))) :doc "Returns a modified unitpower from a key value.") (func unitpower<-unitpower-stringmap : base/unitpower [unitpower : base/unitpower propmap : stringmap] (any<-map-start-reduce propmap unitpower unitpower<-unitpower-key-value) :doc "Returns a new unitpower from a propmap.") (func unitpower<-unitpower-xmlability : base/unitpower [unitpower : base/unitpower xmlability : xml/xml] (let : base/unitpower [ability : base/unitability := (unitability<-xml xmlability) name : string := (:name ability) origmap : base/unitabilitymap := (:unitabilitymap unitpower) chgmap : base/unitabilitymap := (copy origmap name ability)] (copy unitpower :unitabilitymap chgmap)) :doc "") (func unitpower<-unitpower-xmlchild : base/unitpower [unitpower : base/unitpower child : xml/xml] (let : base/unitpower [tag : string := (:tag child)] (switch : base/unitpower tag (case "" unitpower) (case (list "reference" "summary" "titles") (copy unitpower tag (xml/string-first<-xml child))) (case "ability" (unitpower<-unitpower-xmlability unitpower child)) (case "item" (unitpower<-unitpower-xmlitem unitpower child)) (case "specialty" (unitpower<-unitpower-xmlspecialty unitpower child)) (else (copy unitpower (msg<-error :invalidtagfound (anymap :type base/unitpower :tag tag)))))) :test (test (base/unitpower :summary "summary1") (unitpower<-unitpower-xmlchild (empty base/unitpower) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))) :doc "") (func unitpower<-unitpower-xmlitem : base/unitpower [unitpower : base/unitpower xmlitem : xml/xml] (let : base/unitpower [item : base/unititem := (unititem<-xml xmlitem) name : string := (:name item) origmap : base/unititemmap := (:unititemmap unitpower) chgmap : base/unititemmap := (copy origmap name item)] (copy unitpower :unititemmap chgmap)) :doc "") (func unitpower<-unitpower-xmlspecialty : base/unitpower [unitpower : base/unitpower xmlspecialty : xml/xml] (let : base/unitpower [specialty : base/unitspecialty := (unitspecialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/unitspecialtymap := (:unitspecialtymap unitpower) chgmap : base/unitspecialtymap := (copy origmap name specialty)] (copy unitpower :unitspecialtymap chgmap)) :doc "") (func unitpower<-xml : base/unitpower [xml : xml/xml] (let : base/unitpower [propmap : stringmap := (:propmap xml) unitpower : base/unitpower := (unitpower<-unitpower-stringmap (empty base/unitpower) propmap)] (any<-list-start-reduce : base/unitpower (:children xml) unitpower unitpower<-unitpower-xmlchild)) :doc "") (func unitskill<-unitskill-key-value : base/unitskill [current : base/unitskill key : string value : string] (switch : base/unitskill key (case "" current) (case (list "name" "image" "back" "bottom" "front" "level" "side" "top") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitskill :prop key :value value))))) :doc "Returns a modified unitskill from a key value.") (func unitskill<-unitskill-stringmap : base/unitskill [unitskill : base/unitskill propmap : stringmap] (any<-map-start-reduce propmap unitskill unitskill<-unitskill-key-value) :doc "Returns a new unitskill from a propmap.") (func unitskill<-unitskill-xmlability : base/unitskill [unitskill : base/unitskill xmlability : xml/xml] (let : base/unitskill [unitability : base/unitability := (unitability<-xml xmlability) name : string := (:name unitability) origmap : base/unitabilitymap := (:unitabilitymap unitskill) chgmap : base/unitabilitymap := (copy origmap name unitability)] (copy unitskill :unitabilitymap chgmap)) :doc "") (func unitskill<-unitskill-xmlchild : base/unitskill [unitskill : base/unitskill child : xml/xml] (let : base/unitskill [tag : string := (:tag child)] (switch : base/unitskill tag (case "" unitskill) (case (list "reference" "summary" "titles") (copy unitskill tag (xml/string-first<-xml child))) (case "ability" (unitskill<-unitskill-xmlability unitskill child)) (case "item" (unitskill<-unitskill-xmlitem unitskill child)) (case "specialty" (unitskill<-unitskill-xmlspecialty unitskill child)) (else (copy unitskill (msg<-error :invalidtagfound (anymap :type base/unitskill :tag tag)))))) :test (test (base/unitskill :summary "summary1") (unitskill<-unitskill-xmlchild (empty base/unitskill) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))) :doc "") (func unitskill<-unitskill-xmlitem : base/unitskill [unitskill : base/unitskill xmlitem : xml/xml] (let : base/unitskill [item : base/unititem := (unititem<-xml xmlitem) name : string := (:name item) origmap : base/unititemmap := (:unititemmap unitskill) chgmap : base/unititemmap := (copy origmap name item)] (copy unitskill :unititemmap chgmap)) :doc "") (func unitskill<-unitskill-xmlspecialty : base/unitskill [unitskill : base/unitskill xmlspecialty : xml/xml] (let : base/unitskill [specialty : base/unitspecialty := (unitspecialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/unitspecialtymap := (:unitspecialtymap unitskill) chgmap : base/unitspecialtymap := (copy origmap name specialty)] (copy unitskill :unitspecialtymap chgmap)) :doc "") (func unitskill<-xml : base/unitskill [xml : xml/xml] (let : base/unitskill [propmap : stringmap := (:propmap xml) unitskill : base/unitskill := (unitskill<-unitskill-stringmap (empty base/unitskill) propmap)] (any<-list-start-reduce : base/unitskill (:children xml) unitskill unitskill<-unitskill-xmlchild)) :doc "") (func unitspecialty<-unitspecialty-key-value : base/unitspecialty [current : base/unitspecialty key : string value : string] (switch : base/unitspecialty key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitspecialty :prop key :value value))))) :doc "Returns a modified unitspecialty from a key value.") (func unitspecialty<-unitspecialty-stringmap : base/unitspecialty [unitspecialty : base/unitspecialty propmap : stringmap] (any<-map-start-reduce : base/unitspecialty propmap unitspecialty unitspecialty<-unitspecialty-key-value) :test (test (base/unitspecialty :name "name" :image "image") (unitspecialty<-unitspecialty-stringmap (empty base/unitspecialty) (stringmap :name "name" :image "image"))) :doc "Returns a new unitspecialty from a propmap.") (func unitspecialty<-unitspecialty-xmlchild : base/unitspecialty [unitspecialty : base/unitspecialty child : xml/xml] (let : base/unitspecialty [tag : string := (:tag child)] (switch : base/unitspecialty tag (case "" unitspecialty) (case (list "reference" "summary" "titles") (copy unitspecialty tag (xml/string-first<-xml child))) (else (copy unitspecialty (msg<-error :invalidtagfound (anymap :type base/unitspecialty :tag tag)))))) :test (test (base/unitspecialty :titles "titles") (unitspecialty<-unitspecialty-xmlchild (empty base/unitspecialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unitspecialty based on a given child xml.") (func unitspecialty<-xml : base/unitspecialty [xml : xml/xml] (let : base/unitspecialty [propmap : stringmap := (:propmap xml) unitspecialty : base/unitspecialty := (unitspecialty<-unitspecialty-stringmap (empty base/unitspecialty) propmap)] (any<-list-start-reduce : base/unitspecialty (:children xml) unitspecialty unitspecialty<-unitspecialty-xmlchild)) :test (test (base/unitspecialty :name "name" :image "image" :titles "titles" :reference "reference") (unitspecialty<-xml (xml/xml :tag "unitspecialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a unitspecialty from a given xml.") (func unitweakness<-xml : base/unitweakness [xml : xml/xml]) (func weakness<-xml : base/weakness [xml : xml/xml]) (func xml-read<-bookname : xml/xml [bookname : string] (xml/xml-read<-file (file-read<-bookname bookname)) :context :doc "Returns an xml from a file with bookname.")
nx/tactics/books/bookloader / ability<-ability-key-value
Description:
  • Returns a modified ability from a key value.
Function Name:
  • ability<-ability-key-value
Return Type:
  • nx/tactics/base/ability
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/ability
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ability<-ability-key-value : base/ability [current : base/ability key : string value : string] (switch : base/ability key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/ability :prop key :value value))))) :doc "Returns a modified ability from a key value.")
nx/tactics/books/bookloader / ability<-ability-stringmap
Description:
  • Returns a new ability from a propmap.
Function Name:
  • ability<-ability-stringmap
Return Type:
  • nx/tactics/base/ability
Arguments:
  • Name
    Type
    Generic
    Description
    ability
    nx/tactics/base/ability
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/ability :name "name" :image "image") (ability<-ability-stringmap (empty base/ability) (stringmap :name "name" :image "image")))
Source Code:
  • (func ability<-ability-stringmap : base/ability [ability : base/ability propmap : stringmap] (any<-map-start-reduce : base/ability propmap ability ability<-ability-key-value) :test (test (base/ability :name "name" :image "image") (ability<-ability-stringmap (empty base/ability) (stringmap :name "name" :image "image"))) :doc "Returns a new ability from a propmap.")
nx/tactics/books/bookloader / ability<-ability-xmlchild
Description:
  • Returns a modified ability based on a given child xml.
Function Name:
  • ability<-ability-xmlchild
Return Type:
  • nx/tactics/base/ability
Arguments:
  • Name
    Type
    Generic
    Description
    ability
    nx/tactics/base/ability
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/ability :titles "titles") (ability<-ability-xmlchild (empty base/ability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func ability<-ability-xmlchild : base/ability [ability : base/ability child : xml/xml] (let : base/ability [tag : string := (:tag child)] (switch : base/ability tag (case "" ability) (case (list "reference" "summary" "titles") (copy ability tag (xml/string-first<-xml child))) (else (copy ability (msg<-error :invalidtagfound (anymap :type base/ability :tag tag)))))) :test (test (base/ability :titles "titles") (ability<-ability-xmlchild (empty base/ability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified ability based on a given child xml.")
nx/tactics/books/bookloader / ability<-xml
Description:
  • Returns a ability from a given xml.
Function Name:
  • ability<-xml
Return Type:
  • nx/tactics/base/ability
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/ability :name "name" :image "image" :titles "titles" :reference "reference") (ability<-xml (xml/xml :tag "ability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference")))))))
Source Code:
  • (func ability<-xml : base/ability [xml : xml/xml] (let : base/ability [propmap : stringmap := (:propmap xml) ability : base/ability := (ability<-ability-stringmap (empty base/ability) propmap)] (any<-list-start-reduce : base/ability (:children xml) ability ability<-ability-xmlchild)) :test (test (base/ability :name "name" :image "image" :titles "titles" :reference "reference") (ability<-xml (xml/xml :tag "ability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a ability from a given xml.")
nx/tactics/books/bookloader / book<-book-key-value
Description:
  • Returns a modified book from a key value.
Function Name:
  • book<-book-key-value
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/book
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
  • (test (base/book :name "nm") (book<-book-key-value (empty base/book) "name" "nm"))
  • (test (base/book :name "image") (book<-book-key-value (empty base/book) "name" "image"))
Source Code:
  • (func book<-book-key-value : base/book [current : base/book key : string value : string] (switch : base/book key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/book :prop key :value value))))) :test (test (base/book :name "nm") (book<-book-key-value (empty base/book) "name" "nm")) (test (base/book :name "image") (book<-book-key-value (empty base/book) "name" "image")) :doc "Returns a modified book from a key value.")
nx/tactics/books/bookloader / book<-book-stringmap
Description:
  • Returns a new book from a propmap.
Function Name:
  • book<-book-stringmap
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/book :name "name" :image "image") (book<-book-stringmap (empty base/book) (stringmap :name "name" :image "image")))
Source Code:
  • (func book<-book-stringmap : base/book [book : base/book propmap : stringmap] (any<-map-start-reduce : base/book propmap book book<-book-key-value) :test (test (base/book :name "name" :image "image") (book<-book-stringmap (empty base/book) (stringmap :name "name" :image "image"))) :doc "Returns a new book from a propmap.")
nx/tactics/books/bookloader / book<-book-xml
Description:
  • Returns an altered book based on xml child.
Function Name:
  • book<-book-xml
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/book
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/book :name "name1") (book<-book-xml (empty base/book) (xml/xml :tag "doc" :propmap (stringmap :name "name1"))))
  • (test (empty base/book) (book<-book-xml (empty base/book) (xml/xml :tag "?xml")))
  • (test (base/book :name "name1" (msgblock (msg :code ":duplicatetagfound" :detail (anymap :type nx/tactics/base/book :tag "doc") :severity 2))) (book<-book-xml (base/book :name "name1") (xml/xml :tag "doc")))
Source Code:
  • (func book<-book-xml : base/book [current : base/book child : xml/xml] (let : base/book [tag : string := (:tag child)] (switch : base/book tag (case "" current) (case "!--" current) (case "?xml" current) (case "doc" (if : base/book (then (is-empty current) (book<-xmldoc child)) (else (copy current (msg<-error :duplicatetagfound (anymap :type base/book :tag tag)))))) (else (copy current (msg<-error :invalidtagfound (anymap :type base/book :tag tag)))))) :test (test (base/book :name "name1") (book<-book-xml (empty base/book) (xml/xml :tag "doc" :propmap (stringmap :name "name1")))) (test (empty base/book) (book<-book-xml (empty base/book) (xml/xml :tag "?xml"))) (test (base/book :name "name1" (msgblock (msg :code ":duplicatetagfound" :detail (anymap :type nx/tactics/base/book :tag "doc") :severity 2))) (book<-book-xml (base/book :name "name1") (xml/xml :tag "doc"))) :doc "Returns an altered book based on xml child.")
nx/tactics/books/bookloader / book<-book-xmlchapter
Description:
  • Returns an altered book based on xmlchapter.
Function Name:
  • book<-book-xmlchapter
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchapter (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1"))))
Source Code:
  • (func book<-book-xmlchapter : base/book [book : base/book xml : xml/xml] (let : base/book [chapter : base/chapter := (chapter<-xml xml) name : string := (:name chapter) origmap : base/chaptermap := (:chaptermap book) chgmap : base/chaptermap := (copy origmap name chapter)] (copy book :chaptermap chgmap)) :test (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchapter (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))) :doc "Returns an altered book based on xmlchapter.")
nx/tactics/books/bookloader / book<-book-xmlchild
Description:
  • Returns a modified book based on a given child xml.
Function Name:
  • book<-book-xmlchild
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/book :titles "titles") (book<-book-xmlchild (empty base/book) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
  • (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchild (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1"))))
Source Code:
  • (func book<-book-xmlchild : base/book [book : base/book child : xml/xml] (let : base/book [tag : string := (:tag child)] (switch : base/book tag (case "" book) (case (list "reference" "summary" "titles") (copy book tag (xml/string-first<-xml child))) (case "chapter" (book<-book-xmlchapter book child)) (else (copy book (msg<-error :invalidtagfound (anymap :type base/book :tag tag)))))) :test (test (base/book :titles "titles") (book<-book-xmlchild (empty base/book) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) (test (base/book :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-book-xmlchild (empty base/book) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))) :doc "Returns a modified book based on a given child xml.")
nx/tactics/books/bookloader / book<-xml
Description:
  • Returns a book from a given top level xml.
Function Name:
  • book<-xml
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/book :name "name1") (book<-xml (xml/xml :children (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1"))))))
Source Code:
  • (func book<-xml : base/book [xml : xml/xml] (book<-xmllist (:children xml)) :test (test (base/book :name "name1") (book<-xml (xml/xml :children (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1")))))) :doc "Returns a book from a given top level xml.")
nx/tactics/books/bookloader / book<-xmldoc
Description:
  • Returns a book from a given xml.
Function Name:
  • book<-xmldoc
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/book :name "name1" :image "image1" :titles "titles1" :reference "reference1" :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-xmldoc (xml/xml :tag "doc" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1"))))))
Source Code:
  • (func book<-xmldoc : base/book [xml : xml/xml] (let : base/book [propmap : stringmap := (:propmap xml) children : xmllist := (:children xml) book : base/book := (book<-book-stringmap (empty base/book) propmap)] (any<-list-start-reduce : base/book children book book<-book-xmlchild)) :test (test (base/book :name "name1" :image "image1" :titles "titles1" :reference "reference1" :chaptermap (base/chaptermap :chapter1 (base/chapter :name "chapter1"))) (book<-xmldoc (xml/xml :tag "doc" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "chapter" :propmap (stringmap :name "chapter1")))))) :doc "Returns a book from a given xml.")
nx/tactics/books/bookloader / book<-xmllist
Description:
  • Returns a book from a given xml.
Function Name:
  • book<-xmllist
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    xmllist
    vx/data/xml/xmllist
Usage/Test Cases:
  • (test (base/book :name "name1") (book<-xmllist (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1")))))
Source Code:
  • (func book<-xmllist : base/book [xmllist : xml/xmllist] (any<-list-start-reduce : base/book xmllist (empty base/book) book<-book-xml) :test (test (base/book :name "name1") (book<-xmllist (xml/xmllist (xml/xml :tag "?xml") (xml/xml :tag "doc" :propmap (stringmap :name "name1"))))) :doc "Returns a book from a given xml.")
nx/tactics/books/bookloader / boolean-write<-book
Description:
  • Returns boolean after writing book as a file.
Function Name:
  • boolean-write<-book
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
Usage/Test Cases:
Source Code:
  • (func boolean-write<-book : boolean [book : base/book] (let : boolean [text : string := (string-vxlisp<-book book) file : fil/file := (file-write<-book book)] (boolean-write<-file-string file text)) :context :doc "Returns boolean after writing book as a file.")
nx/tactics/books/bookloader / book-read<-bookname
Description:
  • Returns a book by loading the given Xml filename.
Function Name:
  • book-read<-bookname
Return Type:
  • nx/tactics/base/book
Arguments:
  • Name
    Type
    Generic
    Description
    bookname
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func book-read<-bookname : base/book [bookname : string] (let : base/book [xml : xml/xml := (xml-read<-bookname bookname)] (book<-xml xml)) :context :doc "Returns a book by loading the given Xml filename.")
nx/tactics/books/bookloader / boolean-write<-booknames
Description:
  • Returns boolean after writing book as a file.
Function Name:
  • boolean-write<-booknames
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    booknames
    vx/core/stringlist
Usage/Test Cases:
Source Code:
  • (func boolean-write<-booknames : boolean [booknames : stringlist] (let : boolean [bools : booleanlist := (list<-list : booleanlist booknames (fn : boolean [bookname : string] (let : boolean [book : base/book := (book-read<-bookname bookname)] (boolean-write<-book book))))] (and bools)) :context :doc "Returns boolean after writing book as a file.")
nx/tactics/books/bookloader / chapter<-chapter-key-value
Description:
  • Returns a modified chapter from a key value.
Function Name:
  • chapter<-chapter-key-value
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/chapter
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func chapter<-chapter-key-value : base/chapter [current : base/chapter key : string value : string] (switch : base/chapter key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/chapter :prop key :value value))))) :doc "Returns a modified chapter from a key value.")
nx/tactics/books/bookloader / chapter<-chapter-stringmap
Description:
  • Returns a new book from a propmap.
Function Name:
  • chapter<-chapter-stringmap
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/chapter :name "name" :image "image") (chapter<-chapter-stringmap (empty base/chapter) (stringmap :name "name" :image "image")))
Source Code:
  • (func chapter<-chapter-stringmap : base/chapter [chapter : base/chapter propmap : stringmap] (any<-map-start-reduce : base/chapter propmap chapter chapter<-chapter-key-value) :test (test (base/chapter :name "name" :image "image") (chapter<-chapter-stringmap (empty base/chapter) (stringmap :name "name" :image "image"))) :doc "Returns a new book from a propmap.")
nx/tactics/books/bookloader / chapter<-chapter-xmlchild
Description:
  • Returns a modified chapter based on a given child Xml.
Function Name:
  • chapter<-chapter-xmlchild
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/chapter :titles "titles") (chapter<-chapter-xmlchild (empty base/chapter) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func chapter<-chapter-xmlchild : base/chapter [chapter : base/chapter child : xml/xml] (let : base/chapter [tag : string := (:tag child)] (switch : base/chapter tag (case "" chapter) (case (list "reference" "summary" "titles") (copy chapter tag (xml/string-first<-xml child))) (case "section" (chapter<-chapter-xmlsection chapter child)) (else (copy chapter (msg<-error :invalidtagfound (anymap :type base/chapter :tag tag)))))) :test (test (base/chapter :titles "titles") (chapter<-chapter-xmlchild (empty base/chapter) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified chapter based on a given child Xml.")
nx/tactics/books/bookloader / chapter<-chapter-xmlsection
Description:
  • Return a chapter with new section added to sectionmap
Function Name:
  • chapter<-chapter-xmlsection
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
    xmlsection
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func chapter<-chapter-xmlsection : base/chapter [chapter : base/chapter xmlsection : xml/xml] (let : base/chapter [section : base/section := (section<-xml xmlsection) name : string := (:name section) origmap : base/sectionmap := (:sectionmap chapter) chgmap : base/sectionmap := (copy origmap name section)] (copy chapter :sectionmap chgmap)) :doc "Return a chapter with new section added to sectionmap")
nx/tactics/books/bookloader / chapter<-xml
Description:
  • Returns a chapter from a given Xml.
Function Name:
  • chapter<-xml
Return Type:
  • nx/tactics/base/chapter
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/chapter :name "name" :image "image" :titles "titles" :reference "reference" :sectionmap (base/sectionmap :section1 (base/section :name "section1") :section2 (base/section :name "section2"))) (chapter<-xml (xml/xml :tag "chapter" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "section" :propmap (stringmap :name "section2"))))))
Source Code:
  • (func chapter<-xml : base/chapter [xml : xml/xml] (let : base/chapter [propmap : stringmap := (:propmap xml) chap : base/chapter := (chapter<-chapter-stringmap (empty base/chapter) propmap)] (any<-list-start-reduce : base/chapter (:children xml) chap chapter<-chapter-xmlchild)) :test (test (base/chapter :name "name" :image "image" :titles "titles" :reference "reference" :sectionmap (base/sectionmap :section1 (base/section :name "section1") :section2 (base/section :name "section2"))) (chapter<-xml (xml/xml :tag "chapter" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "section" :propmap (stringmap :name "section2")))))) :doc "Returns a chapter from a given Xml.")
nx/tactics/books/bookloader / damage<-damage-key-value
Description:
  • Returns a modified damage from a key value.
Function Name:
  • damage<-damage-key-value
Return Type:
  • nx/tactics/base/damage
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/damage
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func damage<-damage-key-value : base/damage [current : base/damage key : string value : string] (switch : base/damage key (case "" current) (case (list "name" "image" "classification") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/damage :prop key :value value))))) :doc "Returns a modified damage from a key value.")
nx/tactics/books/bookloader / damage<-damage-stringmap
Description:
  • Returns a damage from a propmap.
Function Name:
  • damage<-damage-stringmap
Return Type:
  • nx/tactics/base/damage
Arguments:
  • Name
    Type
    Generic
    Description
    damage
    nx/tactics/base/damage
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/damage :name "name" :image "image") (damage<-damage-stringmap (empty base/damage) (stringmap :name "name" :image "image")))
Source Code:
  • (func damage<-damage-stringmap : base/damage [damage : base/damage propmap : stringmap] (any<-map-start-reduce : base/damage propmap damage damage<-damage-key-value) :test (test (base/damage :name "name" :image "image") (damage<-damage-stringmap (empty base/damage) (stringmap :name "name" :image "image"))) :doc "Returns a damage from a propmap.")
nx/tactics/books/bookloader / damage<-damage-xmlchild
Description:
  • Returns a modified damage based on a given child Xml.
Function Name:
  • damage<-damage-xmlchild
Return Type:
  • nx/tactics/base/damage
Arguments:
  • Name
    Type
    Generic
    Description
    damage
    nx/tactics/base/damage
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/damage :titles "titles") (damage<-damage-xmlchild (empty base/damage) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func damage<-damage-xmlchild : base/damage [damage : base/damage child : xml/xml] (let : base/damage [tag : string := (:tag child)] (switch : base/damage tag (case "" damage) (case (list "reference" "summary" "titles") (copy damage tag (xml/string-first<-xml child))) (else (copy damage (msg<-error :invalidtagfound (anymap :type base/damage :tag tag)))))) :test (test (base/damage :titles "titles") (damage<-damage-xmlchild (empty base/damage) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified damage based on a given child Xml.")
nx/tactics/books/bookloader / damage<-xml
Description:
  • Returns a damage from a given xml.
Function Name:
  • damage<-xml
Return Type:
  • nx/tactics/base/damage
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func damage<-xml : base/damage [xml : xml/xml] (let : base/damage [propmap : stringmap := (:propmap xml) damage : base/damage := (damage<-damage-stringmap (empty base/damage) propmap)] (any<-list-start-reduce : base/damage (:children xml) damage damage<-damage-xmlchild)) :doc "Returns a damage from a given xml.")
nx/tactics/books/bookloader / file-read<-bookname
Description:
  • Returns a file from a bookname.
Function Name:
  • file-read<-bookname
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
    bookname
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func file-read<-bookname : fil/file [bookname : string] (fil/file :path "resources/books" :name (string bookname ".xml")) :doc "Returns a file from a bookname.")
nx/tactics/books/bookloader / file-write<-book
Description:
  • Returns a file with string from book
Function Name:
  • file-write<-book
Return Type:
  • vx/data/file/file
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
Usage/Test Cases:
Source Code:
  • (func file-write<-book : fil/file [book : base/book] (let : fil/file [name : string := (:name book) bookname : string := (string-writename<-string name)] (fil/file :path "resources/books" :name (string bookname ".vxlisp"))) :doc "Returns a file with string from book")
nx/tactics/books/bookloader / item<-item-key-value
Description:
  • Returns a modified item from a key value.
Function Name:
  • item<-item-key-value
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/item
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func item<-item-key-value : base/item [current : base/item key : string value : string] (switch : base/item key (case "" current) (case (list "name" "image" "classification" "crew" "energy" "explosive" "height" "length" "mass" "modifiers" "muzzlevelocity" "range" "rof" "rounds" "speedair" "speedland" "speedspace" "speedwater" "width") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/item :prop key :value value))))) :doc "Returns a modified item from a key value.")
nx/tactics/books/bookloader / item<-item-stringmap
Description:
  • Returns a new item from a propmap.
Function Name:
  • item<-item-stringmap
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
    item
    nx/tactics/base/item
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func item<-item-stringmap : base/item [item : base/item propmap : stringmap] (any<-map-start-reduce : base/item propmap item item<-item-key-value) :doc "Returns a new item from a propmap.")
nx/tactics/books/bookloader / item<-item-xmlchild
Description:
  • Returns a modified item based on a given child xml.
Function Name:
  • item<-item-xmlchild
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
    item
    nx/tactics/base/item
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func item<-item-xmlchild : base/item [item : base/item child : xml/xml] (let : base/item [tag : string := (:tag child)] (switch : base/item tag (case "" item) (case (list "reference" "summary" "titles") (copy item tag (xml/string-first<-xml child))) (else (copy item (msg<-error :invalidtagfound (anymap :type base/item :tag tag)))))) :doc "Returns a modified item based on a given child xml.")
nx/tactics/books/bookloader / item<-xml
Description:
  • Returns a item from a given xml.
Function Name:
  • item<-xml
Return Type:
  • nx/tactics/base/item
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func item<-xml : base/item [xml : xml/xml] (let : base/item [propmap : stringmap := (:propmap xml) item : base/item := (item<-item-stringmap (empty base/item) propmap)] (any<-list-start-reduce : base/item (:children xml) item item<-item-xmlchild)) :doc "Returns a item from a given xml.")
nx/tactics/books/bookloader / location<-location-key-value
Description:
  • Returns a modified location from a key value.
Function Name:
  • location<-location-key-value
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/location
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func location<-location-key-value : base/location [current : base/location key : string value : string] (switch : base/location key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/location :prop key :value value))))) :doc "Returns a modified location from a key value.")
nx/tactics/books/bookloader / location<-location-stringmap
Description:
  • Returns a location from a propmap.
Function Name:
  • location<-location-stringmap
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
    location
    nx/tactics/base/location
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func location<-location-stringmap : base/location [location : base/location propmap : stringmap] (any<-map-start-reduce : base/location propmap location location<-location-key-value) :doc "Returns a location from a propmap.")
nx/tactics/books/bookloader / location<-location-xmlchild
Description:
  • Returns a modified location based on a given child Xml.
Function Name:
  • location<-location-xmlchild
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
    location
    nx/tactics/base/location
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func location<-location-xmlchild : base/location [location : base/location child : xml/xml] (let : base/location [tag : string := (:tag child)] (switch : base/location tag (case "" location) (case (list "reference" "summary" "titles") (copy location tag (xml/string-first<-xml child))) (else (copy location (msg<-error :invalidtagfound (anymap :type base/location :tag tag)))))) :doc "Returns a modified location based on a given child Xml.")
nx/tactics/books/bookloader / location<-xml
Description:
  • Returns a location from a given xml.
Function Name:
  • location<-xml
Return Type:
  • nx/tactics/base/location
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func location<-xml : base/location [xml : xml/xml] (let : base/location [propmap : stringmap := (:propmap xml) location : base/location := (location<-location-stringmap (empty base/location) propmap)] (any<-list-start-reduce : base/location (:children xml) location location<-location-xmlchild)) :doc "Returns a location from a given xml.")
nx/tactics/books/bookloader / modifier<-modifier-key-value
Description:
  • Returns a modified modifier from a key value.
Function Name:
  • modifier<-modifier-key-value
Return Type:
  • nx/tactics/base/modifier
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/modifier
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func modifier<-modifier-key-value : base/modifier [current : base/modifier key : string value : string] (switch : base/modifier key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/modifier :prop key :value value))))) :doc "Returns a modified modifier from a key value.")
nx/tactics/books/bookloader / modifier<-modifier-stringmap
Description:
  • Returns a modifier from a propmap.
Function Name:
  • modifier<-modifier-stringmap
Return Type:
  • nx/tactics/base/modifier
Arguments:
  • Name
    Type
    Generic
    Description
    modifier
    nx/tactics/base/modifier
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func modifier<-modifier-stringmap : base/modifier [modifier : base/modifier propmap : stringmap] (any<-map-start-reduce : base/modifier propmap modifier modifier<-modifier-key-value) :doc "Returns a modifier from a propmap.")
nx/tactics/books/bookloader / modifier<-modifier-xmlchild
Description:
  • Returns a modified modifier based on a given child xml.
Function Name:
  • modifier<-modifier-xmlchild
Return Type:
  • nx/tactics/base/modifier
Arguments:
  • Name
    Type
    Generic
    Description
    modifier
    nx/tactics/base/modifier
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func modifier<-modifier-xmlchild : base/modifier [modifier : base/modifier child : xml/xml] (let : base/modifier [tag : string := (:tag child)] (switch : base/modifier tag (case "" modifier) (case (list "reference" "summary" "titles") (copy modifier tag (xml/string-first<-xml child))) (else (copy modifier (msg<-error :invalidtagfound (anymap :type base/modifier :tag tag)))))) :doc "Returns a modified modifier based on a given child xml.")
nx/tactics/books/bookloader / modifier<-xml
Description:
  • Returns a modifier from a given xml.
Function Name:
  • modifier<-xml
Return Type:
  • nx/tactics/base/modifier
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func modifier<-xml : base/modifier [xml : xml/xml] (let : base/modifier [propmap : stringmap := (:propmap xml) modifier : base/modifier := (modifier<-modifier-stringmap (empty base/modifier) propmap)] (any<-list-start-reduce : base/modifier (:children xml) modifier modifier<-modifier-xmlchild)) :doc "Returns a modifier from a given xml.")
nx/tactics/books/bookloader / power<-power-key-value
Description:
  • Returns a modified power from a key value.
Function Name:
  • power<-power-key-value
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/power
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func power<-power-key-value : base/power [current : base/power key : string value : string] (switch : base/power key (case "" current) (case (list "name" "image" "stat") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/power :prop key :value value))))) :doc "Returns a modified power from a key value.")
nx/tactics/books/bookloader / power<-power-stringmap
Description:
  • Returns a new power from a propmap.
Function Name:
  • power<-power-stringmap
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    power
    nx/tactics/base/power
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/power :name "name" :image "image") (power<-power-stringmap (empty base/power) (stringmap :name "name" :image "image")))
Source Code:
  • (func power<-power-stringmap : base/power [power : base/power propmap : stringmap] (any<-map-start-reduce : base/power propmap power power<-power-key-value) :test (test (base/power :name "name" :image "image") (power<-power-stringmap (empty base/power) (stringmap :name "name" :image "image"))) :doc "Returns a new power from a propmap.")
nx/tactics/books/bookloader / power<-power-xmlchild
Description:
  • Returns a modified power based on a given child xml.
Function Name:
  • power<-power-xmlchild
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    power
    nx/tactics/base/power
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/power :titles "titles") (power<-power-xmlchild (empty base/power) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func power<-power-xmlchild : base/power [power : base/power child : xml/xml] (let : base/power [tag : string := (:tag child)] (switch : base/power tag (case "" power) (case (list "reference" "summary" "titles") (copy power tag (xml/string-first<-xml child))) (case "ability" (power<-power-xmlability power child)) (case "specialty" (power<-power-xmlspecialty power child)) (else (copy power (msg<-error :invalidtagfound (anymap :type base/power :tag tag)))))) :test (test (base/power :titles "titles") (power<-power-xmlchild (empty base/power) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified power based on a given child xml.")
nx/tactics/books/bookloader / power<-xml
Description:
  • Returns a power from a given Xml.
Function Name:
  • power<-xml
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/power :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (power<-xml (xml/xml :tag "power" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1"))))))
Source Code:
  • (func power<-xml : base/power [xml : xml/xml] (let : base/power [propmap : stringmap := (:propmap xml) children : xmllist := (:children xml) power : base/power := (power<-power-stringmap (empty base/power) propmap)] (any<-list-start-reduce : base/power children power power<-power-xmlchild)) :test (test (base/power :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (power<-xml (xml/xml :tag "power" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1")))))) :doc "Returns a power from a given Xml.")
nx/tactics/books/bookloader / power<-power-xmlability
Description:
  • Return a power with new ability added to abilitymap
Function Name:
  • power<-power-xmlability
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    power
    nx/tactics/base/power
    xmlability
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func power<-power-xmlability : base/power [power : base/power xmlability : xml/xml] (let : base/power [ability : base/ability := (ability<-xml xmlability) name : string := (:name ability) origmap : base/abilitymap := (:abilitymap power) chgmap : base/abilitymap := (copy origmap name ability)] (copy power :abilitymap chgmap)) :doc "Return a power with new ability added to abilitymap")
nx/tactics/books/bookloader / power<-power-xmlspecialty
Description:
  • Return a power with new specialty added to specialtymap
Function Name:
  • power<-power-xmlspecialty
Return Type:
  • nx/tactics/base/power
Arguments:
  • Name
    Type
    Generic
    Description
    power
    nx/tactics/base/power
    xmlspecialty
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func power<-power-xmlspecialty : base/power [power : base/power xmlspecialty : xml/xml] (let : base/power [specialty : base/specialty := (specialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/specialtymap := (:specialtymap power) chgmap : base/specialtymap := (copy origmap name specialty)] (copy power :specialtymap chgmap)) :doc "Return a power with new specialty added to specialtymap")
nx/tactics/books/bookloader / rule<-rule-key-value
Description:
  • Returns a modified rule from a key value.
Function Name:
  • rule<-rule-key-value
Return Type:
  • nx/tactics/base/rule
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/rule
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func rule<-rule-key-value : base/rule [current : base/rule key : string value : string] (switch : base/rule key (case "" current) (case (list "name" "image" "classification") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/rule :prop key :value value))))) :doc "Returns a modified rule from a key value.")
nx/tactics/books/bookloader / rule<-rule-stringmap
Description:
  • Returns a rule from a propmap.
Function Name:
  • rule<-rule-stringmap
Return Type:
  • nx/tactics/base/rule
Arguments:
  • Name
    Type
    Generic
    Description
    rule
    nx/tactics/base/rule
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/rule :name "name" :image "image") (rule<-rule-stringmap (empty base/rule) (stringmap :name "name" :image "image")))
Source Code:
  • (func rule<-rule-stringmap : base/rule [rule : base/rule propmap : stringmap] (any<-map-start-reduce : base/rule propmap rule rule<-rule-key-value) :test (test (base/rule :name "name" :image "image") (rule<-rule-stringmap (empty base/rule) (stringmap :name "name" :image "image"))) :doc "Returns a rule from a propmap.")
nx/tactics/books/bookloader / rule<-rule-xmlchild
Description:
  • Returns a modified rule based on a given child Xml.
Function Name:
  • rule<-rule-xmlchild
Return Type:
  • nx/tactics/base/rule
Arguments:
  • Name
    Type
    Generic
    Description
    rule
    nx/tactics/base/rule
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/rule :titles "titles") (rule<-rule-xmlchild (empty base/rule) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func rule<-rule-xmlchild : base/rule [rule : base/rule child : xml/xml] (let : base/rule [tag : string := (:tag child)] (switch : base/rule tag (case "" rule) (case (list "reference" "summary" "titles" "classification") (copy rule tag (xml/string-first<-xml child))) (else (copy rule (msg<-error :invalidtagfound (anymap :type base/rule :tag tag)))))) :test (test (base/rule :titles "titles") (rule<-rule-xmlchild (empty base/rule) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified rule based on a given child Xml.")
nx/tactics/books/bookloader / rule<-xml
Description:
  • Returns a rule from a given xml.
Function Name:
  • rule<-xml
Return Type:
  • nx/tactics/base/rule
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func rule<-xml : base/rule [xml : xml/xml] (let : base/rule [propmap : stringmap := (:propmap xml) rule : base/rule := (rule<-rule-stringmap (empty base/rule) propmap)] (any<-list-start-reduce : base/rule (:children xml) rule rule<-rule-xmlchild)) :doc "Returns a rule from a given xml.")
nx/tactics/books/bookloader / scenario<-scenario-key-value
Description:
  • Returns a modified scenario from a key value.
Function Name:
  • scenario<-scenario-key-value
Return Type:
  • nx/tactics/base/scenario
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/scenario
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func scenario<-scenario-key-value : base/scenario [current : base/scenario key : string value : string] (switch : base/scenario key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/scenario :prop key :value value))))) :doc "Returns a modified scenario from a key value.")
nx/tactics/books/bookloader / scenario<-scenario-stringmap
Description:
  • Returns a scenario from a propmap.
Function Name:
  • scenario<-scenario-stringmap
Return Type:
  • nx/tactics/base/scenario
Arguments:
  • Name
    Type
    Generic
    Description
    scenario
    nx/tactics/base/scenario
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func scenario<-scenario-stringmap : base/scenario [scenario : base/scenario propmap : stringmap] (any<-map-start-reduce : base/scenario propmap scenario scenario<-scenario-key-value) :doc "Returns a scenario from a propmap.")
nx/tactics/books/bookloader / scenario<-scenario-xmlchild
Description:
  • Returns a modified scenario based on a given child Xml.
Function Name:
  • scenario<-scenario-xmlchild
Return Type:
  • nx/tactics/base/scenario
Arguments:
  • Name
    Type
    Generic
    Description
    scenario
    nx/tactics/base/scenario
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func scenario<-scenario-xmlchild : base/scenario [scenario : base/scenario child : xml/xml] (let : base/scenario [tag : string := (:tag child)] (switch : base/scenario tag (case "" scenario) (case (list "reference" "summary" "titles") (copy scenario tag (xml/string-first<-xml child))) (case "team" (scenario<-scenario-xmlteam scenario child)) (else (copy scenario (msg<-error :invalidtagfound (anymap :type base/scenario :tag tag)))))) :doc "Returns a modified scenario based on a given child Xml.")
nx/tactics/books/bookloader / scenario<-scenario-xmlteam
Description:
  • Return a scenario with new team added to teammap
Function Name:
  • scenario<-scenario-xmlteam
Return Type:
  • nx/tactics/base/scenario
Arguments:
  • Name
    Type
    Generic
    Description
    scenario
    nx/tactics/base/scenario
    xmlteam
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func scenario<-scenario-xmlteam : base/scenario [scenario : base/scenario xmlteam : xml/xml] (let : base/scenario [current : base/team := (team<-xml xmlteam) name : string := (:name current) origmap : base/teammap := (:teammap scenario) chgmap : base/teammap := (copy origmap name current)] (copy scenario :teammap chgmap)) :doc "Return a scenario with new team added to teammap")
nx/tactics/books/bookloader / scenario<-xml
Description:
  • Returns a scenario from a given xml.
Function Name:
  • scenario<-xml
Return Type:
  • nx/tactics/base/scenario
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/scenario :name "name" :image "image" :titles "titles" :reference "reference") (scenario<-xml (xml/xml :tag "scenario" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference")))))))
Source Code:
  • (func scenario<-xml : base/scenario [xml : xml/xml] (let : base/scenario [propmap : stringmap := (:propmap xml) scenario : base/scenario := (scenario<-scenario-stringmap (empty base/scenario) propmap)] (any<-list-start-reduce : base/scenario (:children xml) scenario scenario<-scenario-xmlchild)) :test (test (base/scenario :name "name" :image "image" :titles "titles" :reference "reference") (scenario<-xml (xml/xml :tag "scenario" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a scenario from a given xml.")
nx/tactics/books/bookloader / section<-section-key-value
Description:
  • Returns a modified section from a key value.
Function Name:
  • section<-section-key-value
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/section
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func section<-section-key-value : base/section [current : base/section key : string value : string] (switch : base/section key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/section :prop key :value value))))) :doc "Returns a modified section from a key value.")
nx/tactics/books/bookloader / section<-section-stringmap
Description:
  • Returns a new book from a propmap.
Function Name:
  • section<-section-stringmap
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func section<-section-stringmap : base/section [section : base/section propmap : stringmap] (any<-map-start-reduce : base/section propmap section section<-section-key-value) :doc "Returns a new book from a propmap.")
nx/tactics/books/bookloader / section<-section-xmlchild
Description:
  • Returns a modified section based on a given child Xml.
Function Name:
  • section<-section-xmlchild
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlchild : base/section [section : base/section child : xml/xml] (let : base/section [tag : string := (:tag child)] (switch : base/section tag (case "" section) (case (list "reference" "summary" "titles") (copy section tag (xml/string-first<-xml child))) (case "damage" (section<-section-xmldamage section child)) (case "item" (section<-section-xmlitem section child)) (case "modifier" (section<-section-xmlmodifier section child)) (case "place" (section<-section-xmllocation section child)) (case "power" (section<-section-xmlpower section child)) (case "rule" (section<-section-xmlrule section child)) (case "scenario" (section<-section-xmlscenario section child)) (case "section" (section<-section-xmlsection section child)) (case "skill" (section<-section-xmlskill section child)) (case "terrain" (section<-section-xmlterrain section child)) (case "unit" (section<-section-xmlunit section child)) (else (copy section (msg<-error :invalidtagfound (anymap :type base/section :tag tag)))))) :doc "Returns a modified section based on a given child Xml.")
nx/tactics/books/bookloader / section<-section-xmldamage
Description:
  • Return a section with new damage added to damagemap
Function Name:
  • section<-section-xmldamage
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmldamage
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmldamage : base/section [section : base/section xmldamage : xml/xml] (let : base/section [current : base/damage := (damage<-xml xmldamage) name : string := (:name current) origmap : base/damagemap := (:damagemap section) chgmap : base/damagemap := (copy origmap name current)] (copy section :damagemap chgmap)) :doc "Return a section with new damage added to damagemap")
nx/tactics/books/bookloader / section<-section-xmlitem
Description:
  • Return a section with new item added to itemmap
Function Name:
  • section<-section-xmlitem
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlitem
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlitem : base/section [section : base/section xmlitem : xml/xml] (let : base/section [item : base/item := (item<-xml xmlitem) name : string := (:name item) origmap : base/itemmap := (:itemmap section) chgmap : base/itemmap := (copy origmap name item)] (copy section :itemmap chgmap)) :doc "Return a section with new item added to itemmap")
nx/tactics/books/bookloader / section<-section-xmllocation
Description:
  • Return a section with new location added to locationmap
Function Name:
  • section<-section-xmllocation
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmllocation
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmllocation : base/section [section : base/section xmllocation : xml/xml] (let : base/section [location : base/location := (location<-xml xmllocation) name : string := (:name location) origmap : base/locationmap := (:locationmap section) chgmap : base/locationmap := (copy origmap name location)] (copy section :locationmap chgmap)) :doc "Return a section with new location added to locationmap")
nx/tactics/books/bookloader / section<-section-xmlmodifier
Description:
  • Return a section with new modifier added to modifiermap
Function Name:
  • section<-section-xmlmodifier
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlmodifier
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlmodifier : base/section [section : base/section xmlmodifier : xml/xml] (let : base/section [modifier : base/modifier := (modifier<-xml xmlmodifier) name : string := (:name modifier) origmap : base/modifiermap := (:modifiermap section) chgmap : base/modifiermap := (copy origmap name modifier)] (copy section :modifiermap chgmap)) :doc "Return a section with new modifier added to modifiermap")
nx/tactics/books/bookloader / section<-section-xmlpower
Description:
  • Return a section with new power added to powermap
Function Name:
  • section<-section-xmlpower
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlpower
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlpower : base/section [section : base/section xmlpower : xml/xml] (let : base/section [power : base/power := (power<-xml xmlpower) name : string := (:name power) origmap : base/powermap := (:powermap section) chgmap : base/powermap := (copy origmap name power)] (copy section :powermap chgmap)) :doc "Return a section with new power added to powermap")
nx/tactics/books/bookloader / section<-section-xmlrule
Description:
  • Return a section with new rule added to rulemap
Function Name:
  • section<-section-xmlrule
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlrule
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlrule : base/section [section : base/section xmlrule : xml/xml] (let : base/section [rule : base/rule := (rule<-xml xmlrule) name : string := (:name rule) origmap : base/rulemap := (:rulemap section) chgmap : base/rulemap := (copy origmap name rule)] (copy section :rulemap chgmap)) :doc "Return a section with new rule added to rulemap")
nx/tactics/books/bookloader / section<-section-xmlscenario
Description:
  • Return a section with new scenario added to scenariomap
Function Name:
  • section<-section-xmlscenario
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlscenario
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlscenario : base/section [section : base/section xmlscenario : xml/xml] (let : base/section [scenario : base/scenario := (scenario<-xml xmlscenario) name : string := (:name scenario) origmap : base/scenariomap := (:scenariomap section) chgmap : base/scenariomap := (copy origmap name scenario)] (copy section :scenariomap chgmap)) :doc "Return a section with new scenario added to scenariomap")
nx/tactics/books/bookloader / section<-section-xmlsection
Description:
  • Return a section with new section added to sectionmap
Function Name:
  • section<-section-xmlsection
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlsection
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlsection : base/section [section : base/section xmlsection : xml/xml] (let : base/section [subsect : base/section := (section<-xml xmlsection) name : string := (:name subsect) origmap : base/sectionmap := (:sectionmap section) chgmap : base/sectionmap := (copy origmap name subsect)] (copy section :sectionmap chgmap)) :doc "Return a section with new section added to sectionmap")
nx/tactics/books/bookloader / section<-section-xmlskill
Description:
  • Return a section with new skill added to skillmap
Function Name:
  • section<-section-xmlskill
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlskill
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlskill : base/section [section : base/section xmlskill : xml/xml] (let : base/section [skill : base/skill := (skill<-xml xmlskill) name : string := (:name skill) origmap : base/skillmap := (:skillmap section) chgmap : base/skillmap := (copy origmap name skill)] (copy section :skillmap chgmap)) :doc "Return a section with new skill added to skillmap")
nx/tactics/books/bookloader / section<-section-xmlterrain
Description:
  • Return a section with new terrain added to terrainmap
Function Name:
  • section<-section-xmlterrain
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlterrain
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlterrain : base/section [section : base/section xmlterrain : xml/xml] (let : base/section [current : base/terrain := (terrain<-xml xmlterrain) name : string := (:name current) origmap : base/terrainmap := (:terrainmap section) chgmap : base/terrainmap := (copy origmap name current)] (copy section :terrainmap chgmap)) :doc "Return a section with new terrain added to terrainmap")
nx/tactics/books/bookloader / section<-section-xmlunit
Description:
  • Return a section with new unit added to unitmap
Function Name:
  • section<-section-xmlunit
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    section
    nx/tactics/base/section
    xmlunit
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func section<-section-xmlunit : base/section [section : base/section xmlunit : xml/xml] (let : base/section [unit : base/unit := (unit<-xml xmlunit) name : string := (:name unit) origmap : base/unitmap := (:unitmap section) chgmap : base/unitmap := (copy origmap name unit)] (copy section :unitmap chgmap)) :doc "Return a section with new unit added to unitmap")
nx/tactics/books/bookloader / section<-xml
Description:
  • Returns a section from a given Xml.
Function Name:
  • section<-xml
Return Type:
  • nx/tactics/base/section
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/section :name "name" :image "image" :titles "titles" :reference "reference" :powermap (base/powermap :power1 (base/power :name "power1")) :scenariomap (base/scenariomap :scenario1 (base/scenario :name "scenario1")) :sectionmap (base/sectionmap :section1 (base/section :name "section1")) :skillmap (base/skillmap :skill1 (base/skill :name "skill1"))) (section<-xml (xml/xml :tag "section" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "power" :propmap (stringmap :name "power1")) (xml/xml :tag "scenario" :propmap (stringmap :name "scenario1")) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "skill" :propmap (stringmap :name "skill1"))))))
Source Code:
  • (func section<-xml : base/section [xml : xml/xml] (let : base/section [propmap : stringmap := (:propmap xml) children : xml/xmllist := (:children xml) section : base/section := (section<-section-stringmap (empty base/section) propmap)] (any<-list-start-reduce : base/section children section section<-section-xmlchild)) :test (test (base/section :name "name" :image "image" :titles "titles" :reference "reference" :powermap (base/powermap :power1 (base/power :name "power1")) :scenariomap (base/scenariomap :scenario1 (base/scenario :name "scenario1")) :sectionmap (base/sectionmap :section1 (base/section :name "section1")) :skillmap (base/skillmap :skill1 (base/skill :name "skill1"))) (section<-xml (xml/xml :tag "section" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "power" :propmap (stringmap :name "power1")) (xml/xml :tag "scenario" :propmap (stringmap :name "scenario1")) (xml/xml :tag "section" :propmap (stringmap :name "section1")) (xml/xml :tag "skill" :propmap (stringmap :name "skill1")))))) :doc "Returns a section from a given Xml.")
nx/tactics/books/bookloader / skill<-skill-key-value
Description:
  • Returns a modified skill from a key value.
Function Name:
  • skill<-skill-key-value
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/skill
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func skill<-skill-key-value : base/skill [current : base/skill key : string value : string] (switch : base/skill key (case "" current) (case (list "name" "image" "stat") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/skill :prop key :value value))))) :doc "Returns a modified skill from a key value.")
nx/tactics/books/bookloader / skill<-skill-stringmap
Description:
  • Returns a new skill from a propmap.
Function Name:
  • skill<-skill-stringmap
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func skill<-skill-stringmap : base/skill [skill : base/skill propmap : stringmap] (any<-map-start-reduce : base/skill propmap skill skill<-skill-key-value) :doc "Returns a new skill from a propmap.")
nx/tactics/books/bookloader / skill<-skill-xmlchild
Description:
  • Returns a modified skill based on a given child Xml.
Function Name:
  • skill<-skill-xmlchild
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/skill :titles "titles") (skill<-skill-xmlchild (empty base/skill) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func skill<-skill-xmlchild : base/skill [skill : base/skill child : xml/xml] (let : base/skill [tag : string := (:tag child)] (switch : base/skill tag (case "" skill) (case (list "reference" "summary" "titles") (copy skill tag (xml/string-first<-xml child))) (case "ability" (skill<-skill-xmlability skill child)) (case "specialty" (skill<-skill-xmlspecialty skill child)) (else (copy skill (msg<-error :invalidtagfound (anymap :type base/skill :tag tag)))))) :test (test (base/skill :titles "titles") (skill<-skill-xmlchild (empty base/skill) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified skill based on a given child Xml.")
nx/tactics/books/bookloader / skill<-skill-xmlability
Description:
  • Return a skill with new ability added to abilitymap
Function Name:
  • skill<-skill-xmlability
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
    xmlability
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func skill<-skill-xmlability : base/skill [skill : base/skill xmlability : xml/xml] (let : base/skill [ability : base/ability := (ability<-xml xmlability) name : string := (:name ability) origmap : base/abilitymap := (:abilitymap skill) chgmap : base/abilitymap := (copy origmap name ability)] (copy skill :abilitymap chgmap)) :doc "Return a skill with new ability added to abilitymap")
nx/tactics/books/bookloader / skill<-skill-xmlspecialty
Description:
  • Return a skill with new specialty added to specialtymap
Function Name:
  • skill<-skill-xmlspecialty
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
    xmlspecialty
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func skill<-skill-xmlspecialty : base/skill [skill : base/skill xmlspecialty : xml/xml] (let : base/skill [specialty : base/specialty := (specialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/specialtymap := (:specialtymap skill) chgmap : base/specialtymap := (copy origmap name specialty)] (copy skill :specialtymap chgmap)) :doc "Return a skill with new specialty added to specialtymap")
nx/tactics/books/bookloader / skill<-xml
Description:
  • Returns a skill from a given xml.
Function Name:
  • skill<-xml
Return Type:
  • nx/tactics/base/skill
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/skill :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (skill<-xml (xml/xml :tag "skill" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1"))))))
Source Code:
  • (func skill<-xml : base/skill [xml : xml/xml] (let : base/skill [propmap : stringmap := (:propmap xml) skill : base/skill := (skill<-skill-stringmap (empty base/skill) propmap)] (any<-list-start-reduce : base/skill (:children xml) skill skill<-skill-xmlchild)) :test (test (base/skill :name "name" :image "image" :titles "titles" :reference "reference" :abilitymap (base/abilitymap :ability1 (base/ability :name "ability1")) :specialtymap (base/specialtymap :specialty1 (base/specialty :name "specialty1"))) (skill<-xml (xml/xml :tag "skill" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "ability" :propmap (stringmap :name "ability1")) (xml/xml :tag "specialty" :propmap (stringmap :name "specialty1")))))) :doc "Returns a skill from a given xml.")
nx/tactics/books/bookloader / specialty<-specialty-key-value
Description:
  • Returns a modified specialty from a key value.
Function Name:
  • specialty<-specialty-key-value
Return Type:
  • nx/tactics/base/specialty
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/specialty
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func specialty<-specialty-key-value : base/specialty [current : base/specialty key : string value : string] (switch : base/specialty key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/specialty :prop key :value value))))) :doc "Returns a modified specialty from a key value.")
nx/tactics/books/bookloader / specialty<-specialty-stringmap
Description:
  • Returns a new specialty from a propmap.
Function Name:
  • specialty<-specialty-stringmap
Return Type:
  • nx/tactics/base/specialty
Arguments:
  • Name
    Type
    Generic
    Description
    specialty
    nx/tactics/base/specialty
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/specialty :name "name" :image "image") (specialty<-specialty-stringmap (empty base/specialty) (stringmap :name "name" :image "image")))
Source Code:
  • (func specialty<-specialty-stringmap : base/specialty [specialty : base/specialty propmap : stringmap] (any<-map-start-reduce : base/specialty propmap specialty specialty<-specialty-key-value) :test (test (base/specialty :name "name" :image "image") (specialty<-specialty-stringmap (empty base/specialty) (stringmap :name "name" :image "image"))) :doc "Returns a new specialty from a propmap.")
nx/tactics/books/bookloader / specialty<-specialty-xmlchild
Description:
  • Returns a modified specialty based on a given child xml.
Function Name:
  • specialty<-specialty-xmlchild
Return Type:
  • nx/tactics/base/specialty
Arguments:
  • Name
    Type
    Generic
    Description
    specialty
    nx/tactics/base/specialty
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/specialty :titles "titles") (specialty<-specialty-xmlchild (empty base/specialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func specialty<-specialty-xmlchild : base/specialty [specialty : base/specialty child : xml/xml] (let : base/specialty [tag : string := (:tag child)] (switch : base/specialty tag (case "" specialty) (case (list "reference" "summary" "titles") (copy specialty tag (xml/string-first<-xml child))) (else (copy specialty (msg<-error :invalidtagfound (anymap :type base/specialty :tag tag)))))) :test (test (base/specialty :titles "titles") (specialty<-specialty-xmlchild (empty base/specialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified specialty based on a given child xml.")
nx/tactics/books/bookloader / specialty<-xml
Description:
  • Returns a specialty from a given xml.
Function Name:
  • specialty<-xml
Return Type:
  • nx/tactics/base/specialty
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/specialty :name "name" :image "image" :titles "titles" :reference "reference") (specialty<-xml (xml/xml :tag "specialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference")))))))
Source Code:
  • (func specialty<-xml : base/specialty [xml : xml/xml] (let : base/specialty [propmap : stringmap := (:propmap xml) spc : base/specialty := (specialty<-specialty-stringmap (empty base/specialty) propmap)] (any<-list-start-reduce : base/specialty (:children xml) spc specialty<-specialty-xmlchild)) :test (test (base/specialty :name "name" :image "image" :titles "titles" :reference "reference") (specialty<-xml (xml/xml :tag "specialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a specialty from a given xml.")
nx/tactics/books/bookloader / string-read<-bookname
Description:
  • Returns text from a file with bookname.
Function Name:
  • string-read<-bookname
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    bookname
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string-read<-bookname : string [bookname : string] (string-read<-file (file-read<-bookname bookname)) :context :doc "Returns text from a file with bookname.")
nx/tactics/books/bookloader / string-vxlisp<-chapter
Description:
  • Returns a vxlisp string from a chapter.
Function Name:
  • string-vxlisp<-chapter
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    chapter
    nx/tactics/base/chapter
Usage/Test Cases:
Source Code:
  • (func string-vxlisp<-chapter : string [chapter : base/chapter] (let : string [name : string := (:name chapter) chnm : string := (string-writename<-string name) text : string := (string<-any-indent chapter 1 false)] (string "(func chapter_" chnm " : base/chapter\n" text ")\n")) :doc "Returns a vxlisp string from a chapter.")
nx/tactics/books/bookloader / string-vxlisp<-chaptermap
Description:
  • Returns a vxlisp string from a chaptermap.
Function Name:
  • string-vxlisp<-chaptermap
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    chaptermap
    nx/tactics/base/chaptermap
Usage/Test Cases:
Source Code:
  • (func string-vxlisp<-chaptermap : string [chaptermap : base/chaptermap] (let : string [chapters : base/chapterlist := (list<-map : chapterlist chaptermap (fn : chapter [key : string val : base/chapter] val)) schapters : stringlist := (list<-list : stringlist chapters (fn : string [chapt : base/chapter] (let : string [name : string := (base/name<-chapter chapt) // FIXME schnm : string := (string-writename<-string name) text : string := (string<-any-indent chapt 1 true)] (string "\n(func chapter_" schnm " : base/chapter\n " text ")"))))] (string<-stringlist-join schapters newline)) :doc "Returns a vxlisp string from a chaptermap.")
nx/tactics/books/bookloader / string-vxlisp-header<-chaptermap
Description:
  • Returns a vxlisp string from a chaptermap.
Function Name:
  • string-vxlisp-header<-chaptermap
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    chaptermap
    nx/tactics/base/chaptermap
Usage/Test Cases:
Source Code:
  • (func string-vxlisp-header<-chaptermap : string [chaptermap : base/chaptermap] (let : string [chapters : stringlist := (list<-map : stringlist chaptermap (fn : string [key : string val : base/chapter] (string newline " " quote key quote " (chapter_" (string-writename<-string key) ")")))] (string<-stringlist-join chapters "")) :doc "Returns a vxlisp string from a chaptermap.")
nx/tactics/books/bookloader / string-vxlisp<-book
Description:
  • Returns a vxlisp string from a book.
Function Name:
  • string-vxlisp<-book
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
Usage/Test Cases:
Source Code:
  • (func string-vxlisp<-book : string [book : base/book] (let : string [name : string := (:name book) chaptermap : base/chaptermap := (:chaptermap book) image : string := (:image book) reference : string := (:reference book) summary : string := (:summary book) titles : string := (:titles book) schaptermap : string := (string-vxlisp-header<-chaptermap chaptermap) schapters : string := (string-vxlisp<-chaptermap chaptermap) simage : string := (switch : string image (case "" "") (else (string "\n :image " (string<-any image)))) sreference : string := (switch : string reference (case "" "") (else (string "\n :reference " (string<-any reference)))) ssummary : string := (switch : string summary (case "" "") (else (string "\n :summary " (string<-any summary)))) stitles : string := (switch : string titles (case "" "") (else (string "\n :titles " (string<-any titles)))) bookname : string := (string-writename<-string name)] (string "(package nx/tactics/books/" bookname "\n :libs (lib base :path nx/tactics/base))" "\n" "\n(func tacticsbook : base/book" "\n (base/book" "\n :name " (string<-any name) simage stitles sreference ssummary "\n :chaptermap" "\n (base/chaptermap" schaptermap "\n ))" ")\n" schapters)) :doc "Returns a vxlisp string from a book.")
nx/tactics/books/bookloader / string-writename<-string
Description:
  • Returns the write filename from a book
Function Name:
  • string-writename<-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func string-writename<-string : string [name : string] (let : string [lower : string := (typ/string-lowercase name) space : string := (string<-string-find-replace lower " " "_") comma : string := (string<-string-find-replace space "," "") apos : string := (string<-string-find-replace comma "'" "") slash : string := (string<-string-find-replace apos "/" "_")] slash) :doc "Returns the write filename from a book")
nx/tactics/books/bookloader / team<-team-key-value
Description:
  • Returns a modified team from a key value.
Function Name:
  • team<-team-key-value
Return Type:
  • nx/tactics/base/team
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/team
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func team<-team-key-value : base/team [current : base/team key : string value : string] (switch : base/team key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/team :prop key :value value))))) :doc "Returns a modified team from a key value.")
nx/tactics/books/bookloader / team<-team-stringmap
Description:
  • Returns a team from a propmap.
Function Name:
  • team<-team-stringmap
Return Type:
  • nx/tactics/base/team
Arguments:
  • Name
    Type
    Generic
    Description
    team
    nx/tactics/base/team
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func team<-team-stringmap : base/team [team : base/team propmap : stringmap] (any<-map-start-reduce : base/team propmap team team<-team-key-value) :doc "Returns a team from a propmap.")
nx/tactics/books/bookloader / team<-team-xmlchild
Description:
  • Returns a modified team based on a given child xml.
Function Name:
  • team<-team-xmlchild
Return Type:
  • nx/tactics/base/team
Arguments:
  • Name
    Type
    Generic
    Description
    team
    nx/tactics/base/team
    child
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func team<-team-xmlchild : base/team [team : base/team child : xml/xml] (let : base/team [tag : string := (:tag child)] (switch : base/team tag (case "" team) (case (list "reference" "summary" "titles" "completevictory" "deploy" "forces" "partialvictory") (copy team tag (xml/string-first<-xml child))) (else (copy team (msg<-error :invalidtagfound (anymap :type base/team :tag tag)))))) :doc "Returns a modified team based on a given child xml.")
nx/tactics/books/bookloader / team<-xml
Description:
  • Returns a team from a given xml.
Function Name:
  • team<-xml
Return Type:
  • nx/tactics/base/team
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func team<-xml : base/team [xml : xml/xml] (let : base/team [propmap : stringmap := (:propmap xml) team : base/team := (team<-team-stringmap (empty base/team) propmap)] (any<-list-start-reduce : base/team (:children xml) team team<-team-xmlchild)) :doc "Returns a team from a given xml.")
nx/tactics/books/bookloader / terrain<-terrain-key-value
Description:
  • Returns a modified terrain from a key value.
Function Name:
  • terrain<-terrain-key-value
Return Type:
  • nx/tactics/base/terrain
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/terrain
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func terrain<-terrain-key-value : base/terrain [current : base/terrain key : string value : string] (switch : base/terrain key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/terrain :prop key :value value))))) :doc "Returns a modified terrain from a key value.")
nx/tactics/books/bookloader / terrain<-terrain-stringmap
Description:
  • Returns a terrain from a propmap.
Function Name:
  • terrain<-terrain-stringmap
Return Type:
  • nx/tactics/base/terrain
Arguments:
  • Name
    Type
    Generic
    Description
    terrain
    nx/tactics/base/terrain
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/terrain :name "name" :image "image") (terrain<-terrain-stringmap (empty base/terrain) (stringmap :name "name" :image "image")))
Source Code:
  • (func terrain<-terrain-stringmap : base/terrain [terrain : base/terrain propmap : stringmap] (any<-map-start-reduce : base/terrain propmap terrain terrain<-terrain-key-value) :test (test (base/terrain :name "name" :image "image") (terrain<-terrain-stringmap (empty base/terrain) (stringmap :name "name" :image "image"))) :doc "Returns a terrain from a propmap.")
nx/tactics/books/bookloader / terrain<-terrain-xmlchild
Description:
  • Returns a modified terrain based on a given child Xml.
Function Name:
  • terrain<-terrain-xmlchild
Return Type:
  • nx/tactics/base/terrain
Arguments:
  • Name
    Type
    Generic
    Description
    terrain
    nx/tactics/base/terrain
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/terrain :titles "titles") (terrain<-terrain-xmlchild (empty base/terrain) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func terrain<-terrain-xmlchild : base/terrain [terrain : base/terrain child : xml/xml] (let : base/terrain [tag : string := (:tag child)] (switch : base/terrain tag (case "" terrain) (case (list "reference" "summary" "titles" "classification") (copy terrain tag (xml/string-first<-xml child))) (else (copy terrain (msg<-error :invalidtagfound (anymap :type base/terrain :tag tag)))))) :test (test (base/terrain :titles "titles") (terrain<-terrain-xmlchild (empty base/terrain) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified terrain based on a given child Xml.")
nx/tactics/books/bookloader / terrain<-xml
Description:
  • Returns a terrain from a given xml.
Function Name:
  • terrain<-xml
Return Type:
  • nx/tactics/base/terrain
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func terrain<-xml : base/terrain [xml : xml/xml] (let : base/terrain [propmap : stringmap := (:propmap xml) terrain : base/terrain := (terrain<-terrain-stringmap (empty base/terrain) propmap)] (any<-list-start-reduce : base/terrain (:children xml) terrain terrain<-terrain-xmlchild)) :doc "Returns a terrain from a given xml.")
nx/tactics/books/bookloader / unit<-unit-key-value
Description:
  • Returns a modified unit from a key value.
Function Name:
  • unit<-unit-key-value
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unit
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unit<-unit-key-value : base/unit [current : base/unit key : string value : string] (switch : base/unit key (case "" current) (case (list "name" "image" "classification" "crew" "body" "height" "length" "mass" "mind" "range" "speed" "speedair" "speedland" "speedspace" "speedwater" "width" "will") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unit :prop key :value value))))) :doc "Returns a modified unit from a key value.")
nx/tactics/books/bookloader / unit<-unit-stringmap
Description:
  • Returns a new unit from a propmap.
Function Name:
  • unit<-unit-stringmap
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/unit :name "name" :image "image") (unit<-unit-stringmap (empty base/unit) (stringmap :name "name" :image "image")))
Source Code:
  • (func unit<-unit-stringmap : base/unit [unit : base/unit propmap : stringmap] (any<-map-start-reduce propmap unit unit<-unit-key-value) :test (test (base/unit :name "name" :image "image") (unit<-unit-stringmap (empty base/unit) (stringmap :name "name" :image "image"))) :doc "Returns a new unit from a propmap.")
nx/tactics/books/bookloader / unit<-unit-xmlchild
Description:
  • Returns a modified unit based on a given child Xml.
Function Name:
  • unit<-unit-xmlchild
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unit :titles "titles") (unit<-unit-xmlchild (empty base/unit) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func unit<-unit-xmlchild : base/unit [unit : base/unit child : xml/xml] (let : base/unit [tag : string := (:tag child)] (switch : base/unit tag (case "" unit) (case (list "reference" "summary" "titles") (copy unit tag (xml/string-first<-xml child))) (case "power" (unit<-unit-xmlpower unit child)) (case "skill" (unit<-unit-xmlskill unit child)) (case "weakness" (unit<-unit-xmlweakness unit child)) (else (copy unit (msg<-error :invalidtagfound (anymap :type base/unit :tag tag)))))) :test (test (base/unit :titles "titles") (unit<-unit-xmlchild (empty base/unit) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unit based on a given child Xml.")
nx/tactics/books/bookloader / unit<-unit-xmlpower
Description:
  • Return a unit with new unit added to unitpowermap
Function Name:
  • unit<-unit-xmlpower
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    xmlpower
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unit<-unit-xmlpower : base/unit [unit : base/unit xmlpower : xml/xml] (let : base/unit [unitpower : base/unitpower := (unitpower<-xml xmlpower) name : string := (:name unitpower) origmap : base/unitpowermap := (:unitpowermap unit) chgmap : base/unitpowermap := (copy origmap name unitpower)] (copy unit :unitpowermap chgmap)) :doc "Return a unit with new unit added to unitpowermap")
nx/tactics/books/bookloader / unit<-unit-xmlskill
Description:
  • Return a unit with new unitskill added to unitskillmap
Function Name:
  • unit<-unit-xmlskill
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    xmlskill
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unit<-unit-xmlskill : base/unit [unit : base/unit xmlskill : xml/xml] (let : base/unit [unitskill : base/unitskill := (unitskill<-xml xmlskill) name : string := (:name unitskill) origmap : base/unitskillmap := (:unitskillmap unit) chgmap : base/unitskillmap := (copy unitskillmap name unitskill)] (copy unit :unitskillmap chgmap)) :doc "Return a unit with new unitskill added to unitskillmap")
nx/tactics/books/bookloader / unit<-unit-xmlweakness
Description:
  • Return a unit with new unitweakness added to unitweaknessmap
Function Name:
  • unit<-unit-xmlweakness
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    xmlweakness
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unit<-unit-xmlweakness : base/unit [unit : base/unit xmlweakness : xml/xml] (let : base/unit [unitweakness : base/unitweakness := (unitweakness<-xml xmlweakness) name : string := (:name unitweakness) origmap : base/unitweaknessmap := (:unitweaknessmap unit) chgmap : base/unitweaknessmap := (copy origmap name unitweakness)] (copy unit :unitweaknessmap chgmap)) :doc "Return a unit with new unitweakness added to unitweaknessmap")
nx/tactics/books/bookloader / unit<-xml
Description:
  • Returns a unit from a given xml.
Function Name:
  • unit<-xml
Return Type:
  • nx/tactics/base/unit
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unit :name "name" :image "image" :titles "titles" :reference "reference" :unitskillmap (base/unitskillmap "skill1" (base/unitskill :name "skill1"))) (unit<-xml (xml/xml :tag "unit" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "skill" :propmap (stringmap :name "skill1"))))))
Source Code:
  • (func unit<-xml : base/unit [xml : xml/xml] (let : base/unit [propmap : stringmap := (:propmap xml) unt : base/unit := (unit<-unit-stringmap (empty base/unit) propmap)] (any<-list-start-reduce : base/unit (:children xml) unt unit<-unit-xmlchild)) :test (test (base/unit :name "name" :image "image" :titles "titles" :reference "reference" :unitskillmap (base/unitskillmap "skill1" (base/unitskill :name "skill1"))) (unit<-xml (xml/xml :tag "unit" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))) (xml/xml :tag "skill" :propmap (stringmap :name "skill1")))))) :doc "Returns a unit from a given xml.")
nx/tactics/books/bookloader / unitability<-unitability-key-value
Description:
  • Returns a modified unitability from a key value.
Function Name:
  • unitability<-unitability-key-value
Return Type:
  • nx/tactics/base/unitability
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unitability
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unitability<-unitability-key-value : base/unitability [current : base/unitability key : string value : string] (switch : base/unitability key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitability :prop key :value value))))) :doc "Returns a modified unitability from a key value.")
nx/tactics/books/bookloader / unitability<-unitability-stringmap
Description:
  • Returns a new unitability from a propmap.
Function Name:
  • unitability<-unitability-stringmap
Return Type:
  • nx/tactics/base/unitability
Arguments:
  • Name
    Type
    Generic
    Description
    unitability
    nx/tactics/base/unitability
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/unitability :name "name" :image "image") (unitability<-unitability-stringmap (empty base/unitability) (stringmap :name "name" :image "image")))
Source Code:
  • (func unitability<-unitability-stringmap : base/unitability [unitability : base/unitability propmap : stringmap] (any<-map-start-reduce : base/unitability propmap unitability unitability<-unitability-key-value) :test (test (base/unitability :name "name" :image "image") (unitability<-unitability-stringmap (empty base/unitability) (stringmap :name "name" :image "image"))) :doc "Returns a new unitability from a propmap.")
nx/tactics/books/bookloader / unitability<-unitability-xmlchild
Description:
  • Returns a modified unitability based on a given child xml.
Function Name:
  • unitability<-unitability-xmlchild
Return Type:
  • nx/tactics/base/unitability
Arguments:
  • Name
    Type
    Generic
    Description
    unitability
    nx/tactics/base/unitability
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitability :titles "titles") (unitability<-unitability-xmlchild (empty base/unitability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func unitability<-unitability-xmlchild : base/unitability [unitability : base/unitability child : xml/xml] (let : base/unitability [tag : string := (:tag child)] (switch : base/unitability tag (case "" unitability) (case (list "reference" "summary" "titles") (copy unitability tag (xml/string-first<-xml child))) (else (copy unitability (msg<-error :invalidtagfound (anymap :type base/unitability :tag tag)))))) :test (test (base/unitability :titles "titles") (unitability<-unitability-xmlchild (empty base/unitability) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unitability based on a given child xml.")
nx/tactics/books/bookloader / unitability<-xml
Description:
  • Returns a unitability from a given xml.
Function Name:
  • unitability<-xml
Return Type:
  • nx/tactics/base/unitability
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitability :name "name" :image "image" :titles "titles" :reference "reference") (unitability<-xml (xml/xml :tag "unitability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference")))))))
Source Code:
  • (func unitability<-xml : base/unitability [xml : xml/xml] (let : base/unitability [propmap : stringmap := (:propmap xml) unitability : base/unitability := (unitability<-unitability-stringmap (empty base/unitability) propmap)] (any<-list-start-reduce : base/unitability (:children xml) unitability unitability<-unitability-xmlchild)) :test (test (base/unitability :name "name" :image "image" :titles "titles" :reference "reference") (unitability<-xml (xml/xml :tag "unitability" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a unitability from a given xml.")
nx/tactics/books/bookloader / unititem<-unititem-key-value
Description:
  • Returns a modified unititem from a key value.
Function Name:
  • unititem<-unititem-key-value
Return Type:
  • nx/tactics/base/unititem
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unititem
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unititem<-unititem-key-value : base/unititem [current : base/unititem key : string value : string] (switch : base/unititem key (case "" current) (case (list "name" "image" "facing" "modifiers" "number" "rounds") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unititem :prop key :value value))))) :doc "Returns a modified unititem from a key value.")
nx/tactics/books/bookloader / unititem<-unititem-stringmap
Description:
  • Returns a new unititem from a propmap.
Function Name:
  • unititem<-unititem-stringmap
Return Type:
  • nx/tactics/base/unititem
Arguments:
  • Name
    Type
    Generic
    Description
    unititem
    nx/tactics/base/unititem
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/unititem :name "name" :image "image") (unititem<-unititem-stringmap (empty base/unititem) (stringmap :name "name" :image "image")))
Source Code:
  • (func unititem<-unititem-stringmap : base/unititem [unititem : base/unititem propmap : stringmap] (any<-map-start-reduce : base/unititem propmap unititem unititem<-unititem-key-value) :test (test (base/unititem :name "name" :image "image") (unititem<-unititem-stringmap (empty base/unititem) (stringmap :name "name" :image "image"))) :doc "Returns a new unititem from a propmap.")
nx/tactics/books/bookloader / unititem<-unititem-xmlchild
Description:
  • Returns a modified unititem based on a given child xml.
Function Name:
  • unititem<-unititem-xmlchild
Return Type:
  • nx/tactics/base/unititem
Arguments:
  • Name
    Type
    Generic
    Description
    unititem
    nx/tactics/base/unititem
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unititem :titles "titles1") (unititem<-unititem-xmlchild (empty base/unititem) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1")))))
Source Code:
  • (func unititem<-unititem-xmlchild : base/unititem [unititem : base/unititem child : xml/xml] (let : base/unititem [tag : string := (:tag child)] (switch : base/unititem tag (case "" unititem) (case (list "reference" "summary" "titles") (copy unititem tag (xml/string-first<-xml child))) (else (copy unititem (msg<-error :invalidtagfound (anymap :type base/unititem :tag tag)))))) :test (test (base/unititem :titles "titles1") (unititem<-unititem-xmlchild (empty base/unititem) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))))) :doc "Returns a modified unititem based on a given child xml.")
nx/tactics/books/bookloader / unititem<-xml
Description:
  • Returns a unititem from a given xml.
Function Name:
  • unititem<-xml
Return Type:
  • nx/tactics/base/unititem
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unititem :name "name1" :image "image1" :titles "titles1" :reference "reference1" :summary "summary1") (unititem<-xml (xml/xml :tag "unititem" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1")))))))
Source Code:
  • (func unititem<-xml : base/unititem [xml : xml/xml] (let : base/unititem [propmap : stringmap := (:propmap xml) children : xml/xmllist := (:children xml) unititem : base/unititem := (unititem<-unititem-stringmap (empty base/unititem) propmap)] (any<-list-start-reduce : base/unititem children unititem unititem<-unititem-xmlchild)) :test (test (base/unititem :name "name1" :image "image1" :titles "titles1" :reference "reference1" :summary "summary1") (unititem<-xml (xml/xml :tag "unititem" :propmap (stringmap :name "name1" :image "image1") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles1"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference1"))) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))))) :doc "Returns a unititem from a given xml.")
nx/tactics/books/bookloader / unitpower<-unitpower-key-value
Description:
  • Returns a modified unitpower from a key value.
Function Name:
  • unitpower<-unitpower-key-value
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unitpower
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unitpower<-unitpower-key-value : base/unitpower [current : base/unitpower key : string value : string] (switch : base/unitpower key (case "" current) (case (list "name" "image" "back" "bottom" "front" "level" "over" "side" "strength" "under") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitpower :prop key :value value))))) :doc "Returns a modified unitpower from a key value.")
nx/tactics/books/bookloader / unitpower<-unitpower-stringmap
Description:
  • Returns a new unitpower from a propmap.
Function Name:
  • unitpower<-unitpower-stringmap
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    unitpower
    nx/tactics/base/unitpower
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func unitpower<-unitpower-stringmap : base/unitpower [unitpower : base/unitpower propmap : stringmap] (any<-map-start-reduce propmap unitpower unitpower<-unitpower-key-value) :doc "Returns a new unitpower from a propmap.")
nx/tactics/books/bookloader / unitpower<-unitpower-xmlability
Description:
Function Name:
  • unitpower<-unitpower-xmlability
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    unitpower
    nx/tactics/base/unitpower
    xmlability
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitpower<-unitpower-xmlability : base/unitpower [unitpower : base/unitpower xmlability : xml/xml] (let : base/unitpower [ability : base/unitability := (unitability<-xml xmlability) name : string := (:name ability) origmap : base/unitabilitymap := (:unitabilitymap unitpower) chgmap : base/unitabilitymap := (copy origmap name ability)] (copy unitpower :unitabilitymap chgmap)) :doc "")
nx/tactics/books/bookloader / unitpower<-unitpower-xmlchild
Description:
Function Name:
  • unitpower<-unitpower-xmlchild
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    unitpower
    nx/tactics/base/unitpower
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitpower :summary "summary1") (unitpower<-unitpower-xmlchild (empty base/unitpower) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1")))))
Source Code:
  • (func unitpower<-unitpower-xmlchild : base/unitpower [unitpower : base/unitpower child : xml/xml] (let : base/unitpower [tag : string := (:tag child)] (switch : base/unitpower tag (case "" unitpower) (case (list "reference" "summary" "titles") (copy unitpower tag (xml/string-first<-xml child))) (case "ability" (unitpower<-unitpower-xmlability unitpower child)) (case "item" (unitpower<-unitpower-xmlitem unitpower child)) (case "specialty" (unitpower<-unitpower-xmlspecialty unitpower child)) (else (copy unitpower (msg<-error :invalidtagfound (anymap :type base/unitpower :tag tag)))))) :test (test (base/unitpower :summary "summary1") (unitpower<-unitpower-xmlchild (empty base/unitpower) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))) :doc "")
nx/tactics/books/bookloader / unitpower<-unitpower-xmlitem
Description:
Function Name:
  • unitpower<-unitpower-xmlitem
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    unitpower
    nx/tactics/base/unitpower
    xmlitem
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitpower<-unitpower-xmlitem : base/unitpower [unitpower : base/unitpower xmlitem : xml/xml] (let : base/unitpower [item : base/unititem := (unititem<-xml xmlitem) name : string := (:name item) origmap : base/unititemmap := (:unititemmap unitpower) chgmap : base/unititemmap := (copy origmap name item)] (copy unitpower :unititemmap chgmap)) :doc "")
nx/tactics/books/bookloader / unitpower<-unitpower-xmlspecialty
Description:
Function Name:
  • unitpower<-unitpower-xmlspecialty
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    unitpower
    nx/tactics/base/unitpower
    xmlspecialty
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitpower<-unitpower-xmlspecialty : base/unitpower [unitpower : base/unitpower xmlspecialty : xml/xml] (let : base/unitpower [specialty : base/unitspecialty := (unitspecialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/unitspecialtymap := (:unitspecialtymap unitpower) chgmap : base/unitspecialtymap := (copy origmap name specialty)] (copy unitpower :unitspecialtymap chgmap)) :doc "")
nx/tactics/books/bookloader / unitpower<-xml
Description:
Function Name:
  • unitpower<-xml
Return Type:
  • nx/tactics/base/unitpower
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitpower<-xml : base/unitpower [xml : xml/xml] (let : base/unitpower [propmap : stringmap := (:propmap xml) unitpower : base/unitpower := (unitpower<-unitpower-stringmap (empty base/unitpower) propmap)] (any<-list-start-reduce : base/unitpower (:children xml) unitpower unitpower<-unitpower-xmlchild)) :doc "")
nx/tactics/books/bookloader / unitskill<-unitskill-key-value
Description:
  • Returns a modified unitskill from a key value.
Function Name:
  • unitskill<-unitskill-key-value
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unitskill
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unitskill<-unitskill-key-value : base/unitskill [current : base/unitskill key : string value : string] (switch : base/unitskill key (case "" current) (case (list "name" "image" "back" "bottom" "front" "level" "side" "top") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitskill :prop key :value value))))) :doc "Returns a modified unitskill from a key value.")
nx/tactics/books/bookloader / unitskill<-unitskill-stringmap
Description:
  • Returns a new unitskill from a propmap.
Function Name:
  • unitskill<-unitskill-stringmap
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
    propmap
    vx/core/stringmap
Usage/Test Cases:
Source Code:
  • (func unitskill<-unitskill-stringmap : base/unitskill [unitskill : base/unitskill propmap : stringmap] (any<-map-start-reduce propmap unitskill unitskill<-unitskill-key-value) :doc "Returns a new unitskill from a propmap.")
nx/tactics/books/bookloader / unitskill<-unitskill-xmlability
Description:
Function Name:
  • unitskill<-unitskill-xmlability
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
    xmlability
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitskill<-unitskill-xmlability : base/unitskill [unitskill : base/unitskill xmlability : xml/xml] (let : base/unitskill [unitability : base/unitability := (unitability<-xml xmlability) name : string := (:name unitability) origmap : base/unitabilitymap := (:unitabilitymap unitskill) chgmap : base/unitabilitymap := (copy origmap name unitability)] (copy unitskill :unitabilitymap chgmap)) :doc "")
nx/tactics/books/bookloader / unitskill<-unitskill-xmlchild
Description:
Function Name:
  • unitskill<-unitskill-xmlchild
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitskill :summary "summary1") (unitskill<-unitskill-xmlchild (empty base/unitskill) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1")))))
Source Code:
  • (func unitskill<-unitskill-xmlchild : base/unitskill [unitskill : base/unitskill child : xml/xml] (let : base/unitskill [tag : string := (:tag child)] (switch : base/unitskill tag (case "" unitskill) (case (list "reference" "summary" "titles") (copy unitskill tag (xml/string-first<-xml child))) (case "ability" (unitskill<-unitskill-xmlability unitskill child)) (case "item" (unitskill<-unitskill-xmlitem unitskill child)) (case "specialty" (unitskill<-unitskill-xmlspecialty unitskill child)) (else (copy unitskill (msg<-error :invalidtagfound (anymap :type base/unitskill :tag tag)))))) :test (test (base/unitskill :summary "summary1") (unitskill<-unitskill-xmlchild (empty base/unitskill) (xml/xml :tag "summary" :children (xml/xmllist (xml/xml :text "summary1"))))) :doc "")
nx/tactics/books/bookloader / unitskill<-unitskill-xmlitem
Description:
Function Name:
  • unitskill<-unitskill-xmlitem
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
    xmlitem
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitskill<-unitskill-xmlitem : base/unitskill [unitskill : base/unitskill xmlitem : xml/xml] (let : base/unitskill [item : base/unititem := (unititem<-xml xmlitem) name : string := (:name item) origmap : base/unititemmap := (:unititemmap unitskill) chgmap : base/unititemmap := (copy origmap name item)] (copy unitskill :unititemmap chgmap)) :doc "")
nx/tactics/books/bookloader / unitskill<-unitskill-xmlspecialty
Description:
Function Name:
  • unitskill<-unitskill-xmlspecialty
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
    xmlspecialty
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitskill<-unitskill-xmlspecialty : base/unitskill [unitskill : base/unitskill xmlspecialty : xml/xml] (let : base/unitskill [specialty : base/unitspecialty := (unitspecialty<-xml xmlspecialty) name : string := (:name specialty) origmap : base/unitspecialtymap := (:unitspecialtymap unitskill) chgmap : base/unitspecialtymap := (copy origmap name specialty)] (copy unitskill :unitspecialtymap chgmap)) :doc "")
nx/tactics/books/bookloader / unitskill<-xml
Description:
Function Name:
  • unitskill<-xml
Return Type:
  • nx/tactics/base/unitskill
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitskill<-xml : base/unitskill [xml : xml/xml] (let : base/unitskill [propmap : stringmap := (:propmap xml) unitskill : base/unitskill := (unitskill<-unitskill-stringmap (empty base/unitskill) propmap)] (any<-list-start-reduce : base/unitskill (:children xml) unitskill unitskill<-unitskill-xmlchild)) :doc "")
nx/tactics/books/bookloader / unitspecialty<-unitspecialty-key-value
Description:
  • Returns a modified unitspecialty from a key value.
Function Name:
  • unitspecialty<-unitspecialty-key-value
Return Type:
  • nx/tactics/base/unitspecialty
Arguments:
  • Name
    Type
    Generic
    Description
    current
    nx/tactics/base/unitspecialty
    key
    vx/core/string
    value
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func unitspecialty<-unitspecialty-key-value : base/unitspecialty [current : base/unitspecialty key : string value : string] (switch : base/unitspecialty key (case "" current) (case (list "name" "image") (copy current key value)) (else (copy current (msg<-error :invalidproperty (anymap :type base/unitspecialty :prop key :value value))))) :doc "Returns a modified unitspecialty from a key value.")
nx/tactics/books/bookloader / unitspecialty<-unitspecialty-stringmap
Description:
  • Returns a new unitspecialty from a propmap.
Function Name:
  • unitspecialty<-unitspecialty-stringmap
Return Type:
  • nx/tactics/base/unitspecialty
Arguments:
  • Name
    Type
    Generic
    Description
    unitspecialty
    nx/tactics/base/unitspecialty
    propmap
    vx/core/stringmap
Usage/Test Cases:
  • (test (base/unitspecialty :name "name" :image "image") (unitspecialty<-unitspecialty-stringmap (empty base/unitspecialty) (stringmap :name "name" :image "image")))
Source Code:
  • (func unitspecialty<-unitspecialty-stringmap : base/unitspecialty [unitspecialty : base/unitspecialty propmap : stringmap] (any<-map-start-reduce : base/unitspecialty propmap unitspecialty unitspecialty<-unitspecialty-key-value) :test (test (base/unitspecialty :name "name" :image "image") (unitspecialty<-unitspecialty-stringmap (empty base/unitspecialty) (stringmap :name "name" :image "image"))) :doc "Returns a new unitspecialty from a propmap.")
nx/tactics/books/bookloader / unitspecialty<-unitspecialty-xmlchild
Description:
  • Returns a modified unitspecialty based on a given child xml.
Function Name:
  • unitspecialty<-unitspecialty-xmlchild
Return Type:
  • nx/tactics/base/unitspecialty
Arguments:
  • Name
    Type
    Generic
    Description
    unitspecialty
    nx/tactics/base/unitspecialty
    child
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitspecialty :titles "titles") (unitspecialty<-unitspecialty-xmlchild (empty base/unitspecialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles")))))
Source Code:
  • (func unitspecialty<-unitspecialty-xmlchild : base/unitspecialty [unitspecialty : base/unitspecialty child : xml/xml] (let : base/unitspecialty [tag : string := (:tag child)] (switch : base/unitspecialty tag (case "" unitspecialty) (case (list "reference" "summary" "titles") (copy unitspecialty tag (xml/string-first<-xml child))) (else (copy unitspecialty (msg<-error :invalidtagfound (anymap :type base/unitspecialty :tag tag)))))) :test (test (base/unitspecialty :titles "titles") (unitspecialty<-unitspecialty-xmlchild (empty base/unitspecialty) (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))))) :doc "Returns a modified unitspecialty based on a given child xml.")
nx/tactics/books/bookloader / unitspecialty<-xml
Description:
  • Returns a unitspecialty from a given xml.
Function Name:
  • unitspecialty<-xml
Return Type:
  • nx/tactics/base/unitspecialty
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
  • (test (base/unitspecialty :name "name" :image "image" :titles "titles" :reference "reference") (unitspecialty<-xml (xml/xml :tag "unitspecialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference")))))))
Source Code:
  • (func unitspecialty<-xml : base/unitspecialty [xml : xml/xml] (let : base/unitspecialty [propmap : stringmap := (:propmap xml) unitspecialty : base/unitspecialty := (unitspecialty<-unitspecialty-stringmap (empty base/unitspecialty) propmap)] (any<-list-start-reduce : base/unitspecialty (:children xml) unitspecialty unitspecialty<-unitspecialty-xmlchild)) :test (test (base/unitspecialty :name "name" :image "image" :titles "titles" :reference "reference") (unitspecialty<-xml (xml/xml :tag "unitspecialty" :propmap (stringmap :name "name" :image "image") :children (xml/xmllist (xml/xml :tag "titles" :children (xml/xmllist (xml/xml :text "titles"))) (xml/xml :tag "reference" :children (xml/xmllist (xml/xml :text "reference"))))))) :doc "Returns a unitspecialty from a given xml.")
nx/tactics/books/bookloader / unitweakness<-xml
Description:
Function Name:
  • unitweakness<-xml
Return Type:
  • nx/tactics/base/unitweakness
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func unitweakness<-xml : base/unitweakness [xml : xml/xml])
nx/tactics/books/bookloader / weakness<-xml
Description:
Function Name:
  • weakness<-xml
Return Type:
  • nx/tactics/base/weakness
Arguments:
  • Name
    Type
    Generic
    Description
    xml
    vx/data/xml/xml
Usage/Test Cases:
Source Code:
  • (func weakness<-xml : base/weakness [xml : xml/xml])
nx/tactics/books/bookloader / xml-read<-bookname
Description:
  • Returns an xml from a file with bookname.
Function Name:
  • xml-read<-bookname
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    bookname
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func xml-read<-bookname : xml/xml [bookname : string] (xml/xml-read<-file (file-read<-bookname bookname)) :context :doc "Returns an xml from a file with bookname.")
nx/tactics/decks/deck
Description:
  • Tactics Decks
Package Name:
  • nx/tactics/decks/deck
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    damage
    nx/tactics/decks/damage
    fate
    nx/tactics/decks/fate
    scenario
    nx/tactics/decks/scenario
    starter
    nx/tactics/decks/starter
    tarot
    nx/tactics/decks/tarot
    advanced_rules
    nx/tactics/books/advanced_rules
    age_of_sail
    nx/tactics/books/age_of_sail
    age_of_steam
    nx/tactics/books/age_of_steam
    bestiary
    nx/tactics/books/bestiary
    characters
    nx/tactics/books/characters
    combat
    nx/tactics/books/combat
    core_rules
    nx/tactics/books/core_rules
    fantasy
    nx/tactics/books/fantasy
    gear
    nx/tactics/books/gear
    giant_monsters
    nx/tactics/books/giant_monsters
    high_technology
    nx/tactics/books/high_technology
    horror
    nx/tactics/books/horror
    land_sea_and_air
    nx/tactics/books/land_sea_and_air
    magic
    nx/tactics/books/magic
    medieval
    nx/tactics/books/medieval
    modern
    nx/tactics/books/modern
    modern_fantasy
    nx/tactics/books/modern_fantasy
    powers
    nx/tactics/books/powers
    prehistory
    nx/tactics/books/prehistory
    pulp_fiction
    nx/tactics/books/pulp_fiction
    science_fiction
    nx/tactics/books/science_fiction
    skills
    nx/tactics/books/skills
    space_and_time
    nx/tactics/books/space_and_time
    superheroes
    nx/tactics/books/superheroes
    world_wars
    nx/tactics/books/world_wars
Types:
Constants:
  • tactics-all
Functions:
  • booklist-all, deck-home, deck-books, deck-encounters, deck-items, deck-places, deck-powers, deck-setup, deck-scenarios, deck-skills, deck-units
Source Code:
  • (package nx/tactics/decks/deck :libs (lib base :path nx/tactics/base) (lib damage :path nx/tactics/decks/damage) (lib fate :path nx/tactics/decks/fate) (lib scenario :path nx/tactics/decks/scenario) (lib starter :path nx/tactics/decks/starter) (lib tarot :path nx/tactics/decks/tarot) (lib advanced_rules :path nx/tactics/books/advanced_rules) (lib age_of_sail :path nx/tactics/books/age_of_sail) (lib age_of_steam :path nx/tactics/books/age_of_steam) (lib bestiary :path nx/tactics/books/bestiary) (lib characters :path nx/tactics/books/characters) (lib combat :path nx/tactics/books/combat) (lib core_rules :path nx/tactics/books/core_rules) (lib fantasy :path nx/tactics/books/fantasy) (lib gear :path nx/tactics/books/gear) (lib giant_monsters :path nx/tactics/books/giant_monsters) (lib high_technology :path nx/tactics/books/high_technology) (lib horror :path nx/tactics/books/horror) (lib land_sea_and_air :path nx/tactics/books/land_sea_and_air) (lib magic :path nx/tactics/books/magic) (lib medieval :path nx/tactics/books/medieval) (lib modern :path nx/tactics/books/modern) (lib modern_fantasy :path nx/tactics/books/modern_fantasy) (lib powers :path nx/tactics/books/powers) (lib prehistory :path nx/tactics/books/prehistory) (lib pulp_fiction :path nx/tactics/books/pulp_fiction) (lib science_fiction :path nx/tactics/books/science_fiction) (lib skills :path nx/tactics/books/skills) (lib space_and_time :path nx/tactics/books/space_and_time) (lib superheroes :path nx/tactics/books/superheroes) (lib world_wars :path nx/tactics/books/world_wars) :doc "Tactics Decks") (const tactics-all : base/tactics (let : base/tactics [booklist : base/booklist := (booklist-all)] (base/tactics<-booklist booklist)) :doc "All tactics cards") (func booklist-all : base/booklist (base/booklist (core_rules/tacticsbook) (combat/tacticsbook) (skills/tacticsbook) (magic/tacticsbook) (powers/tacticsbook) (gear/tacticsbook) (advanced_rules/tacticsbook) (characters/tacticsbook) (bestiary/tacticsbook) (land_sea_and_air/tacticsbook) (fantasy/tacticsbook) (giant_monsters/tacticsbook) (prehistory/tacticsbook) (medieval/tacticsbook) (age_of_sail/tacticsbook) (age_of_steam/tacticsbook) (pulp_fiction/tacticsbook) (world_wars/tacticsbook) (horror/tacticsbook) (modern/tacticsbook) (modern_fantasy/tacticsbook) (superheroes/tacticsbook) (high_technology/tacticsbook) (science_fiction/tacticsbook) (space_and_time/tacticsbook)) :doc "All books") (func deck-home : base/deck (base/deck :name "Home" :cardmap (base/cardmap<-cardlist (base/cardlist (deck-books) (deck-setup) (deck-scenarios) (deck-encounters) (deck-places) (deck-units) (deck-items) (deck-skills) (deck-powers))))) (func deck-books : base/deck (base/deck :name "Books" :cardmap (base/cardmap<-bookmap (:bookmap tactics-all))) :doc "Deck of books") (func deck-encounters : base/deck (base/deck :name "Encounters")) (func deck-items : base/deck (base/deck :name "Items")) (func deck-places : base/deck (base/deck :name "Places")) (func deck-powers : base/deck (base/deck :name "Powers")) (func deck-setup : base/deck (base/deck :name "Setup" :cardmap (base/cardmap<-cardlist (base/cardlist (starter/deck-player) (tarot/deck-tarot) (fate/deck-fate) (damage/deck-damage) (damage/deck-damageback) (damage/deck-disorder) (damage/deck-disorderback) (damage/deck-trauma) (damage/deck-traumaback) (damage/deck-slow) (damage/deck-bleeding) (damage/deck-bloodloss) (starter/deck-player-blue) (starter/deck-player-green) (starter/deck-player-red) (starter/deck-player-yellow) (fate/deck-fate-blue) (fate/deck-fate-green) (fate/deck-fate-red) (fate/deck-fate-yellow)))) :doc "Setup Deck") (func deck-scenarios : base/deck (base/deck :name "Scenarios" :cardmap (base/cardmap<-cardlist (base/cardlist (scenario/deck-murintrail))))) (func deck-skills : base/deck (let : base/deck [skillmap : base/skillmap := (:skillmap tactics-all) cardmap : base/cardmap := (map<-map : base/cardmap skillmap)] (base/deck :name "Skills" :cardmap cardmap)) :doc "Skills Deck") (func deck-units : base/deck (base/deck :name "Units"))
nx/tactics/decks/deck / tactics-all
Description:
  • All tactics cards
Constant Name:
  • tactics-all
Type:
  • nx/tactics/base/tactics
Usage/Test Cases:
Source Code:
  • (const tactics-all : base/tactics (let : base/tactics [booklist : base/booklist := (booklist-all)] (base/tactics<-booklist booklist)) :doc "All tactics cards")
nx/tactics/decks/deck / booklist-all
Description:
  • All books
Function Name:
  • booklist-all
Return Type:
  • nx/tactics/base/booklist
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func booklist-all : base/booklist (base/booklist (core_rules/tacticsbook) (combat/tacticsbook) (skills/tacticsbook) (magic/tacticsbook) (powers/tacticsbook) (gear/tacticsbook) (advanced_rules/tacticsbook) (characters/tacticsbook) (bestiary/tacticsbook) (land_sea_and_air/tacticsbook) (fantasy/tacticsbook) (giant_monsters/tacticsbook) (prehistory/tacticsbook) (medieval/tacticsbook) (age_of_sail/tacticsbook) (age_of_steam/tacticsbook) (pulp_fiction/tacticsbook) (world_wars/tacticsbook) (horror/tacticsbook) (modern/tacticsbook) (modern_fantasy/tacticsbook) (superheroes/tacticsbook) (high_technology/tacticsbook) (science_fiction/tacticsbook) (space_and_time/tacticsbook)) :doc "All books")
nx/tactics/decks/deck / deck-home
Description:
Function Name:
  • deck-home
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-home : base/deck (base/deck :name "Home" :cardmap (base/cardmap<-cardlist (base/cardlist (deck-books) (deck-setup) (deck-scenarios) (deck-encounters) (deck-places) (deck-units) (deck-items) (deck-skills) (deck-powers)))))
nx/tactics/decks/deck / deck-books
Description:
  • Deck of books
Function Name:
  • deck-books
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-books : base/deck (base/deck :name "Books" :cardmap (base/cardmap<-bookmap (:bookmap tactics-all))) :doc "Deck of books")
nx/tactics/decks/deck / deck-encounters
Description:
Function Name:
  • deck-encounters
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-encounters : base/deck (base/deck :name "Encounters"))
nx/tactics/decks/deck / deck-items
Description:
Function Name:
  • deck-items
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-items : base/deck (base/deck :name "Items"))
nx/tactics/decks/deck / deck-places
Description:
Function Name:
  • deck-places
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-places : base/deck (base/deck :name "Places"))
nx/tactics/decks/deck / deck-powers
Description:
Function Name:
  • deck-powers
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-powers : base/deck (base/deck :name "Powers"))
nx/tactics/decks/deck / deck-setup
Description:
  • Setup Deck
Function Name:
  • deck-setup
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-setup : base/deck (base/deck :name "Setup" :cardmap (base/cardmap<-cardlist (base/cardlist (starter/deck-player) (tarot/deck-tarot) (fate/deck-fate) (damage/deck-damage) (damage/deck-damageback) (damage/deck-disorder) (damage/deck-disorderback) (damage/deck-trauma) (damage/deck-traumaback) (damage/deck-slow) (damage/deck-bleeding) (damage/deck-bloodloss) (starter/deck-player-blue) (starter/deck-player-green) (starter/deck-player-red) (starter/deck-player-yellow) (fate/deck-fate-blue) (fate/deck-fate-green) (fate/deck-fate-red) (fate/deck-fate-yellow)))) :doc "Setup Deck")
nx/tactics/decks/deck / deck-scenarios
Description:
Function Name:
  • deck-scenarios
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-scenarios : base/deck (base/deck :name "Scenarios" :cardmap (base/cardmap<-cardlist (base/cardlist (scenario/deck-murintrail)))))
nx/tactics/decks/deck / deck-skills
Description:
  • Skills Deck
Function Name:
  • deck-skills
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-skills : base/deck (let : base/deck [skillmap : base/skillmap := (:skillmap tactics-all) cardmap : base/cardmap := (map<-map : base/cardmap skillmap)] (base/deck :name "Skills" :cardmap cardmap)) :doc "Skills Deck")
nx/tactics/decks/deck / deck-units
Description:
Function Name:
  • deck-units
Return Type:
  • nx/tactics/base/deck
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func deck-units : base/deck (base/deck :name "Units"))
nx/tactics/ui/stylesheet
Description:
  • Tactics UI
Package Name:
  • nx/tactics/ui/stylesheet
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    file
    vx/data/file
    ui
    vx/ui/ui
Types:
Constants:
  • font-header1, font-header2, font-label, font-rank, font-text, font-text-2, font-textarea, font-title, fontface1, fontface2, fontface3, image-jester-black, image-jester-red, point-rank-pos1, point-rank-pos2, point-rank-size, point-suit-pos1, point-suit-pos2, point-suit-size, point-iconsize, point-cardsize, style-html, style-body, style-div, style-app, style-app-background, style-app-main, style-app-menubar, style-app-menudrawer, style-app-msgbox, style-app-navbar, style-app-navbar-button, style-app-navdrawer, style-app-parallax, style-app-statusbar, style-app-statusdrawer, style-app-titlebar, style-app-titlebar-print, style-button-back, style-card, style-card-display, style-card-display2, style-card-display3, style-card-display4, style-card-rank, style-card-suit, style-card-title1, style-card-title2, style-clickable, style-deck, style-hidden, style-image-background, style-image-coin1, style-image-coin2, style-image-cup1, style-image-cup2, style-image-jester-black1, style-image-jester-black2, style-image-jester-red1, style-image-jester-red2, style-image-sword1, style-image-sword2, style-image-wand1, style-image-wand2, style-item-summary, style-selected, style-text, style-text-2, style-textarea, style-text-header1, style-text-header2, style-text-label, style-text-rank1, style-text-rank2, style-text-title, style-unit, style-unit-body, style-unit-bodydetail, style-unit-detail, style-unit-image, style-unit-mind, style-unit-minddetail, style-unit-will, style-unit-willdetail, style-unit-move, style-unit-movedetail, style-unit-titles, style-unit-value, stylesheet-app
Functions:
Source Code:
  • (package nx/tactics/ui/stylesheet :libs (lib base :path nx/tactics/base) (lib file :path vx/data/file) (lib ui :path vx/ui/ui) :doc "Tactics UI") (const font-header1 : ui/font (ui/font :name "font-header1" :fontface fontface1 :fontsize 100) :doc "Returns Header1 Font") (const font-header2 : ui/font (ui/font :name "font-header2" :fontface fontface1 :fontsize 80) :doc "Returns Header2 Font") (const font-label : ui/font (ui/font :name "font-label" :fontface fontface1 :fontsize 60) :doc "Returns Label Font") (const font-rank : ui/font (ui/font :name "font-rank" :fontface fontface1 :fontsize 120) :doc "Returns Normal text Font") (const font-text : ui/font (ui/font :name "font-text" :fontface fontface1 :fontsize 60) :doc "Returns Normal text Font") (const font-text-2 : ui/font (ui/font :name "font-text-2" :fontface fontface1 :fontsize 30) :doc "Returns Normal text Font") (const font-textarea : ui/font (ui/font :name "font-textarea" :fontface fontface1 :fontsize 60) :doc "Returns Textarea Font") (const font-title : ui/font (ui/font :name "font-title" :fontface fontface1 :fontsize 160) :doc "Returns Title Font") (const fontface1 : ui/fontface (ui/fontface :name "El Messiri" :weight "400 700" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "K2F0fZBRmr9vQ1pHEey6Mo2AAg.woff2" :path "https://fonts.gstatic.com/s/elmessiri/v22"))) :doc "Returns Fontface1") (const fontface2 : ui/fontface (ui/fontface :name "Cormorant Upright" :weight "300 400 500 600 700" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "VuJudM3I2Y35poFONtLdafkUCHw1y1N5piDrWdQ.woff2" :path "https://fonts.gstatic.com/s/cormorantupright/v18"))) :doc "Returns Fontface2") (const fontface3 : ui/fontface (ui/fontface :name "Carattere" :weight "400" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "4iCv6Kp1b9dXlgt_CkvjsGyN.woff2" :path "https://fonts.gstatic.com/s/carattere/v7"))) :doc "Returns Fontface3") (const image-jester-black : ui/image (ui/image :file (file/file :name "icon-jester-black.svg" :path "icons"))) (const image-jester-red : ui/image (ui/image :file (file/file :name "icon-jester-red.svg" :path "icons"))) (const point-rank-pos1 : ui/point (ui/point :x 1 :y 0)) (const point-rank-pos2 : ui/point (ui/point :x 57 :y 80)) (const point-rank-size : ui/point (ui/point :x 4 :y 6)) (const point-suit-pos1 : ui/point (ui/point :x 0 :y 6)) (const point-suit-pos2 : ui/point (ui/point :x 56 :y 74)) (const point-suit-size : ui/point (ui/point :x 6 :y 6)) (const point-iconsize : ui/point (ui/point :x 6 :y 6)) (const point-cardsize : ui/point (ui/point :x 63 :y 88)) (const style-html : ui/style (ui/style :name "html" :styletype styletype-system :boundsmargin (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :boundspadding (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :pin ui/pin-expand) :doc "Returns the style for app ui.") (const style-body : ui/style (ui/style :name "body" :styletype styletype-system :boundsmargin (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :boundspadding (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :pin ui/pin-expand) :doc "Returns the style for app ui.") (const style-div : ui/style (ui/style :name "div" :styletype styletype-system :layout ui/layout-flow-columns) :doc "Returns the style for app ui.") (const style-app : ui/style (ui/style :color-background "B0E0E6" :layout ui/layout-app :pin ui/pin-expand) :doc "Returns the style for app ui.") (const style-app-background : ui/style (ui/style :name "style-app-background" :type ui/styletype-shared :layout ui/layout-background :pin ui/pin-center :pointsize (ui/point :x 1000 :y 1000)) :doc "Returns the style for app ui.") (const style-app-main : ui/style (ui/style :name "style-app-main" :type ui/styletype-shared :layout ui/layout-main :pin ui/pin-center-v :pointpos (ui/point :x 6 :y 12) :pointsize (ui/point :y 6)) :doc "") (const style-app-menubar : ui/style (ui/style :name "style-app-menubar" :type ui/styletype-shared :color-background "5E9CA0" :layout ui/layout-menubar :pin ui/pin-top :pointsize (ui/point :y 6)) :doc "") (const style-app-menudrawer : ui/style (ui/style :name "style-app-menudrawer" :type ui/styletype-shared :layout ui/layout-menudrawer) :doc "") (const style-app-msgbox : ui/style (ui/style :name "style-app-msgbox" :type ui/styletype-shared :layout ui/layout-msgbox) :doc "") (const style-app-navbar : ui/style (ui/style :name "style-app-navbar" :type ui/styletype-shared :color-background "90C5A9" :layout ui/layout-navbar :pin ui/pin-left :pointpos (ui/point :y 6) :pointsize (ui/point :x 6 :y 6)) :doc "") (const style-app-navbar-button : ui/style (ui/style :name "style-app-navbar-button" :type ui/styletype-shared :color-background "A9C8FF" :layout ui/layout-button :pointsize point-iconsize) :doc "") (const style-app-navdrawer : ui/style (ui/style :name "style-app-navdrawer" :type ui/styletype-shared :layout ui/layout-navdrawer) :doc "") (const style-app-parallax : ui/style (ui/style :name "style-app-parallax" :type ui/styletype-shared :layout ui/layout-parallax) :doc "") (const style-app-statusbar : ui/style (ui/style :name "style-app-statusbar" :type ui/styletype-shared :color-background "B6B6B6" :layout ui/layout-statusbar :pin ui/pin-bottom :pointsize (ui/point :y 6)) :doc "") (const style-app-statusdrawer : ui/style (ui/style :name "style-app-statusdrawer" :type ui/styletype-shared :layout ui/layout-statusdrawer) :doc "") (const style-app-titlebar : ui/style (ui/style :name "style-app-titlebar" :type ui/styletype-shared :color-background "0000F0" :layout ui/layout-titlebar :pin ui/pin-top :pointpos (ui/point :x 6 :y 6) :pointsize (ui/point :y 6)) :doc "") (const style-app-titlebar-print : ui/style (ui/style :name "style-app-titlebar-print" :type ui/styletype-shared :color-background "A9C8FF" :layout ui/layout-button :pointsize point-iconsize) :doc "") (const style-button-back : ui/style (ui/style :name "style-button-back" :type ui/styletype-shared :image-background (ui/image :name "image-button-back" :label "Back" :file (file/file :name "icon-backarrow.svg" :path "icons"))) :doc "") (const style-card : ui/style (ui/style :name "style-card" :type ui/styletype-shared :color-background "FFFFFF" :layout ui/layout-flow-item :pointsize point-cardsize) :doc "") (const style-card-display : ui/style (ui/style :name "style-card-display" :layout ui/layout-label :pointpos (ui/point :x 6 :y 6) :pointsize (ui/point :x 51)) :doc "") (const style-card-display2 : ui/style (ui/style :name "style-card-display2" :layout ui/layout-label :pointpos (ui/point :x 61 :y 12) :pointrotate (ui/point :x 90) :pointsize (ui/point :x 60)) :doc "") (const style-card-display3 : ui/style (ui/style :name "style-card-display3" :layout ui/layout-label :pointpos (ui/point :x 55 :y 80) :pointrotate (ui/point :x 180) :pointsize (ui/point :x 51)) :doc "") (const style-card-display4 : ui/style (ui/style :name "style-card-display4" :layout ui/layout-label :pointpos (ui/point :x 1 :y 71) :pointrotate (ui/point :x -90) :pointsize (ui/point :x 58)) :doc "") (const style-card-rank : ui/style (ui/style :name "style-card-rank" :layout ui/layout-label) :doc "") (const style-card-suit : ui/style (ui/style :name "style-card-suit" :layout ui/layout-image) :doc "") (const style-card-title1 : ui/style (ui/style :name "style-card-title1" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 7) :pointsize (ui/point :x 51)) :doc "") (const style-card-title2 : ui/style (ui/style :name "style-card-title2" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 58 :y 88) :pointsize (ui/point :x 51) :pointrotate (ui/point :x 180)) :doc "") (const style-clickable : ui/style (ui/style :name "style-clickable" :type ui/styletype-shared :styletype styletype-shared :cursor ui/cursor-pointer :color-hoverbkgrd "E0E0E0") :doc "Returns the style for clickable class.") (const style-deck : ui/style (ui/style :name "style-deck" :type ui/styletype-shared :color-background "C0C0C0" :layout ui/layout-flow-columns ) :doc "Returns the style for deck.") (const style-hidden : ui/style (ui/style :name "style-hidden" :type ui/styletype-shared :hidden true) :doc "") (const style-image-background : ui/style (ui/style :name "style-image-background" :type ui/styletype-shared :layout ui/layout-image :pointpos (ui/point :x 0 :y 0 :pointtype ui/pointtype-absolute) :pointsize (ui/point :x 100 :y 100 :pointtype ui/pointtype-percent)) :doc "") (const style-image-coin1 : ui/style (ui/style :name "style-image-coin1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-coin1" :label "Coins" :file (file/file :name "icon-coin.svg" :path "icons"))) :doc "") (const style-image-coin2 : ui/style (ui/style :name "style-image-coin2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-coin2" :label "Coins" :file (file/file :name "icon-coin.svg" :path "icons"))) :doc "") (const style-image-cup1 : ui/style (ui/style :name "style-image-cup1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-cup1" :label "Cups" :file (file/file :name "icon-cup.svg" :path "icons"))) :doc "") (const style-image-cup2 : ui/style (ui/style :name "style-image-cup2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-cup2" :label "Cups" :file (file/file :name "icon-cup.svg" :path "icons"))) :doc "") (const style-image-jester-black1 : ui/style (ui/style :name "style-image-jester-black1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background image-jester-black) :doc "") (const style-image-jester-black2 : ui/style (ui/style :name "style-image-jester-black2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background image-jester-black) :doc "") (const style-image-jester-red1 : ui/style (ui/style :name "style-image-jester-red1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background image-jester-red) :doc "") (const style-image-jester-red2 : ui/style (ui/style :name "style-image-jester-red2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background image-jester-red) :doc "") (const style-image-sword1 : ui/style (ui/style :name "style-image-sword1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-sword1" :label "Swords" :file (file/file :name "icon-sword.svg" :path "icons"))) :doc "") (const style-image-sword2 : ui/style (ui/style :name "style-image-sword2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-sword2" :label "Swords" :file (file/file :name "icon-sword.svg" :path "icons"))) :doc "") (const style-image-wand1 : ui/style (ui/style :name "style-image-wand1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-wand1" :label "Wands" :file (file/file :name "icon-wand.svg" :path "icons"))) :doc "") (const style-image-wand2 : ui/style (ui/style :name "style-image-wand2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-wand1" :label "Wands" :file (file/file :name "icon-wand.svg" :path "icons"))) :doc "") (const style-item-summary : ui/style (ui/style :name "style-item-summary" :layout ui/layout-label :pointpos (ui/point :x 32 :y 16) :pointsize (ui/point :x 30 :y 31)) :doc "") (const style-selected : ui/style (ui/style :name "style-selected" :type ui/styletype-shared :color-background "E2CCCC") :doc "") (const style-text : ui/style (ui/style :name "style-text" :type ui/styletype-shared :font font-text) :doc "Returns the style for text area") (const style-text-2 : ui/style (ui/style :name "style-text-2" :type ui/styletype-shared :font font-text-2) :doc "Returns the style for text area") (const style-textarea : ui/style (ui/style :name "style-textarea" :type ui/styletype-shared :font font-textarea) :doc "Returns the style for text area") (const style-text-header1 : ui/style (ui/style :name "style-text-header1" :type ui/styletype-shared :font font-header1) :doc "Returns the style for header1 text") (const style-text-header2 : ui/style (ui/style :name "style-text-header2" :type ui/styletype-shared :layout ui/layout-label :font font-header2) :doc "Returns the style for header2 text") (const style-text-label : ui/style (ui/style :name "style-text-label" :type ui/styletype-shared :layout ui/layout-label :font font-label) :doc "Returns the style for label text") (const style-text-rank1 : ui/style (ui/style :name "style-text-rank1" :type ui/styletype-shared :layout ui/layout-label :align ui/align-center :font font-rank :pointpos point-rank-pos1 :pointsize point-rank-size) :doc "Returns the style for label text") (const style-text-rank2 : ui/style (ui/style :name "style-text-rank2" :type ui/styletype-shared :layout ui/layout-label :align ui/align-center :font font-rank :pointpos point-rank-pos2 :pointsize point-rank-size) :doc "Returns the style for label text") (const style-text-title : ui/style (ui/style :name "style-text-title" :type ui/styletype-shared :layout ui/layout-label :font font-title) :doc "Returns the style for title text") (const style-unit : ui/style :doc "Returns the style for unit ui.") (const style-unit-body : ui/style (ui/style :name "style-unit-body" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 8) :pointsize (ui/point :x 13 :y 6)) :doc "") (const style-unit-bodydetail : ui/style (ui/style :name "style-unit-bodydetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 13) :pointsize (ui/point :x 29 :y 5)) :doc "") (const style-unit-detail : ui/style (ui/style :name "style-unit-detail" :layout ui/layout-label :pointpos (ui/point :x 2 :y 50) :pointsize (ui/point :x 60 :y 37)) :doc "") (const style-unit-image : ui/style (ui/style :name "style-unit-image" :layout ui/layout-image :pointpos (ui/point :x 1 :y 6) :pointsize (ui/point :x 30 :y 42)) :doc "") (const style-unit-mind : ui/style (ui/style :name "style-unit-mind" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 17) :pointsize (ui/point :x 13 :y 6)) :doc "") (const style-unit-minddetail : ui/style (ui/style :name "style-unit-minddetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 22) :pointsize (ui/point :x 29 :y 5)) :doc "") (const style-unit-will : ui/style (ui/style :name "style-unit-will" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 26) :pointsize (ui/point :x 13 :y 6)) :doc "") (const style-unit-willdetail : ui/style (ui/style :name "style-unit-willdetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 31) :pointsize (ui/point :x 29 :y 5)) :doc "") (const style-unit-move : ui/style (ui/style :name "style-unit-move" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 35) :pointsize (ui/point :x 13 :y 6)) :doc "") (const style-unit-movedetail : ui/style (ui/style :name "style-unit-movedetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 40) :pointsize (ui/point :x 29 :y 5)) :doc "") (const style-unit-titles : ui/style (ui/style :name "style-unit-titles" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 7 :y 5) :pointsize (ui/point :x 51 :y 4)) :doc "Returns the style for unit titles text") (const style-unit-value : ui/style (ui/style :name "style-unit-value" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 0) :pointsize (ui/point :x 13 :y 6)) :doc "") (const stylesheet-app : ui/stylesheet (ui/stylesheet :fontfacemap (ui/fontfacemap<-fontfacelist (ui/fontfacelist fontface1 fontface2 fontface3)) :stylemap (ui/stylemap<-stylelist (ui/stylelist style-html style-body style-div style-clickable style-hidden style-selected style-app-background style-app-main style-app-menubar style-app-menudrawer style-app-msgbox style-app-navbar style-app-navbar-button style-app-navdrawer style-app-parallax style-app-statusbar style-app-statusdrawer style-app-titlebar style-app-titlebar-print style-button-back style-card style-deck style-image-background style-image-coin1 style-image-coin2 style-image-cup1 style-image-cup2 style-image-jester-black1 style-image-jester-black2 style-image-jester-red1 style-image-jester-red2 style-image-sword1 style-image-sword2 style-image-wand1 style-image-wand2 style-text style-text-2 style-text-header1 style-text-header2 style-text-label style-text-rank1 style-text-rank2 style-text-title style-textarea))) :doc "Returns the stylesheet for this project")
nx/tactics/ui/stylesheet / font-header1
Description:
  • Returns Header1 Font
Constant Name:
  • font-header1
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-header1 : ui/font (ui/font :name "font-header1" :fontface fontface1 :fontsize 100) :doc "Returns Header1 Font")
nx/tactics/ui/stylesheet / font-header2
Description:
  • Returns Header2 Font
Constant Name:
  • font-header2
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-header2 : ui/font (ui/font :name "font-header2" :fontface fontface1 :fontsize 80) :doc "Returns Header2 Font")
nx/tactics/ui/stylesheet / font-label
Description:
  • Returns Label Font
Constant Name:
  • font-label
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-label : ui/font (ui/font :name "font-label" :fontface fontface1 :fontsize 60) :doc "Returns Label Font")
nx/tactics/ui/stylesheet / font-rank
Description:
  • Returns Normal text Font
Constant Name:
  • font-rank
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-rank : ui/font (ui/font :name "font-rank" :fontface fontface1 :fontsize 120) :doc "Returns Normal text Font")
nx/tactics/ui/stylesheet / font-text
Description:
  • Returns Normal text Font
Constant Name:
  • font-text
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-text : ui/font (ui/font :name "font-text" :fontface fontface1 :fontsize 60) :doc "Returns Normal text Font")
nx/tactics/ui/stylesheet / font-text-2
Description:
  • Returns Normal text Font
Constant Name:
  • font-text-2
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-text-2 : ui/font (ui/font :name "font-text-2" :fontface fontface1 :fontsize 30) :doc "Returns Normal text Font")
nx/tactics/ui/stylesheet / font-textarea
Description:
  • Returns Textarea Font
Constant Name:
  • font-textarea
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-textarea : ui/font (ui/font :name "font-textarea" :fontface fontface1 :fontsize 60) :doc "Returns Textarea Font")
nx/tactics/ui/stylesheet / font-title
Description:
  • Returns Title Font
Constant Name:
  • font-title
Type:
  • vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (const font-title : ui/font (ui/font :name "font-title" :fontface fontface1 :fontsize 160) :doc "Returns Title Font")
nx/tactics/ui/stylesheet / fontface1
Description:
  • Returns Fontface1
Constant Name:
  • fontface1
Type:
  • vx/ui/ui/fontface
Usage/Test Cases:
Source Code:
  • (const fontface1 : ui/fontface (ui/fontface :name "El Messiri" :weight "400 700" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "K2F0fZBRmr9vQ1pHEey6Mo2AAg.woff2" :path "https://fonts.gstatic.com/s/elmessiri/v22"))) :doc "Returns Fontface1")
nx/tactics/ui/stylesheet / fontface2
Description:
  • Returns Fontface2
Constant Name:
  • fontface2
Type:
  • vx/ui/ui/fontface
Usage/Test Cases:
Source Code:
  • (const fontface2 : ui/fontface (ui/fontface :name "Cormorant Upright" :weight "300 400 500 600 700" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "VuJudM3I2Y35poFONtLdafkUCHw1y1N5piDrWdQ.woff2" :path "https://fonts.gstatic.com/s/cormorantupright/v18"))) :doc "Returns Fontface2")
nx/tactics/ui/stylesheet / fontface3
Description:
  • Returns Fontface3
Constant Name:
  • fontface3
Type:
  • vx/ui/ui/fontface
Usage/Test Cases:
Source Code:
  • (const fontface3 : ui/fontface (ui/fontface :name "Carattere" :weight "400" :unicode "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;" :filelist (file/filelist (file/file :name "4iCv6Kp1b9dXlgt_CkvjsGyN.woff2" :path "https://fonts.gstatic.com/s/carattere/v7"))) :doc "Returns Fontface3")
nx/tactics/ui/stylesheet / image-jester-black
Description:
Constant Name:
  • image-jester-black
Type:
  • vx/ui/ui/image
Usage/Test Cases:
Source Code:
  • (const image-jester-black : ui/image (ui/image :file (file/file :name "icon-jester-black.svg" :path "icons")))
nx/tactics/ui/stylesheet / image-jester-red
Description:
Constant Name:
  • image-jester-red
Type:
  • vx/ui/ui/image
Usage/Test Cases:
Source Code:
  • (const image-jester-red : ui/image (ui/image :file (file/file :name "icon-jester-red.svg" :path "icons")))
nx/tactics/ui/stylesheet / point-rank-pos1
Description:
Constant Name:
  • point-rank-pos1
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-rank-pos1 : ui/point (ui/point :x 1 :y 0))
nx/tactics/ui/stylesheet / point-rank-pos2
Description:
Constant Name:
  • point-rank-pos2
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-rank-pos2 : ui/point (ui/point :x 57 :y 80))
nx/tactics/ui/stylesheet / point-rank-size
Description:
Constant Name:
  • point-rank-size
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-rank-size : ui/point (ui/point :x 4 :y 6))
nx/tactics/ui/stylesheet / point-suit-pos1
Description:
Constant Name:
  • point-suit-pos1
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-suit-pos1 : ui/point (ui/point :x 0 :y 6))
nx/tactics/ui/stylesheet / point-suit-pos2
Description:
Constant Name:
  • point-suit-pos2
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-suit-pos2 : ui/point (ui/point :x 56 :y 74))
nx/tactics/ui/stylesheet / point-suit-size
Description:
Constant Name:
  • point-suit-size
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-suit-size : ui/point (ui/point :x 6 :y 6))
nx/tactics/ui/stylesheet / point-iconsize
Description:
Constant Name:
  • point-iconsize
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-iconsize : ui/point (ui/point :x 6 :y 6))
nx/tactics/ui/stylesheet / point-cardsize
Description:
Constant Name:
  • point-cardsize
Type:
  • vx/ui/ui/point
Usage/Test Cases:
Source Code:
  • (const point-cardsize : ui/point (ui/point :x 63 :y 88))
nx/tactics/ui/stylesheet / style-html
Description:
  • Returns the style for app ui.
Constant Name:
  • style-html
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-html : ui/style (ui/style :name "html" :styletype styletype-system :boundsmargin (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :boundspadding (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :pin ui/pin-expand) :doc "Returns the style for app ui.")
nx/tactics/ui/stylesheet / style-body
Description:
  • Returns the style for app ui.
Constant Name:
  • style-body
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-body : ui/style (ui/style :name "body" :styletype styletype-system :boundsmargin (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :boundspadding (ui/bounds :left 0 :right 0 :top 0 :bottom 0) :pin ui/pin-expand) :doc "Returns the style for app ui.")
nx/tactics/ui/stylesheet / style-div
Description:
  • Returns the style for app ui.
Constant Name:
  • style-div
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-div : ui/style (ui/style :name "div" :styletype styletype-system :layout ui/layout-flow-columns) :doc "Returns the style for app ui.")
nx/tactics/ui/stylesheet / style-app
Description:
  • Returns the style for app ui.
Constant Name:
  • style-app
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app : ui/style (ui/style :color-background "B0E0E6" :layout ui/layout-app :pin ui/pin-expand) :doc "Returns the style for app ui.")
nx/tactics/ui/stylesheet / style-app-background
Description:
  • Returns the style for app ui.
Constant Name:
  • style-app-background
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-background : ui/style (ui/style :name "style-app-background" :type ui/styletype-shared :layout ui/layout-background :pin ui/pin-center :pointsize (ui/point :x 1000 :y 1000)) :doc "Returns the style for app ui.")
nx/tactics/ui/stylesheet / style-app-main
Description:
Constant Name:
  • style-app-main
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-main : ui/style (ui/style :name "style-app-main" :type ui/styletype-shared :layout ui/layout-main :pin ui/pin-center-v :pointpos (ui/point :x 6 :y 12) :pointsize (ui/point :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-app-menubar
Description:
Constant Name:
  • style-app-menubar
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-menubar : ui/style (ui/style :name "style-app-menubar" :type ui/styletype-shared :color-background "5E9CA0" :layout ui/layout-menubar :pin ui/pin-top :pointsize (ui/point :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-app-menudrawer
Description:
Constant Name:
  • style-app-menudrawer
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-menudrawer : ui/style (ui/style :name "style-app-menudrawer" :type ui/styletype-shared :layout ui/layout-menudrawer) :doc "")
nx/tactics/ui/stylesheet / style-app-msgbox
Description:
Constant Name:
  • style-app-msgbox
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-msgbox : ui/style (ui/style :name "style-app-msgbox" :type ui/styletype-shared :layout ui/layout-msgbox) :doc "")
nx/tactics/ui/stylesheet / style-app-navbar
Description:
Constant Name:
  • style-app-navbar
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-navbar : ui/style (ui/style :name "style-app-navbar" :type ui/styletype-shared :color-background "90C5A9" :layout ui/layout-navbar :pin ui/pin-left :pointpos (ui/point :y 6) :pointsize (ui/point :x 6 :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-app-navbar-button
Description:
Constant Name:
  • style-app-navbar-button
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-navbar-button : ui/style (ui/style :name "style-app-navbar-button" :type ui/styletype-shared :color-background "A9C8FF" :layout ui/layout-button :pointsize point-iconsize) :doc "")
nx/tactics/ui/stylesheet / style-app-navdrawer
Description:
Constant Name:
  • style-app-navdrawer
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-navdrawer : ui/style (ui/style :name "style-app-navdrawer" :type ui/styletype-shared :layout ui/layout-navdrawer) :doc "")
nx/tactics/ui/stylesheet / style-app-parallax
Description:
Constant Name:
  • style-app-parallax
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-parallax : ui/style (ui/style :name "style-app-parallax" :type ui/styletype-shared :layout ui/layout-parallax) :doc "")
nx/tactics/ui/stylesheet / style-app-statusbar
Description:
Constant Name:
  • style-app-statusbar
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-statusbar : ui/style (ui/style :name "style-app-statusbar" :type ui/styletype-shared :color-background "B6B6B6" :layout ui/layout-statusbar :pin ui/pin-bottom :pointsize (ui/point :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-app-statusdrawer
Description:
Constant Name:
  • style-app-statusdrawer
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-statusdrawer : ui/style (ui/style :name "style-app-statusdrawer" :type ui/styletype-shared :layout ui/layout-statusdrawer) :doc "")
nx/tactics/ui/stylesheet / style-app-titlebar
Description:
Constant Name:
  • style-app-titlebar
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-titlebar : ui/style (ui/style :name "style-app-titlebar" :type ui/styletype-shared :color-background "0000F0" :layout ui/layout-titlebar :pin ui/pin-top :pointpos (ui/point :x 6 :y 6) :pointsize (ui/point :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-app-titlebar-print
Description:
Constant Name:
  • style-app-titlebar-print
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-app-titlebar-print : ui/style (ui/style :name "style-app-titlebar-print" :type ui/styletype-shared :color-background "A9C8FF" :layout ui/layout-button :pointsize point-iconsize) :doc "")
nx/tactics/ui/stylesheet / style-button-back
Description:
Constant Name:
  • style-button-back
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-button-back : ui/style (ui/style :name "style-button-back" :type ui/styletype-shared :image-background (ui/image :name "image-button-back" :label "Back" :file (file/file :name "icon-backarrow.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-card
Description:
Constant Name:
  • style-card
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card : ui/style (ui/style :name "style-card" :type ui/styletype-shared :color-background "FFFFFF" :layout ui/layout-flow-item :pointsize point-cardsize) :doc "")
nx/tactics/ui/stylesheet / style-card-display
Description:
Constant Name:
  • style-card-display
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-display : ui/style (ui/style :name "style-card-display" :layout ui/layout-label :pointpos (ui/point :x 6 :y 6) :pointsize (ui/point :x 51)) :doc "")
nx/tactics/ui/stylesheet / style-card-display2
Description:
Constant Name:
  • style-card-display2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-display2 : ui/style (ui/style :name "style-card-display2" :layout ui/layout-label :pointpos (ui/point :x 61 :y 12) :pointrotate (ui/point :x 90) :pointsize (ui/point :x 60)) :doc "")
nx/tactics/ui/stylesheet / style-card-display3
Description:
Constant Name:
  • style-card-display3
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-display3 : ui/style (ui/style :name "style-card-display3" :layout ui/layout-label :pointpos (ui/point :x 55 :y 80) :pointrotate (ui/point :x 180) :pointsize (ui/point :x 51)) :doc "")
nx/tactics/ui/stylesheet / style-card-display4
Description:
Constant Name:
  • style-card-display4
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-display4 : ui/style (ui/style :name "style-card-display4" :layout ui/layout-label :pointpos (ui/point :x 1 :y 71) :pointrotate (ui/point :x -90) :pointsize (ui/point :x 58)) :doc "")
nx/tactics/ui/stylesheet / style-card-rank
Description:
Constant Name:
  • style-card-rank
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-rank : ui/style (ui/style :name "style-card-rank" :layout ui/layout-label) :doc "")
nx/tactics/ui/stylesheet / style-card-suit
Description:
Constant Name:
  • style-card-suit
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-suit : ui/style (ui/style :name "style-card-suit" :layout ui/layout-image) :doc "")
nx/tactics/ui/stylesheet / style-card-title1
Description:
Constant Name:
  • style-card-title1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-title1 : ui/style (ui/style :name "style-card-title1" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 7) :pointsize (ui/point :x 51)) :doc "")
nx/tactics/ui/stylesheet / style-card-title2
Description:
Constant Name:
  • style-card-title2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-card-title2 : ui/style (ui/style :name "style-card-title2" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 58 :y 88) :pointsize (ui/point :x 51) :pointrotate (ui/point :x 180)) :doc "")
nx/tactics/ui/stylesheet / style-clickable
Description:
  • Returns the style for clickable class.
Constant Name:
  • style-clickable
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-clickable : ui/style (ui/style :name "style-clickable" :type ui/styletype-shared :styletype styletype-shared :cursor ui/cursor-pointer :color-hoverbkgrd "E0E0E0") :doc "Returns the style for clickable class.")
nx/tactics/ui/stylesheet / style-deck
Description:
  • Returns the style for deck.
Constant Name:
  • style-deck
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-deck : ui/style (ui/style :name "style-deck" :type ui/styletype-shared :color-background "C0C0C0" :layout ui/layout-flow-columns ) :doc "Returns the style for deck.")
nx/tactics/ui/stylesheet / style-hidden
Description:
Constant Name:
  • style-hidden
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-hidden : ui/style (ui/style :name "style-hidden" :type ui/styletype-shared :hidden true) :doc "")
nx/tactics/ui/stylesheet / style-image-background
Description:
Constant Name:
  • style-image-background
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-background : ui/style (ui/style :name "style-image-background" :type ui/styletype-shared :layout ui/layout-image :pointpos (ui/point :x 0 :y 0 :pointtype ui/pointtype-absolute) :pointsize (ui/point :x 100 :y 100 :pointtype ui/pointtype-percent)) :doc "")
nx/tactics/ui/stylesheet / style-image-coin1
Description:
Constant Name:
  • style-image-coin1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-coin1 : ui/style (ui/style :name "style-image-coin1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-coin1" :label "Coins" :file (file/file :name "icon-coin.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-coin2
Description:
Constant Name:
  • style-image-coin2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-coin2 : ui/style (ui/style :name "style-image-coin2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-coin2" :label "Coins" :file (file/file :name "icon-coin.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-cup1
Description:
Constant Name:
  • style-image-cup1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-cup1 : ui/style (ui/style :name "style-image-cup1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-cup1" :label "Cups" :file (file/file :name "icon-cup.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-cup2
Description:
Constant Name:
  • style-image-cup2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-cup2 : ui/style (ui/style :name "style-image-cup2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-cup2" :label "Cups" :file (file/file :name "icon-cup.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-jester-black1
Description:
Constant Name:
  • style-image-jester-black1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-jester-black1 : ui/style (ui/style :name "style-image-jester-black1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background image-jester-black) :doc "")
nx/tactics/ui/stylesheet / style-image-jester-black2
Description:
Constant Name:
  • style-image-jester-black2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-jester-black2 : ui/style (ui/style :name "style-image-jester-black2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background image-jester-black) :doc "")
nx/tactics/ui/stylesheet / style-image-jester-red1
Description:
Constant Name:
  • style-image-jester-red1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-jester-red1 : ui/style (ui/style :name "style-image-jester-red1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background image-jester-red) :doc "")
nx/tactics/ui/stylesheet / style-image-jester-red2
Description:
Constant Name:
  • style-image-jester-red2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-jester-red2 : ui/style (ui/style :name "style-image-jester-red2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background image-jester-red) :doc "")
nx/tactics/ui/stylesheet / style-image-sword1
Description:
Constant Name:
  • style-image-sword1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-sword1 : ui/style (ui/style :name "style-image-sword1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-sword1" :label "Swords" :file (file/file :name "icon-sword.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-sword2
Description:
Constant Name:
  • style-image-sword2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-sword2 : ui/style (ui/style :name "style-image-sword2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-sword2" :label "Swords" :file (file/file :name "icon-sword.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-wand1
Description:
Constant Name:
  • style-image-wand1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-wand1 : ui/style (ui/style :name "style-image-wand1" :type ui/styletype-shared :pointpos point-suit-pos1 :pointsize point-suit-size :image-background (ui/image :name "image-wand1" :label "Wands" :file (file/file :name "icon-wand.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-image-wand2
Description:
Constant Name:
  • style-image-wand2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-image-wand2 : ui/style (ui/style :name "style-image-wand2" :type ui/styletype-shared :pointpos point-suit-pos2 :pointsize point-suit-size :image-background (ui/image :name "image-wand1" :label "Wands" :file (file/file :name "icon-wand.svg" :path "icons"))) :doc "")
nx/tactics/ui/stylesheet / style-item-summary
Description:
Constant Name:
  • style-item-summary
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-item-summary : ui/style (ui/style :name "style-item-summary" :layout ui/layout-label :pointpos (ui/point :x 32 :y 16) :pointsize (ui/point :x 30 :y 31)) :doc "")
nx/tactics/ui/stylesheet / style-selected
Description:
Constant Name:
  • style-selected
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-selected : ui/style (ui/style :name "style-selected" :type ui/styletype-shared :color-background "E2CCCC") :doc "")
nx/tactics/ui/stylesheet / style-text
Description:
  • Returns the style for text area
Constant Name:
  • style-text
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text : ui/style (ui/style :name "style-text" :type ui/styletype-shared :font font-text) :doc "Returns the style for text area")
nx/tactics/ui/stylesheet / style-text-2
Description:
  • Returns the style for text area
Constant Name:
  • style-text-2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-2 : ui/style (ui/style :name "style-text-2" :type ui/styletype-shared :font font-text-2) :doc "Returns the style for text area")
nx/tactics/ui/stylesheet / style-textarea
Description:
  • Returns the style for text area
Constant Name:
  • style-textarea
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-textarea : ui/style (ui/style :name "style-textarea" :type ui/styletype-shared :font font-textarea) :doc "Returns the style for text area")
nx/tactics/ui/stylesheet / style-text-header1
Description:
  • Returns the style for header1 text
Constant Name:
  • style-text-header1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-header1 : ui/style (ui/style :name "style-text-header1" :type ui/styletype-shared :font font-header1) :doc "Returns the style for header1 text")
nx/tactics/ui/stylesheet / style-text-header2
Description:
  • Returns the style for header2 text
Constant Name:
  • style-text-header2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-header2 : ui/style (ui/style :name "style-text-header2" :type ui/styletype-shared :layout ui/layout-label :font font-header2) :doc "Returns the style for header2 text")
nx/tactics/ui/stylesheet / style-text-label
Description:
  • Returns the style for label text
Constant Name:
  • style-text-label
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-label : ui/style (ui/style :name "style-text-label" :type ui/styletype-shared :layout ui/layout-label :font font-label) :doc "Returns the style for label text")
nx/tactics/ui/stylesheet / style-text-rank1
Description:
  • Returns the style for label text
Constant Name:
  • style-text-rank1
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-rank1 : ui/style (ui/style :name "style-text-rank1" :type ui/styletype-shared :layout ui/layout-label :align ui/align-center :font font-rank :pointpos point-rank-pos1 :pointsize point-rank-size) :doc "Returns the style for label text")
nx/tactics/ui/stylesheet / style-text-rank2
Description:
  • Returns the style for label text
Constant Name:
  • style-text-rank2
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-rank2 : ui/style (ui/style :name "style-text-rank2" :type ui/styletype-shared :layout ui/layout-label :align ui/align-center :font font-rank :pointpos point-rank-pos2 :pointsize point-rank-size) :doc "Returns the style for label text")
nx/tactics/ui/stylesheet / style-text-title
Description:
  • Returns the style for title text
Constant Name:
  • style-text-title
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-text-title : ui/style (ui/style :name "style-text-title" :type ui/styletype-shared :layout ui/layout-label :font font-title) :doc "Returns the style for title text")
nx/tactics/ui/stylesheet / style-unit
Description:
  • Returns the style for unit ui.
Constant Name:
  • style-unit
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit : ui/style :doc "Returns the style for unit ui.")
nx/tactics/ui/stylesheet / style-unit-body
Description:
Constant Name:
  • style-unit-body
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-body : ui/style (ui/style :name "style-unit-body" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 8) :pointsize (ui/point :x 13 :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-unit-bodydetail
Description:
Constant Name:
  • style-unit-bodydetail
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-bodydetail : ui/style (ui/style :name "style-unit-bodydetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 13) :pointsize (ui/point :x 29 :y 5)) :doc "")
nx/tactics/ui/stylesheet / style-unit-detail
Description:
Constant Name:
  • style-unit-detail
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-detail : ui/style (ui/style :name "style-unit-detail" :layout ui/layout-label :pointpos (ui/point :x 2 :y 50) :pointsize (ui/point :x 60 :y 37)) :doc "")
nx/tactics/ui/stylesheet / style-unit-image
Description:
Constant Name:
  • style-unit-image
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-image : ui/style (ui/style :name "style-unit-image" :layout ui/layout-image :pointpos (ui/point :x 1 :y 6) :pointsize (ui/point :x 30 :y 42)) :doc "")
nx/tactics/ui/stylesheet / style-unit-mind
Description:
Constant Name:
  • style-unit-mind
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-mind : ui/style (ui/style :name "style-unit-mind" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 17) :pointsize (ui/point :x 13 :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-unit-minddetail
Description:
Constant Name:
  • style-unit-minddetail
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-minddetail : ui/style (ui/style :name "style-unit-minddetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 22) :pointsize (ui/point :x 29 :y 5)) :doc "")
nx/tactics/ui/stylesheet / style-unit-will
Description:
Constant Name:
  • style-unit-will
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-will : ui/style (ui/style :name "style-unit-will" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 26) :pointsize (ui/point :x 13 :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-unit-willdetail
Description:
Constant Name:
  • style-unit-willdetail
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-willdetail : ui/style (ui/style :name "style-unit-willdetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 31) :pointsize (ui/point :x 29 :y 5)) :doc "")
nx/tactics/ui/stylesheet / style-unit-move
Description:
Constant Name:
  • style-unit-move
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-move : ui/style (ui/style :name "style-unit-move" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 35) :pointsize (ui/point :x 13 :y 6)) :doc "")
nx/tactics/ui/stylesheet / style-unit-movedetail
Description:
Constant Name:
  • style-unit-movedetail
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-movedetail : ui/style (ui/style :name "style-unit-movedetail" :layout ui/layout-label :pointpos (ui/point :x 34 :y 40) :pointsize (ui/point :x 29 :y 5)) :doc "")
nx/tactics/ui/stylesheet / style-unit-titles
Description:
  • Returns the style for unit titles text
Constant Name:
  • style-unit-titles
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-titles : ui/style (ui/style :name "style-unit-titles" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 7 :y 5) :pointsize (ui/point :x 51 :y 4)) :doc "Returns the style for unit titles text")
nx/tactics/ui/stylesheet / style-unit-value
Description:
Constant Name:
  • style-unit-value
Type:
  • vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (const style-unit-value : ui/style (ui/style :name "style-unit-value" :layout ui/layout-label :align ui/align-center :pointpos (ui/point :x 50 :y 0) :pointsize (ui/point :x 13 :y 6)) :doc "")
nx/tactics/ui/stylesheet / stylesheet-app
Description:
  • Returns the stylesheet for this project
Constant Name:
  • stylesheet-app
Type:
  • vx/ui/ui/stylesheet
Usage/Test Cases:
Source Code:
  • (const stylesheet-app : ui/stylesheet (ui/stylesheet :fontfacemap (ui/fontfacemap<-fontfacelist (ui/fontfacelist fontface1 fontface2 fontface3)) :stylemap (ui/stylemap<-stylelist (ui/stylelist style-html style-body style-div style-clickable style-hidden style-selected style-app-background style-app-main style-app-menubar style-app-menudrawer style-app-msgbox style-app-navbar style-app-navbar-button style-app-navdrawer style-app-parallax style-app-statusbar style-app-statusdrawer style-app-titlebar style-app-titlebar-print style-button-back style-card style-deck style-image-background style-image-coin1 style-image-coin2 style-image-cup1 style-image-cup2 style-image-jester-black1 style-image-jester-black2 style-image-jester-red1 style-image-jester-red2 style-image-sword1 style-image-sword2 style-image-wand1 style-image-wand2 style-text style-text-2 style-text-header1 style-text-header2 style-text-label style-text-rank1 style-text-rank2 style-text-title style-textarea))) :doc "Returns the stylesheet for this project")
vx/data/csv
Description:
  • Csv handler
Package Name:
  • vx/data/csv
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    collection
    vx/collection
    fil
    vx/data/file
    tb
    vx/data/textblock
    type
    vx/type
Types:
  • csv, csvrowmap, csvrows
Constants:
  • delimcsv
Functions:
  • csv<-file, csv<-string, csv<-textblock, csv-read<-file, csvrows<-textblock, stringmap<-csv, textblock-csv<-string
Source Code:
  • (package vx/data/csv :libs (lib collection :path vx/collection) (lib fil :path vx/data/file) (lib tb :path vx/data/textblock) (lib type :path vx/type) :doc "Csv handler") (type csv : struct :properties [headers : stringlist rows : csvrows]) (type csvrowmap : map :allowtypes [stringlist]) (type csvrows : list :allowtypes [stringlist]) (const delimcsv : tb/delim (tb/delim :name "delimcsv" :delimlist (tb/delimlist tb/delimline tb/delimquote tb/delimcomma)) :doc "Csv File Delimiters") (func csv<-file : csv [file : fil/file] (let : csv [text : string := (:text file)] (csv<-string text)) :doc "Returns a parsed csv from a file.") (func csv<-string : csv [text : string] (csv<-textblock (tb/textblock-parse<-string-delim text delimcsv)) :doc "Returns a parsed csv from a string.") (func csv<-textblock : csv [textblock : tb/textblock] (let [allrows : csvrows := (csvrows<-textblock textblock) headers : stringlist := (:1 allrows) rows : csvrows := (list<-list-end allrows 2)] (csv :headers headers :rows rows)) :doc "Returns a parsed csv from a textblock.") (func csv-read<-file : csv [file : fil/file] (let : csv [loaded : fil/file := (fil/file-read<-file file)] (csv<-file loaded)) :context :doc "Returns a parsed csv from a file.") (func csvrows<-textblock : csvrows [textblock : tb/textblock] (let [parsedtb : tb/textblock := (tb/textblock<-textblock-delim textblock delimcsv) children : tb/textblocklist := (tb/children<-textblock parsedtb) strings : stringlist := (tb/stringlist<-textblocklist children)] (csvrows strings))) (func stringmap<-csv : stringmap [csv : csv] (let : stringmap [rows : csvrows := (:rows csv) rowmap : csvrowmap := (map<-list : csvrowmap rows (fn : string [textlist : stringlist] (:1 textlist)))] (map<-map : stringmap rowmap (fn : stringmap [key : string val : stringlist] (:2 val)))) :doc "Returns a stringmap using the first 2 values in each row.") (func textblock-csv<-string : textblock [text : string] (tb/textblock-parse<-string-delim text delimcsv) :test (test (tb/textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (tb/textblocklist (tb/textblock :text `"a"` :startpos 1 :endpos 3 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "a" :startpos 2 :endpos 2))) (tb/textblock :text "," :startpos 4 :endpos 4 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"b"` :startpos 5 :endpos 7 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "b" :startpos 6 :endpos 6))) (tb/textblock :text "\n" :startpos 8 :endpos 8 :delim (copy tb/delimline :pos 0)) (tb/textblock :text "1" :startpos 9 :endpos 9) (tb/textblock :text "," :startpos 10 :endpos 10 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"2"` :startpos 11 :endpos 13 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "2" :startpos 12 :endpos 12))))) (textblock-csv<-string `"a","b" 1,"2"`)) :doc "Returns a parsed csv-textblock from a string.")
vx/data/csv / csv
Description:
Type Name:
  • csv
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    headers
    vx/core/stringlist
    false
    false
    rows
    vx/data/csv/csvrows
    false
    false
Usage/Test Cases:
Source Code:
  • (type csv : struct :properties [headers : stringlist rows : csvrows])
vx/data/csv / csvrowmap
Description:
Type Name:
  • csvrowmap
Extends:
  • :map
Default:
Allowed Types:
  • stringlist
Usage/Test Cases:
Source Code:
  • (type csvrowmap : map :allowtypes [stringlist])
vx/data/csv / csvrows
Description:
Type Name:
  • csvrows
Extends:
  • :list
Default:
Allowed Types:
  • stringlist
Usage/Test Cases:
Source Code:
  • (type csvrows : list :allowtypes [stringlist])
vx/data/csv / delimcsv
Description:
  • Csv File Delimiters
Constant Name:
  • delimcsv
Type:
  • vx/data/textblock/delim
Usage/Test Cases:
Source Code:
  • (const delimcsv : tb/delim (tb/delim :name "delimcsv" :delimlist (tb/delimlist tb/delimline tb/delimquote tb/delimcomma)) :doc "Csv File Delimiters")
vx/data/csv / csv<-file
Description:
  • Returns a parsed csv from a file.
Function Name:
  • csv<-file
Return Type:
  • vx/data/csv/csv
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func csv<-file : csv [file : fil/file] (let : csv [text : string := (:text file)] (csv<-string text)) :doc "Returns a parsed csv from a file.")
vx/data/csv / csv<-string
Description:
  • Returns a parsed csv from a string.
Function Name:
  • csv<-string
Return Type:
  • vx/data/csv/csv
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func csv<-string : csv [text : string] (csv<-textblock (tb/textblock-parse<-string-delim text delimcsv)) :doc "Returns a parsed csv from a string.")
vx/data/csv / csv<-textblock
Description:
  • Returns a parsed csv from a textblock.
Function Name:
  • csv<-textblock
Return Type:
  • vx/data/csv/csv
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func csv<-textblock : csv [textblock : tb/textblock] (let [allrows : csvrows := (csvrows<-textblock textblock) headers : stringlist := (:1 allrows) rows : csvrows := (list<-list-end allrows 2)] (csv :headers headers :rows rows)) :doc "Returns a parsed csv from a textblock.")
vx/data/csv / csv-read<-file
Description:
  • Returns a parsed csv from a file.
Function Name:
  • csv-read<-file
Return Type:
  • vx/data/csv/csv
Arguments:
  • Name
    Type
    Generic
    Description
    file
    vx/data/file/file
Usage/Test Cases:
Source Code:
  • (func csv-read<-file : csv [file : fil/file] (let : csv [loaded : fil/file := (fil/file-read<-file file)] (csv<-file loaded)) :context :doc "Returns a parsed csv from a file.")
vx/data/csv / csvrows<-textblock
Description:
Function Name:
  • csvrows<-textblock
Return Type:
  • vx/data/csv/csvrows
Arguments:
  • Name
    Type
    Generic
    Description
    textblock
    vx/data/textblock/textblock
Usage/Test Cases:
Source Code:
  • (func csvrows<-textblock : csvrows [textblock : tb/textblock] (let [parsedtb : tb/textblock := (tb/textblock<-textblock-delim textblock delimcsv) children : tb/textblocklist := (tb/children<-textblock parsedtb) strings : stringlist := (tb/stringlist<-textblocklist children)] (csvrows strings)))
vx/data/csv / stringmap<-csv
Description:
  • Returns a stringmap using the first 2 values in each row.
Function Name:
  • stringmap<-csv
Return Type:
  • vx/core/stringmap
Arguments:
  • Name
    Type
    Generic
    Description
    csv
    vx/data/csv/csv
Usage/Test Cases:
Source Code:
  • (func stringmap<-csv : stringmap [csv : csv] (let : stringmap [rows : csvrows := (:rows csv) rowmap : csvrowmap := (map<-list : csvrowmap rows (fn : string [textlist : stringlist] (:1 textlist)))] (map<-map : stringmap rowmap (fn : stringmap [key : string val : stringlist] (:2 val)))) :doc "Returns a stringmap using the first 2 values in each row.")
vx/data/csv / textblock-csv<-string
Description:
  • Returns a parsed csv-textblock from a string.
Function Name:
  • textblock-csv<-string
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test (tb/textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (tb/textblocklist (tb/textblock :text `"a"` :startpos 1 :endpos 3 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "a" :startpos 2 :endpos 2))) (tb/textblock :text "," :startpos 4 :endpos 4 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"b"` :startpos 5 :endpos 7 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "b" :startpos 6 :endpos 6))) (tb/textblock :text "\n" :startpos 8 :endpos 8 :delim (copy tb/delimline :pos 0)) (tb/textblock :text "1" :startpos 9 :endpos 9) (tb/textblock :text "," :startpos 10 :endpos 10 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"2"` :startpos 11 :endpos 13 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "2" :startpos 12 :endpos 12))))) (textblock-csv<-string `"a","b" 1,"2"`))
Source Code:
  • (func textblock-csv<-string : textblock [text : string] (tb/textblock-parse<-string-delim text delimcsv) :test (test (tb/textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (tb/textblocklist (tb/textblock :text `"a"` :startpos 1 :endpos 3 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "a" :startpos 2 :endpos 2))) (tb/textblock :text "," :startpos 4 :endpos 4 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"b"` :startpos 5 :endpos 7 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "b" :startpos 6 :endpos 6))) (tb/textblock :text "\n" :startpos 8 :endpos 8 :delim (copy tb/delimline :pos 0)) (tb/textblock :text "1" :startpos 9 :endpos 9) (tb/textblock :text "," :startpos 10 :endpos 10 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"2"` :startpos 11 :endpos 13 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "2" :startpos 12 :endpos 12))))) (textblock-csv<-string `"a","b" 1,"2"`)) :doc "Returns a parsed csv-textblock from a string.")
vx/translate
Description:
  • Language to language translation tools
Package Name:
  • vx/translate
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    csv
    vx/data/csv
    fil
    vx/data/file
Types:
Constants:
Functions:
  • session<-session-name, session<-session-translation, session<-session-translationmap-name, translate, translate, translation<-context, translate<-translation-string, translate<-translationmap-name-string, translation<-session-name, translation-load-session, translationmap<-translations
Source Code:
  • (package vx/translate :libs (lib csv :path vx/data/csv) (lib fil :path vx/data/file) :doc "Language to language translation tools") (func session<-session-name : session [session : session name : string] (copy session :translation (translation<-session-name session name)) :doc "Returns an updated session with a translationmap and a translation name.") (func session<-session-translation : session [session : session translation : translation] (copy session :translation translation) :doc "Returns an updated session with a translation.") (func session<-session-translationmap-name : session [session : session translationmap : translationmap name : string] (copy session :translation (any<-map translationmap name) :translationmap translationmap) :doc "Returns an updated session with a translationmap and a translation name.") (func translate : string [text : string] (translate<-translation-string (translation<-context) text) :test (test "!NotFound!" (translate "!NotFound!")) :context :doc "Returns a translated string from current context.") (func translate : string [msg : msg] (let : string [path : string := (:path msg) code : string := (:code msg) text : string := (string "!" path " " code)] (translate text)) :test (test "Repl Type Not Found" (translate (msg :path "vx/repl/repl/repl<-string-argmap" :code "repltypenotfound"))) :context :doc "Returns a translated string from a msg.") (func translation<-context : translation (:translation (session<-context)) :context :doc "Returns a translated string from current context.") (func translate<-translation-string : string [translation : translation text : string] (if : string (is-empty translation) text (let : string [wordmap : stringmap := (:wordmap translation) xlate : string := (any<-map wordmap text)] (if : string (is-empty xlate) text xlate))) :test (test "Hola" (translate<-translation-string (translation :wordmap (stringmap "Hello" "Hola")) "Hello")) :doc "Returns a translated string from a translation or the original text if not found.") (func translate<-translationmap-name-string : string [translationmap : translationmap name : string text : string] (let : string [translation : translation := (any<-map translationmap name)] (translate<-translation-string translation text)) :doc "Returns a translated string from a translation map given a translation name and text.") (func translation<-session-name : translation [session : session name : string] (let : translation [translationmap : translationmap := (:translationmap session)] (any<-map : translation translationmap name)) :doc "Returns a translation from a session by name.") (func translation-load-session : translation [translation : translation] :context :sideeffects "Alters current (:translation session)" :doc "Returns a translation from the translation folder.") (func translationmap<-translations : translationmap [translations : translationlist :...] (map<-list : translationmap translations (fn : string [translation : translation] (:name translation))) :doc "Returns a translationmap from one or more translations.")
vx/translate / session<-session-name
Description:
  • Returns an updated session with a translationmap and a translation name.
Function Name:
  • session<-session-name
Return Type:
  • vx/core/session
Arguments:
  • Name
    Type
    Generic
    Description
    session
    vx/core/session
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func session<-session-name : session [session : session name : string] (copy session :translation (translation<-session-name session name)) :doc "Returns an updated session with a translationmap and a translation name.")
vx/translate / session<-session-translation
Description:
  • Returns an updated session with a translation.
Function Name:
  • session<-session-translation
Return Type:
  • vx/core/session
Arguments:
  • Name
    Type
    Generic
    Description
    session
    vx/core/session
    translation
    vx/core/translation
Usage/Test Cases:
Source Code:
  • (func session<-session-translation : session [session : session translation : translation] (copy session :translation translation) :doc "Returns an updated session with a translation.")
vx/translate / session<-session-translationmap-name
Description:
  • Returns an updated session with a translationmap and a translation name.
Function Name:
  • session<-session-translationmap-name
Return Type:
  • vx/core/session
Arguments:
  • Name
    Type
    Generic
    Description
    session
    vx/core/session
    translationmap
    vx/core/translationmap
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func session<-session-translationmap-name : session [session : session translationmap : translationmap name : string] (copy session :translation (any<-map translationmap name) :translationmap translationmap) :doc "Returns an updated session with a translationmap and a translation name.")
vx/translate / translate
Description:
  • Returns a translated string from current context.
Function Name:
  • translate
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    text
    vx/core/string
Usage/Test Cases:
  • (test "!NotFound!" (translate "!NotFound!"))
Source Code:
  • (func translate : string [text : string] (translate<-translation-string (translation<-context) text) :test (test "!NotFound!" (translate "!NotFound!")) :context :doc "Returns a translated string from current context.")
vx/translate / translate
Description:
  • Returns a translated string from a msg.
Function Name:
  • translate
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    msg
    vx/core/msg
Usage/Test Cases:
  • (test "Repl Type Not Found" (translate (msg :path "vx/repl/repl/repl<-string-argmap" :code "repltypenotfound")))
Source Code:
  • (func translate : string [msg : msg] (let : string [path : string := (:path msg) code : string := (:code msg) text : string := (string "!" path " " code)] (translate text)) :test (test "Repl Type Not Found" (translate (msg :path "vx/repl/repl/repl<-string-argmap" :code "repltypenotfound"))) :context :doc "Returns a translated string from a msg.")
vx/translate / translation<-context
Description:
  • Returns a translated string from current context.
Function Name:
  • translation<-context
Return Type:
  • vx/core/translation
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func translation<-context : translation (:translation (session<-context)) :context :doc "Returns a translated string from current context.")
vx/translate / translate<-translation-string
Description:
  • Returns a translated string from a translation or the original text if not found.
Function Name:
  • translate<-translation-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    translation
    vx/core/translation
    text
    vx/core/string
Usage/Test Cases:
  • (test "Hola" (translate<-translation-string (translation :wordmap (stringmap "Hello" "Hola")) "Hello"))
Source Code:
  • (func translate<-translation-string : string [translation : translation text : string] (if : string (is-empty translation) text (let : string [wordmap : stringmap := (:wordmap translation) xlate : string := (any<-map wordmap text)] (if : string (is-empty xlate) text xlate))) :test (test "Hola" (translate<-translation-string (translation :wordmap (stringmap "Hello" "Hola")) "Hello")) :doc "Returns a translated string from a translation or the original text if not found.")
vx/translate / translate<-translationmap-name-string
Description:
  • Returns a translated string from a translation map given a translation name and text.
Function Name:
  • translate<-translationmap-name-string
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    translationmap
    vx/core/translationmap
    name
    vx/core/string
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func translate<-translationmap-name-string : string [translationmap : translationmap name : string text : string] (let : string [translation : translation := (any<-map translationmap name)] (translate<-translation-string translation text)) :doc "Returns a translated string from a translation map given a translation name and text.")
vx/translate / translation<-session-name
Description:
  • Returns a translation from a session by name.
Function Name:
  • translation<-session-name
Return Type:
  • vx/core/translation
Arguments:
  • Name
    Type
    Generic
    Description
    session
    vx/core/session
    name
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func translation<-session-name : translation [session : session name : string] (let : translation [translationmap : translationmap := (:translationmap session)] (any<-map : translation translationmap name)) :doc "Returns a translation from a session by name.")
vx/translate / translation-load-session
Description:
  • Returns a translation from the translation folder.
Function Name:
  • translation-load-session
Return Type:
  • vx/core/translation
Arguments:
  • Name
    Type
    Generic
    Description
    translation
    vx/core/translation
Usage/Test Cases:
Source Code:
  • (func translation-load-session : translation [translation : translation] :context :sideeffects "Alters current (:translation session)" :doc "Returns a translation from the translation folder.")
vx/translate / translationmap<-translations
Description:
  • Returns a translationmap from one or more translations.
Function Name:
  • translationmap<-translations
Return Type:
  • vx/core/translationmap
Arguments:
  • Name
    Type
    Generic
    Description
    translations
    vx/core/translationlist
Usage/Test Cases:
Source Code:
  • (func translationmap<-translations : translationmap [translations : translationlist :...] (map<-list : translationmap translations (fn : string [translation : translation] (:name translation))) :doc "Returns a translationmap from one or more translations.")
vx/translation/en
Description:
  • English Translation Stub
Package Name:
  • vx/translation/en
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    file
    vx/data/file
    trn
    vx/translate
Types:
Constants:
Functions:
  • context-en, context-test, securitydata-test, translation-en, words
Source Code:
  • (package vx/translation/en :libs (lib file :path vx/data/file) (lib trn :path vx/translate) :doc "English Translation Stub") (func context-en : context [args : anylist :...] (context :session (session :translation (translation-en))) :doc "Returns the default context for app main execution. Arguments come from the command line.") (func context-test : context [args : anylist :...] (context :session (session :translation (translation-en) :user (user :security (securitydata-test)))) :doc "Returns the default context for test case execution. Arguments come from the command line.") (func securitydata-test : security (security :allowfuncs (funclist file/boolean-write<-file-any file/boolean-write<-file-string file/file-read<-file file/string-read<-file)) :doc "Returns the default security for test case execution. Arguments come from the command line.") (func translation-en : translation (translation :name "en" :wordmap (words)) :test (test "Hello" (trn/translate<-translation-string (translation-en) "Hello")) :doc "Returns translation data") (func words : stringmap (stringmap "Hello" "Hello" "World" "World" "!vx/core/func exception" "Exception in Function" "!vx/core/func permissiondenied" "Permission Denied to Function" "!vx/repl/repl/repl<-string-argmap repltypenotfound" "Repl Type Not Found" ) :doc "Word Translation")
vx/translation/en / context-en
Description:
  • Returns the default context for app main execution. Arguments come from the command line.
Function Name:
  • context-en
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-en : context [args : anylist :...] (context :session (session :translation (translation-en))) :doc "Returns the default context for app main execution. Arguments come from the command line.")
vx/translation/en / context-test
Description:
  • Returns the default context for test case execution. Arguments come from the command line.
Function Name:
  • context-test
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-test : context [args : anylist :...] (context :session (session :translation (translation-en) :user (user :security (securitydata-test)))) :doc "Returns the default context for test case execution. Arguments come from the command line.")
vx/translation/en / securitydata-test
Description:
  • Returns the default security for test case execution. Arguments come from the command line.
Function Name:
  • securitydata-test
Return Type:
  • vx/core/security
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func securitydata-test : security (security :allowfuncs (funclist file/boolean-write<-file-any file/boolean-write<-file-string file/file-read<-file file/string-read<-file)) :doc "Returns the default security for test case execution. Arguments come from the command line.")
vx/translation/en / translation-en
Description:
  • Returns translation data
Function Name:
  • translation-en
Return Type:
  • vx/core/translation
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test "Hello" (trn/translate<-translation-string (translation-en) "Hello"))
Source Code:
  • (func translation-en : translation (translation :name "en" :wordmap (words)) :test (test "Hello" (trn/translate<-translation-string (translation-en) "Hello")) :doc "Returns translation data")
vx/translation/en / words
Description:
  • Word Translation
Function Name:
  • words
Return Type:
  • vx/core/stringmap
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func words : stringmap (stringmap "Hello" "Hello" "World" "World" "!vx/core/func exception" "Exception in Function" "!vx/core/func permissiondenied" "Permission Denied to Function" "!vx/repl/repl/repl<-string-argmap repltypenotfound" "Repl Type Not Found" ) :doc "Word Translation")
vx/translation/es
Description:
  • Spanish Translation Stub
Package Name:
  • vx/translation/es
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    trn
    vx/translate
Types:
Constants:
Functions:
  • translation-es, words
Source Code:
  • (package vx/translation/es :libs (lib trn :path vx/translate) :doc "Spanish Translation Stub") (func translation-es : translation (translation :name "es" :wordmap (words)) :test (test "Hola" (trn/translate<-translation-string (translation-es) "Hello")) :doc "Returns translation data") (func words : stringmap (stringmap "Hello" "Hola" "World" "Mundo" ) :doc "Word Translation")
vx/translation/es / translation-es
Description:
  • Returns translation data
Function Name:
  • translation-es
Return Type:
  • vx/core/translation
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test "Hola" (trn/translate<-translation-string (translation-es) "Hello"))
Source Code:
  • (func translation-es : translation (translation :name "es" :wordmap (words)) :test (test "Hola" (trn/translate<-translation-string (translation-es) "Hello")) :doc "Returns translation data")
vx/translation/es / words
Description:
  • Word Translation
Function Name:
  • words
Return Type:
  • vx/core/stringmap
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func words : stringmap (stringmap "Hello" "Hola" "World" "Mundo" ) :doc "Word Translation")
vx/ui/html/uihtml
Description:
Package Name:
  • vx/ui/html/uihtml
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    file
    vx/data/file
    html
    vx/web/html
    doc
    vx/web/htmldoc
    event
    vx/event
    type
    vx/type
    ui
    vx/ui/ui
Types:
Constants:
  • layout-app-html, layout-image-html, layout-label-html, layout-else-html, layoutenginehtml, style-hidden, style-selected
Functions:
  • boolean-print-html, context-write, divchild<-ui, divchildlist<-uimap, node-app<-ui-orig-parent, node-render<-node-ui, string-style<-font, string-style<-image, string-stylename<-name-styletype, style<-fontface, style<-style, stylelist<-fontfacemap, stylelist<-stylelist, stylelist<-stylemap, stylelist-extra<-ui, stylelist-reset, stylemap<-stylemap, stylesheet<-stylesheet, stylesheet-render-html, ui-render-app<-ui-orig-parent, ui-render-default<-ui-orig-parent, ui-render-image<-ui-orig-parent, ui-render-label<-ui-orig-parent
Source Code:
  • (package vx/ui/html/uihtml :libs (lib file :path vx/data/file) (lib html :path vx/web/html) (lib doc :path vx/web/htmldoc) (lib event :path vx/event) (lib type :path vx/type) (lib ui :path vx/ui/ui)) (const layout-app-html : ui/layout (copy ui/layout-app :fn-layout ui-render-app<-ui-orig-parent) :doc "Html App Renderer") (const layout-image-html : ui/layout (copy ui/layout-image :fn-layout ui-render-image<-ui-orig-parent) :doc "Html Image Renderer") (const layout-label-html : ui/layout (copy ui/layout-label :fn-layout ui-render-label<-ui-orig-parent) :doc "Html Label Renderer") (const layout-else-html : ui/layout (copy ui/layout-else :fn-layout ui-render-default<-ui-orig-parent) :doc "Html Default Renderer") (const layoutenginehtml : ui/layoutengine (ui/layoutengine :layoutmap (ui/layoutmap<-layoutlist (ui/layoutlist layout-app-html layout-image-html layout-label-html)) :layoutelse layout-else-html :boolean-print boolean-print-html :stylesheetrender stylesheet-render-html) :doc "Html layout engine used to render html from ui and stylesheet") (const style-hidden : style (style :name ".style-hidden") :doc "") (const style-selected : style (style :name ".style-selected") :doc "") (func boolean-print-html : boolean [ui : ui] (let : boolean [uid : string := (:uid ui) stylesheetui : ui/stylesheet := (ui/stylesheet-readstate) stylesheethtml : html/stylesheet := (stylesheet<-stylesheet stylesheetui) styletext : string := (html/string<-stylesheet-indent stylesheethtml 0)] (doc/boolean-print<-id-stylesheettext uid styletext)) :context :doc "Create a print ready version of ui") (func context-write : context (doc/context-write) :context :doc "") (func divchild<-ui : html/divchild [ui : ui/ui] (let : html/div [uid : string := (:uid ui) uimapchild : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) uistyles : ui/stylelist := (:stylelist ui) styleunique : html/style := (style<-style uistyle) htmlstyles : html/stylelist := (stylelist<-stylelist uistyles)] (html/div :id uid :style-unique styleunique :stylelist htmlstyles)) :doc "Returns a divchildlist of empty divs from a uimap") (func divchildlist<-uimap : html/divchildlist [uimap : ui/uimap] (list<-map : html/divchildlist uimap (fn : html/div [key : string value : ui/ui] (let : html/div [uid : string := (:uid value)] (html/div :id uid)))) :doc "Returns a divchildlist of empty divs from a uimap") (func node-app<-ui-orig-parent : html/node [ui : ui orig : ui parent : ui] (html/div)) (func node-render<-node-ui : html/node [node : html/node ui : ui] (let : html/node [htmltext : string := (html/string<-node-indent node 2) htmldone : boolean := (doc/boolean-replace<-ui-htmltext ui htmltext)] node) :sideeffects "UI altered" :doc "") (func string-style<-font : string [font : ui/font] (let : string [face : ui/fontface := (:fontface font) size : int := (:fontsize font) name : string := (:name face) ssize : string := (if : string (then (> size 0) (string (/ size 100) "em" " ")))] (if : string (then (!-empty name) (string ssize quote name quote)))) :doc "Returns a font css string from a logical font.") (func string-style<-image : string [image : ui/image] (if : string (then (!-empty image) (let : string [file : file/file := (:file image) url : string := (file/pathfull<-file file)] (if : string (then (!-empty url) (string "url(" url ")")))))) :doc "Returns an image css string from a logical image.") (func string-stylename<-name-styletype : string [name : string styletype : ui/styletype] (if : string (then (= "" name) "") (then (== styletype ui/styletype-shared) (string "." name)) (then (== styletype ui/styletype-system) (string "#" name)) (else name)) :doc "") (func style<-fontface : html/style [fontface : ui/fontface] (let : html/style [name : string := (:name fontface) weight : string := (:weight fontface) unicode : string := (:unicode fontface) files : file/filelist := (:filelist fontface) urls : stringlist := (list<-list : stringlist files (fn : string [file : file/file] (string "url(" (file/pathfull<-file file) ")"))) fontfamily : string := (string quote name quote) srcurls : string := (type/string<-stringlist-join urls ",") src : string := (string srcurls ";") propmap : html/propmap := (html/propmap :font-family fontfamily :font-style "normal" :font-weight weight :font-display "swap" :src src :unicode-range unicode)] (html/style :name "@font-face" :props propmap)) :doc "Returns an html style from a font") (func style<-style : html/style [uistyle : ui/style] (if : html/style (then (is-empty uistyle) (empty html/style)) (else (let : html/style [layout : ui/layout := (:layout uistyle) name : string := (:name uistyle) font : ui/font := (:font uistyle) pin : ui/pin := (:pin uistyle) pointpos : ui/point := (:pointpos uistyle) pointsize : ui/point := (:pointsize uistyle) pointrotate : ui/point := (:pointrotate uistyle) styletype : ui/styletype := (:type uistyle) color-bkg : string := (:color-background uistyle) color-hoverbkg : string := (:color-hoverbkgrd uistyle) cursor : ui/cursor := (:cursor uistyle) hidden : boolean := (:hidden uistyle) align : ui/align := (:align uistyle) posx : int := (:x pointpos) posy : int := (:y pointpos) postype : ui/pointtype := (:pointtype pointpos) sizex : int := (:x pointsize) sizey : int := (:y pointsize) sizetype : ui/pointtype := (:pointtype pointsize) stylename : string := (string-stylename<-name-styletype name styletype) bkgcolor : string := (if : string (then (!-empty color-bkg) (string "#" color-bkg))) position : string := (if : string (then (or (== layout layout-app) (== layout layout-background) (== layout layout-main) (== layout layout-navbar) (== layout layout-parallax) (== layout layout-statusbar) (== layout layout-titlebar)) "fixed") (then (== postype ui/pointtype-relative) "relative") (then (== postype ui/pointtype-absolute) "absolute") (then (!-empty pointpos) "absolute") (else "")) top : string := (if : string (then (== pin ui/pin-expand) (string posy "mm")) (then (== 0 posy) "") (else (string posy "mm"))) bottom : string := (if : string (then (== pin ui/pin-expand) "") (then (== pin ui/pin-bottom) "0mm") (then (or (== pin ui/pin-left) (== pin ui/pin-center-v)) (string sizey "mm"))) left : string := (if : string (then (== pin ui/pin-expand) "") (then (== pin ui/pin-bottom) (string posx "mm")) (then (== 0 posx) "") (else (string posx "mm"))) right : string := (if : string (then (== pin ui/pin-expand) "") (then (or (== pin ui/pin-top) (== pin ui/pin-bottom) (== pin ui/pin-center-v)) (string sizex "mm"))) height : string := (if : string (then (== pin ui/pin-expand) "100%") (then (or (== pin ui/pin-left) (== pin ui/pin-right) (== pin ui/pin-center-v)) "") (then (== sizetype ui/pointtype-percent) (string sizey "%")) (then (== 0 sizey) "") (else (string sizey "mm"))) width : string := (if : string (then (== pin ui/pin-expand) "100%") (then (or (== pin ui/pin-top) (== pin ui/pin-bottom) (== pin ui/pin-center-v)) "") (then (== sizetype ui/pointtype-percent) (string sizex "%")) (then (== 0 sizex) "") (else (string sizex "mm"))) display : string := (if : string (then hidden "none") (then (== layout ui/layout-flow-item) "inline-block")) sfont : string := (string-style<-font font) gap : string := (if : string (then (or (== layout ui/layout-flow-columns) (== layout ui/layout-flow-rows)) "1mm")) overflowx : string := (if : string (then (== layout ui/layout-flow-rows) "auto")) overflowy : string := (if : string (then (== layout ui/layout-flow-columns) "auto")) hoverbkgrdcolor : string := (if : string (then (!= "" color-hoverbkg) (string "#" color-hoverbkg))) scursor : string := (if : string (then (== cursor ui/cursor-pointer) "pointer")) textalign : string := (if : string (then (== align ui/align-left) "left") (then (== align ui/align-center) "center") (then (== align ui/align-right) "right")) transform : string := (if : string (then (is-empty pointrotate) "") (else (string "rotate(" (:x pointrotate) "deg)"))) transformorigin : string := (if : string (then (is-empty pointrotate) "") (then (== layout ui/layout-label) "left top")) props : html/propmap := (html/propmap :background-color bkgcolor :cursor scursor :display display :font sfont :gap gap :position position :top top :bottom bottom :left left :right right :height height :width width :overflow-x overflowx :overflow-y overflowy :text-align textalign :transform transform :transform-origin transformorigin) hoverprops : html/propmap := (html/propmap :background-color hoverbkgrdcolor) substylelist : html/stylelist := (if : html/stylelist (then (!-empty hoverprops) (html/stylelist (html/style :name "&:hover" :props hoverprops))))] (html/style :name stylename :props props :stylelist substylelist)))) :doc "Returns a htmlstyle from a uistyle") (func stylelist<-fontfacemap : html/stylelist [fontfacemap : ui/fontfacemap] (list<-map : html/stylelist fontfacemap (fn : html/style [key : string fontface : ui/fontface] (style<-fontface fontface))) :doc "Returns stylelist from a fontfacemap") (func stylelist<-stylelist : html/stylelist [uistylelist : ui/stylelist] (list<-list : html/stylelist uistylelist style<-style) :doc "Returns a htmlstylelist from a uistylemap") (func stylelist<-stylemap : html/stylelist [uistylemap : ui/stylemap] (list<-map : html/stylelist uistylemap (fn : ui/style [key : string value : ui/style] (style<-style value))) :doc "Returns a htmlstylelist from a uistylemap") (func stylelist-extra<-ui : html/stylelist [ui : ui] (let : html/stylelist [uistyles : ui/stylelist := (:stylelist ui) selected : boolean := (:selected ui) hidden : boolean := (:hidden ui) styles1 : html/stylelist := (stylelist<-stylelist uistyles) styles2 : html/stylelist := (if : html/stylelist (then hidden (copy styles1 style-hidden)) (then selected (copy styles1 style-selected)) (else styles1))] styles2) :doc "Returns a stylelist from a ui including style-hidden and style-selected") (func stylelist-reset : html/stylelist (html/stylelist (html/style :name "html" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm")) (html/style :name "body" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm")) (html/style :name "div" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm" :position "relative")) (html/style :name "img" :props (html/propmap :border "0mm" :display "block" :margin "0mm" :padding "0mm")) (html/style :name "p" :props (html/propmap :margin-block-start "0mm" :margin-block-end "0mm" :white-space "pre-line")) (html/style :name "*" :props (html/propmap :-webkit-print-color-adjust "exact !important" :color-adjust "exact !important" :print-color-adjust "exact !important" ))) :doc "Returns the initial reset styles for ui framework") (func stylemap<-stylemap : html/stylemap [uistylemap : ui/stylemap] (map<-map : html/stylemap uistylemap (fn : ui/style [key : string value : ui/style] (style<-style value))) :doc "Returns a htmlstylesheet from a uistylesheet") (func stylesheet<-stylesheet : html/stylesheet [uistylesheet : ui/stylesheet] (let : html/stylesheet [uistylemap : ui/stylemap := (:stylemap uistylesheet) fontfacemap : ui/fontfacemap := (:fontfacemap uistylesheet) resetlist : html/stylelist := (stylelist-reset) fontstyles : html/stylelist := (stylelist<-fontfacemap fontfacemap) stylelist : html/stylelist := (stylelist<-stylemap uistylemap) allstyles : html/stylelist := (html/stylelist resetlist fontstyles stylelist)] (html/stylesheet :styles allstyles)) :doc "Returns a htmlstylesheet from a uistylesheet") (func stylesheet-render-html : ui/stylesheet [stylesheetui : ui/stylesheet] (let : ui/stylesheet [stylesheethtml : html/stylesheet := (stylesheet<-stylesheet stylesheetui) write : boolean := (doc/boolean-write<-stylesheet stylesheethtml)] stylesheetui) :async :doc "") (func ui-render-app<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uimap : ui/uimap := (:uimap ui) children : html/divchildlist := (divchildlist<-uimap uimap) node : html/node := (html/div :id uid :nodes children) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "") (func ui-render-default<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uimap : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist-extra<-ui ui) children : html/divchildlist := (divchildlist<-uimap uimap) node : html/node := (html/div :id uid :style-unique style :stylelist styles :nodes children) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "") (func ui-render-image<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uistyle : ui/style := (:style ui) data : any := (:data ui) file : file/file := (any<-any : file/file data) path : string := (file/pathfull<-file file) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist-extra<-ui ui) node : html/node := (html/img :id uid :style-unique style :stylelist styles :src path) nodechg : html/node := (node-render<-node-ui node ui)] ui) :doc "") (func ui-render-label<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) data : any := (:data ui) uimap : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) uistyles : ui/stylelist := (:stylelist ui) datatype : any := (type<-any data) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist<-stylelist uistyles) text : string := (if : string (then (== datatype string) (any<-any : string data)) (else (string<-any data))) node : html/node := (html/p :id uid :style-unique style :stylelist styles :text text) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "")
vx/ui/html/uihtml / layout-app-html
Description:
  • Html App Renderer
Constant Name:
  • layout-app-html
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-app-html : ui/layout (copy ui/layout-app :fn-layout ui-render-app<-ui-orig-parent) :doc "Html App Renderer")
vx/ui/html/uihtml / layout-image-html
Description:
  • Html Image Renderer
Constant Name:
  • layout-image-html
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-image-html : ui/layout (copy ui/layout-image :fn-layout ui-render-image<-ui-orig-parent) :doc "Html Image Renderer")
vx/ui/html/uihtml / layout-label-html
Description:
  • Html Label Renderer
Constant Name:
  • layout-label-html
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-label-html : ui/layout (copy ui/layout-label :fn-layout ui-render-label<-ui-orig-parent) :doc "Html Label Renderer")
vx/ui/html/uihtml / layout-else-html
Description:
  • Html Default Renderer
Constant Name:
  • layout-else-html
Type:
  • vx/ui/ui/layout
Usage/Test Cases:
Source Code:
  • (const layout-else-html : ui/layout (copy ui/layout-else :fn-layout ui-render-default<-ui-orig-parent) :doc "Html Default Renderer")
vx/ui/html/uihtml / layoutenginehtml
Description:
  • Html layout engine used to render html from ui and stylesheet
Constant Name:
  • layoutenginehtml
Type:
  • vx/ui/ui/layoutengine
Usage/Test Cases:
Source Code:
  • (const layoutenginehtml : ui/layoutengine (ui/layoutengine :layoutmap (ui/layoutmap<-layoutlist (ui/layoutlist layout-app-html layout-image-html layout-label-html)) :layoutelse layout-else-html :boolean-print boolean-print-html :stylesheetrender stylesheet-render-html) :doc "Html layout engine used to render html from ui and stylesheet")
vx/ui/html/uihtml / style-hidden
Description:
Constant Name:
  • style-hidden
Type:
  • vx/web/html/style
Usage/Test Cases:
Source Code:
  • (const style-hidden : style (style :name ".style-hidden") :doc "")
vx/ui/html/uihtml / style-selected
Description:
Constant Name:
  • style-selected
Type:
  • vx/web/html/style
Usage/Test Cases:
Source Code:
  • (const style-selected : style (style :name ".style-selected") :doc "")
vx/ui/html/uihtml / boolean-print-html
Description:
  • Create a print ready version of ui
Function Name:
  • boolean-print-html
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func boolean-print-html : boolean [ui : ui] (let : boolean [uid : string := (:uid ui) stylesheetui : ui/stylesheet := (ui/stylesheet-readstate) stylesheethtml : html/stylesheet := (stylesheet<-stylesheet stylesheetui) styletext : string := (html/string<-stylesheet-indent stylesheethtml 0)] (doc/boolean-print<-id-stylesheettext uid styletext)) :context :doc "Create a print ready version of ui")
vx/ui/html/uihtml / context-write
Description:
Function Name:
  • context-write
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func context-write : context (doc/context-write) :context :doc "")
vx/ui/html/uihtml / divchild<-ui
Description:
  • Returns a divchildlist of empty divs from a uimap
Function Name:
  • divchild<-ui
Return Type:
  • vx/web/html/divchild
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func divchild<-ui : html/divchild [ui : ui/ui] (let : html/div [uid : string := (:uid ui) uimapchild : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) uistyles : ui/stylelist := (:stylelist ui) styleunique : html/style := (style<-style uistyle) htmlstyles : html/stylelist := (stylelist<-stylelist uistyles)] (html/div :id uid :style-unique styleunique :stylelist htmlstyles)) :doc "Returns a divchildlist of empty divs from a uimap")
vx/ui/html/uihtml / divchildlist<-uimap
Description:
  • Returns a divchildlist of empty divs from a uimap
Function Name:
  • divchildlist<-uimap
Return Type:
  • vx/web/html/divchildlist
Arguments:
  • Name
    Type
    Generic
    Description
    uimap
    vx/ui/ui/uimap
Usage/Test Cases:
Source Code:
  • (func divchildlist<-uimap : html/divchildlist [uimap : ui/uimap] (list<-map : html/divchildlist uimap (fn : html/div [key : string value : ui/ui] (let : html/div [uid : string := (:uid value)] (html/div :id uid)))) :doc "Returns a divchildlist of empty divs from a uimap")
vx/ui/html/uihtml / node-app<-ui-orig-parent
Description:
Function Name:
  • node-app<-ui-orig-parent
Return Type:
  • vx/web/html/node
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func node-app<-ui-orig-parent : html/node [ui : ui orig : ui parent : ui] (html/div))
vx/ui/html/uihtml / node-render<-node-ui
Description:
Function Name:
  • node-render<-node-ui
Return Type:
  • vx/web/html/node
Arguments:
  • Name
    Type
    Generic
    Description
    node
    vx/web/html/node
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func node-render<-node-ui : html/node [node : html/node ui : ui] (let : html/node [htmltext : string := (html/string<-node-indent node 2) htmldone : boolean := (doc/boolean-replace<-ui-htmltext ui htmltext)] node) :sideeffects "UI altered" :doc "")
vx/ui/html/uihtml / string-style<-font
Description:
  • Returns a font css string from a logical font.
Function Name:
  • string-style<-font
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    font
    vx/ui/ui/font
Usage/Test Cases:
Source Code:
  • (func string-style<-font : string [font : ui/font] (let : string [face : ui/fontface := (:fontface font) size : int := (:fontsize font) name : string := (:name face) ssize : string := (if : string (then (> size 0) (string (/ size 100) "em" " ")))] (if : string (then (!-empty name) (string ssize quote name quote)))) :doc "Returns a font css string from a logical font.")
vx/ui/html/uihtml / string-style<-image
Description:
  • Returns an image css string from a logical image.
Function Name:
  • string-style<-image
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    image
    vx/ui/ui/image
Usage/Test Cases:
Source Code:
  • (func string-style<-image : string [image : ui/image] (if : string (then (!-empty image) (let : string [file : file/file := (:file image) url : string := (file/pathfull<-file file)] (if : string (then (!-empty url) (string "url(" url ")")))))) :doc "Returns an image css string from a logical image.")
vx/ui/html/uihtml / string-stylename<-name-styletype
Description:
Function Name:
  • string-stylename<-name-styletype
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    name
    vx/core/string
    styletype
    vx/ui/ui/styletype
Usage/Test Cases:
Source Code:
  • (func string-stylename<-name-styletype : string [name : string styletype : ui/styletype] (if : string (then (= "" name) "") (then (== styletype ui/styletype-shared) (string "." name)) (then (== styletype ui/styletype-system) (string "#" name)) (else name)) :doc "")
vx/ui/html/uihtml / style<-fontface
Description:
  • Returns an html style from a font
Function Name:
  • style<-fontface
Return Type:
  • vx/web/html/style
Arguments:
  • Name
    Type
    Generic
    Description
    fontface
    vx/ui/ui/fontface
Usage/Test Cases:
Source Code:
  • (func style<-fontface : html/style [fontface : ui/fontface] (let : html/style [name : string := (:name fontface) weight : string := (:weight fontface) unicode : string := (:unicode fontface) files : file/filelist := (:filelist fontface) urls : stringlist := (list<-list : stringlist files (fn : string [file : file/file] (string "url(" (file/pathfull<-file file) ")"))) fontfamily : string := (string quote name quote) srcurls : string := (type/string<-stringlist-join urls ",") src : string := (string srcurls ";") propmap : html/propmap := (html/propmap :font-family fontfamily :font-style "normal" :font-weight weight :font-display "swap" :src src :unicode-range unicode)] (html/style :name "@font-face" :props propmap)) :doc "Returns an html style from a font")
vx/ui/html/uihtml / style<-style
Description:
  • Returns a htmlstyle from a uistyle
Function Name:
  • style<-style
Return Type:
  • vx/web/html/style
Arguments:
  • Name
    Type
    Generic
    Description
    uistyle
    vx/ui/ui/style
Usage/Test Cases:
Source Code:
  • (func style<-style : html/style [uistyle : ui/style] (if : html/style (then (is-empty uistyle) (empty html/style)) (else (let : html/style [layout : ui/layout := (:layout uistyle) name : string := (:name uistyle) font : ui/font := (:font uistyle) pin : ui/pin := (:pin uistyle) pointpos : ui/point := (:pointpos uistyle) pointsize : ui/point := (:pointsize uistyle) pointrotate : ui/point := (:pointrotate uistyle) styletype : ui/styletype := (:type uistyle) color-bkg : string := (:color-background uistyle) color-hoverbkg : string := (:color-hoverbkgrd uistyle) cursor : ui/cursor := (:cursor uistyle) hidden : boolean := (:hidden uistyle) align : ui/align := (:align uistyle) posx : int := (:x pointpos) posy : int := (:y pointpos) postype : ui/pointtype := (:pointtype pointpos) sizex : int := (:x pointsize) sizey : int := (:y pointsize) sizetype : ui/pointtype := (:pointtype pointsize) stylename : string := (string-stylename<-name-styletype name styletype) bkgcolor : string := (if : string (then (!-empty color-bkg) (string "#" color-bkg))) position : string := (if : string (then (or (== layout layout-app) (== layout layout-background) (== layout layout-main) (== layout layout-navbar) (== layout layout-parallax) (== layout layout-statusbar) (== layout layout-titlebar)) "fixed") (then (== postype ui/pointtype-relative) "relative") (then (== postype ui/pointtype-absolute) "absolute") (then (!-empty pointpos) "absolute") (else "")) top : string := (if : string (then (== pin ui/pin-expand) (string posy "mm")) (then (== 0 posy) "") (else (string posy "mm"))) bottom : string := (if : string (then (== pin ui/pin-expand) "") (then (== pin ui/pin-bottom) "0mm") (then (or (== pin ui/pin-left) (== pin ui/pin-center-v)) (string sizey "mm"))) left : string := (if : string (then (== pin ui/pin-expand) "") (then (== pin ui/pin-bottom) (string posx "mm")) (then (== 0 posx) "") (else (string posx "mm"))) right : string := (if : string (then (== pin ui/pin-expand) "") (then (or (== pin ui/pin-top) (== pin ui/pin-bottom) (== pin ui/pin-center-v)) (string sizex "mm"))) height : string := (if : string (then (== pin ui/pin-expand) "100%") (then (or (== pin ui/pin-left) (== pin ui/pin-right) (== pin ui/pin-center-v)) "") (then (== sizetype ui/pointtype-percent) (string sizey "%")) (then (== 0 sizey) "") (else (string sizey "mm"))) width : string := (if : string (then (== pin ui/pin-expand) "100%") (then (or (== pin ui/pin-top) (== pin ui/pin-bottom) (== pin ui/pin-center-v)) "") (then (== sizetype ui/pointtype-percent) (string sizex "%")) (then (== 0 sizex) "") (else (string sizex "mm"))) display : string := (if : string (then hidden "none") (then (== layout ui/layout-flow-item) "inline-block")) sfont : string := (string-style<-font font) gap : string := (if : string (then (or (== layout ui/layout-flow-columns) (== layout ui/layout-flow-rows)) "1mm")) overflowx : string := (if : string (then (== layout ui/layout-flow-rows) "auto")) overflowy : string := (if : string (then (== layout ui/layout-flow-columns) "auto")) hoverbkgrdcolor : string := (if : string (then (!= "" color-hoverbkg) (string "#" color-hoverbkg))) scursor : string := (if : string (then (== cursor ui/cursor-pointer) "pointer")) textalign : string := (if : string (then (== align ui/align-left) "left") (then (== align ui/align-center) "center") (then (== align ui/align-right) "right")) transform : string := (if : string (then (is-empty pointrotate) "") (else (string "rotate(" (:x pointrotate) "deg)"))) transformorigin : string := (if : string (then (is-empty pointrotate) "") (then (== layout ui/layout-label) "left top")) props : html/propmap := (html/propmap :background-color bkgcolor :cursor scursor :display display :font sfont :gap gap :position position :top top :bottom bottom :left left :right right :height height :width width :overflow-x overflowx :overflow-y overflowy :text-align textalign :transform transform :transform-origin transformorigin) hoverprops : html/propmap := (html/propmap :background-color hoverbkgrdcolor) substylelist : html/stylelist := (if : html/stylelist (then (!-empty hoverprops) (html/stylelist (html/style :name "&:hover" :props hoverprops))))] (html/style :name stylename :props props :stylelist substylelist)))) :doc "Returns a htmlstyle from a uistyle")
vx/ui/html/uihtml / stylelist<-fontfacemap
Description:
  • Returns stylelist from a fontfacemap
Function Name:
  • stylelist<-fontfacemap
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
    fontfacemap
    vx/ui/ui/fontfacemap
Usage/Test Cases:
Source Code:
  • (func stylelist<-fontfacemap : html/stylelist [fontfacemap : ui/fontfacemap] (list<-map : html/stylelist fontfacemap (fn : html/style [key : string fontface : ui/fontface] (style<-fontface fontface))) :doc "Returns stylelist from a fontfacemap")
vx/ui/html/uihtml / stylelist<-stylelist
Description:
  • Returns a htmlstylelist from a uistylemap
Function Name:
  • stylelist<-stylelist
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
    uistylelist
    vx/ui/ui/stylelist
Usage/Test Cases:
Source Code:
  • (func stylelist<-stylelist : html/stylelist [uistylelist : ui/stylelist] (list<-list : html/stylelist uistylelist style<-style) :doc "Returns a htmlstylelist from a uistylemap")
vx/ui/html/uihtml / stylelist<-stylemap
Description:
  • Returns a htmlstylelist from a uistylemap
Function Name:
  • stylelist<-stylemap
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
    uistylemap
    vx/ui/ui/stylemap
Usage/Test Cases:
Source Code:
  • (func stylelist<-stylemap : html/stylelist [uistylemap : ui/stylemap] (list<-map : html/stylelist uistylemap (fn : ui/style [key : string value : ui/style] (style<-style value))) :doc "Returns a htmlstylelist from a uistylemap")
vx/ui/html/uihtml / stylelist-extra<-ui
Description:
  • Returns a stylelist from a ui including style-hidden and style-selected
Function Name:
  • stylelist-extra<-ui
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func stylelist-extra<-ui : html/stylelist [ui : ui] (let : html/stylelist [uistyles : ui/stylelist := (:stylelist ui) selected : boolean := (:selected ui) hidden : boolean := (:hidden ui) styles1 : html/stylelist := (stylelist<-stylelist uistyles) styles2 : html/stylelist := (if : html/stylelist (then hidden (copy styles1 style-hidden)) (then selected (copy styles1 style-selected)) (else styles1))] styles2) :doc "Returns a stylelist from a ui including style-hidden and style-selected")
vx/ui/html/uihtml / stylelist-reset
Description:
  • Returns the initial reset styles for ui framework
Function Name:
  • stylelist-reset
Return Type:
  • vx/web/html/stylelist
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func stylelist-reset : html/stylelist (html/stylelist (html/style :name "html" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm")) (html/style :name "body" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm")) (html/style :name "div" :props (html/propmap :border "0mm" :margin "0mm" :padding "0mm" :position "relative")) (html/style :name "img" :props (html/propmap :border "0mm" :display "block" :margin "0mm" :padding "0mm")) (html/style :name "p" :props (html/propmap :margin-block-start "0mm" :margin-block-end "0mm" :white-space "pre-line")) (html/style :name "*" :props (html/propmap :-webkit-print-color-adjust "exact !important" :color-adjust "exact !important" :print-color-adjust "exact !important" ))) :doc "Returns the initial reset styles for ui framework")
vx/ui/html/uihtml / stylemap<-stylemap
Description:
  • Returns a htmlstylesheet from a uistylesheet
Function Name:
  • stylemap<-stylemap
Return Type:
  • vx/web/html/stylemap
Arguments:
  • Name
    Type
    Generic
    Description
    uistylemap
    vx/ui/ui/stylemap
Usage/Test Cases:
Source Code:
  • (func stylemap<-stylemap : html/stylemap [uistylemap : ui/stylemap] (map<-map : html/stylemap uistylemap (fn : ui/style [key : string value : ui/style] (style<-style value))) :doc "Returns a htmlstylesheet from a uistylesheet")
vx/ui/html/uihtml / stylesheet<-stylesheet
Description:
  • Returns a htmlstylesheet from a uistylesheet
Function Name:
  • stylesheet<-stylesheet
Return Type:
  • vx/web/html/stylesheet
Arguments:
  • Name
    Type
    Generic
    Description
    uistylesheet
    vx/ui/ui/stylesheet
Usage/Test Cases:
Source Code:
  • (func stylesheet<-stylesheet : html/stylesheet [uistylesheet : ui/stylesheet] (let : html/stylesheet [uistylemap : ui/stylemap := (:stylemap uistylesheet) fontfacemap : ui/fontfacemap := (:fontfacemap uistylesheet) resetlist : html/stylelist := (stylelist-reset) fontstyles : html/stylelist := (stylelist<-fontfacemap fontfacemap) stylelist : html/stylelist := (stylelist<-stylemap uistylemap) allstyles : html/stylelist := (html/stylelist resetlist fontstyles stylelist)] (html/stylesheet :styles allstyles)) :doc "Returns a htmlstylesheet from a uistylesheet")
vx/ui/html/uihtml / stylesheet-render-html
Description:
Function Name:
  • stylesheet-render-html
Return Type:
  • vx/ui/ui/stylesheet
Arguments:
  • Name
    Type
    Generic
    Description
    stylesheetui
    vx/ui/ui/stylesheet
Usage/Test Cases:
Source Code:
  • (func stylesheet-render-html : ui/stylesheet [stylesheetui : ui/stylesheet] (let : ui/stylesheet [stylesheethtml : html/stylesheet := (stylesheet<-stylesheet stylesheetui) write : boolean := (doc/boolean-write<-stylesheet stylesheethtml)] stylesheetui) :async :doc "")
vx/ui/html/uihtml / ui-render-app<-ui-orig-parent
Description:
Function Name:
  • ui-render-app<-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render-app<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uimap : ui/uimap := (:uimap ui) children : html/divchildlist := (divchildlist<-uimap uimap) node : html/node := (html/div :id uid :nodes children) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "")
vx/ui/html/uihtml / ui-render-default<-ui-orig-parent
Description:
Function Name:
  • ui-render-default<-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render-default<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uimap : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist-extra<-ui ui) children : html/divchildlist := (divchildlist<-uimap uimap) node : html/node := (html/div :id uid :style-unique style :stylelist styles :nodes children) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "")
vx/ui/html/uihtml / ui-render-image<-ui-orig-parent
Description:
Function Name:
  • ui-render-image<-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render-image<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) uistyle : ui/style := (:style ui) data : any := (:data ui) file : file/file := (any<-any : file/file data) path : string := (file/pathfull<-file file) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist-extra<-ui ui) node : html/node := (html/img :id uid :style-unique style :stylelist styles :src path) nodechg : html/node := (node-render<-node-ui node ui)] ui) :doc "")
vx/ui/html/uihtml / ui-render-label<-ui-orig-parent
Description:
Function Name:
  • ui-render-label<-ui-orig-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    orig
    vx/ui/ui/ui
    parent
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-render-label<-ui-orig-parent : ui/ui [ui : ui orig : ui parent : ui] (let : ui/ui [uid : string := (:uid ui) data : any := (:data ui) uimap : ui/uimap := (:uimap ui) uistyle : ui/style := (:style ui) uistyles : ui/stylelist := (:stylelist ui) datatype : any := (type<-any data) style : html/style := (style<-style uistyle) styles : html/stylelist := (stylelist<-stylelist uistyles) text : string := (if : string (then (== datatype string) (any<-any : string data)) (else (string<-any data))) node : html/node := (html/p :id uid :style-unique style :stylelist styles :text text) nodechg : html/node := (node-render<-node-ui node ui) uimapchg : ui/uimap := (ui/uimap-render<-uimap-parent uimap ui)] (ui/ui :uimap uimapchg)) :doc "")
vx/ui/svg/uisvg
Description:
Package Name:
  • vx/ui/svg/uisvg
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    ui
    vx/ui/ui
Types:
Constants:
Functions:
Source Code:
  • (package vx/ui/svg/uisvg :libs (lib ui :path vx/ui/ui))
vx/web/http
Description:
  • Http library
Package Name:
  • vx/web/http
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    csv
    vx/data/csv
    tb
    vx/data/textblock
    xml
    vx/data/xml
    javafuture
    java.util.concurrent.CompletableFuture
Types:
  • response
Constants:
Functions:
  • csv<-httpget, json<-httpget, response<-httpget, text<-httpget, text<-response, textblock<-httpget, textblock<-response, xml<-httpget
Source Code:
  • (package vx/web/http :libs (lib csv :path vx/data/csv) (lib tb :path vx/data/textblock) (lib xml :path vx/data/xml) (lib javafuture) :doc "Http library") (type response : struct :properties [ok : boolean status : int]) (func csv<-httpget : csv :async [url : string] (let [textblock : tb/textblock := (textblock<-httpget url "text/csv")] (csv/csv<-textblock textblock)) :clientserver :client :doc "Returns a csv file from an httpget") (func json<-httpget : response [url : string] (let [response : response := (response<-httpget url "application/json")] response) :async :clientserver :client :doc "Returns a json response from an httpget") (func response<-httpget : response [url : string contenttype : string] (native :js "fetch(url, {mode: 'no-cors', method: 'GET', headers: { 'Content-Type': contenttype }})") :async :clientserver :client :doc "Returns a response from an httpget") (func text<-httpget : string [url : string] (let [response : response := (response<-httpget url "text/plain")] (text<-response response)) :async :clientserver :client :doc "Returns string from an httpget") (func text<-response : string [response : response] (native :js "response.text()") :clientserver :client :doc "Returns a string from a response") (func textblock<-httpget : tb/textblock :async [url : string contenttype : string] (let [response : response := (response<-httpget url contenttype)] (textblock<-response response)) :clientserver :client :doc "Returns a textblock from an httpget") (func textblock<-response : tb/textblock [response : response] (tb/textblock :text (text<-response response)) :clientserver :client :doc "Returns a textblock from a response") (func xml<-httpget : xml :async [url : string] (let [textblock : tb/textblock := (textblock<-httpget url "text/xml")] (xml/xml<-textblock textblock)) :clientserver :client :doc "Return Xml from an httpget")
vx/web/http / response
Description:
Type Name:
  • response
Extends:
  • :struct
Default:
Properties:
  • Name
    Type
    Description
    Is Multi
    Is Default
    ok
    vx/core/boolean
    false
    false
    status
    vx/core/int
    false
    false
Usage/Test Cases:
Source Code:
  • (type response : struct :properties [ok : boolean status : int])
vx/web/http / csv<-httpget
Description:
  • Returns a csv file from an httpget
Function Name:
  • csv<-httpget
Return Type:
  • vx/data/csv/csv
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func csv<-httpget : csv :async [url : string] (let [textblock : tb/textblock := (textblock<-httpget url "text/csv")] (csv/csv<-textblock textblock)) :clientserver :client :doc "Returns a csv file from an httpget")
vx/web/http / json<-httpget
Description:
  • Returns a json response from an httpget
Function Name:
  • json<-httpget
Return Type:
  • vx/web/http/response
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func json<-httpget : response [url : string] (let [response : response := (response<-httpget url "application/json")] response) :async :clientserver :client :doc "Returns a json response from an httpget")
vx/web/http / response<-httpget
Description:
  • Returns a response from an httpget
Function Name:
  • response<-httpget
Return Type:
  • vx/web/http/response
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
    contenttype
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func response<-httpget : response [url : string contenttype : string] (native :js "fetch(url, {mode: 'no-cors', method: 'GET', headers: { 'Content-Type': contenttype }})") :async :clientserver :client :doc "Returns a response from an httpget")
vx/web/http / text<-httpget
Description:
  • Returns string from an httpget
Function Name:
  • text<-httpget
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func text<-httpget : string [url : string] (let [response : response := (response<-httpget url "text/plain")] (text<-response response)) :async :clientserver :client :doc "Returns string from an httpget")
vx/web/http / text<-response
Description:
  • Returns a string from a response
Function Name:
  • text<-response
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    response
    vx/web/http/response
Usage/Test Cases:
Source Code:
  • (func text<-response : string [response : response] (native :js "response.text()") :clientserver :client :doc "Returns a string from a response")
vx/web/http / textblock<-httpget
Description:
  • Returns a textblock from an httpget
Function Name:
  • textblock<-httpget
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
    contenttype
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func textblock<-httpget : tb/textblock :async [url : string contenttype : string] (let [response : response := (response<-httpget url contenttype)] (textblock<-response response)) :clientserver :client :doc "Returns a textblock from an httpget")
vx/web/http / textblock<-response
Description:
  • Returns a textblock from a response
Function Name:
  • textblock<-response
Return Type:
  • vx/data/textblock/textblock
Arguments:
  • Name
    Type
    Generic
    Description
    response
    vx/web/http/response
Usage/Test Cases:
Source Code:
  • (func textblock<-response : tb/textblock [response : response] (tb/textblock :text (text<-response response)) :clientserver :client :doc "Returns a textblock from a response")
vx/web/http / xml<-httpget
Description:
  • Return Xml from an httpget
Function Name:
  • xml<-httpget
Return Type:
  • vx/data/xml/xml
Arguments:
  • Name
    Type
    Generic
    Description
    url
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func xml<-httpget : xml :async [url : string] (let [textblock : tb/textblock := (textblock<-httpget url "text/xml")] (xml/xml<-textblock textblock)) :clientserver :client :doc "Return Xml from an httpget")
nx/tactics/ui/navigation
Description:
  • Tactics UI
Package Name:
  • nx/tactics/ui/navigation
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    styles
    nx/tactics/ui/stylesheet
    ui
    vx/ui/ui
Types:
Constants:
Functions:
  • boolean-navigate-back, ui-main, ui-navbar, ui-navbutton, ui-navbutton<-ui-parent-selected, int-selected<-main, ui-writeselected<-main-pos, ui-writeselected<-navbar-pos
Source Code:
  • (package nx/tactics/ui/navigation :libs (lib base :path nx/tactics/base) (lib styles :path nx/tactics/ui/stylesheet) (lib ui :path vx/ui/ui) :doc "Tactics UI") (func boolean-navigate-back : boolean (let : boolean [navbar : ui/ui := (nav/ui-navbar) main : ui/ui := (nav/ui-main) posselected : int := (nav/int-selected<-main main) poschg : int := (if : int :debug (> posselected 1) (-1 posselected)) navbarchg : ui/ui := (nav/ui-writeselected<-navbar-pos navbar poschg) mainchg : ui/ui := (nav/ui-writeselected<-main-pos main poschg)] (if : boolean (> poschg 0) true)) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the previous ui") (func ui-main : ui/ui (ui/ui-readstate<-uid "main") :context :doc "Returns the application main panel") (func ui-navbar : ui/ui (ui/ui-readstate<-uid "navbar") :context :doc "Returns the application navbar") (func ui-navbutton : ui/ui (ui/ui :uid "navbar-" :parent "navbar" :stylelist (ui/stylelist style-app-navbar-button style-clickable))) (func ui-navbutton<-ui-parent-selected : ui/ui [ui : ui/ui parent : string selected : boolean] (let : ui/ui [name : string := (:name ui) uid : string := (string parent "-" name) navbutton : ui := (ui-navbutton)] (copy navbutton :uid uid :name name :parent parent :selected selected :stylelist (ui/stylelist style-app-navbar-button style-clickable))) :doc "Returns a navbar-button") (func int-selected<-main : int [main : ui/ui] (ui/int-selected<-ui main) :doc "Returns the index of the currently selected main") (func ui-writeselected<-main-pos : ui/ui [main : ui/ui pos : int] (if : ui/ui (then (< pos 1) main)) :context :doc "") (func ui-writeselected<-navbar-pos : ui/ui [navbar : ui/ui pos : int] (if : ui/ui (then (< pos 1) navbar)) :context :doc "")
nx/tactics/ui/navigation / boolean-navigate-back
Description:
  • Navigate to the previous ui
Function Name:
  • boolean-navigate-back
Return Type:
  • vx/core/boolean
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func boolean-navigate-back : boolean (let : boolean [navbar : ui/ui := (nav/ui-navbar) main : ui/ui := (nav/ui-main) posselected : int := (nav/int-selected<-main main) poschg : int := (if : int :debug (> posselected 1) (-1 posselected)) navbarchg : ui/ui := (nav/ui-writeselected<-navbar-pos navbar poschg) mainchg : ui/ui := (nav/ui-writeselected<-main-pos main poschg)] (if : boolean (> poschg 0) true)) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the previous ui")
nx/tactics/ui/navigation / ui-main
Description:
  • Returns the application main panel
Function Name:
  • ui-main
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-main : ui/ui (ui/ui-readstate<-uid "main") :context :doc "Returns the application main panel")
nx/tactics/ui/navigation / ui-navbar
Description:
  • Returns the application navbar
Function Name:
  • ui-navbar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-navbar : ui/ui (ui/ui-readstate<-uid "navbar") :context :doc "Returns the application navbar")
nx/tactics/ui/navigation / ui-navbutton
Description:
Function Name:
  • ui-navbutton
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-navbutton : ui/ui (ui/ui :uid "navbar-" :parent "navbar" :stylelist (ui/stylelist style-app-navbar-button style-clickable)))
nx/tactics/ui/navigation / ui-navbutton<-ui-parent-selected
Description:
  • Returns a navbar-button
Function Name:
  • ui-navbutton<-ui-parent-selected
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    parent
    vx/core/string
    selected
    vx/core/boolean
Usage/Test Cases:
Source Code:
  • (func ui-navbutton<-ui-parent-selected : ui/ui [ui : ui/ui parent : string selected : boolean] (let : ui/ui [name : string := (:name ui) uid : string := (string parent "-" name) navbutton : ui := (ui-navbutton)] (copy navbutton :uid uid :name name :parent parent :selected selected :stylelist (ui/stylelist style-app-navbar-button style-clickable))) :doc "Returns a navbar-button")
nx/tactics/ui/navigation / int-selected<-main
Description:
  • Returns the index of the currently selected main
Function Name:
  • int-selected<-main
Return Type:
  • vx/core/int
Arguments:
  • Name
    Type
    Generic
    Description
    main
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func int-selected<-main : int [main : ui/ui] (ui/int-selected<-ui main) :doc "Returns the index of the currently selected main")
nx/tactics/ui/navigation / ui-writeselected<-main-pos
Description:
Function Name:
  • ui-writeselected<-main-pos
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    main
    vx/ui/ui/ui
    pos
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func ui-writeselected<-main-pos : ui/ui [main : ui/ui pos : int] (if : ui/ui (then (< pos 1) main)) :context :doc "")
nx/tactics/ui/navigation / ui-writeselected<-navbar-pos
Description:
Function Name:
  • ui-writeselected<-navbar-pos
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    navbar
    vx/ui/ui/ui
    pos
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func ui-writeselected<-navbar-pos : ui/ui [navbar : ui/ui pos : int] (if : ui/ui (then (< pos 1) navbar)) :context :doc "")
nx/tactics/ui/uitactics
Description:
  • Tactics UI
Package Name:
  • nx/tactics/ui/uitactics
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    deck
    nx/tactics/decks/deck
    event
    vx/event
    file
    vx/data/file
    nav
    nx/tactics/ui/navigation
    styles
    nx/tactics/ui/stylesheet
    type
    vx/type
    ui
    vx/ui/ui
Types:
Constants:
  • event-navbutton-back-click, event-navigate-card-click, event-printbutton-click, eventmap-app-home-card, eventmap-navbutton-back
Functions:
  • event-navbutton-click<-event, event-navigate-card-click<-event, event-printbutton-click<-event, string<-conscience-beast-shadow, string<-demeanor-nature, string<-land-water-air-space, string<-mass-h-l-w, string-display<-any, string-display<-book, string-display<-deck, string-display<-skill, string-display<-unit, string-display<-unitskill, stringlist-display<-unitabilitymap, stringlist-display<-unititemmap, stringlist-display<-unitskillmap, stringlist-display<-unitspecialtymap, ui<-any-parent, ui-title1<-uid-text, ui-title2<-uid-text, uilist<-card-parent, uilist<-item-parent, uilist<-unit-parent, ui<-card-parent, ui-app, ui-app<-tactics, ui-app-background, ui-app-home, ui-app-main, ui-app-menubar, ui-app-menudrawer, ui-app-msgbox, ui-app-navbar, ui-app-navdrawer, ui-app-parallax, ui-app-statusbar, ui-app-statusdrawer, ui-app-titlebar, ui-app-titlebar-print, ui-image<-uid-path, ui-nav<-any-parent, ui-nav<-deck-parent, ui-nav<-skill-parent, ui-navbutton-back, ui-navigate<-ui, ui-navigate<-ui-main, ui-navigate<-ui-navbar, ui-suit<-uid-rank-suit-pos, uilist<-ranksuit-parent, uimap<-cardmap-parent
Source Code:
  • (package nx/tactics/ui/uitactics :libs (lib base :path nx/tactics/base) (lib deck :path nx/tactics/decks/deck) (lib event :path vx/event) (lib file :path vx/data/file) (lib nav :path nx/tactics/ui/navigation) (lib styles :path nx/tactics/ui/stylesheet) (lib type :path vx/type) (lib ui :path vx/ui/ui) :doc "Tactics UI") (const event-navbutton-back-click : event/event (copy event/event-click :event<-event event-navbutton-click<-event)) (const event-navigate-card-click : event/event (copy event/event-click :event<-event event-navigate-card-click<-event)) (func event-navbutton-click<-event : event/event [event : event/event] (let : event/event [ischanged : boolean := (nav/boolean-navigate-back)] event) :context :doc "Event handler for card clicks") (func event-navigate-card-click<-event : event/event [event : event/event] (let : event/event [parent : string := "nav" uifrom : ui/ui := (ui/ui-from<-event event) data : any := (:data uifrom) uinav : ui/ui := (ui<-any-parent data parent) uichg : ui/ui := (ui-navigate<-ui uinav)] event) :context :doc "Event handler for card clicks") (const event-printbutton-click : event/event (copy event/event-click :event<-event event-printbutton-click<-event)) (func event-printbutton-click<-event : event/event [event : event/event] (let : event/event [uimain : ui/ui := (ui/ui-readstate<-uid "main") isprint : boolean := (ui/boolean-print uimain)] event) :context :doc "Event handler for card clicks") (const eventmap-app-home-card : event/eventmap (event/eventmap<-eventlist (event/eventlist event-navigate-card-click)) :doc "Eventmap for app-home-card") (const eventmap-navbutton-back : event/eventmap (event/eventmap<-eventlist (event/eventlist event-navbutton-back-click)) :doc "Eventmap for navbutton-back") (func string<-conscience-beast-shadow : string [conscience : string beast : string shadow : string] (let [s1 : string := (if : string (then (!-empty conscience) (string "conscience:" conscience))) s2 : string := (if : string (then (!-empty beast) (string "beast:" beast))) s3 : string := (if : string (then (!-empty shadow) (string "shadow:" shadow))) slist : stringlist := (stringlist s1 s2 s3)] (string<-stringlist-join slist " ")) :test (test "conscience: 1x1 beast:2x1 shadow:3x1" (string<-conscience-beast-shadow "1x1" "2x1" "3x1")) :doc "Returns a string for will string") (func string<-demeanor-nature : string [demeanor : string nature : string] (let [sdemeanor : string := (if : string (then (!-empty demeanor) (string "demeanor:" demeanor))) snature : string := (if : string (then (!-empty nature) (string "nature:" nature))) slist : stringlist := (stringlist sdemeanor snature)] (string<-stringlist-join slist " ")) :test (test "demeanor:nice nature:naughty" (string<-demeanor-nature "nice" "naughty")) :doc "Returns a string for mind string") (func string<-land-water-air-space : string [land : string water : string air : string space : string] (let [s1 : string := (if : string (then (!-empty land) (string "land:" land))) s2 : string := (if : string (then (!-empty water) (string "water:" water))) s3 : string := (if : string (then (!-empty air) (string "air:" air))) s4 : string := (if : string (then (!-empty space) (string "space:" space))) slist : stringlist := (stringlist s1 s2 s3 s4)] (string<-stringlist-join slist " ")) :test (test "land:1 water:2 air:3 space:4" (string<-land-water-air-space "1" "2" "3" "4")) :doc "Returns a string for will string") (func string<-mass-h-l-w : string [mass : string height : string length : string width : string] (let [smass : string := (if : string (then (!-empty mass) (string "mass:" mass))) h : string := (if : string (then (!-empty height) (string "h:" height))) l : string := (if : string (then (!-empty length) (string "l:" length))) w : string := (if : string (then (!-empty width) (string "w:" width))) slist : stringlist := (stringlist smass h l w)] (string<-stringlist-join slist " ")) :test (test "mass:80kg/160lb h:2m/6ft l:2m/6ft w:1m/3ft" (string<-mass-h-l-w "80kg/160lb" "2m/6ft" "1m/3ft" "2m/6ft")) :doc "Returns a string from a mass, height, length, width") (func string-display<-any : string [value : any] (let : string [datatype : any := (type<-any value) display : string := (if : string (then (== datatype base/book) (string-display<-book (any<-any : base/book value))) (then (== datatype base/deck) (string-display<-deck (any<-any : base/deck value))) (then (== datatype base/skill) (string-display<-skill (any<-any : base/skill value))) (then (or (== datatype base/item) (== datatype base/unit)) "") (then (is-type datatype base/card) (let : string [card : base/card := (any<-any : base/card value) summary : string := (:summary card)] summary)))] display) :doc "Returns display text from any") (func string-display<-book : string [book : base/book] (let : string [chaptermap : base/chaptermap := (:chaptermap book) names : stringlist := (list<-map : stringlist chaptermap (fn : string [key : string value : base/chapter] (:name value))) display : string := (string<-stringlist-join names ", ")] display) :doc "Returns display text from a book") (func string-display<-deck : string [deck : base/deck] (let : string [cardmap : base/cardmap := (:cardmap deck) names : stringlist := (list<-map : stringlist cardmap (fn : string [key : string value : base/card] (:name value))) display : string := (string<-stringlist-join names ", ")] display) :doc "Returns display text from a deck") (func string-display<-skill : string [skill : base/skill] (let : string [specialtymap : base/specialtymap := (:specialtymap skill) abilitymap : base/abilitymap := (:abilitymap skill) specialnames : stringlist := (list<-map : stringlist specialtymap (fn : string [key : string value : base/specialty] (:name value))) abilitynames : stringlist := (list<-map : stringlist abilitymap (fn : string [key : string value : base/ability] (:name value))) appended : stringlist := (stringlist specialnames abilitynames) display : string := (string<-stringlist-join appended " ")] display) :doc "Returns display text from a skill") (func string-display<-unit : string [unit : base/unit] (let : string [summary : string := (:summary unit) unitskillmap : base/unitskillmap := (:unitskillmap unit) skilllist : stringlist := (stringlist-display<-unitskillmap unitskillmap) summarylist : stringlist := (if : stringlist (then (!-empty summary) (stringlist summary))) displaylist : stringlist := (stringlist summarylist skilllist)] (string<-stringlist-join displaylist newline)) :doc "Returns display text from a unit") (func string-display<-unitskill : string [unitskill : base/unitskill] (let : string [skill : base/skill := (:skill unitskill) level : string := (:level unitskill) skillname : string := (:name skill) items : stringlist := (stringlist-display<-unititemmap (:unititemmap unitskill)) specialties : stringlist := (stringlist-display<-unitspecialtymap (:unitspecialtymap unitskill)) abilities : stringlist := (stringlist-display<-unitabilitymap (:unitabilitymap unitskill)) extralist : stringlist := (stringlist items specialties abilities) extras : string := (if : string (then (!-empty extralist) (string " " (string<-stringlist-join extralist " "))))] (string "* [" skillname "]:" level extras)) :doc "Returns a string from a unitskill") (func stringlist-display<-unitabilitymap : stringlist [unitabilitymap : base/unitabilitymap] (list<-map : stringlist unitabilitymap (fn : string [key : string unitability : unitability] (string "[" key "]"))) :doc "Returns a stringlist from a unitabilitymap") (func stringlist-display<-unititemmap : stringlist [unititemmap : base/unititemmap] (list<-map : stringlist unititemmap (fn : string [key : string unititem : unititem] (string "[" key "]"))) :doc "Returns a stringlist from a unititemmap") (func stringlist-display<-unitskillmap : stringlist [unitskillmap : base/unitskillmap] (list<-map : stringlist unitskillmap (fn : string [key : string unitskill : unitskill] (string-display<-unitskill unitskill))) :doc "Returns a stringlist from a unitskillmap") (func stringlist-display<-unitspecialtymap : stringlist [unitspecialtymap : base/unitspecialtymap] (list<-map : stringlist unitspecialtymap (fn : string [key : string unitspecialty : unitspecialty] (string "[" key "]"))) :doc "Returns a stringlist from a unitspecialtymap") (func ui<-any-parent : ui/ui [data : any parent : string] (let : ui/ui [datatype : any := (type<-any data)] (if : ui/ui (then (type/is-type datatype base/card) (ui<-card-parent (any<-any : base/card data) parent)))) :doc "Returns a ui created from any value") (func ui-title1<-uid-text : ui/ui [uid : string text : string] (let : ui/ui [uidtitle : string := (string uid "-title1")] (ui/ui :uid uidtitle :style styles/style-card-title1 :stylelist (ui/stylelist styles/style-text-header1) :data text)) :doc "Returns a card title1") (func ui-title2<-uid-text : ui/ui [uid : string text : string] (let : ui/ui [uidtitle : string := (string uid "-title2")] (ui/ui :uid uidtitle :style styles/style-card-title2 :stylelist (ui/stylelist styles/style-text-header1) :data text)) :doc "Returns a card title2") (func uilist<-card-parent : ui/uilist [card : base/card parent : string] (let : ui/ui [id : string := (:id card) name : string := (:name card) datatype : any := (type<-any card) isdisplay4 : boolean := (or (== datatype base/damage) (== datatype base/disorder) (== datatype base/trauma)) id1 : string := (if : string (!-empty id) id name) uid : string := (string parent "-" id1) display : string := (string-display<-any card) displaysplit : stringlist := (if : stringlist (then isdisplay4 (type/stringlist<-string-split display newline))) display1 : string := (if : string (then isdisplay4 (:1 displaysplit)) (else display)) uititle1 : ui/ui := (ui-title1<-uid-text uid name) uititle2 : ui/ui := (if : ui/ui (then (== datatype base/cardback) (ui-title2<-uid-text uid name))) uiddisplay : string := (string uid "-display") uidisplay : ui/ui := (ui/ui :uid uiddisplay :style styles/style-card-display :stylelist (ui/stylelist styles/style-textarea) :data display1) ranksuit : base/ranksuit := (:ranksuit card) uilist1 : ui/uilist := (uilist<-ranksuit-parent ranksuit uid) uilist2 : ui/uilist := (if : ui/uilist (then (== datatype base/item) (uilist<-item-parent (any<-any card) parent)) (then (== datatype base/unit) (uilist<-unit-parent (any<-any card) parent)) (then isdisplay4 (let : ui/uilist [uid2 : string := (string uid "-display2") display2 : string := (:2 displaysplit) uidisplay2 : ui/ui := (ui/ui :uid uid2 :style styles/style-card-display2 :stylelist (ui/stylelist styles/style-textarea) :data display2) uid3 : string := (string uid "-display3") display3 : string := (:3 displaysplit) uidisplay3 : ui/ui := (ui/ui :uid uid3 :style styles/style-card-display3 :stylelist (ui/stylelist styles/style-textarea) :data display3) uid4 : string := (string uid "-display4") display4 : string := (:4 displaysplit) uidisplay4 : ui/ui := (ui/ui :uid uid4 :style styles/style-card-display4 :stylelist (ui/stylelist styles/style-textarea) :data display4)] (ui/uilist uidisplay2 uidisplay3 uidisplay4))))] (ui/uilist uilist1 uilist2 uititle1 uititle2 uidisplay))) (func uilist<-item-parent : ui/uilist [unit : base/item parent : string] (let : ui/uilist [name : string := (:name unit) titles : string := (:titles unit) image : string := (:image unit) value : string := (:value unit) summary : string := (:summary unit) body : string := (:body unit) bodydetail : string := (string<-mass-h-l-w (:mass unit) (:height unit) (:length unit) (:width unit)) prefix : string := (string parent "-" name) uiitemsummary : ui/ui := (ui/ui :uid (string prefix "-summary") :style styles/style-item-summary :stylelist (ui/stylelist styles/style-textarea) :data summary) detail : string := "" uiimage : ui/ui := (ui/ui :uid (string prefix "-image") :style styles/style-unit-image :data (file/file<-path image)) uivalue : ui/ui := (ui/ui :uid (string prefix "-value") :style styles/style-unit-value :stylelist (ui/stylelist styles/style-text-header1) :data value) uititles : ui/ui := (ui/ui :uid (string prefix "-titles") :style styles/style-unit-titles :stylelist (ui/stylelist styles/style-text) :data titles) uibody : ui/ui := (ui/ui :uid (string prefix "-body") :style styles/style-unit-body :stylelist (ui/stylelist styles/style-text-header1) :data body) uibodydetail : ui/ui := (ui/ui :uid (string prefix "-bodydetail") :style styles/style-unit-bodydetail :stylelist (ui/stylelist styles/style-text-2) :data bodydetail) uidetail : ui/ui := (ui/ui :uid (string prefix "-detail") :style styles/style-unit-detail :stylelist (ui/stylelist styles/style-textarea) :data detail)] (ui/uilist uiimage uivalue uititles uibody uibodydetail uiitemsummary uidetail)) :doc "Returns a list of child ui from a item/parent") (func uilist<-unit-parent : ui/uilist [unit : base/unit parent : string] (let : ui/uilist [name : string := (:name unit) titles : string := (:titles unit) image : string := (:image unit) value : string := (:value unit) summary : string := (:summary unit) body : string := (:body unit) bodydetail : string := (string<-mass-h-l-w (:mass unit) (:height unit) (:length unit) (:width unit)) mind : string := (:mind unit) minddetail : string := (string<-demeanor-nature (:demeanor unit) (:nature unit)) will : string := (:will unit) willdetail : string := (string<-conscience-beast-shadow (:conscience unit) (:beast unit) (:shadow unit)) move : string := (:move unit) movedetail : string := (string<-land-water-air-space (:speedland unit) (:speedwater unit) (:speedair unit) (:speedspace unit)) detail : string := (string-display<-unit unit) prefix : string := (string parent "-" name) uidimage : string := (string prefix "-image") uiimage : ui/ui := (ui/ui :uid uidimage :style styles/style-unit-image :data (file/file<-path image)) uivalue : ui/ui := (ui/ui :uid (string prefix "-value") :style styles/style-unit-value :stylelist (ui/stylelist styles/style-text-header1) :data value) uititles : ui/ui := (ui/ui :uid (string prefix "-titles") :style styles/style-unit-titles :stylelist (ui/stylelist styles/style-text) :data titles) uibody : ui/ui := (ui/ui :uid (string prefix "-body") :style styles/style-unit-body :stylelist (ui/stylelist styles/style-text-header1) :data body) uibodydetail : ui/ui := (ui/ui :uid (string prefix "-bodydetail") :style styles/style-unit-bodydetail :stylelist (ui/stylelist styles/style-text-2) :data bodydetail) uimind : ui/ui := (ui/ui :uid (string prefix "-mind") :style styles/style-unit-mind :stylelist (ui/stylelist styles/style-text-header1) :data mind) uiminddetail : ui/ui := (ui/ui :uid (string prefix "-minddetail") :style styles/style-unit-minddetail :stylelist (ui/stylelist styles/style-text-2) :data minddetail) uiwill : ui/ui := (ui/ui :uid (string prefix "-will") :style styles/style-unit-will :stylelist (ui/stylelist styles/style-text-header1) :data will) uiwilldetail : ui/ui := (ui/ui :uid (string prefix "-willdetail") :style styles/style-unit-willdetail :stylelist (ui/stylelist styles/style-text-2) :data willdetail) uimove : ui/ui := (ui/ui :uid (string prefix "-move") :style styles/style-unit-move :stylelist (ui/stylelist styles/style-text-header1) :data move) uimovedetail : ui/ui := (ui/ui :uid (string prefix "-movedetail") :style styles/style-unit-movedetail :stylelist (ui/stylelist styles/style-text-2) :data movedetail) uidetail : ui/ui := (ui/ui :uid (string prefix "-detail") :style styles/style-unit-detail :stylelist (ui/stylelist styles/style-textarea) :data detail)] (ui/uilist uiimage uivalue uititles uibody uibodydetail uimind uiminddetail uiwill uiwilldetail uimove uimovedetail uidetail)) :doc "Returns a list of child ui from an unit/parent") (func ui<-card-parent : ui/ui [card : base/card parent : string] (let : ui/ui [id : string := (:id card) name : string := (:name card) image : string := (:image card) datatype : any := (type<-any card) display : string := (string-display<-any card) id1 : string := (if : string (!-empty id) id name) uid : string := (string parent "-" id1) imgback : string := (switch : string datatype (case base/item "images/card-item.svg") (case base/unit "images/card-unit.svg") (else image)) uiimage : ui/ui := (ui-image<-uid-path uid imgback) events : event/eventmap := (if : event/eventmap (then (= display "") (empty eventmap)) (else eventmap-app-home-card)) styles : ui/stylelist := (if : ui/stylelist (then (= display "") (ui/stylelist styles/style-card)) (else (ui/stylelist styles/style-card styles/style-clickable))) uilist1 : ui/uilist := (uilist<-card-parent card parent) uilist2 : ui/uilist := (ui/uilist uiimage uilist1)] (ui/ui :uid uid :name name :eventmap events :stylelist styles :data card :uimap (ui/uimap<-uilist uilist2))) :doc "Returns the a card ui.") (func ui-app : ui/ui (let : ui/ui [background : ui/ui := (ui-app-background) main : ui/ui := (ui-app-main) menubar : ui/ui := (ui-app-menubar) menudrawer : ui/ui := (ui-app-menudrawer) msgbox : ui/ui := (ui-app-msgbox) navbar : ui/ui := (ui-app-navbar) navdrawer : ui/ui := (ui-app-navdrawer) parallax : ui/ui := (ui-app-parallax) statusbar : ui/ui := (ui-app-statusbar) statusdrawer : ui/ui := (ui-app-statusdrawer) titlebar : ui/ui := (ui-app-titlebar) uimap : ui/uimap := (ui/uimap :background background :main main :menubar menubar :menudrawer menudrawer :msgbox msgbox :navbar navbar :navdrawer navdrawer :parallax parallax :statusbar statusbar :statusdrawer statusdrawer :titlebar titlebar)] (ui/ui :uid "app" :style style-app :uimap uimap)) :doc "Returns the template for the app ui.") (func ui-app<-tactics : ui/ui [tactics : base/tactics] (let : ui/ui [appui : ui/ui := (ui-app)] (copy appui :data tactics)) :doc "") (func ui-app-background : ui/ui (ui/ui :uid "app-background" :stylelist (ui/stylelist style-app-background))) (func ui-app-home : ui/ui (ui-nav<-deck-parent (deck/deck-home) "main") :doc "App Home Panel") (func ui-app-main : ui/ui (ui/ui :uid "main" :stylelist (ui/stylelist style-app-main) :uimap (ui/uimap<-uilist (ui/uilist (ui-app-home)))) :doc "") (func ui-app-menubar : ui/ui (ui/ui :uid "menubar" :stylelist (ui/stylelist style-app-menubar))) (func ui-app-menudrawer : ui/ui (ui/ui :uid "menudrawer" :stylelist (ui/stylelist style-app-menudrawer))) (func ui-app-msgbox : ui/ui (ui/ui :uid "msgbox" :stylelist (ui/stylelist style-app-msgbox))) (func ui-app-navbar : ui/ui (ui/ui :uid "navbar" :stylelist (ui/stylelist style-app-navbar) :uimap (ui/uimap<-uilist (ui/uilist (ui-navbutton-back) (nav/ui-navbutton<-ui-parent-selected (ui/ui :name "Home") "navbar" true)))) :doc "Returns a new side navigation bar") (func ui-app-navdrawer : ui/ui (ui/ui :uid "navdrawer" :stylelist (ui/stylelist style-app-navdrawer))) (func ui-app-parallax : ui/ui (ui/ui :uid "parallax" :style style-app-parallax)) (func ui-app-statusbar : ui/ui (ui/ui :uid "statusbar" :stylelist (ui/stylelist style-app-statusbar))) (func ui-app-statusdrawer : ui/ui (ui/ui :uid "statusdrawer" :stylelist (ui/stylelist style-app-statusdrawer))) (func ui-app-titlebar : ui/ui (ui/ui :uid "titlebar" :stylelist (ui/stylelist style-app-titlebar) :uimap (ui/uimap<-uilist (ui/uilist (ui-app-titlebar-print)))) :doc "") (func ui-app-titlebar-print : ui/ui (ui/ui :uid "titlebar-print" :parent "titlebar" :data (file/file :name "icon-printer.svg" :path "icons") :style (ui/style :layout ui/layout-image) :stylelist (ui/stylelist style-app-titlebar-print style-clickable) :eventmap (event/eventmap<-eventlist (event/eventlist event-printbutton-click)))) (func ui-image<-uid-path : ui/ui [uid : string path : string] (if : ui/ui (then (!-empty path) (ui/ui :uid (string uid "-imagebkgd") :style (ui/style :layout layout-image) :stylelist (ui/stylelist styles/style-image-background) :data (file/file<-path path))))) (func ui-nav<-any-parent : ui/ui [data : any parent : string] (if : ui/ui (then (is-empty data) (empty ui)) (else (let : ui/ui [datatype : any := (type<-any data)] (if : ui/ui (then (== datatype base/deck) (ui-nav<-deck-parent (any<-any : base/deck data) parent)) (then (== datatype base/skill) (ui-nav<-skill-parent (any<-any : base/skill data) parent)))))) :doc "Returns a ui created from any value") (func ui-nav<-deck-parent : ui/ui [deck : base/deck parent : string] (let : ui/ui [name : string := (:name deck) uid : string := (string parent "-" name) cardmap : base/cardmap := (:cardmap deck) uimap : ui/uimap := (uimap<-cardmap-parent cardmap uid)] (ui/ui :uid uid :parent parent :stylelist (ui/stylelist style-deck) :data deck :uimap uimap)) :doc "Returns the a deck ui.") (func ui-nav<-skill-parent : ui/ui [skill : base/skill parent : string] (let : ui/ui [name : string := (:name skill) uid : string := (string parent "-" name) specialtymap : base/specialtymap := (:specialtymap skill) abilitymap : base/abilitymap := (:abilitymap skill) cardmap1 : base/cardmap := (map<-map : base/cardmap specialtymap) cardmap2 : base/cardmap := (map<-map : base/cardmap abilitymap) cardmap3 : base/cardmap := (copy cardmap1 cardmap2) uimap : ui/uimap := (uimap<-cardmap-parent cardmap3 uid)] (ui/ui :uid uid :parent parent :stylelist (ui/stylelist style-deck) :data skill :uimap uimap)) :doc "Returns the a deck ui.") (func ui-navbutton-back : ui/ui (let : ui/ui [navbutton : ui/ui := (nav/ui-navbutton) name : string := "Back" uid1 : string := (:uid navbutton) uid2 : string := (string uid1 name) styles1 : ui/stylelist := (:stylelist navbutton) styles2 : ui/stylelist := (copy styles1 styles/style-button-back)] (copy navbutton :uid uid2 :name name :stylelist styles2 :eventmap eventmap-navbutton-back)) :doc "Returns the navigation back button") (func ui-navigate<-ui : ui/ui [uiarg : ui/ui] (if : ui/ui (then (!-empty uiarg) (let : ui/ui [navbar : ui := (nav/ui-navbar) main : ui := (nav/ui-main) ui1 : ui := (ui-navigate<-ui-navbar uiarg navbar) ui2 : ui := (ui-navigate<-ui-main uiarg main)] uiarg)) (else uiarg)) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the given ui") (func ui-navigate<-ui-main : ui/ui [ui : ui/ui main : ui/ui] (let : ui/ui [uid : string := (:uid ui) data : any := (:data ui) mainid : string := (:uid main) mainmap1 : ui/uimap := (:uimap main) mainmap2 : ui/uimap := (map<-map : ui/uimap mainmap1 (fn : ui/ui [key : string value : ui/ui] (if : ui/ui (then (= true (:hidden value)) (empty ui/ui)) (else (copy value :hidden true))))) mainb1 : ui/ui := (ui-nav<-any-parent data mainid) mainb2 : ui/ui := (ui/ui-layout<-ui mainb1) mainmap3 : ui/uimap := (copy mainmap2 uid mainb2) main2 : ui/ui := (ui/ui-writechildmap<-ui-childmap main mainmap3) main3 : ui/ui := (ui/ui-render main2)] main3) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the given ui") (func ui-navigate<-ui-navbar : ui/ui [ui : ui/ui navbar : ui/ui] (let : ui/ui [uid : string := (:uid ui) navbarid : string := (:uid navbar) buttona1 : ui/ui := (ui/ui-selected<-ui navbar) buttona2 : ui/ui := (copy buttona1 :selected false) uidbtnb : string := (string "navbutton-" uid) buttonb1 : ui/ui := (ui/ui-child<-ui-uid navbar uidbtnb) buttonb2 : ui/ui := (if : ui/ui (then (!-empty buttonb1) (copy buttonb1 :selected true)) (else (nav/ui-navbutton<-ui-parent-selected ui navbarid true))) navbar2 : ui/ui := (ui/ui-writechild<-ui-child navbar buttona2) navbar3 : ui/ui := (ui/ui-writechild<-ui-child navbar2 buttonb2) navbar4 : ui/ui := (ui/ui-layout<-ui navbar3) navbar5 : ui/ui := (ui/ui-render navbar4)] navbar5) :context :sideeffects "Alters uinavbar" :doc "Navigate to the given ui") (func ui-suit<-uid-rank-suit-pos : ui/ui [uid : string rank : base/rank suit : base/suit pos : int] (let : ui/ui [id : string := (string uid "-suit-" pos) filename : string := (switch suit (case base/suit-club "icon-wand.svg") (case base/suit-diamond "icon-coin.svg") (case base/suit-heart "icon-cup.svg") (case base/suit-spade "icon-sword.svg") (case base/suit-black "icon-jester-black.svg") (case base/suit-red "icon-jester-red.svg")) pointpos : ui/point := (switch : ui/point pos (case 1 styles/point-suit-pos1) (case 2 styles/point-suit-pos2)) style : ui/style := (ui/style :layout ui/layout-image :pointpos pointpos :pointsize styles/point-suit-size)] (ui/ui :uid id :style style :data (file/file :name filename :path "icons"))) :doc "") (func uilist<-ranksuit-parent : ui/uilist [ranksuitarg : base/ranksuit parent : string] (if : ui/uilist (then (is-empty ranksuitarg) (empty ranksuit)) (else (let : ui/uilist [rank : base/rank := (:rank ranksuitarg) suit : base/suit := (:suit ranksuitarg) labelrank1 : string := (string parent "-rank1") labelrank2 : string := (string parent "-rank2") labelsuit1 : string := (string parent "-suit1") labelsuit2 : string := (string parent "-suit2") srank : string := (:titles rank) ssuit : string := (:titles suit) uisuit1 : ui/ui := (ui-suit<-uid-rank-suit-pos parent rank suit 1) uisuit2 : ui/ui := (ui-suit<-uid-rank-suit-pos parent rank suit 2)] (ui/uilist (ui/ui :uid labelrank1 :style styles/style-card-rank :stylelist (ui/stylelist styles/style-text-rank1) :data srank) (ui/ui :uid labelrank2 :style styles/style-card-rank :stylelist (ui/stylelist styles/style-text-rank2) :data srank) uisuit1 uisuit2)))) :doc "") (func uimap<-cardmap-parent : ui/uimap [cardmap : base/cardmap parent : string] (map<-map : ui/uimap cardmap (fn : ui/ui [key : string card : base/card] (ui<-any-parent card parent))) :doc "")
nx/tactics/ui/uitactics / event-navbutton-back-click
Description:
Constant Name:
  • event-navbutton-back-click
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-navbutton-back-click : event/event (copy event/event-click :event<-event event-navbutton-click<-event))
nx/tactics/ui/uitactics / event-navigate-card-click
Description:
Constant Name:
  • event-navigate-card-click
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-navigate-card-click : event/event (copy event/event-click :event<-event event-navigate-card-click<-event))
nx/tactics/ui/uitactics / event-printbutton-click
Description:
Constant Name:
  • event-printbutton-click
Type:
  • vx/event/event
Usage/Test Cases:
Source Code:
  • (const event-printbutton-click : event/event (copy event/event-click :event<-event event-printbutton-click<-event))
nx/tactics/ui/uitactics / eventmap-app-home-card
Description:
  • Eventmap for app-home-card
Constant Name:
  • eventmap-app-home-card
Type:
  • vx/event/eventmap
Usage/Test Cases:
Source Code:
  • (const eventmap-app-home-card : event/eventmap (event/eventmap<-eventlist (event/eventlist event-navigate-card-click)) :doc "Eventmap for app-home-card")
nx/tactics/ui/uitactics / eventmap-navbutton-back
Description:
  • Eventmap for navbutton-back
Constant Name:
  • eventmap-navbutton-back
Type:
  • vx/event/eventmap
Usage/Test Cases:
Source Code:
  • (const eventmap-navbutton-back : event/eventmap (event/eventmap<-eventlist (event/eventlist event-navbutton-back-click)) :doc "Eventmap for navbutton-back")
nx/tactics/ui/uitactics / event-navbutton-click<-event
Description:
  • Event handler for card clicks
Function Name:
  • event-navbutton-click<-event
Return Type:
  • vx/event/event
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func event-navbutton-click<-event : event/event [event : event/event] (let : event/event [ischanged : boolean := (nav/boolean-navigate-back)] event) :context :doc "Event handler for card clicks")
nx/tactics/ui/uitactics / event-navigate-card-click<-event
Description:
  • Event handler for card clicks
Function Name:
  • event-navigate-card-click<-event
Return Type:
  • vx/event/event
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func event-navigate-card-click<-event : event/event [event : event/event] (let : event/event [parent : string := "nav" uifrom : ui/ui := (ui/ui-from<-event event) data : any := (:data uifrom) uinav : ui/ui := (ui<-any-parent data parent) uichg : ui/ui := (ui-navigate<-ui uinav)] event) :context :doc "Event handler for card clicks")
nx/tactics/ui/uitactics / event-printbutton-click<-event
Description:
  • Event handler for card clicks
Function Name:
  • event-printbutton-click<-event
Return Type:
  • vx/event/event
Arguments:
  • Name
    Type
    Generic
    Description
    event
    vx/event/event
Usage/Test Cases:
Source Code:
  • (func event-printbutton-click<-event : event/event [event : event/event] (let : event/event [uimain : ui/ui := (ui/ui-readstate<-uid "main") isprint : boolean := (ui/boolean-print uimain)] event) :context :doc "Event handler for card clicks")
nx/tactics/ui/uitactics / string<-conscience-beast-shadow
Description:
  • Returns a string for will string
Function Name:
  • string<-conscience-beast-shadow
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    conscience
    vx/core/string
    beast
    vx/core/string
    shadow
    vx/core/string
Usage/Test Cases:
  • (test "conscience: 1x1 beast:2x1 shadow:3x1" (string<-conscience-beast-shadow "1x1" "2x1" "3x1"))
Source Code:
  • (func string<-conscience-beast-shadow : string [conscience : string beast : string shadow : string] (let [s1 : string := (if : string (then (!-empty conscience) (string "conscience:" conscience))) s2 : string := (if : string (then (!-empty beast) (string "beast:" beast))) s3 : string := (if : string (then (!-empty shadow) (string "shadow:" shadow))) slist : stringlist := (stringlist s1 s2 s3)] (string<-stringlist-join slist " ")) :test (test "conscience: 1x1 beast:2x1 shadow:3x1" (string<-conscience-beast-shadow "1x1" "2x1" "3x1")) :doc "Returns a string for will string")
nx/tactics/ui/uitactics / string<-demeanor-nature
Description:
  • Returns a string for mind string
Function Name:
  • string<-demeanor-nature
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    demeanor
    vx/core/string
    nature
    vx/core/string
Usage/Test Cases:
  • (test "demeanor:nice nature:naughty" (string<-demeanor-nature "nice" "naughty"))
Source Code:
  • (func string<-demeanor-nature : string [demeanor : string nature : string] (let [sdemeanor : string := (if : string (then (!-empty demeanor) (string "demeanor:" demeanor))) snature : string := (if : string (then (!-empty nature) (string "nature:" nature))) slist : stringlist := (stringlist sdemeanor snature)] (string<-stringlist-join slist " ")) :test (test "demeanor:nice nature:naughty" (string<-demeanor-nature "nice" "naughty")) :doc "Returns a string for mind string")
nx/tactics/ui/uitactics / string<-land-water-air-space
Description:
  • Returns a string for will string
Function Name:
  • string<-land-water-air-space
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    land
    vx/core/string
    water
    vx/core/string
    air
    vx/core/string
    space
    vx/core/string
Usage/Test Cases:
  • (test "land:1 water:2 air:3 space:4" (string<-land-water-air-space "1" "2" "3" "4"))
Source Code:
  • (func string<-land-water-air-space : string [land : string water : string air : string space : string] (let [s1 : string := (if : string (then (!-empty land) (string "land:" land))) s2 : string := (if : string (then (!-empty water) (string "water:" water))) s3 : string := (if : string (then (!-empty air) (string "air:" air))) s4 : string := (if : string (then (!-empty space) (string "space:" space))) slist : stringlist := (stringlist s1 s2 s3 s4)] (string<-stringlist-join slist " ")) :test (test "land:1 water:2 air:3 space:4" (string<-land-water-air-space "1" "2" "3" "4")) :doc "Returns a string for will string")
nx/tactics/ui/uitactics / string<-mass-h-l-w
Description:
  • Returns a string from a mass, height, length, width
Function Name:
  • string<-mass-h-l-w
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    mass
    vx/core/string
    height
    vx/core/string
    length
    vx/core/string
    width
    vx/core/string
Usage/Test Cases:
  • (test "mass:80kg/160lb h:2m/6ft l:2m/6ft w:1m/3ft" (string<-mass-h-l-w "80kg/160lb" "2m/6ft" "1m/3ft" "2m/6ft"))
Source Code:
  • (func string<-mass-h-l-w : string [mass : string height : string length : string width : string] (let [smass : string := (if : string (then (!-empty mass) (string "mass:" mass))) h : string := (if : string (then (!-empty height) (string "h:" height))) l : string := (if : string (then (!-empty length) (string "l:" length))) w : string := (if : string (then (!-empty width) (string "w:" width))) slist : stringlist := (stringlist smass h l w)] (string<-stringlist-join slist " ")) :test (test "mass:80kg/160lb h:2m/6ft l:2m/6ft w:1m/3ft" (string<-mass-h-l-w "80kg/160lb" "2m/6ft" "1m/3ft" "2m/6ft")) :doc "Returns a string from a mass, height, length, width")
nx/tactics/ui/uitactics / string-display<-any
Description:
  • Returns display text from any
Function Name:
  • string-display<-any
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    value
    vx/core/any
Usage/Test Cases:
Source Code:
  • (func string-display<-any : string [value : any] (let : string [datatype : any := (type<-any value) display : string := (if : string (then (== datatype base/book) (string-display<-book (any<-any : base/book value))) (then (== datatype base/deck) (string-display<-deck (any<-any : base/deck value))) (then (== datatype base/skill) (string-display<-skill (any<-any : base/skill value))) (then (or (== datatype base/item) (== datatype base/unit)) "") (then (is-type datatype base/card) (let : string [card : base/card := (any<-any : base/card value) summary : string := (:summary card)] summary)))] display) :doc "Returns display text from any")
nx/tactics/ui/uitactics / string-display<-book
Description:
  • Returns display text from a book
Function Name:
  • string-display<-book
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    book
    nx/tactics/base/book
Usage/Test Cases:
Source Code:
  • (func string-display<-book : string [book : base/book] (let : string [chaptermap : base/chaptermap := (:chaptermap book) names : stringlist := (list<-map : stringlist chaptermap (fn : string [key : string value : base/chapter] (:name value))) display : string := (string<-stringlist-join names ", ")] display) :doc "Returns display text from a book")
nx/tactics/ui/uitactics / string-display<-deck
Description:
  • Returns display text from a deck
Function Name:
  • string-display<-deck
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    deck
    nx/tactics/base/deck
Usage/Test Cases:
Source Code:
  • (func string-display<-deck : string [deck : base/deck] (let : string [cardmap : base/cardmap := (:cardmap deck) names : stringlist := (list<-map : stringlist cardmap (fn : string [key : string value : base/card] (:name value))) display : string := (string<-stringlist-join names ", ")] display) :doc "Returns display text from a deck")
nx/tactics/ui/uitactics / string-display<-skill
Description:
  • Returns display text from a skill
Function Name:
  • string-display<-skill
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
Usage/Test Cases:
Source Code:
  • (func string-display<-skill : string [skill : base/skill] (let : string [specialtymap : base/specialtymap := (:specialtymap skill) abilitymap : base/abilitymap := (:abilitymap skill) specialnames : stringlist := (list<-map : stringlist specialtymap (fn : string [key : string value : base/specialty] (:name value))) abilitynames : stringlist := (list<-map : stringlist abilitymap (fn : string [key : string value : base/ability] (:name value))) appended : stringlist := (stringlist specialnames abilitynames) display : string := (string<-stringlist-join appended " ")] display) :doc "Returns display text from a skill")
nx/tactics/ui/uitactics / string-display<-unit
Description:
  • Returns display text from a unit
Function Name:
  • string-display<-unit
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
Usage/Test Cases:
Source Code:
  • (func string-display<-unit : string [unit : base/unit] (let : string [summary : string := (:summary unit) unitskillmap : base/unitskillmap := (:unitskillmap unit) skilllist : stringlist := (stringlist-display<-unitskillmap unitskillmap) summarylist : stringlist := (if : stringlist (then (!-empty summary) (stringlist summary))) displaylist : stringlist := (stringlist summarylist skilllist)] (string<-stringlist-join displaylist newline)) :doc "Returns display text from a unit")
nx/tactics/ui/uitactics / string-display<-unitskill
Description:
  • Returns a string from a unitskill
Function Name:
  • string-display<-unitskill
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    unitskill
    nx/tactics/base/unitskill
Usage/Test Cases:
Source Code:
  • (func string-display<-unitskill : string [unitskill : base/unitskill] (let : string [skill : base/skill := (:skill unitskill) level : string := (:level unitskill) skillname : string := (:name skill) items : stringlist := (stringlist-display<-unititemmap (:unititemmap unitskill)) specialties : stringlist := (stringlist-display<-unitspecialtymap (:unitspecialtymap unitskill)) abilities : stringlist := (stringlist-display<-unitabilitymap (:unitabilitymap unitskill)) extralist : stringlist := (stringlist items specialties abilities) extras : string := (if : string (then (!-empty extralist) (string " " (string<-stringlist-join extralist " "))))] (string "* [" skillname "]:" level extras)) :doc "Returns a string from a unitskill")
nx/tactics/ui/uitactics / stringlist-display<-unitabilitymap
Description:
  • Returns a stringlist from a unitabilitymap
Function Name:
  • stringlist-display<-unitabilitymap
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    unitabilitymap
    nx/tactics/base/unitabilitymap
Usage/Test Cases:
Source Code:
  • (func stringlist-display<-unitabilitymap : stringlist [unitabilitymap : base/unitabilitymap] (list<-map : stringlist unitabilitymap (fn : string [key : string unitability : unitability] (string "[" key "]"))) :doc "Returns a stringlist from a unitabilitymap")
nx/tactics/ui/uitactics / stringlist-display<-unititemmap
Description:
  • Returns a stringlist from a unititemmap
Function Name:
  • stringlist-display<-unititemmap
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    unititemmap
    nx/tactics/base/unititemmap
Usage/Test Cases:
Source Code:
  • (func stringlist-display<-unititemmap : stringlist [unititemmap : base/unititemmap] (list<-map : stringlist unititemmap (fn : string [key : string unititem : unititem] (string "[" key "]"))) :doc "Returns a stringlist from a unititemmap")
nx/tactics/ui/uitactics / stringlist-display<-unitskillmap
Description:
  • Returns a stringlist from a unitskillmap
Function Name:
  • stringlist-display<-unitskillmap
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    unitskillmap
    nx/tactics/base/unitskillmap
Usage/Test Cases:
Source Code:
  • (func stringlist-display<-unitskillmap : stringlist [unitskillmap : base/unitskillmap] (list<-map : stringlist unitskillmap (fn : string [key : string unitskill : unitskill] (string-display<-unitskill unitskill))) :doc "Returns a stringlist from a unitskillmap")
nx/tactics/ui/uitactics / stringlist-display<-unitspecialtymap
Description:
  • Returns a stringlist from a unitspecialtymap
Function Name:
  • stringlist-display<-unitspecialtymap
Return Type:
  • vx/core/stringlist
Arguments:
  • Name
    Type
    Generic
    Description
    unitspecialtymap
    nx/tactics/base/unitspecialtymap
Usage/Test Cases:
Source Code:
  • (func stringlist-display<-unitspecialtymap : stringlist [unitspecialtymap : base/unitspecialtymap] (list<-map : stringlist unitspecialtymap (fn : string [key : string unitspecialty : unitspecialty] (string "[" key "]"))) :doc "Returns a stringlist from a unitspecialtymap")
nx/tactics/ui/uitactics / ui<-any-parent
Description:
  • Returns a ui created from any value
Function Name:
  • ui<-any-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    data
    vx/core/any
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui<-any-parent : ui/ui [data : any parent : string] (let : ui/ui [datatype : any := (type<-any data)] (if : ui/ui (then (type/is-type datatype base/card) (ui<-card-parent (any<-any : base/card data) parent)))) :doc "Returns a ui created from any value")
nx/tactics/ui/uitactics / ui-title1<-uid-text
Description:
  • Returns a card title1
Function Name:
  • ui-title1<-uid-text
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-title1<-uid-text : ui/ui [uid : string text : string] (let : ui/ui [uidtitle : string := (string uid "-title1")] (ui/ui :uid uidtitle :style styles/style-card-title1 :stylelist (ui/stylelist styles/style-text-header1) :data text)) :doc "Returns a card title1")
nx/tactics/ui/uitactics / ui-title2<-uid-text
Description:
  • Returns a card title2
Function Name:
  • ui-title2<-uid-text
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
    text
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-title2<-uid-text : ui/ui [uid : string text : string] (let : ui/ui [uidtitle : string := (string uid "-title2")] (ui/ui :uid uidtitle :style styles/style-card-title2 :stylelist (ui/stylelist styles/style-text-header1) :data text)) :doc "Returns a card title2")
nx/tactics/ui/uitactics / uilist<-card-parent
Description:
Function Name:
  • uilist<-card-parent
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    card
    nx/tactics/base/card
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uilist<-card-parent : ui/uilist [card : base/card parent : string] (let : ui/ui [id : string := (:id card) name : string := (:name card) datatype : any := (type<-any card) isdisplay4 : boolean := (or (== datatype base/damage) (== datatype base/disorder) (== datatype base/trauma)) id1 : string := (if : string (!-empty id) id name) uid : string := (string parent "-" id1) display : string := (string-display<-any card) displaysplit : stringlist := (if : stringlist (then isdisplay4 (type/stringlist<-string-split display newline))) display1 : string := (if : string (then isdisplay4 (:1 displaysplit)) (else display)) uititle1 : ui/ui := (ui-title1<-uid-text uid name) uititle2 : ui/ui := (if : ui/ui (then (== datatype base/cardback) (ui-title2<-uid-text uid name))) uiddisplay : string := (string uid "-display") uidisplay : ui/ui := (ui/ui :uid uiddisplay :style styles/style-card-display :stylelist (ui/stylelist styles/style-textarea) :data display1) ranksuit : base/ranksuit := (:ranksuit card) uilist1 : ui/uilist := (uilist<-ranksuit-parent ranksuit uid) uilist2 : ui/uilist := (if : ui/uilist (then (== datatype base/item) (uilist<-item-parent (any<-any card) parent)) (then (== datatype base/unit) (uilist<-unit-parent (any<-any card) parent)) (then isdisplay4 (let : ui/uilist [uid2 : string := (string uid "-display2") display2 : string := (:2 displaysplit) uidisplay2 : ui/ui := (ui/ui :uid uid2 :style styles/style-card-display2 :stylelist (ui/stylelist styles/style-textarea) :data display2) uid3 : string := (string uid "-display3") display3 : string := (:3 displaysplit) uidisplay3 : ui/ui := (ui/ui :uid uid3 :style styles/style-card-display3 :stylelist (ui/stylelist styles/style-textarea) :data display3) uid4 : string := (string uid "-display4") display4 : string := (:4 displaysplit) uidisplay4 : ui/ui := (ui/ui :uid uid4 :style styles/style-card-display4 :stylelist (ui/stylelist styles/style-textarea) :data display4)] (ui/uilist uidisplay2 uidisplay3 uidisplay4))))] (ui/uilist uilist1 uilist2 uititle1 uititle2 uidisplay)))
nx/tactics/ui/uitactics / uilist<-item-parent
Description:
  • Returns a list of child ui from a item/parent
Function Name:
  • uilist<-item-parent
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/item
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uilist<-item-parent : ui/uilist [unit : base/item parent : string] (let : ui/uilist [name : string := (:name unit) titles : string := (:titles unit) image : string := (:image unit) value : string := (:value unit) summary : string := (:summary unit) body : string := (:body unit) bodydetail : string := (string<-mass-h-l-w (:mass unit) (:height unit) (:length unit) (:width unit)) prefix : string := (string parent "-" name) uiitemsummary : ui/ui := (ui/ui :uid (string prefix "-summary") :style styles/style-item-summary :stylelist (ui/stylelist styles/style-textarea) :data summary) detail : string := "" uiimage : ui/ui := (ui/ui :uid (string prefix "-image") :style styles/style-unit-image :data (file/file<-path image)) uivalue : ui/ui := (ui/ui :uid (string prefix "-value") :style styles/style-unit-value :stylelist (ui/stylelist styles/style-text-header1) :data value) uititles : ui/ui := (ui/ui :uid (string prefix "-titles") :style styles/style-unit-titles :stylelist (ui/stylelist styles/style-text) :data titles) uibody : ui/ui := (ui/ui :uid (string prefix "-body") :style styles/style-unit-body :stylelist (ui/stylelist styles/style-text-header1) :data body) uibodydetail : ui/ui := (ui/ui :uid (string prefix "-bodydetail") :style styles/style-unit-bodydetail :stylelist (ui/stylelist styles/style-text-2) :data bodydetail) uidetail : ui/ui := (ui/ui :uid (string prefix "-detail") :style styles/style-unit-detail :stylelist (ui/stylelist styles/style-textarea) :data detail)] (ui/uilist uiimage uivalue uititles uibody uibodydetail uiitemsummary uidetail)) :doc "Returns a list of child ui from a item/parent")
nx/tactics/ui/uitactics / uilist<-unit-parent
Description:
  • Returns a list of child ui from an unit/parent
Function Name:
  • uilist<-unit-parent
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    unit
    nx/tactics/base/unit
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uilist<-unit-parent : ui/uilist [unit : base/unit parent : string] (let : ui/uilist [name : string := (:name unit) titles : string := (:titles unit) image : string := (:image unit) value : string := (:value unit) summary : string := (:summary unit) body : string := (:body unit) bodydetail : string := (string<-mass-h-l-w (:mass unit) (:height unit) (:length unit) (:width unit)) mind : string := (:mind unit) minddetail : string := (string<-demeanor-nature (:demeanor unit) (:nature unit)) will : string := (:will unit) willdetail : string := (string<-conscience-beast-shadow (:conscience unit) (:beast unit) (:shadow unit)) move : string := (:move unit) movedetail : string := (string<-land-water-air-space (:speedland unit) (:speedwater unit) (:speedair unit) (:speedspace unit)) detail : string := (string-display<-unit unit) prefix : string := (string parent "-" name) uidimage : string := (string prefix "-image") uiimage : ui/ui := (ui/ui :uid uidimage :style styles/style-unit-image :data (file/file<-path image)) uivalue : ui/ui := (ui/ui :uid (string prefix "-value") :style styles/style-unit-value :stylelist (ui/stylelist styles/style-text-header1) :data value) uititles : ui/ui := (ui/ui :uid (string prefix "-titles") :style styles/style-unit-titles :stylelist (ui/stylelist styles/style-text) :data titles) uibody : ui/ui := (ui/ui :uid (string prefix "-body") :style styles/style-unit-body :stylelist (ui/stylelist styles/style-text-header1) :data body) uibodydetail : ui/ui := (ui/ui :uid (string prefix "-bodydetail") :style styles/style-unit-bodydetail :stylelist (ui/stylelist styles/style-text-2) :data bodydetail) uimind : ui/ui := (ui/ui :uid (string prefix "-mind") :style styles/style-unit-mind :stylelist (ui/stylelist styles/style-text-header1) :data mind) uiminddetail : ui/ui := (ui/ui :uid (string prefix "-minddetail") :style styles/style-unit-minddetail :stylelist (ui/stylelist styles/style-text-2) :data minddetail) uiwill : ui/ui := (ui/ui :uid (string prefix "-will") :style styles/style-unit-will :stylelist (ui/stylelist styles/style-text-header1) :data will) uiwilldetail : ui/ui := (ui/ui :uid (string prefix "-willdetail") :style styles/style-unit-willdetail :stylelist (ui/stylelist styles/style-text-2) :data willdetail) uimove : ui/ui := (ui/ui :uid (string prefix "-move") :style styles/style-unit-move :stylelist (ui/stylelist styles/style-text-header1) :data move) uimovedetail : ui/ui := (ui/ui :uid (string prefix "-movedetail") :style styles/style-unit-movedetail :stylelist (ui/stylelist styles/style-text-2) :data movedetail) uidetail : ui/ui := (ui/ui :uid (string prefix "-detail") :style styles/style-unit-detail :stylelist (ui/stylelist styles/style-textarea) :data detail)] (ui/uilist uiimage uivalue uititles uibody uibodydetail uimind uiminddetail uiwill uiwilldetail uimove uimovedetail uidetail)) :doc "Returns a list of child ui from an unit/parent")
nx/tactics/ui/uitactics / ui<-card-parent
Description:
  • Returns the a card ui.
Function Name:
  • ui<-card-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    card
    nx/tactics/base/card
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui<-card-parent : ui/ui [card : base/card parent : string] (let : ui/ui [id : string := (:id card) name : string := (:name card) image : string := (:image card) datatype : any := (type<-any card) display : string := (string-display<-any card) id1 : string := (if : string (!-empty id) id name) uid : string := (string parent "-" id1) imgback : string := (switch : string datatype (case base/item "images/card-item.svg") (case base/unit "images/card-unit.svg") (else image)) uiimage : ui/ui := (ui-image<-uid-path uid imgback) events : event/eventmap := (if : event/eventmap (then (= display "") (empty eventmap)) (else eventmap-app-home-card)) styles : ui/stylelist := (if : ui/stylelist (then (= display "") (ui/stylelist styles/style-card)) (else (ui/stylelist styles/style-card styles/style-clickable))) uilist1 : ui/uilist := (uilist<-card-parent card parent) uilist2 : ui/uilist := (ui/uilist uiimage uilist1)] (ui/ui :uid uid :name name :eventmap events :stylelist styles :data card :uimap (ui/uimap<-uilist uilist2))) :doc "Returns the a card ui.")
nx/tactics/ui/uitactics / ui-app
Description:
  • Returns the template for the app ui.
Function Name:
  • ui-app
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app : ui/ui (let : ui/ui [background : ui/ui := (ui-app-background) main : ui/ui := (ui-app-main) menubar : ui/ui := (ui-app-menubar) menudrawer : ui/ui := (ui-app-menudrawer) msgbox : ui/ui := (ui-app-msgbox) navbar : ui/ui := (ui-app-navbar) navdrawer : ui/ui := (ui-app-navdrawer) parallax : ui/ui := (ui-app-parallax) statusbar : ui/ui := (ui-app-statusbar) statusdrawer : ui/ui := (ui-app-statusdrawer) titlebar : ui/ui := (ui-app-titlebar) uimap : ui/uimap := (ui/uimap :background background :main main :menubar menubar :menudrawer menudrawer :msgbox msgbox :navbar navbar :navdrawer navdrawer :parallax parallax :statusbar statusbar :statusdrawer statusdrawer :titlebar titlebar)] (ui/ui :uid "app" :style style-app :uimap uimap)) :doc "Returns the template for the app ui.")
nx/tactics/ui/uitactics / ui-app<-tactics
Description:
Function Name:
  • ui-app<-tactics
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    tactics
    nx/tactics/base/tactics
Usage/Test Cases:
Source Code:
  • (func ui-app<-tactics : ui/ui [tactics : base/tactics] (let : ui/ui [appui : ui/ui := (ui-app)] (copy appui :data tactics)) :doc "")
nx/tactics/ui/uitactics / ui-app-background
Description:
Function Name:
  • ui-app-background
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-background : ui/ui (ui/ui :uid "app-background" :stylelist (ui/stylelist style-app-background)))
nx/tactics/ui/uitactics / ui-app-home
Description:
  • App Home Panel
Function Name:
  • ui-app-home
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-home : ui/ui (ui-nav<-deck-parent (deck/deck-home) "main") :doc "App Home Panel")
nx/tactics/ui/uitactics / ui-app-main
Description:
Function Name:
  • ui-app-main
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-main : ui/ui (ui/ui :uid "main" :stylelist (ui/stylelist style-app-main) :uimap (ui/uimap<-uilist (ui/uilist (ui-app-home)))) :doc "")
nx/tactics/ui/uitactics / ui-app-menubar
Description:
Function Name:
  • ui-app-menubar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-menubar : ui/ui (ui/ui :uid "menubar" :stylelist (ui/stylelist style-app-menubar)))
nx/tactics/ui/uitactics / ui-app-menudrawer
Description:
Function Name:
  • ui-app-menudrawer
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-menudrawer : ui/ui (ui/ui :uid "menudrawer" :stylelist (ui/stylelist style-app-menudrawer)))
nx/tactics/ui/uitactics / ui-app-msgbox
Description:
Function Name:
  • ui-app-msgbox
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-msgbox : ui/ui (ui/ui :uid "msgbox" :stylelist (ui/stylelist style-app-msgbox)))
nx/tactics/ui/uitactics / ui-app-navbar
Description:
  • Returns a new side navigation bar
Function Name:
  • ui-app-navbar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-navbar : ui/ui (ui/ui :uid "navbar" :stylelist (ui/stylelist style-app-navbar) :uimap (ui/uimap<-uilist (ui/uilist (ui-navbutton-back) (nav/ui-navbutton<-ui-parent-selected (ui/ui :name "Home") "navbar" true)))) :doc "Returns a new side navigation bar")
nx/tactics/ui/uitactics / ui-app-navdrawer
Description:
Function Name:
  • ui-app-navdrawer
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-navdrawer : ui/ui (ui/ui :uid "navdrawer" :stylelist (ui/stylelist style-app-navdrawer)))
nx/tactics/ui/uitactics / ui-app-parallax
Description:
Function Name:
  • ui-app-parallax
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-parallax : ui/ui (ui/ui :uid "parallax" :style style-app-parallax))
nx/tactics/ui/uitactics / ui-app-statusbar
Description:
Function Name:
  • ui-app-statusbar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-statusbar : ui/ui (ui/ui :uid "statusbar" :stylelist (ui/stylelist style-app-statusbar)))
nx/tactics/ui/uitactics / ui-app-statusdrawer
Description:
Function Name:
  • ui-app-statusdrawer
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-statusdrawer : ui/ui (ui/ui :uid "statusdrawer" :stylelist (ui/stylelist style-app-statusdrawer)))
nx/tactics/ui/uitactics / ui-app-titlebar
Description:
Function Name:
  • ui-app-titlebar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-titlebar : ui/ui (ui/ui :uid "titlebar" :stylelist (ui/stylelist style-app-titlebar) :uimap (ui/uimap<-uilist (ui/uilist (ui-app-titlebar-print)))) :doc "")
nx/tactics/ui/uitactics / ui-app-titlebar-print
Description:
Function Name:
  • ui-app-titlebar-print
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-app-titlebar-print : ui/ui (ui/ui :uid "titlebar-print" :parent "titlebar" :data (file/file :name "icon-printer.svg" :path "icons") :style (ui/style :layout ui/layout-image) :stylelist (ui/stylelist style-app-titlebar-print style-clickable) :eventmap (event/eventmap<-eventlist (event/eventlist event-printbutton-click))))
nx/tactics/ui/uitactics / ui-image<-uid-path
Description:
Function Name:
  • ui-image<-uid-path
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
    path
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-image<-uid-path : ui/ui [uid : string path : string] (if : ui/ui (then (!-empty path) (ui/ui :uid (string uid "-imagebkgd") :style (ui/style :layout layout-image) :stylelist (ui/stylelist styles/style-image-background) :data (file/file<-path path)))))
nx/tactics/ui/uitactics / ui-nav<-any-parent
Description:
  • Returns a ui created from any value
Function Name:
  • ui-nav<-any-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    data
    vx/core/any
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-nav<-any-parent : ui/ui [data : any parent : string] (if : ui/ui (then (is-empty data) (empty ui)) (else (let : ui/ui [datatype : any := (type<-any data)] (if : ui/ui (then (== datatype base/deck) (ui-nav<-deck-parent (any<-any : base/deck data) parent)) (then (== datatype base/skill) (ui-nav<-skill-parent (any<-any : base/skill data) parent)))))) :doc "Returns a ui created from any value")
nx/tactics/ui/uitactics / ui-nav<-deck-parent
Description:
  • Returns the a deck ui.
Function Name:
  • ui-nav<-deck-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    deck
    nx/tactics/base/deck
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-nav<-deck-parent : ui/ui [deck : base/deck parent : string] (let : ui/ui [name : string := (:name deck) uid : string := (string parent "-" name) cardmap : base/cardmap := (:cardmap deck) uimap : ui/uimap := (uimap<-cardmap-parent cardmap uid)] (ui/ui :uid uid :parent parent :stylelist (ui/stylelist style-deck) :data deck :uimap uimap)) :doc "Returns the a deck ui.")
nx/tactics/ui/uitactics / ui-nav<-skill-parent
Description:
  • Returns the a deck ui.
Function Name:
  • ui-nav<-skill-parent
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    skill
    nx/tactics/base/skill
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func ui-nav<-skill-parent : ui/ui [skill : base/skill parent : string] (let : ui/ui [name : string := (:name skill) uid : string := (string parent "-" name) specialtymap : base/specialtymap := (:specialtymap skill) abilitymap : base/abilitymap := (:abilitymap skill) cardmap1 : base/cardmap := (map<-map : base/cardmap specialtymap) cardmap2 : base/cardmap := (map<-map : base/cardmap abilitymap) cardmap3 : base/cardmap := (copy cardmap1 cardmap2) uimap : ui/uimap := (uimap<-cardmap-parent cardmap3 uid)] (ui/ui :uid uid :parent parent :stylelist (ui/stylelist style-deck) :data skill :uimap uimap)) :doc "Returns the a deck ui.")
nx/tactics/ui/uitactics / ui-navbutton-back
Description:
  • Returns the navigation back button
Function Name:
  • ui-navbutton-back
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func ui-navbutton-back : ui/ui (let : ui/ui [navbutton : ui/ui := (nav/ui-navbutton) name : string := "Back" uid1 : string := (:uid navbutton) uid2 : string := (string uid1 name) styles1 : ui/stylelist := (:stylelist navbutton) styles2 : ui/stylelist := (copy styles1 styles/style-button-back)] (copy navbutton :uid uid2 :name name :stylelist styles2 :eventmap eventmap-navbutton-back)) :doc "Returns the navigation back button")
nx/tactics/ui/uitactics / ui-navigate<-ui
Description:
  • Navigate to the given ui
Function Name:
  • ui-navigate<-ui
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uiarg
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-navigate<-ui : ui/ui [uiarg : ui/ui] (if : ui/ui (then (!-empty uiarg) (let : ui/ui [navbar : ui := (nav/ui-navbar) main : ui := (nav/ui-main) ui1 : ui := (ui-navigate<-ui-navbar uiarg navbar) ui2 : ui := (ui-navigate<-ui-main uiarg main)] uiarg)) (else uiarg)) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the given ui")
nx/tactics/ui/uitactics / ui-navigate<-ui-main
Description:
  • Navigate to the given ui
Function Name:
  • ui-navigate<-ui-main
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    main
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-navigate<-ui-main : ui/ui [ui : ui/ui main : ui/ui] (let : ui/ui [uid : string := (:uid ui) data : any := (:data ui) mainid : string := (:uid main) mainmap1 : ui/uimap := (:uimap main) mainmap2 : ui/uimap := (map<-map : ui/uimap mainmap1 (fn : ui/ui [key : string value : ui/ui] (if : ui/ui (then (= true (:hidden value)) (empty ui/ui)) (else (copy value :hidden true))))) mainb1 : ui/ui := (ui-nav<-any-parent data mainid) mainb2 : ui/ui := (ui/ui-layout<-ui mainb1) mainmap3 : ui/uimap := (copy mainmap2 uid mainb2) main2 : ui/ui := (ui/ui-writechildmap<-ui-childmap main mainmap3) main3 : ui/ui := (ui/ui-render main2)] main3) :context :sideeffects "Alters uinavbar and uimain" :doc "Navigate to the given ui")
nx/tactics/ui/uitactics / ui-navigate<-ui-navbar
Description:
  • Navigate to the given ui
Function Name:
  • ui-navigate<-ui-navbar
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    ui
    vx/ui/ui/ui
    navbar
    vx/ui/ui/ui
Usage/Test Cases:
Source Code:
  • (func ui-navigate<-ui-navbar : ui/ui [ui : ui/ui navbar : ui/ui] (let : ui/ui [uid : string := (:uid ui) navbarid : string := (:uid navbar) buttona1 : ui/ui := (ui/ui-selected<-ui navbar) buttona2 : ui/ui := (copy buttona1 :selected false) uidbtnb : string := (string "navbutton-" uid) buttonb1 : ui/ui := (ui/ui-child<-ui-uid navbar uidbtnb) buttonb2 : ui/ui := (if : ui/ui (then (!-empty buttonb1) (copy buttonb1 :selected true)) (else (nav/ui-navbutton<-ui-parent-selected ui navbarid true))) navbar2 : ui/ui := (ui/ui-writechild<-ui-child navbar buttona2) navbar3 : ui/ui := (ui/ui-writechild<-ui-child navbar2 buttonb2) navbar4 : ui/ui := (ui/ui-layout<-ui navbar3) navbar5 : ui/ui := (ui/ui-render navbar4)] navbar5) :context :sideeffects "Alters uinavbar" :doc "Navigate to the given ui")
nx/tactics/ui/uitactics / ui-suit<-uid-rank-suit-pos
Description:
Function Name:
  • ui-suit<-uid-rank-suit-pos
Return Type:
  • vx/ui/ui/ui
Arguments:
  • Name
    Type
    Generic
    Description
    uid
    vx/core/string
    rank
    nx/tactics/base/rank
    suit
    nx/tactics/base/suit
    pos
    vx/core/int
Usage/Test Cases:
Source Code:
  • (func ui-suit<-uid-rank-suit-pos : ui/ui [uid : string rank : base/rank suit : base/suit pos : int] (let : ui/ui [id : string := (string uid "-suit-" pos) filename : string := (switch suit (case base/suit-club "icon-wand.svg") (case base/suit-diamond "icon-coin.svg") (case base/suit-heart "icon-cup.svg") (case base/suit-spade "icon-sword.svg") (case base/suit-black "icon-jester-black.svg") (case base/suit-red "icon-jester-red.svg")) pointpos : ui/point := (switch : ui/point pos (case 1 styles/point-suit-pos1) (case 2 styles/point-suit-pos2)) style : ui/style := (ui/style :layout ui/layout-image :pointpos pointpos :pointsize styles/point-suit-size)] (ui/ui :uid id :style style :data (file/file :name filename :path "icons"))) :doc "")
nx/tactics/ui/uitactics / uilist<-ranksuit-parent
Description:
Function Name:
  • uilist<-ranksuit-parent
Return Type:
  • vx/ui/ui/uilist
Arguments:
  • Name
    Type
    Generic
    Description
    ranksuitarg
    nx/tactics/base/ranksuit
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uilist<-ranksuit-parent : ui/uilist [ranksuitarg : base/ranksuit parent : string] (if : ui/uilist (then (is-empty ranksuitarg) (empty ranksuit)) (else (let : ui/uilist [rank : base/rank := (:rank ranksuitarg) suit : base/suit := (:suit ranksuitarg) labelrank1 : string := (string parent "-rank1") labelrank2 : string := (string parent "-rank2") labelsuit1 : string := (string parent "-suit1") labelsuit2 : string := (string parent "-suit2") srank : string := (:titles rank) ssuit : string := (:titles suit) uisuit1 : ui/ui := (ui-suit<-uid-rank-suit-pos parent rank suit 1) uisuit2 : ui/ui := (ui-suit<-uid-rank-suit-pos parent rank suit 2)] (ui/uilist (ui/ui :uid labelrank1 :style styles/style-card-rank :stylelist (ui/stylelist styles/style-text-rank1) :data srank) (ui/ui :uid labelrank2 :style styles/style-card-rank :stylelist (ui/stylelist styles/style-text-rank2) :data srank) uisuit1 uisuit2)))) :doc "")
nx/tactics/ui/uitactics / uimap<-cardmap-parent
Description:
Function Name:
  • uimap<-cardmap-parent
Return Type:
  • vx/ui/ui/uimap
Arguments:
  • Name
    Type
    Generic
    Description
    cardmap
    nx/tactics/base/cardmap
    parent
    vx/core/string
Usage/Test Cases:
Source Code:
  • (func uimap<-cardmap-parent : ui/uimap [cardmap : base/cardmap parent : string] (map<-map : ui/uimap cardmap (fn : ui/ui [key : string card : base/card] (ui<-any-parent card parent))) :doc "")
vx/translation/all
Description:
  • Translation utilities
Package Name:
  • vx/translation/all
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    trn
    vx/translate
    en
    vx/translation/en
    es
    vx/translation/es
Types:
Constants:
Functions:
  • context-all, translationmap-all
Source Code:
  • (package vx/translation/all :libs (lib trn :path vx/translate) (lib en :path vx/translation/en) (lib es :path vx/translation/es) :doc "Translation utilities") (func context-all : context [args : anylist :...] (context :session (session :translation (translation-en) :translationmap (translationmap-all))) :doc "Returns the default context for app main execution. Arguments come from the command line.") (func translationmap-all : translationmap (trn/translationmap<-translations (en/translation-en) (es/translation-es)) :test (test "Hola" (trn/translate<-translationmap-name-string (translationmap-all) "es" "Hello")) :doc "Returns a translationmap with all translations.")
vx/translation/all / context-all
Description:
  • Returns the default context for app main execution. Arguments come from the command line.
Function Name:
  • context-all
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-all : context [args : anylist :...] (context :session (session :translation (translation-en) :translationmap (translationmap-all))) :doc "Returns the default context for app main execution. Arguments come from the command line.")
vx/translation/all / translationmap-all
Description:
  • Returns a translationmap with all translations.
Function Name:
  • translationmap-all
Return Type:
  • vx/core/translationmap
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
  • (test "Hola" (trn/translate<-translationmap-name-string (translationmap-all) "es" "Hello"))
Source Code:
  • (func translationmap-all : translationmap (trn/translationmap<-translations (en/translation-en) (es/translation-es)) :test (test "Hola" (trn/translate<-translationmap-name-string (translationmap-all) "es" "Hello")) :doc "Returns a translationmap with all translations.")
nx/tactics/apptactics
Description:
  • Main App for NxTactics
Package Name:
  • nx/tactics/apptactics
Libraries:
  • Name
    Path
    vx/core
    vx/core
    vx/test
    vx/test
    base
    nx/tactics/base
    bl
    nx/tactics/books/bookloader
    fil
    vx/data/file
    xml
    vx/data/xml
    styles
    nx/tactics/ui/stylesheet
    ui
    vx/ui/ui
    uihtml
    vx/ui/html/uihtml
    uitx
    nx/tactics/ui/uitactics
Types:
Constants:
Functions:
  • context-nx, main-nx, security-nx, string-render-html
Source Code:
  • (package nx/tactics/apptactics :libs (lib base :path nx/tactics/base) (lib bl :path nx/tactics/books/bookloader) (lib fil :path vx/data/file) (lib xml :path vx/data/xml) (lib styles :path nx/tactics/ui/stylesheet) (lib ui :path vx/ui/ui) (lib uihtml :path vx/ui/html/uihtml) (lib uitx :path nx/tactics/ui/uitactics) :doc "Main App for NxTactics") (func context-nx : context [args : anylist :...] (context :session (session :user (user :security (security-nx))) :state (state :statelistenermap (statelistenermap :initialized (statelistener :name "initialized")))) :doc "Returns the context for execution. Arguments come from the command line.") (func main-nx : string [args : anylist :...] (string-render-html) :async :context :doc "The default function for app main execution. Arguments come from the command line.") (func security-nx : security (security :allowfuncs (funclist fil/boolean-write<-file-any fil/boolean-write<-file-string fil/file-read<-file fil/string-read<-file)) :doc "Returns the security for execution.") (func string-render-html : string (let [ctx : context := (uihtml/context-write) uiengine : ui/uiengine := (ui/uiengine :layoutengine uihtml/layoutenginehtml :stylesheet styles/stylesheet-app :ui (uitx/ui-app)) issetstate : ui/uiengine := (ui/boolean-writestate<-uiengine uiengine) uienginerender : ui/uiengine := (ui/uiengine-render uiengine)] "") :async :context :doc "") /* (func main-nx : string [args : anylist :...] (let [booknames : stringlist := (stringlist "TACTICSBOOK_CORE" "TACTICSBOOK_ADVANCED" "TACTICSBOOK_ANCIENT" "TACTICSBOOK_AOSAIL" "TACTICSBOOK_AOSTEAM" "TACTICSBOOK_BESTIARY" "TACTICSBOOK_CHARS" "TACTICSBOOK_COMBAT" "TACTICSBOOK_FANTASY" "TACTICSBOOK_GEAR" "TACTICSBOOK_GIANT" "TACTICSBOOK_HIGHTECH" "TACTICSBOOK_HORROR" "TACTICSBOOK_LANDSEA" "TACTICSBOOK_MAGIC" "TACTICSBOOK_MEDIEVAL" "TACTICSBOOK_MFANTASY" "TACTICSBOOK_MODERN" "TACTICSBOOK_POWERS" "TACTICSBOOK_PREHISTORY" "TACTICSBOOK_PULP" "TACTICSBOOK_SCIFI" "TACTICSBOOK_SKILLS" "TACTICSBOOK_SPACE" "TACTICSBOOK_SUPER" "TACTICSBOOK_WORLDWARS" ) done : boolean := (bl/boolean-write<-booknames booknames)] (string<-any done)) :context :doc "The default function for app main execution. Arguments come from the command line.") (func main-nx : string [args : anylist :...] (let [book : base/book := (bl/book-read<-bookname "TACTICSBOOK_WORLDWARS") done : boolean := (bl/boolean-write<-book book)] (string<-any done)) :context :doc "The default function for app main execution. Arguments come from the command line.") (func main-nx : string [args : anylist :...] (let [book : base/book := (bl/book-read<-bookname "TACTICSBOOK_CORE")] (string<-any book)) :context :doc "The default function for app main execution. Arguments come from the command line.") (func main-nx : string [args : anylist :...] (let [xml : xml/xml := (bl/xml-read<-bookname "TACTICSBOOK_WORLDWARS")] (string<-any xml)) :context :doc "The default function for app main execution. Arguments come from the command line.") (func main-nx : string [args : anylist :...] (bl/string-read<-bookname "TACTICSBOOK_WORLDWARS") :context :doc "The default function for app main execution. Arguments come from the command line.") */
nx/tactics/apptactics / context-nx
Description:
  • Returns the context for execution. Arguments come from the command line.
Function Name:
  • context-nx
Return Type:
  • vx/core/context
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func context-nx : context [args : anylist :...] (context :session (session :user (user :security (security-nx))) :state (state :statelistenermap (statelistenermap :initialized (statelistener :name "initialized")))) :doc "Returns the context for execution. Arguments come from the command line.")
nx/tactics/apptactics / main-nx
Description:
  • The default function for app main execution. Arguments come from the command line.
Function Name:
  • main-nx
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
    args
    vx/core/anylist
Usage/Test Cases:
Source Code:
  • (func main-nx : string [args : anylist :...] (string-render-html) :async :context :doc "The default function for app main execution. Arguments come from the command line.")
nx/tactics/apptactics / security-nx
Description:
  • Returns the security for execution.
Function Name:
  • security-nx
Return Type:
  • vx/core/security
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func security-nx : security (security :allowfuncs (funclist fil/boolean-write<-file-any fil/boolean-write<-file-string fil/file-read<-file fil/string-read<-file)) :doc "Returns the security for execution.")
nx/tactics/apptactics / string-render-html
Description:
Function Name:
  • string-render-html
Return Type:
  • vx/core/string
Arguments:
  • Name
    Type
    Generic
    Description
Usage/Test Cases:
Source Code:
  • (func string-render-html : string (let [ctx : context := (uihtml/context-write) uiengine : ui/uiengine := (ui/uiengine :layoutengine uihtml/layoutenginehtml :stylesheet styles/stylesheet-app :ui (uitx/ui-app)) issetstate : ui/uiengine := (ui/boolean-writestate<-uiengine uiengine) uienginerender : ui/uiengine := (ui/uiengine-render uiengine)] "") :async :context :doc "")